@Override public EventListener addingService(ServiceReference<EventListener> reference) { EventListener service = m_bundleContext.getService(reference); addListener(service); return service; }
@Override public void postEvent(final String topic, Map<String, String> payload) { // Make sure that the payload isn't changed while posting events... final Map<String, String> eventPayload = new HashMap<>(payload); for (final EventListener listener : m_listeners) { ScheduledExecutorService executor = getExecutorService(); if (executor.isShutdown()) { logWarning("Cannot post event, executor is shut down!"); return; } executor.submit(new Runnable() { @Override public void run() { try { listener.handle(topic, eventPayload); } catch (Exception e) { logWarning("Exception while posting event", e); } } }); } }
@Override public void removedService(ServiceReference<EventListener> reference, EventListener service) { removeListener(service); } });
@BeforeClass public void setUpOnceAgain() throws Exception { File dataLocation = new File("generated"); m_200file = File.createTempFile("download", ".bin", dataLocation); m_200file.deleteOnExit(); int port = 8883; m_200url = new URL("http://localhost:" + port + "/" + m_200file.getName()); m_404url = new URL("http://localhost:" + port + "/error?status=404"); m_503url = new URL("http://localhost:" + port + "/error?status=503&retry=500"); DigestOutputStream dos = new DigestOutputStream(new FileOutputStream(m_200file), MessageDigest.getInstance("MD5")); for (int i = 0; i < 10000; i++) { dos.write(String.valueOf(System.currentTimeMillis()).getBytes()); dos.write(" Lorum Ipsum Lorum Ipsum Lorum Ipsum Lorum Ipsum Lorum Ipsum\n".getBytes()); } dos.close(); m_200digest = new String(dos.getMessageDigest().digest()); m_webServer = new TestWebServer(port, "/", dataLocation.getName()); m_webServer.addServlet(new TestErrorServlet(), "/error"); m_webServer.start(); m_agentContextImpl = mockAgentContext(); m_agentContext = m_agentContextImpl; BundleContext bc = mockBundleContext(); m_agentContextImpl.setHandler(EventsHandler.class, new EventsHandlerImpl(bc)); m_agentContextImpl.setHandler(ConnectionHandler.class, new ConnectionHandlerImpl()); m_agentContextImpl.setHandler(LoggingHandler.class, new LoggingHandlerImpl(bc, Levels.DEBUG)); m_agentContextImpl.setHandler(DownloadHandler.class, new DownloadHandlerImpl(dataLocation)); m_agentContextImpl.start(); replayTestMocks(); }
@Override public void run() { try { listener.handle(topic, eventPayload); } catch (Exception e) { logWarning("Exception while posting event", e); } } });
@BeforeClass public void setUpOnceAgain() throws Exception { m_webServer = new TestWebServer(PORT, "/", "generated"); m_webServer.start(); m_availableURL1 = new URL("http://localhost:" + PORT); m_availableURL2 = new URL("http://127.0.0.1:" + PORT); m_unavailableURL1 = new URL("http://localhost:19999"); m_unavailableURL2 = new URL("http://127.0.0.1:19999"); BundleContext bc = mockBundleContext(); m_agentContextImpl = mockAgentContext(); m_agentContext = m_agentContextImpl; // Make sure the default server URL is not reachable, as used for this test... m_agentContextImpl.setHandler(DiscoveryHandler.class, new DiscoveryHandlerImpl(m_unavailableURL1.toExternalForm(), true)); m_agentContextImpl.setHandler(EventsHandler.class, new EventsHandlerImpl(bc)); m_agentContextImpl.setHandler(ConfigurationHandler.class, new ConfigurationHandlerImpl(bc)); m_agentContextImpl.setHandler(ConnectionHandler.class, new ConnectionHandlerImpl()); replayTestMocks(); m_agentContextImpl.start(); }
@Override public void sendEvent(String topic, Map<String, String> payload) { // Make sure that the payload isn't changed while sending events... final Map<String, String> eventPayload = new HashMap<>(payload); for (EventListener listener : m_listeners) { try { listener.handle(topic, eventPayload); } catch (Exception e) { logWarning("Exception while sending event", e); } } }
@BeforeClass public void setUpAgain() throws Exception { m_agentContextImpl = mockAgentContext(); replayTestMocks(); BundleContext bc = mockBundleContext(); m_agentContextImpl.setHandler(FeedbackHandler.class, new FeedbackHandlerImpl()); m_agentContextImpl.setHandler(EventsHandler.class, new EventsHandlerImpl(bc)); m_agentContextImpl.setHandler(ConfigurationHandler.class, new ConfigurationHandlerImpl(bc)); m_agentContextImpl.start(); }
@BeforeClass(alwaysRun = true) public void setUpOnceAgain() throws Exception { m_agentContext = mockAgentContext(); BundleContext bc = mockBundleContext(); m_eventsHandler = new EventsHandlerImpl(bc); m_agentContext.setHandler(EventsHandler.class, m_eventsHandler); m_agentContext.setHandler(ConfigurationHandler.class, new ConfigurationHandlerImpl(bc)); m_agentContext.setHandler(FeedbackHandler.class, new TestFeedbackHandler()); replayTestMocks(); m_agentContext.start(); }
@BeforeClass public void setUpOnceAgain() throws Exception { m_basicAuthURL = new URL("http://localhost:" + PORT + "/basicauth"); m_webServer = new TestWebServer(PORT, "/", "generated"); m_webServer.addServlet(new BasicAuthServlet(USERNAME, PASSWORD), "/basicauth/*"); m_webServer.start(); BundleContext bc = mockBundleContext(); m_agentContext = mockAgentContext(); m_agentContext.setHandler(EventsHandler.class, new EventsHandlerImpl(bc)); m_agentContext.setHandler(ConfigurationHandler.class, new ConfigurationHandlerImpl(bc)); m_agentContext.setHandler(ConnectionHandler.class, new ConnectionHandlerImpl()); replayTestMocks(); m_agentContext.start(); }
/** * Called by our {@link DependencyTrackerImpl} when all dependencies are satisfied. */ public void componentStarted(BundleContext context) throws Exception { final File bundleDataArea = context.getDataFile(""); m_agentContext = new AgentContextImpl(bundleDataArea); m_agentContext.setHandler(LoggingHandler.class, new LoggingHandlerImpl(context)); m_agentContext.setHandler(ConfigurationHandler.class, new ConfigurationHandlerImpl(context)); m_agentContext.setHandler(EventsHandler.class, new EventsHandlerImpl(context)); m_agentContext.setHandler(ScheduledExecutorService.class, m_executorService); m_agentContext.setHandler(DownloadHandler.class, new DownloadHandlerImpl(bundleDataArea)); m_agentContext.setHandler(DeploymentHandler.class, new DeploymentHandlerImpl(context, m_packageAdmin)); m_agentContext.setHandler(AgentUpdateHandler.class, new AgentUpdateHandlerImpl(context)); m_agentContext.setHandler(FeedbackHandler.class, new FeedbackHandlerImpl()); IdentificationHandler identificationHandler = (m_identificationHandler != null) ? m_identificationHandler : new IdentificationHandlerImpl(); m_agentContext.setHandler(IdentificationHandler.class, identificationHandler); DiscoveryHandler discoveryHandler = (m_discoveryHandler != null) ? m_discoveryHandler : new DiscoveryHandlerImpl(); m_agentContext.setHandler(DiscoveryHandler.class, discoveryHandler); ConnectionHandler connectionHandler = (m_connectionHandler != null) ? m_connectionHandler : new ConnectionHandlerImpl(); m_agentContext.setHandler(ConnectionHandler.class, connectionHandler); m_agentContext.addComponent(new EventLoggerImpl(context)); // Lastly, inject the (custom) controller for this agent... m_agentContext.setController(m_controller); m_agentContext.start(); m_agentControlRegistration = context.registerService(AgentControl.class.getName(), new AgentControlImpl(m_agentContext), null); }