package betsy.bpel.engines.petalsesb;
import java.nio.file.Path;
import java.util.Objects;
import betsy.bpel.model.BPELProcess;
import betsy.common.config.Configuration;
import betsy.common.tasks.FileTasks;
import betsy.common.tasks.XSLTTasks;
import betsy.common.tasks.ZipTasks;
public class PetalsEsbCompositePackager {
private final BPELProcess process;
public PetalsEsbCompositePackager(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"));
FileTasks.copyFileIntoFolder(process.getTargetPackageFilePath(), compositeDir);
FileTasks.copyFileIntoFolder(getBindingArchive(), compositeDir);
FileTasks.replaceTokensInFolder(compositeDir, "PARTNER_IP_AND_PORT", Configuration.get("partner.ipAndPort"));
FileTasks.replaceTokensInFolder(compositeMetaDir, "PARTNER_IP_AND_PORT", Configuration.get("partner.ipAndPort"));
// build composite
ZipTasks.zipFolder(process.getTargetPackageCompositeFilePath(), compositeDir);
}
public void createBinding() {
Path bindingDir = process.getTargetTmpPath().resolve("binding");
Path bindingMetaDir = bindingDir.resolve("META-INF");
FileTasks.mkdirs(bindingDir);
FileTasks.mkdirs(bindingMetaDir);
XSLTTasks.transform(process.getEngine().getXsltPath().resolve("create_binding_jbi_from_bpel.xsl"),
process.getTargetProcessFilePath(), bindingMetaDir.resolve("jbi.xml"));
FileTasks.copyMatchingFilesIntoFolder(process.getTargetProcessPath(), bindingDir, "*.xsd");
FileTasks.copyMatchingFilesIntoFolder(process.getTargetProcessPath(), bindingDir, "*.wsdl");
FileTasks.replaceTokensInFolder(bindingDir, "PARTNER_IP_AND_PORT", Configuration.get("partner.ipAndPort"));
FileTasks.replaceTokensInFolder(bindingMetaDir, "PARTNER_IP_AND_PORT", Configuration.get("partner.ipAndPort"));
ZipTasks.zipFolder(getBindingArchive(), bindingDir);
}
private Path getBindingArchive() {
return process.getTargetTmpPath().resolve(process.getName() + "Binding.zip");
}
}