package betsy.bpel.engines.ode;
import java.nio.file.Path;
import java.time.LocalDate;
import java.util.LinkedList;
import java.util.List;
import javax.xml.namespace.QName;
import betsy.bpel.engines.AbstractLocalBPELEngine;
import betsy.bpel.model.BPELProcess;
import betsy.common.engines.tomcat.Tomcat;
import betsy.common.model.engine.EngineExtended;
import betsy.common.tasks.FileTasks;
import betsy.common.tasks.XSLTTasks;
import betsy.common.util.ClasspathHelper;
import pebl.ProcessLanguage;
public class OdeEngine extends AbstractLocalBPELEngine {
public static final String TEST_INTERFACE_SERVICE = "TestInterfaceService";
@Override
public Path getXsltPath() {
return ClasspathHelper.getFilesystemPathFromClasspathPath("/bpel/ode");
}
@Override
public EngineExtended getEngineObject() {
return new EngineExtended(ProcessLanguage.BPEL, "ode", "1.3.5", LocalDate.of(2011,2,6), "Apache-2.0");
}
@Override
public String getEndpointUrl(String name) {
return getTomcat().getTomcatUrl() + "/ode/processes/" + name + "TestInterface";
}
public Path getDeploymentDir() {
return getTomcat().getTomcatDir().resolve("webapps/ode/WEB-INF/processes");
}
public Tomcat getTomcat() {
return Tomcat.v7(getServerPath());
}
@Override
public void startup() {
getTomcat().startup();
}
@Override
public void shutdown() {
getTomcat().shutdown();
}
@Override
public List<Path> getLogs() {
List<Path> result = new LinkedList<>();
result.addAll(FileTasks.findAllInFolder(getTomcat().getTomcatLogsDir()));
return result;
}
@Override
public void install() {
new OdeInstaller(getServerPath(), "apache-ode-war-1.3.5.zip").install();
}
@Override
public void deploy(String name, Path path) {
OdeDeployer deployer = new OdeDeployer(getDeploymentDir(), getTomcat().getTomcatLogsDir().resolve("ode.log"));
deployer.deploy(path, name);
}
@Override
public boolean isDeployed(QName process) {
OdeDeployer deployer = new OdeDeployer(getDeploymentDir(), getTomcat().getTomcatLogsDir().resolve("ode.log"));
return deployer.isDeployed(process.getLocalPart());
}
@Override
public void undeploy(QName process) {
OdeDeployer deployer = new OdeDeployer(getDeploymentDir(), getTomcat().getTomcatLogsDir().resolve("ode.log"));
deployer.undeploy(process.getLocalPart());
}
@Override
public Path buildArchives(final BPELProcess process) {
getPackageBuilder().createFolderAndCopyProcessFilesToTarget(process);
// engine specific steps
XSLTTasks.transform(getXsltPath().resolve("bpel_to_ode_deploy_xml.xsl"), process.getProcess(), process.getTargetProcessPath().resolve("deploy.xml"));
FileTasks.replaceTokenInFile(process.getTargetProcessPath().resolve("TestInterface.wsdl"), TEST_INTERFACE_SERVICE, process.getName() + TEST_INTERFACE_SERVICE);
FileTasks.replaceTokenInFile(process.getTargetProcessPath().resolve("deploy.xml"), TEST_INTERFACE_SERVICE, process.getName() + TEST_INTERFACE_SERVICE);
getPackageBuilder().replaceEndpointTokenWithValue(process);
getPackageBuilder().replacePartnerTokenWithValue(process);
getPackageBuilder().bpelFolderToZipFile(process);
return process.getTargetPackageFilePath();
}
@Override
public boolean isRunning() {
return getTomcat().checkIfIsRunning();
}
}