Repository: syncope Updated Branches: refs/heads/master 3f58b93c1 -> 4f543e8c0
refactoring of installation process, SYNCOPE-158 Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/4f543e8c Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/4f543e8c Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/4f543e8c Branch: refs/heads/master Commit: 4f543e8c045edf6a321a1ac2bcf4b4ac7755b620 Parents: 3f58b93 Author: massi <massimiliano.perr...@tirasa.net> Authored: Wed Oct 21 12:28:40 2015 +0200 Committer: massi <massimiliano.perr...@tirasa.net> Committed: Wed Oct 21 12:28:40 2015 +0200 ---------------------------------------------------------------------- .../cli/commands/install/InstallCommand.java | 215 +------------------ .../commands/install/InstallResultManager.java | 72 +++++++ .../cli/commands/install/InstallSetup.java | 161 ++++++++++++++ 3 files changed, 235 insertions(+), 213 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/4f543e8c/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallCommand.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallCommand.java index 533c1ce..0caba9f 100644 --- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallCommand.java +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallCommand.java @@ -18,21 +18,11 @@ */ package org.apache.syncope.client.cli.commands.install; -import java.io.FileNotFoundException; -import java.io.UnsupportedEncodingException; -import java.net.ConnectException; -import java.net.UnknownHostException; -import java.util.Scanner; -import javax.ws.rs.ProcessingException; import org.apache.commons.lang3.StringUtils; import org.apache.syncope.client.cli.Command; import org.apache.syncope.client.cli.Input; -import org.apache.syncope.client.cli.SyncopeServices; import org.apache.syncope.client.cli.commands.AbstractCommand; import org.apache.syncope.client.cli.commands.logger.LoggerCommand; -import org.apache.syncope.client.cli.util.FileSystemUtils; -import org.apache.syncope.client.cli.util.JasyptUtils; -import org.apache.syncope.common.rest.api.service.SyncopeService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,222 +36,21 @@ public class InstallCommand extends AbstractCommand { + " --help \n" + " --setup"; - private String syncopeAdminUser; - - private String syncopeAdminPassword; - - private String syncopeServerSchema; - - private String syncopeServerHostname = "localhost"; - - private String syncopeServerPort = "8080"; - - private String syncopeServerRestContext = "/syncope/rest/"; - @Override public void execute(final Input input) { - LOG.debug("Option: {}", input.getOption()); - LOG.debug("Parameters:"); - for (final String parameter : input.getParameters()) { - LOG.debug(" > " + parameter); - } - if (StringUtils.isBlank(input.getOption())) { input.setOption(Options.HELP.getOptionName()); } switch (Options.fromName(input.getOption())) { case INSTALL: - final Scanner scanIn = new Scanner(System.in); - - System.out.println(""); - System.out.println("###############################################"); - System.out.println("# #"); - System.out.println("# Welcome to Syncope CLI installation process #"); - System.out.println("# #"); - System.out.println("###############################################"); - System.out.println(""); - - System.out.println("Path to config files of Syncope CLI client will be: " - + InstallConfigFileTemplate.DIR_PATH); - - if (!FileSystemUtils.canWrite(InstallConfigFileTemplate.DIR_PATH)) { - System.out.println("Permission denied on " + InstallConfigFileTemplate.DIR_PATH); - break; - } - System.out.println("- File system permission checked"); - System.out.println(""); - - System.out.println("Syncope server schema [http/https]:"); - String syncopeServerSchemaFromSystemIn = scanIn.nextLine(); - boolean schemaFounded = false; - while (!schemaFounded) { - if (("http".equalsIgnoreCase(syncopeServerSchemaFromSystemIn)) - || ("https".equalsIgnoreCase(syncopeServerSchemaFromSystemIn))) { - syncopeServerSchema = syncopeServerSchemaFromSystemIn; - schemaFounded = true; - } else { - System.out.println("Please use one of below values:"); - System.out.println(" - http"); - System.out.println(" - https"); - syncopeServerSchemaFromSystemIn = scanIn.nextLine(); - } - } - - System.out.println("Syncope server hostname [e.g. " + syncopeServerHostname + "]:"); - String syncopeServerHostnameFromSystemIn = scanIn.nextLine(); - boolean syncopeServerHostnameFounded = false; - while (!syncopeServerHostnameFounded) { - if (StringUtils.isNotBlank(syncopeServerHostnameFromSystemIn)) { - syncopeServerHostname = syncopeServerHostnameFromSystemIn; - syncopeServerHostnameFounded = true; - } else { - System.out.println("Syncope server hostname [e.g. " + syncopeServerHostname + "]:"); - syncopeServerHostnameFromSystemIn = scanIn.nextLine(); - } - } - - System.out.println("Syncope server port [e.g. " + syncopeServerPort + "]:"); - String syncopeServerPortFromSystemIn = scanIn.nextLine(); - boolean syncopeServerPortFounded = false; - while (!syncopeServerPortFounded) { - if (StringUtils.isNotBlank(syncopeServerPortFromSystemIn)) { - syncopeServerPort = syncopeServerPortFromSystemIn; - syncopeServerPortFounded = true; - } else if (!StringUtils.isNumeric(syncopeServerPortFromSystemIn)) { - System.out.println(syncopeServerPortFromSystemIn + " is not a numeric string, try again"); - syncopeServerPortFromSystemIn = scanIn.nextLine(); - } else { - System.out.println("Syncope server port [e.g. " + syncopeServerPort + "]:"); - syncopeServerPortFromSystemIn = scanIn.nextLine(); - } - } - - System.out.println("Syncope server rest context [e.g. " + syncopeServerRestContext + "]:"); - String syncopeServerRestContextFromSystemIn = scanIn.nextLine(); - boolean syncopeServerRestContextFounded = false; - while (!syncopeServerRestContextFounded) { - if (StringUtils.isNotBlank(syncopeServerRestContextFromSystemIn)) { - syncopeServerRestContext = syncopeServerRestContextFromSystemIn; - syncopeServerRestContextFounded = true; - } else { - System.out.println("Syncope server port [e.g. " + syncopeServerRestContext + "]:"); - syncopeServerRestContextFromSystemIn = scanIn.nextLine(); - } - } - - System.out.println("Syncope admin user:"); - String syncopeAdminUserFromSystemIn = scanIn.nextLine(); - boolean syncopeAdminUserFounded = false; - while (!syncopeAdminUserFounded) { - if (StringUtils.isNotBlank(syncopeAdminUserFromSystemIn)) { - syncopeAdminUser = syncopeAdminUserFromSystemIn; - syncopeAdminUserFounded = true; - } else { - System.out.println("Syncope admin user:"); - syncopeAdminUserFromSystemIn = scanIn.nextLine(); - } - } - - System.out.println("Syncope admin password:"); - String syncopeAdminPasswordFromSystemIn = scanIn.nextLine(); - boolean syncopeAdminPasswordFounded = false; - while (!syncopeAdminPasswordFounded) { - if (StringUtils.isNotBlank(syncopeAdminPasswordFromSystemIn)) { - syncopeAdminPassword = syncopeAdminPasswordFromSystemIn; - syncopeAdminPasswordFounded = true; - } else { - System.out.println("Syncope admin user:"); - syncopeAdminPasswordFromSystemIn = scanIn.nextLine(); - } - } - - scanIn.close(); - - final JasyptUtils jasyptUtils = JasyptUtils.getJasyptUtils(); - - try { - FileSystemUtils.createNewDirectory(InstallConfigFileTemplate.DIR_PATH); - final String contentCliPropertiesFile = InstallConfigFileTemplate.createFile( - syncopeServerSchema, - syncopeServerHostname, - syncopeServerPort, - syncopeServerRestContext, - syncopeAdminUser, - jasyptUtils.encrypt(syncopeAdminPassword)); - FileSystemUtils.createFileWith(InstallConfigFileTemplate.FILE_PATH, contentCliPropertiesFile); - - } catch (final FileNotFoundException | UnsupportedEncodingException ex) { - System.out.println(ex.getMessage()); - } - - try { - final SyncopeService syncopeService = SyncopeServices.get(SyncopeService.class); - System.out.println("Provided parameters checked on Syncope core version: " - + syncopeService.info().getVersion()); - System.out.println(""); - System.out.println("###############################################"); - System.out.println("# #"); - System.out.println("# Installation successful #"); - System.out.println("# now you can use Syncope CLI client #"); - System.out.println("# #"); - System.out.println("###############################################"); - System.out.println(""); - } catch (final ProcessingException ex) { - if (ex.getCause() instanceof UnknownHostException) { - final String unknownHost = ex.getCause().getMessage().split(":")[3]; - System.out.println(""); - System.out.println("Provided host:" + unknownHost); - System.out.println(""); - System.out.println("###############################################"); - System.out.println("# #"); - System.out.println("# Provided unknown host! #"); - System.out.println("# START AGAIN the installation! #"); - System.out.println("# #"); - System.out.println("###############################################"); - System.out.println(""); - } else if (ex.getCause() instanceof ConnectException) { - System.out.println(""); - System.out.println("Provided address :" + SyncopeServices.getAddress()); - System.out.println(""); - System.out.println("###############################################"); - System.out.println("# #"); - System.out.println("# Provided address is unreachable! #"); - System.out.println("# Check it and if it is wrong #"); - System.out.println("# START AGAIN the installation! #"); - System.out.println("# #"); - System.out.println("###############################################"); - System.out.println(""); - } - } catch (final Exception e) { - if (e.getMessage().contains("not authenticated")) { - System.out.println(""); - System.out.println("###############################################"); - System.out.println("# #"); - System.out.println("# Username or password provided are wrong #"); - System.out.println("# START AGAIN the installation! #"); - System.out.println("# #"); - System.out.println("###############################################"); - System.out.println(""); - } else { - System.out.println(""); - System.out.println("###############################################"); - System.out.println("# #"); - System.out.println("# Something wrong #"); - System.out.println("# START AGAIN the installation! #"); - System.out.println("# #"); - System.out.println("###############################################"); - System.out.println(""); - } - } + new InstallSetup().setup(); break; case HELP: System.out.println(HELP_MESSAGE); break; default: - System.out.println(input.getOption() + " is not a valid option."); - System.out.println(""); - System.out.println(HELP_MESSAGE); + new InstallResultManager().defaultError(input.getOption(), HELP_MESSAGE); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/4f543e8c/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallResultManager.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallResultManager.java new file mode 100644 index 0000000..994aca6 --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallResultManager.java @@ -0,0 +1,72 @@ +package org.apache.syncope.client.cli.commands.install; + +import java.net.ConnectException; +import java.net.UnknownHostException; +import javax.ws.rs.ProcessingException; +import org.apache.syncope.client.cli.SyncopeServices; +import org.apache.syncope.client.cli.commands.CommonsResultManager; + +public class InstallResultManager extends CommonsResultManager { + + public void installationSuccessful(final String version) { + System.out.println("Installation parameters checked on Syncope core version: " + version); + System.out.println(""); + System.out.println("###############################################"); + System.out.println("# #"); + System.out.println("# Installation successful #"); + System.out.println("# now you can use Syncope CLI client #"); + System.out.println("# #"); + System.out.println("###############################################"); + System.out.println(""); + } + + public void manageProcessingException(final ProcessingException ex) { + if (ex.getCause() instanceof UnknownHostException) { + final String unknownHost = ex.getCause().getMessage().split(":")[3]; + System.out.println(""); + System.out.println("Provided host:" + unknownHost); + System.out.println(""); + System.out.println("###############################################"); + System.out.println("# #"); + System.out.println("# Provided unknown host! #"); + System.out.println("# START AGAIN the installation! #"); + System.out.println("# #"); + System.out.println("###############################################"); + System.out.println(""); + } else if (ex.getCause() instanceof ConnectException) { + System.out.println(""); + System.out.println("Provided address :" + SyncopeServices.getAddress()); + System.out.println(""); + System.out.println("###############################################"); + System.out.println("# #"); + System.out.println("# Provided address is unreachable! #"); + System.out.println("# Check it and if it is wrong #"); + System.out.println("# START AGAIN the installation! #"); + System.out.println("# #"); + System.out.println("###############################################"); + System.out.println(""); + } + } + + public void manageException(final Exception e) { + if (e.getMessage().contains("not authenticated")) { + System.out.println(""); + System.out.println("###############################################"); + System.out.println("# #"); + System.out.println("# Username or password provided are wrong #"); + System.out.println("# START AGAIN the installation! #"); + System.out.println("# #"); + System.out.println("###############################################"); + System.out.println(""); + } else { + System.out.println(""); + System.out.println("###############################################"); + System.out.println("# #"); + System.out.println("# Something wrong #"); + System.out.println("# START AGAIN the installation! #"); + System.out.println("# #"); + System.out.println("###############################################"); + System.out.println(""); + } + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/4f543e8c/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallSetup.java ---------------------------------------------------------------------- diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallSetup.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallSetup.java new file mode 100644 index 0000000..2a4079e --- /dev/null +++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/install/InstallSetup.java @@ -0,0 +1,161 @@ +package org.apache.syncope.client.cli.commands.install; + +import java.io.FileNotFoundException; +import java.io.UnsupportedEncodingException; +import java.util.Scanner; +import javax.ws.rs.ProcessingException; +import org.apache.commons.lang3.StringUtils; +import org.apache.syncope.client.cli.SyncopeServices; +import org.apache.syncope.client.cli.util.FileSystemUtils; +import org.apache.syncope.client.cli.util.JasyptUtils; +import org.apache.syncope.common.rest.api.service.SyncopeService; + +public class InstallSetup { + + private final InstallResultManager installResultManager = new InstallResultManager(); + + private String syncopeAdminUser; + + private String syncopeAdminPassword; + + private String syncopeServerSchema; + + private String syncopeServerHostname = "localhost"; + + private String syncopeServerPort = "8080"; + + private String syncopeServerRestContext = "/syncope/rest/"; + + public void setup() { + final Scanner scanIn = new Scanner(System.in); + + System.out.println(""); + System.out.println("###############################################"); + System.out.println("# #"); + System.out.println("# Welcome to Syncope CLI installation process #"); + System.out.println("# #"); + System.out.println("###############################################"); + System.out.println(""); + + System.out.println("Path to config files of Syncope CLI client will be: " + + InstallConfigFileTemplate.DIR_PATH); + + if (!FileSystemUtils.canWrite(InstallConfigFileTemplate.DIR_PATH)) { + System.out.println("Permission denied on " + InstallConfigFileTemplate.DIR_PATH); + } + System.out.println("- File system permission checked"); + System.out.println(""); + + System.out.println("Syncope server schema [http/https]:"); + String syncopeServerSchemaFromSystemIn = scanIn.nextLine(); + boolean schemaFounded = false; + while (!schemaFounded) { + if (("http".equalsIgnoreCase(syncopeServerSchemaFromSystemIn)) + || ("https".equalsIgnoreCase(syncopeServerSchemaFromSystemIn))) { + syncopeServerSchema = syncopeServerSchemaFromSystemIn; + schemaFounded = true; + } else { + System.out.println("Please use one of below values:"); + System.out.println(" - http"); + System.out.println(" - https"); + syncopeServerSchemaFromSystemIn = scanIn.nextLine(); + } + } + + System.out.println("Syncope server hostname [e.g. " + syncopeServerHostname + "]:"); + String syncopeServerHostnameFromSystemIn = scanIn.nextLine(); + boolean syncopeServerHostnameFounded = false; + while (!syncopeServerHostnameFounded) { + if (StringUtils.isNotBlank(syncopeServerHostnameFromSystemIn)) { + syncopeServerHostname = syncopeServerHostnameFromSystemIn; + syncopeServerHostnameFounded = true; + } else { + System.out.println("Syncope server hostname [e.g. " + syncopeServerHostname + "]:"); + syncopeServerHostnameFromSystemIn = scanIn.nextLine(); + } + } + + System.out.println("Syncope server port [e.g. " + syncopeServerPort + "]:"); + String syncopeServerPortFromSystemIn = scanIn.nextLine(); + boolean syncopeServerPortFounded = false; + while (!syncopeServerPortFounded) { + if (StringUtils.isNotBlank(syncopeServerPortFromSystemIn)) { + syncopeServerPort = syncopeServerPortFromSystemIn; + syncopeServerPortFounded = true; + } else if (!StringUtils.isNumeric(syncopeServerPortFromSystemIn)) { + System.out.println(syncopeServerPortFromSystemIn + " is not a numeric string, try again"); + syncopeServerPortFromSystemIn = scanIn.nextLine(); + } else { + System.out.println("Syncope server port [e.g. " + syncopeServerPort + "]:"); + syncopeServerPortFromSystemIn = scanIn.nextLine(); + } + } + + System.out.println("Syncope server rest context [e.g. " + syncopeServerRestContext + "]:"); + String syncopeServerRestContextFromSystemIn = scanIn.nextLine(); + boolean syncopeServerRestContextFounded = false; + while (!syncopeServerRestContextFounded) { + if (StringUtils.isNotBlank(syncopeServerRestContextFromSystemIn)) { + syncopeServerRestContext = syncopeServerRestContextFromSystemIn; + syncopeServerRestContextFounded = true; + } else { + System.out.println("Syncope server port [e.g. " + syncopeServerRestContext + "]:"); + syncopeServerRestContextFromSystemIn = scanIn.nextLine(); + } + } + + System.out.println("Syncope admin user:"); + String syncopeAdminUserFromSystemIn = scanIn.nextLine(); + boolean syncopeAdminUserFounded = false; + while (!syncopeAdminUserFounded) { + if (StringUtils.isNotBlank(syncopeAdminUserFromSystemIn)) { + syncopeAdminUser = syncopeAdminUserFromSystemIn; + syncopeAdminUserFounded = true; + } else { + System.out.println("Syncope admin user:"); + syncopeAdminUserFromSystemIn = scanIn.nextLine(); + } + } + + System.out.println("Syncope admin password:"); + String syncopeAdminPasswordFromSystemIn = scanIn.nextLine(); + boolean syncopeAdminPasswordFounded = false; + while (!syncopeAdminPasswordFounded) { + if (StringUtils.isNotBlank(syncopeAdminPasswordFromSystemIn)) { + syncopeAdminPassword = syncopeAdminPasswordFromSystemIn; + syncopeAdminPasswordFounded = true; + } else { + System.out.println("Syncope admin user:"); + syncopeAdminPasswordFromSystemIn = scanIn.nextLine(); + } + } + + scanIn.close(); + + final JasyptUtils jasyptUtils = JasyptUtils.getJasyptUtils(); + + try { + FileSystemUtils.createNewDirectory(InstallConfigFileTemplate.DIR_PATH); + final String contentCliPropertiesFile = InstallConfigFileTemplate.createFile( + syncopeServerSchema, + syncopeServerHostname, + syncopeServerPort, + syncopeServerRestContext, + syncopeAdminUser, + jasyptUtils.encrypt(syncopeAdminPassword)); + FileSystemUtils.createFileWith(InstallConfigFileTemplate.FILE_PATH, contentCliPropertiesFile); + + } catch (final FileNotFoundException | UnsupportedEncodingException ex) { + System.out.println(ex.getMessage()); + } + + try { + final SyncopeService syncopeService = SyncopeServices.get(SyncopeService.class); + installResultManager.installationSuccessful(syncopeService.info().getVersion()); + } catch (final ProcessingException ex) { + installResultManager.manageProcessingException(ex); + } catch (final Exception e) { + installResultManager.manageException(e); + } + } +}