package betsy.bpel.engines.openesb;
import java.nio.file.Path;
import java.util.Objects;
import betsy.bpel.model.BPELProcess;
import betsy.common.tasks.FileTasks;
import betsy.common.tasks.XSLTTasks;
import betsy.common.tasks.ZipTasks;
public class OpenEsbCompositePackager {
private final BPELProcess process;
public OpenEsbCompositePackager(BPELProcess process) {
this.process = Objects.requireNonNull(process);
}
public void build() {
createBinding();
createComposite();
}
private void createComposite() {
// create composite
Path compositeDir = process.getTargetTmpPath().resolve("composite");
Path compositeMetaDir = compositeDir.resolve("META-INF");
FileTasks.mkdirs(compositeMetaDir);
XSLTTasks.transform(process.getEngine().getXsltPath().resolve("create_composite_jbi_from_bpel.xsl"), process.getTargetProcessFilePath(), compositeMetaDir.resolve("jbi.xml"));
XSLTTasks.transform(process.getEngine().getXsltPath().resolve("create_composite_manifest_from_bpel.xsl"), process.getTargetProcessFilePath(), compositeMetaDir.resolve("MANIFEST.MF"));
FileTasks.copyFileIntoFolder(process.getTargetPackageJarFilePath(), compositeDir);
FileTasks.copyFileIntoFolder(getBindingArchive(), compositeDir);
// build composite
ZipTasks.zipFolder(process.getTargetPackageCompositeFilePath(), compositeDir);
}
private void createBinding() {
// create jar file
FileTasks.move(process.getTargetPackageFilePath(), process.getTargetPackageJarFilePath());
// create http binding
Path bindingDir = process.getTargetTmpPath().resolve("binding");
FileTasks.mkdirs(bindingDir);
Path bindingMetaDir = bindingDir.resolve("META-INF");
FileTasks.mkdirs(bindingMetaDir);
XSLTTasks.transform(process.getEngine().getXsltPath().resolve("create_binding_jbi_from_bpel.xsl"), process.getTargetProcessFilePath(), bindingMetaDir.resolve("jbi.xml"));
Path catalogFile = bindingMetaDir.resolve("catalog.xml");
FileTasks.createFile(catalogFile, "<?xml version='1.0' encoding='UTF-8' standalone='no'?><catalog xmlns='urn:oasis:names:tc:entity:xmlns:xml:catalog' prefer='system'></catalog>");
FileTasks.createFile(bindingMetaDir.resolve("MANIFEST.MF"), "Manifest-Version: 1.0");
FileTasks.copyMatchingFilesIntoFolder(process.getTargetProcessPath(), bindingDir.resolve(process.getName()), "*.xsd");
FileTasks.copyMatchingFilesIntoFolder(process.getTargetProcessPath(), bindingDir.resolve(process.getName()), "*.wsdl");
ZipTasks.zipFolder(getBindingArchive(), bindingDir);
}
private Path getBindingArchive() {
return process.getTargetTmpPath().resolve("sun-http-binding.jar");
}
}