package org.societies.comm.xmpp.event.impl;
import java.util.List;
import javax.xml.bind.JAXBException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.societies.api.comm.xmpp.exceptions.CommunicationException;
import org.societies.api.comm.xmpp.exceptions.XMPPError;
import org.societies.api.comm.xmpp.pubsub.PubsubClient;
import org.societies.api.identity.IIdentity;
import org.societies.comm.xmpp.event.PubsubEvent;
import org.societies.comm.xmpp.event.PubsubEventStream;
import org.springframework.context.event.ApplicationEventMulticaster;
public class PubsubEventStreamImpl extends PubsubEventStream {
private static Logger LOG = LoggerFactory
.getLogger(PubsubEventStreamImpl.class);
private PubsubClient psc;
public PubsubEventStreamImpl(IIdentity pubsubService, String node,
ApplicationEventMulticaster multicaster, PubsubClient psc) {
super(pubsubService, node, multicaster);
this.psc = psc;
}
@Override
public String publishLocalEvent(Object payload) {
String itemId = null;
try {
itemId = psc.publisherPublish(pubsubService, node, null, payload);
} catch (XMPPError e) {
LOG.error("XMPPError while publishing event", e);
} catch (CommunicationException e) {
LOG.error("CommunicationException while publishing event", e);
}
return itemId;
}
@Override
public void addJaxbPackages(List<String> packageList) throws JAXBException {
psc.addJaxbPackages(packageList);
}
public void newRemoteEvent(PubsubEvent pe, String itemId) {
multicastRemoteEvent(pe,itemId);
}
}