in extensions/salesforce-connector/services/src/main/java/org/apache/unomi/sfdc/services/internal/SFDCServiceImpl.java [599:676]
public void setupPushListener(String channelName, ClientSessionChannel.MessageListener messageListener) throws
Exception {
if (!isConnected()) {
return;
}
final BayeuxClient client = makeClient();
if (client == null) {
throw new Exception("Login failed !");
}
client.getChannel(Channel.META_HANDSHAKE).addListener
(new ClientSessionChannel.MessageListener() {
@Override
public void onMessage(ClientSessionChannel channel, Message message) {
LOGGER.info("[CHANNEL:META_HANDSHAKE]: {}", message);
boolean success = message.isSuccessful();
if (!success) {
String error = (String) message.get("error");
if (error != null) {
LOGGER.error("Error during HANDSHAKE: {}", error);
}
Exception exception = (Exception) message.get("exception");
if (exception != null) {
LOGGER.error("Exception during HANDSHAKE: ", exception);
}
}
}
});
client.getChannel(Channel.META_CONNECT).addListener(
new ClientSessionChannel.MessageListener() {
public void onMessage(ClientSessionChannel channel, Message message) {
LOGGER.info("[CHANNEL:META_CONNECT]: {}", message);
boolean success = message.isSuccessful();
if (!success) {
String error = (String) message.get("error");
if (error != null) {
LOGGER.error("Error during CONNECT: {}", error);
}
}
}
});
client.getChannel(Channel.META_SUBSCRIBE).addListener(
new ClientSessionChannel.MessageListener() {
public void onMessage(ClientSessionChannel channel, Message message) {
LOGGER.debug("[CHANNEL:META_SUBSCRIBE]: {}", message);
boolean success = message.isSuccessful();
if (!success) {
String error = (String) message.get("error");
if (error != null) {
LOGGER.error("Error during SUBSCRIBE: {}", error);
}
}
}
});
client.handshake();
LOGGER.debug("Waiting for handshake");
boolean handshaken = client.waitFor(10 * 1000, BayeuxClient.State.CONNECTED);
if (!handshaken) {
LOGGER.error("Failed to handshake: {}", client);
}
LOGGER.info("Subscribing for channel: {}", channelName);
client.getChannel(channelName).subscribe(messageListener);
}