0

I Declare non-nullable in my entity class but when I access these variables I get NullPointerException. I face following type of error:

java.lang.NullPointerException: null cannot be cast to non-null type kotlin.String
    at com.nilmani.chatdemochat.controller.ChatController.addUser(ChatController.kt:31) ~[main/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na]
    at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:169) ~[spring-messaging-5.3.13.jar:5.3.13]
    at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:119) ~[spring-messaging-5.3.13.jar:5.3.13]
    at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMatch(AbstractMethodMessageHandler.java:569) ~[spring-messaging-5.3.13.jar:5.3.13]
    at org.springframework.messaging.simp.annotation.support.SimpAnnotationMethodMessageHandler.handleMatch(SimpAnnotationMethodMessageHandler.java:511) ~[spring-messaging-5.3.13.jar:5.3.13]
    at org.springframework.messaging.simp.annotation.support.SimpAnnotationMethodMessageHandler.handleMatch(SimpAnnotationMethodMessageHandler.java:94) ~[spring-messaging-5.3.13.jar:5.3.13]
    at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMessageInternal(AbstractMethodMessageHandler.java:524) ~[spring-messaging-5.3.13.jar:5.3.13]
    at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMessage(AbstractMethodMessageHandler.java:458) ~[spring-messaging-5.3.13.jar:5.3.13]
    at org.springframework.messaging.support.ExecutorSubscribableChannel$SendTask.run(ExecutorSubscribableChannel.java:144) ~[spring-messaging-5.3.13.jar:5.3.13]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na]
    at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na]

ChatMessage.kt

package com.nilmani.chatdemochat.model

import com.nilmani.chatdemochat.enum.MessageType

data class ChatMessage (
    var messageType: MessageType?=null,
    val content:String="",
    var sender:String="")

ChatController.kt

@MessageMapping("/chat/{roomId}/addUser")
fun addUser(@DestinationVariable roomId: String,@Payload chatMessage: ChatMessage,messageHeader:SimpMessageHeaderAccessor){
   val currentRoomId: String = messageHeader.sessionAttributes?.put("roo_id",roomId) as String
   if (currentRoomId != null){
       val leaveMessage = ChatMessage()
       leaveMessage.messageType = MessageType.LEAVE
       leaveMessage.sender = chatMessage.sender
       messageingTemplate.convertAndSend(format("/channel/%s",currentRoomId),leaveMessage)
   }
   messageHeader.sessionAttributes?.set("username", chatMessage.sender)
   messageingTemplate.convertAndSend(format("/channel/%s",roomId),chatMessage)
}

I get NullPointerException at this line:

val currentRoomId: String = 
     messageHeader.sessionAttributes?.put("roo_id",roomId) as String

When joining another user for chatting it gives this type of error and the newly entred user is not able to connect with the chat application.

1 Answer 1

1

Result of messageHeader.sessionAttributes?.put("roo_id",roomId)is null but you try to cast it to non-null String.

So either messageHeader.sessionAttributes is null or result of put("roo_id",roomId) is null.

Sign up to request clarification or add additional context in comments.

1 Comment

Either messageHeader.sessionAttributes is null or roomId is null.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.