package betsy.bpel.engines.openesb; import java.nio.file.Path; import betsy.common.tasks.ConsoleTasks; import betsy.common.tasks.FileTasks; import betsy.common.util.StringUtils; import org.apache.log4j.Logger; public class OpenEsbCLI { private static final Logger LOGGER = Logger.getLogger(OpenEsbCLI.class); private final Path glassfishHome; public OpenEsbCLI(Path glassfishHome) { this.glassfishHome = glassfishHome; } public void stopDomain() { FileTasks.assertDirectory(glassfishHome); ConsoleTasks.executeOnWindowsAndIgnoreError(ConsoleTasks.CliCommand.build(getAsAdminWindows()).values("stop-domain", "domain1")); ConsoleTasks.executeOnUnixAndIgnoreError(ConsoleTasks.CliCommand.build(getBinFolder(), "chmod").values("+x", "asadmin")); ConsoleTasks.executeOnUnix(ConsoleTasks.CliCommand.build("sync")); ConsoleTasks.executeOnUnixAndIgnoreError(ConsoleTasks.CliCommand.build(getAsAdminUnix()).values("stop-domain", "domain1")); } public void startDomain() { FileTasks.assertDirectory(glassfishHome); ConsoleTasks.executeOnWindowsAndIgnoreError(ConsoleTasks.CliCommand.build(getAsAdminWindows()).values("start-domain", "domain1")); ConsoleTasks.executeOnUnixAndIgnoreError(ConsoleTasks.CliCommand.build(getBinFolder(), "chmod").values("+x", "asadmin")); ConsoleTasks.executeOnUnix(ConsoleTasks.CliCommand.build("sync")); ConsoleTasks.executeOnUnixAndIgnoreError(ConsoleTasks.CliCommand.build(getAsAdminUnix()).values("start-domain", "domain1")); } private Path getAsAdminWindows() { return getBinFolder().resolve("asadmin.bat").toAbsolutePath(); } private Path getAsAdminUnix() { return getBinFolder().resolve("asadmin").toAbsolutePath(); } protected Path getBinFolder() { return glassfishHome.resolve("bin"); } public void forceRedeploy(String processName, Path packageFilePath, Path tmpFolder) { FileTasks.assertDirectory(glassfishHome); LOGGER.info("Deploying " + processName + " from " + packageFilePath); Path deployCommands = tmpFolder.resolve("deploy_commands.txt"); // QUIRK path must always be in unix style, otherwise it is not correctly deployed String packageFilePathUnixStyle = StringUtils.toUnixStyle(packageFilePath); String scriptContent = "deploy-jbi-service-assembly " + packageFilePathUnixStyle + "\n"; scriptContent += "start-jbi-service-assembly " + processName + "Application\n"; FileTasks.createFile(deployCommands, scriptContent); ConsoleTasks.executeOnWindowsAndIgnoreError(ConsoleTasks.CliCommand.build(getAsAdminWindows()). values("multimode", "--file", deployCommands.toAbsolutePath().toString())); ConsoleTasks.executeOnUnixAndIgnoreError(ConsoleTasks.CliCommand.build(getBinFolder(), "chmod").values("+x", "asadmin")); ConsoleTasks.executeOnUnix(ConsoleTasks.CliCommand.build("sync")); ConsoleTasks.executeOnUnixAndIgnoreError(ConsoleTasks.CliCommand.build(getAsAdminUnix()). values("multimode", "--file", deployCommands.toAbsolutePath().toString())); } public void undeploy(String processName, Path tmpFolder) { FileTasks.assertDirectory(glassfishHome); LOGGER.info("Undeploying " + processName); Path deployCommands = tmpFolder.resolve("undeploy_commands.txt"); String scriptContent = "stop-jbi-service-assembly " + processName + "Application\n"; scriptContent += "shut-down-jbi-service-assembly " + processName + "Application\n"; scriptContent += "undeploy-jbi-service-assembly " + processName + "Application\n"; FileTasks.createFile(deployCommands, scriptContent); ConsoleTasks.executeOnWindowsAndIgnoreError(ConsoleTasks.CliCommand.build(getAsAdminWindows()). values("multimode", "--file", deployCommands.toAbsolutePath().toString())); ConsoleTasks.executeOnUnixAndIgnoreError(ConsoleTasks.CliCommand.build(getBinFolder(), "chmod").values("+x", "asadmin")); ConsoleTasks.executeOnUnix(ConsoleTasks.CliCommand.build("sync")); ConsoleTasks.executeOnUnixAndIgnoreError(ConsoleTasks.CliCommand.build(getAsAdminUnix()). values("multimode", "--file", deployCommands.toAbsolutePath().toString())); } }