/*
# Licensed Materials - Property of IBM
# Copyright IBM Corp. 2015
*/
package com.ibm.streamsx.topology;
import com.ibm.streams.flow.declare.OperatorGraph;
import com.ibm.streamsx.topology.builder.GraphBuilder;
/**
* Any element in a {@link Topology}.
*
* All elements in a {@code Topology}, including {@code Topology} itself,
* implement {@code TopologyElement}. <BR>
* Some methods, typically those that create source streams, require a
* {@code TopologyElement} to identify the topology that the new element needs
* to be added to. Any other {@link TStream} or {@link TWindow} can be used as
* the {@code TopologyElement} passed to those methods, rather than having to
* pass the {@code Topology} reference all throughout the code that builds the
* topology.
*
*/
public interface TopologyElement {
/**
* The topology for this element.
*
* @return The topology for this element.
*/
Topology topology();
/**
* Get the underlying {@code OperatorGraph}. Internal use only.
* <BR>
* Not intended to be called by applications, may be removed at any time.
*/
OperatorGraph graph();
/**
* Get the underlying {@code OperatorGraph}. Internal use only.
* <BR>
* Not intended to be called by applications, may be removed at any time.
*/
GraphBuilder builder();
}