package com.googlecode.tawus.cometd.examples.services;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import org.cometd.bayeux.server.BayeuxServer;
import org.cometd.bayeux.server.ConfigurableServerChannel;
import org.cometd.bayeux.server.ServerMessage;
import org.cometd.bayeux.server.ServerSession;
import org.cometd.java.annotation.Configure;
import org.cometd.java.annotation.Listener;
import org.cometd.java.annotation.Service;
import org.cometd.java.annotation.Session;
import org.cometd.server.authorizer.GrantAuthorizer;
@Service("helloService")
public class HelloService {
@SuppressWarnings("unused")
@Inject
private BayeuxServer bayeux;
@Session
private ServerSession serverSession;
@Configure({"/service/hello"})
public void configure(ConfigurableServerChannel channel){
channel.setLazy(true);
channel.addAuthorizer(GrantAuthorizer.GRANT_PUBLISH);
channel.addAuthorizer(GrantAuthorizer.GRANT_SUBSCRIBE);
}
@Listener("/service/hello")
public void echo(ServerSession remote, ServerMessage.Mutable message){
Map<String, Object> input = message.getDataAsMap();
String name = (String)input.get("name");
Map<String, Object> output = new HashMap<String, Object>();
output.put("greeting", "Hello, " + name);
remote.deliver(serverSession, "/hello", output, null);
}
}