/*
# Licensed Materials - Property of IBM
# Copyright IBM Corp. 2015
*/
package com.ibm.streamsx.topology.builder;
import com.ibm.json.java.JSONArray;
import com.ibm.json.java.JSONObject;
import com.ibm.streams.flow.declare.OutputPortDeclaration;
import com.ibm.streams.flow.declare.StreamConnection;
import com.ibm.streams.operator.StreamSchema;
public class BOutputPort extends BOutput {
private final BOperatorInvocation op;
private final OutputPortDeclaration port;
BOutputPort(BOperatorInvocation op, OutputPortDeclaration port) {
this.op = op;
this.port = port;
}
public BOperatorInvocation operator() {
return op;
}
public GraphBuilder builder() {
return op.builder();
}
@Override
public JSONObject complete() {
final JSONObject json = json();
BUtils.addPortInfo(json, port);
JSONArray conns = new JSONArray();
for (StreamConnection c : port().getConnections()) {
conns.add(c.getInput().getName());
}
json.put("connections", conns);
return json;
}
public OutputPortDeclaration port() {
return port;
}
@Override
public StreamSchema schema() {
return port.getStreamSchema();
}
@Override
public void connectTo(BInputPort input) {
input.port().connect(port());
input.operator().copyRegions(operator());
}
}