package org.opennaas.extensions.roadm.wonesys.transports.mock; import java.util.Dictionary; import java.util.Hashtable; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.opennaas.core.resources.ActivatorException; import org.opennaas.extensions.roadm.wonesys.protocols.WonesysProtocolBundleActivator; import org.opennaas.extensions.roadm.wonesys.transports.ITransport; import org.opennaas.extensions.roadm.wonesys.transports.rawsocket.RawSocketTransport; import org.osgi.service.event.Event; public class MockTransport implements ITransport { private int period = 2; Log log = LogFactory.getLog(RawSocketTransport.class); ProteusMock proteusMock = null; public MockTransport() { proteusMock = new ProteusMock(this); } // private List<ITransportListener> listeners = new ArrayList<ITransportListener>(); @Override public Object sendMsg(Object message) throws Exception { sendAsync(message); return ""; } @Override public void sendAsync(Object message) throws Exception { if (!(message instanceof String)) throw new Exception("Incorrect format in message"); Object response = (String) proteusMock.execCommand((String) message); notifyListeners(response); } public void setTimerPeriod(int period) { this.period = period; } // public void registerListener(ITransportListener listener) { // listeners.add(listener); // } // // public void unregisterListener(ITransportListener listener) { // listeners.remove(listener); // } public void notifyListeners(Object message) { Event ev = createEvent(RawSocketTransport.MSG_RCVD_EVENT_TOPIC, (String) message); try { WonesysProtocolBundleActivator.getEventManagerService().publishEvent(ev); } catch (ActivatorException e) { log.error("Could not notify transport listeners.", e); log.error("Received event will be lost. Event: " + ev.toString()); } // // manually call handleEvent in all listeners (skip eventManager) // for (int i = listeners.size() - 1; i >= 0; i--) { // listeners.get(i).handleEvent(ev); // } } protected Event createEvent(String eventTopic, String message) { Dictionary<String, Object> properties = new Hashtable<String, Object>(); properties.put(RawSocketTransport.TRANSPORT_ID_PROPERTY_NAME, getTransportID()); if (message != null) properties.put(RawSocketTransport.MESSAGE_PROPERTY_NAME, message); return new Event(eventTopic, properties); } @Override public String getTransportID() { return "mockTransportID"; } @Override public void connect() throws Exception { // TODO Auto-generated method stub } @Override public void disconnect() throws Exception { // TODO Auto-generated method stub } public ProteusMock getProteusMock() { return proteusMock; } }