Skip to content

Commit

Permalink
Add addSlackConnectedListener and removeSlackConnectedListener to all…
Browse files Browse the repository at this point in the history
…ow clients to intercept connection status information
  • Loading branch information
Ed Sumerfield committed Oct 4, 2015
1 parent 25a8fff commit ff274d2
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 2 deletions.
12 changes: 12 additions & 0 deletions src/main/java/com/ullink/slack/simpleslackapi/SlackSession.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.ullink.slack.simpleslackapi.listeners.SlackMessageDeletedListener;
import com.ullink.slack.simpleslackapi.listeners.SlackMessagePostedListener;
import com.ullink.slack.simpleslackapi.listeners.SlackMessageUpdatedListener;
import com.ullink.slack.simpleslackapi.listeners.SlackConnectedListener;

public interface SlackSession
{
Expand Down Expand Up @@ -99,4 +100,15 @@ public interface SlackSession

void removeGroupJoinedListener(SlackGroupJoinedListener listener);

/*
* Subscribe to events related to the connection to the slack
* server. At this time a set of status information is exchanged that
* is useful to implementing bots.
*
* For example, the current user that is connecting.
* knowing your own user id will help you stop answering your own
* questions.
*/
void addSlackConnectedListener(SlackConnectedListener listner);
void removeSlackConnectedListener(SlackConnectedListener listener);
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ abstract class AbstractSlackSessionImpl implements SlackSession
protected List<SlackMessagePostedListener> messagePostedListener = new ArrayList<SlackMessagePostedListener>();
protected List<SlackMessageUpdatedListener> messageUpdatedListener = new ArrayList<SlackMessageUpdatedListener>();
protected List<SlackReplyListener> slackReplyListener = new ArrayList<SlackReplyListener>();
protected List<SlackConnectedListener> slackConnectedLinster = new ArrayList<SlackConnectedListener>();
protected List<SlackConnectedListener> slackConnectedListener = new ArrayList<SlackConnectedListener>();

static final SlackChatConfiguration DEFAULT_CONFIGURATION = SlackChatConfiguration.getConfiguration().asUser();

Expand Down Expand Up @@ -260,4 +260,13 @@ void removeSlackReplyListener(SlackReplyListener listener)
slackReplyListener.remove(listener);
}

@Override
public void addSlackConnectedListener(SlackConnectedListener listener) {
slackConnectedListener.add(listener);
}

@Override
public void removeSlackConnectedListener(SlackConnectedListener listener) {
slackConnectedListener.remove(listener);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ void dispatch(SlackEvent event)
dispatchImpl((SlackReplyEvent) event, slackReplyListener);
break;
case SLACK_CONNECTED:
dispatchImpl((SlackConnected) event, slackConnectedLinster);
dispatchImpl((SlackConnected) event, slackConnectedListener);
break;
case UNKNOWN:
throw new IllegalArgumentException("event not handled " + event);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
import com.ullink.slack.simpleslackapi.SlackChannel;
import com.ullink.slack.simpleslackapi.SlackMessageHandle;

import com.ullink.slack.simpleslackapi.listeners.SlackConnectedListener;
import com.ullink.slack.simpleslackapi.events.SlackConnected;
import com.ullink.slack.simpleslackapi.SlackSession;

public class TestAbstractSlackSessionImpl
{
Expand Down Expand Up @@ -92,6 +95,12 @@ public SlackMessageHandle inviteUser(String email, String firstName, boolean set
{
return null;
}

// Helper method with access to abstract class properties.
public boolean isListening(SlackConnectedListener expectedListener)
{
return slackConnectedListener.contains(expectedListener);
}
}

@Test
Expand Down Expand Up @@ -199,5 +208,30 @@ public void testFindUserByUserName_MissingBot()
assertThat(slackSession.findUserByUserName("unknownuser")).isNull();
}

@Test
public void testAddConnectedListener() {
SlackConnectedListener listener = new SlackConnectedListener() {
public void onEvent(SlackConnected event, SlackSession session) {
}
};

TestSlackSessionImpl slackSession = new TestSlackSessionImpl();
slackSession.addSlackConnectedListener(listener);

assertThat(!slackSession.isListening(listener));
}

@Test
public void testRemoveConnectedListener() {
SlackConnectedListener listener = new SlackConnectedListener() {
public void onEvent(SlackConnected event, SlackSession session) {
}
};

TestSlackSessionImpl slackSession = new TestSlackSessionImpl();
slackSession.addSlackConnectedListener(listener);
slackSession.removeSlackConnectedListener(listener);

assertThat(!slackSession.isListening(listener));
}
}

0 comments on commit ff274d2

Please sign in to comment.