001/*
002# Licensed Materials - Property of IBM
003# Copyright IBM Corp. 2015  
004 */
005package simple;
006
007import com.ibm.streamsx.topology.TStream;
008import com.ibm.streamsx.topology.Topology;
009import com.ibm.streamsx.topology.context.StreamsContextFactory;
010
011/**
012* Sample echo topology application. This Java application builds a
013* simple topology that echos its command line arguments to standard output.
014* <BR>
015* The application implements the typical pattern of code that declares a
016* topology followed by submission of the topology to a Streams context
017* {@code com.ibm.streamsx.topology.context.StreamsContext}.
018* <BR>
019* This demonstrates passing in values (the command line arguments) into a topology,
020* so that the same application can produce different ouput depending on the passed
021* in values.
022* <P>
023* This topology is always executed in embedded mode,
024* within this JVM.
025* <BR>
026* This may be executed from the {@code samples/java/functional} directory as:
027* <UL>
028* <LI>{@code ant run.echo} - Using Apache Ant, this will run in embedded
029* mode.</LI>
030* <LI>
031* {@code java -cp functionalsamples.jar:../../../com.ibm.streamsx.topology/lib/com.ibm.streamsx.topology.jar:$STREAMS_INSTALL/lib/com.ibm.streams.operator.samples.jar
032*  simple.Echo text to echo
033* } - Run directly from the command line in embedded mode.
034* <LI>
035* An application execution within your IDE once you set the class path to include the correct jars.</LI>
036* </UL>
037* </P>
038*/
039public class Echo {
040
041    /**
042     * Sample Echo topology application. This Java application builds a
043     * simple topology that echos its command line arguments to standard output.
044     * <BR>
045     * The application implements the typical pattern
046     * of code that declares a topology followed by
047     * submission of the topology to a Streams context
048     * (@code com.ibm.streamsx.topology.context.StreamsContext}.
049
050     * @param args Arguments to be echoed to standard out.
051     * @throws Exception
052     */
053    public static void main(String[] args) throws Exception {
054
055        Topology topology = new Topology("Echo");
056
057        /*
058         * The command line arguments (args) are captured by
059         * the strings() method and will be used at runtime
060         * as the contents of the echo stream.
061         */
062        TStream<String> echo = topology.strings(args);
063        echo.print();
064        
065        /*
066         * At this point the topology is declared with a single
067         * stream that is printed to System.out.
068         */
069
070        /*
071         * Now execute the topology by submitting to an
072         * embedded (within this JVM) StreamsContext.
073         */
074        StreamsContextFactory.getEmbedded().submit(topology).get();
075    }
076}