/* # Licensed Materials - Property of IBM # Copyright IBM Corp. 2015 */ package com.ibm.streamsx.topology.internal.context; import static com.ibm.streamsx.topology.internal.context.remote.DeployKeys.deploy; import static com.ibm.streamsx.topology.internal.context.remote.DeployKeys.keepArtifacts; import java.io.File; import java.math.BigInteger; import java.util.concurrent.Future; import com.google.gson.JsonObject; import com.ibm.streamsx.topology.context.remote.RemoteContext; import com.ibm.streamsx.topology.internal.context.remote.SubmissionResultsKeys; import com.ibm.streamsx.topology.internal.gson.GsonUtilities; import com.ibm.streamsx.topology.internal.process.CompletedFuture; import com.ibm.streamsx.topology.internal.streams.InvokeSubmit; public class DistributedStreamsContext extends BundleUserStreamsContext<BigInteger> { public DistributedStreamsContext() { super(false); } @Override public Type getType() { return Type.DISTRIBUTED; } @Override void preSubmit(AppEntity entity) { InvokeSubmit.checkPreconditions(); } @Override Future<BigInteger> invoke(AppEntity entity, File bundle) throws Exception { try { InvokeSubmit submitjob = new InvokeSubmit(bundle); BigInteger jobId = submitjob.invoke(deploy(entity.submission)); final JsonObject submissionResult = GsonUtilities.objectCreate(entity.submission, RemoteContext.SUBMISSION_RESULTS); submissionResult.addProperty(SubmissionResultsKeys.JOB_ID, jobId.toString()); return new CompletedFuture<BigInteger>(jobId); } finally { if (!keepArtifacts(entity.submission)) bundle.delete(); } } }