symphonyoss / symphony-java-client

Java client library for Symphony

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Event Handling in Broken, even in 1.1.3 and 1.1.4-SNAPSHOT

tcarlisle2012 opened this issue · comments

Hello,

FYI - I had to modify messageservice.java as below, because it was returning, and hence not firing the registered event listeners if the event type is not null. That makes no sense and breaks message handling.

I was chasing this yesterday as well, and as of yesterday the logic was to return if the event id is null (which apparently now it can be or if the type is null (which was and probably still is a required field). I think the fix was made in error. :(

Thank you,
Tom Carlisle

@OverRide
public void onEvent(SymEvent symEvent) {

    logger.debug("{} event type received...", symEvent.getType());


    **// modified 2018-03-06 T. Carlisle..... changed from != to ==
    if (symEvent.getType() == null)
        return;**


    SymEventTypes.Type type = SymEventTypes.Type.fromValue(symEvent.getType());


    //All events require a Type
    if (type == null)
        return;


    switch (type) {
        case MESSAGESENT:

            SymMessage symMessage = symEvent.getPayload().getMessageSent();

            if (symMessage != null && !symClient.getLocalUser().getId().equals(symMessage.getFromUserId())) {


                //Verify if this message is part of room conversation
                if (symMessage.getStream().getStreamType().equals(SymStreamTypes.Type.ROOM)) {

                    //Publish room messages to associated listeners
                    for (RoomServiceEventListener roomServiceEventListener : roomServiceEventListeners)
                        roomServiceEventListener.onMessage(symMessage);


                } else if (symMessage.getStream().getStreamType().equals(SymStreamTypes.Type.POST)) {

                    logger.warn("POST services not implemented..");

                } else {

                    //Then it has to be a chat conversation (1:1 or Multi-Party)
                    for (ChatListener chatListener : chatListeners)
                        chatListener.onChatMessage(symMessage);
                }


                //Publish all messages to registered Message Listeners...
                for (MessageListener messageListener : messageListeners) {
                    messageListener.onMessage(symMessage);
                }

                logger.debug("TS: {}\nFrom ID: {}\nSymMessage: {}\nType: {}",
                        symMessage.getTimestamp(),
                        symMessage.getFromUserId(),
                        symMessage.getMessage(),
                        symMessage.getStream().getStreamType().toString());


            }


            break;

        case INSTANTMESSAGECREATED:

            SymIMCreated symIMCreated = symEvent.getPayload().getInstantMessageCreated();

            if (symIMCreated != null) {
                logger.debug("Instant message create event not implemented");

            }


            break;

        case ROOMCREATED:

            SymRoomCreated symRoomCreated = symEvent.getPayload().getRoomCreated();

            if (symRoomCreated != null) {

                for (RoomServiceEventListener roomServiceEventListener : roomServiceEventListeners)
                    roomServiceEventListener.onSymRoomCreated(symRoomCreated);
            }

            break;
        case ROOMUPDATED:
            SymRoomUpdated symRoomUpdated = symEvent.getPayload().getRoomUpdated();

            if (symRoomUpdated != null) {

                for (RoomServiceEventListener roomServiceEventListener : roomServiceEventListeners)
                    roomServiceEventListener.onSymRoomUpdated(symRoomUpdated);
            }

            break;
        case ROOMDEACTIVATED:
            SymRoomDeactivated symRoomDeactivated = symEvent.getPayload().getRoomDeactivated();

            if (symRoomDeactivated != null) {

                for (RoomServiceEventListener roomServiceEventListener : roomServiceEventListeners)
                    roomServiceEventListener.onSymRoomDeactivated(symRoomDeactivated);


            }
            break;

        case ROOMREACTIVATED:
            SymRoomReactivated symRoomReactivated = symEvent.getPayload().getRoomReactivated();

            if (symRoomReactivated != null) {

                for (RoomServiceEventListener roomServiceEventListener : roomServiceEventListeners)
                    roomServiceEventListener.onSymRoomReactivated(symRoomReactivated);


            }
            break;

        case USERJOINEDROOM:

            SymUserJoinedRoom symUserJoinedRoom = symEvent.getPayload().getUserJoinedRoom();

            if (symUserJoinedRoom != null) {
                for (RoomServiceEventListener roomServiceEventListener : roomServiceEventListeners)
                    roomServiceEventListener.onSymUserJoinedRoom(symUserJoinedRoom);


            }

            break;
        case USERLEFTROOM:
            SymUserLeftRoom symUserLeftRoom = symEvent.getPayload().getUserLeftRoom();

            if (symUserLeftRoom != null) {
                for (RoomServiceEventListener roomServiceEventListener : roomServiceEventListeners)
                    roomServiceEventListener.onSymUserLeftRoom(symUserLeftRoom);


            }

            break;

        case ROOMMEMBERPROMOTEDTOOWNER:
            SymRoomMemberPromotedToOwner symRoomMemberPromotedToOwner = symEvent.getPayload().getRoomMemberPromotedToOwner();

            if (symRoomMemberPromotedToOwner != null) {
                for (RoomServiceEventListener roomServiceEventListener : roomServiceEventListeners)
                    roomServiceEventListener.onSymRoomMemberPromotedToOwner(symRoomMemberPromotedToOwner);


            }

            break;
        case ROOMMEMBERDEMOTEDFROMOWNER:
            SymRoomMemberDemotedFromOwner symRoomMemberDemotedFromOwner = symEvent.getPayload().getRoomMemberDemotedFromOwner();

            if (symRoomMemberDemotedFromOwner != null) {
                for (RoomServiceEventListener roomServiceEventListener : roomServiceEventListeners)
                    roomServiceEventListener.onSymRoomMemberDemotedFromOwner(symRoomMemberDemotedFromOwner);


            }

            break;


        case CONNECTIONACCEPTED:
            SymConnectionAccepted symConnectionAccepted = symEvent.getPayload().getConnectionAccepted();

            if (symConnectionAccepted != null) {
                for (ConnectionsEventListener connectionsEventListener : connectionsEventListeners)
                    connectionsEventListener.onSymConnectionAccepted(symConnectionAccepted);


            }
            break;

        case CONNECTIONREQUESTED:
            SymConnectionRequested symConnectionRequested = symEvent.getPayload().getConnectionRequested();

            if (symConnectionRequested != null) {
                for (ConnectionsEventListener connectionsEventListener : connectionsEventListeners)
                    connectionsEventListener.onSymConnectionRequested(symConnectionRequested);

            }
            break;


        default:

    }


}

This is a major error and a result of moving too quickly on the 1.50 build. Will patch 1.1.3 into maven central now.

commit a11b9cb

Released update for 1.1.3 to maven.org and SNAPSHOT

Please ignore TravisCI Failure as VersionEye is blowing up.. @maoo can you help fix that.

Please note SJC 1.1.3 release was a failure and we were forced to deploy 1.1.4 to fix the issues. Apologies for the inconvenience.