X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=main%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fpdpx%2Fmain%2Fstartstop%2FMain.java;h=020bfcbf1f235352dcc3a97c12aadc5cf1701a95;hb=05045cd36ad264b5d7b674155699b2cccee71165;hp=62cdc34ae109b06d5a425b8b9fb69d2e9b5e28b9;hpb=c7beb45738209526a4794b3b72f0f0bd025d1a82;p=policy%2Fxacml-pdp.git diff --git a/main/src/main/java/org/onap/policy/pdpx/main/startstop/Main.java b/main/src/main/java/org/onap/policy/pdpx/main/startstop/Main.java index 62cdc34a..020bfcbf 100644 --- a/main/src/main/java/org/onap/policy/pdpx/main/startstop/Main.java +++ b/main/src/main/java/org/onap/policy/pdpx/main/startstop/Main.java @@ -23,7 +23,7 @@ package org.onap.policy.pdpx.main.startstop; import java.io.FileInputStream; import java.util.Arrays; import java.util.Properties; - +import lombok.Getter; import org.onap.policy.pdpx.main.PolicyXacmlPdpException; import org.onap.policy.pdpx.main.parameters.XacmlPdpParameterGroup; import org.onap.policy.pdpx.main.parameters.XacmlPdpParameterHandler; @@ -41,45 +41,34 @@ public class Main { // The policy xacml pdp Activator that activates the policy xacml pdp service private XacmlPdpActivator activator; - // The parameters read in from JSON - private XacmlPdpParameterGroup parameterGroup; - - // The argument message for some args that return a message + @Getter private String argumentMessage = null; /** * Instantiates the policy xacml pdp service. * * @param args the command line arguments + * @throws PolicyXacmlPdpException if an error occurs */ - public Main(final String[] args) { + public Main(final String[] args) throws PolicyXacmlPdpException { final String argumentString = Arrays.toString(args); LOGGER.info("Starting policy xacml pdp service with arguments - {}", argumentString); // Check the arguments final XacmlPdpCommandLineArguments arguments = new XacmlPdpCommandLineArguments(); - try { - // The arguments return a string if there is a message to print and we should exit - argumentMessage = arguments.parse(args); - if (argumentMessage != null) { - LOGGER.info(argumentMessage); - return; - } - // Validate that the arguments are sane - arguments.validate(); - } catch (final PolicyXacmlPdpException e) { - LOGGER.error("start of policy xacml pdp service failed", e); + // The arguments return a string if there is a message to print and we should exit + argumentMessage = arguments.parse(args); + if (argumentMessage != null) { + LOGGER.info(argumentMessage); return; } + // Validate that the arguments are sane + arguments.validate(); + // Read the parameters - try { - parameterGroup = new XacmlPdpParameterHandler().getParameters(arguments); - } catch (final Exception e) { - LOGGER.error("start of policy xacml pdp service failed", e); - return; - } + XacmlPdpParameterGroup parameterGroup = new XacmlPdpParameterHandler().getParameters(arguments); // Read the properties Properties props = new Properties(); @@ -89,73 +78,31 @@ public class Main { props.load(stream); } } catch (final Exception e) { - LOGGER.error("start of xacml pdp service failed", e); - return; + throw new PolicyXacmlPdpException("cannot load property file", e); } // Now, create the activator for the policy xacml pdp service activator = new XacmlPdpActivator(parameterGroup, props); + XacmlPdpActivator.setCurrent(activator); // Start the activator - try { - activator.start(); - } catch (final RuntimeException e) { - LOGGER.error("start of policy xacml pdp service failed, used parameters are " + Arrays.toString(args), e); - return; - } + activator.start(); // Add a shutdown hook to shut everything down in an orderly manner - Runtime.getRuntime().addShutdownHook(new PolicyXacmlPdpShutdownHookClass()); + Runtime.getRuntime().addShutdownHook(new Thread(this::shutdown)); LOGGER.info("Started policy xacml pdp service"); } - /** - * Get the parameters specified in JSON. - * - * @return the parameters - */ - public XacmlPdpParameterGroup getParameters() { - return parameterGroup; - } - - /** - * Get the argumentMessage string. - * - * @return the argumentMessage - */ - public String getArgumentMessage() { - return argumentMessage; - } - /** * Shut down Execution. * * @throws PolicyXacmlPdpException on shutdown errors */ - public void shutdown() { - // clear the parameterGroup variable - parameterGroup = null; - + public synchronized void shutdown() { // clear the xacml pdp activator - if (activator != null) { - activator.stop(); - } - } - - /** - * The Class PolicyXacmlPdpShutdownHookClass terminates the policy xacml pdp service when its run - * method is called. - */ - private class PolicyXacmlPdpShutdownHookClass extends Thread { - /* - * (non-Javadoc) - * - * @see java.lang.Runnable#run() - */ - @Override - public void run() { - // Shutdown the policy xacml pdp service and wait for everything to stop + if (activator != null && activator.isAlive()) { activator.stop(); + activator = null; } } @@ -165,6 +112,10 @@ public class Main { * @param args the arguments */ public static void main(final String[] args) { - new Main(args); + try { + new Main(args); + } catch (RuntimeException | PolicyXacmlPdpException e) { + LOGGER.error("start of policy xacml pdp service failed", e); + } } }