/* # Licensed Materials - Property of IBM # Copyright IBM Corp. 2014 */ package com.ibm.streamsx.inet.rest.setup; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import com.ibm.streams.operator.OperatorContext; import com.ibm.streams.operator.StreamingInput; import com.ibm.streams.operator.Tuple; import com.ibm.streams.operator.window.StreamWindow; import com.ibm.streamsx.inet.rest.servlets.AccessWindowContents; import com.ibm.streamsx.inet.window.WindowContentsAtTrigger; public class TupleViewSetup implements OperatorServletSetup { @Override public List<ExposedPort> setup(OperatorContext context, ServletContextHandler staticContext, ServletContextHandler ports) { List<ExposedPort> exposed = new ArrayList<ExposedPort>(); final List<WindowContentsAtTrigger<Tuple>> windows = new ArrayList<WindowContentsAtTrigger<Tuple>>( context.getNumberOfStreamingOutputs()); Logger trace = Logger.getAnonymousLogger(); for (StreamingInput<Tuple> port : context.getStreamingInputs()) { StreamWindow<Tuple> window = port.getStreamWindow(); WindowContentsAtTrigger<Tuple> contents = new WindowContentsAtTrigger<Tuple>( context, port); windows.add(contents); window.registerListener(contents, false); String path = "/input/" + port.getPortNumber() + "/tuples"; ports.addServlet(new ServletHolder(new AccessWindowContents(contents)), path); ExposedPort ep = new ExposedPort(context, port, ports.getContextPath()); exposed.add(ep); ep.addURL("tuples", path); trace.info("Port JSON URL: " + ports.getContextPath() + path); } return exposed; } }