use of com.ibm.streamsx.topology.internal.toolkit.info.ToolkitInfoModelType in project streamsx.topology by IBMStreams.
the class ToolkitRemoteContext method addToolkitInfo.
/**
* Create an info.xml file for the toolkit.
* @throws URISyntaxException
*/
private void addToolkitInfo(File toolkitRoot, JsonObject jsonGraph) throws JAXBException, FileNotFoundException, IOException, URISyntaxException {
File infoFile = new File(toolkitRoot, "info.xml");
ToolkitInfoModelType info = new ToolkitInfoModelType();
info.setIdentity(new IdentityType());
info.getIdentity().setName(toolkitRoot.getName());
info.getIdentity().setDescription(new DescriptionType());
info.getIdentity().setVersion("1.0.0." + System.currentTimeMillis());
info.getIdentity().setRequiredProductVersion("4.0.1.0");
DependenciesType dependencies = new DependenciesType();
List<ToolkitDependencyType> toolkits = dependencies.getToolkit();
GsonUtilities.objectArray(object(jsonGraph, "spl"), TOOLKITS_JSON, tk -> {
ToolkitDependencyType depTkInfo;
String root = jstring(tk, "root");
if (root != null) {
try {
depTkInfo = TkInfo.getTookitDependency(root);
} catch (Exception e) {
throw new RuntimeException(e);
}
} else {
depTkInfo = new ToolkitDependencyType();
depTkInfo.setName(jstring(tk, "name"));
depTkInfo.setVersion(jstring(tk, "version"));
}
toolkits.add(depTkInfo);
});
File topologyToolkitRoot = TkInfo.getTopologyToolkitRoot();
toolkits.add(TkInfo.getTookitDependency(topologyToolkitRoot.getAbsolutePath()));
info.setDependencies(dependencies);
JAXBContext context = JAXBContext.newInstance(ObjectFactory.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
try (FileOutputStream out = new FileOutputStream(infoFile)) {
m.marshal(info, out);
}
}
use of com.ibm.streamsx.topology.internal.toolkit.info.ToolkitInfoModelType in project streamsx.topology by IBMStreams.
the class TkInfo method getToolkitInfo.
/**
* Get the full toolkit information.
* Returns null if there is no info.xml
*/
public static ToolkitInfoModelType getToolkitInfo(File toolkitRoot) throws JAXBException {
File infoFile = new File(toolkitRoot, "info.xml");
if (!infoFile.exists())
return null;
StreamSource infoSource = new StreamSource(infoFile);
JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
ToolkitInfoModelType tkinfo = jaxbUnmarshaller.unmarshal(infoSource, ToolkitInfoModelType.class).getValue();
return tkinfo;
}
use of com.ibm.streamsx.topology.internal.toolkit.info.ToolkitInfoModelType in project streamsx.topology by IBMStreams.
the class TkInfo method getTookitDependency.
public static ToolkitDependencyType getTookitDependency(String toolkitRoot) throws JAXBException {
ToolkitInfoModelType depTkInfo = getToolkitInfo(new File(toolkitRoot));
String depTkVersion = depTkInfo.getIdentity().getVersion();
String[] elements = depTkVersion.split("\\.");
int next = Integer.valueOf(elements[0]) + 1;
String versionRange = "[" + elements[0] + "." + elements[1] + "," + next + ".0)";
ToolkitDependencyType depTk = new ToolkitDependencyType();
depTk.setName(depTkInfo.getIdentity().getName());
depTk.setVersion(versionRange);
return depTk;
}
use of com.ibm.streamsx.topology.internal.toolkit.info.ToolkitInfoModelType in project streamsx.topology by IBMStreams.
the class SPL method addToolkit.
/**
* Add a dependency on an SPL toolkit.
* @param te Element within the topology.
* @param toolkitRoot Root directory of the toolkit.
* @throws IOException {@code toolkitRoot} is not a valid path.
*/
public static void addToolkit(TopologyElement te, File toolkitRoot) throws IOException {
JSONObject tkinfo = newToolkitDepInfo(te);
tkinfo.put("root", toolkitRoot.getCanonicalPath());
ToolkitInfoModelType infoModel;
try {
infoModel = TkInfo.getToolkitInfo(toolkitRoot);
} catch (JAXBException e) {
throw new IOException(e);
}
if (infoModel != null) {
IdentityType tkIdentity = infoModel.getIdentity();
tkinfo.put("name", tkIdentity.getName());
tkinfo.put("version", tkIdentity.getVersion());
}
}
Aggregations