/**
* Check if http headers have been set for the REST request.
*
- * @return true if headers have beenset
+ * @return true if headers have been set
*/
public boolean checkHttpHeadersSet() {
return httpHeaders != null && httpHeaders.length > 0;
package org.onap.policy.apex.service.engine.main;
import java.util.Arrays;
+import java.util.Base64;
import java.util.Map.Entry;
import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
return;
}
+ // Set incoming Java properties
+ setJavaProperties(parameters);
+
// Set the name of the event handler parameters for producers and consumers
for (final Entry<String, EventHandlerParameters> ehParameterEntry : parameters.getEventOutputParameters()
- .entrySet()) {
+ .entrySet()) {
if (!ehParameterEntry.getValue().checkSetName()) {
ehParameterEntry.getValue().setName(ehParameterEntry.getKey());
}
}
for (final Entry<String, EventHandlerParameters> ehParameterEntry : parameters.getEventInputParameters()
- .entrySet()) {
+ .entrySet()) {
if (!ehParameterEntry.getValue().checkSetName()) {
ehParameterEntry.getValue().setName(ehParameterEntry.getKey());
}
}
/**
- * The Class ApexMainShutdownHookClass terminates the Apex engine for the Apex service when its
- * run method is called.
+ * The Class ApexMainShutdownHookClass terminates the Apex engine for the Apex service when its run method is
+ * called.
*/
private class ApexMainShutdownHookClass extends Thread {
/*
}
}
+ /**
+ * Set the Java properties specified in the parameters.
+ *
+ * @param parameters The incoming parameters
+ */
+ private void setJavaProperties(final ApexParameters parameters) {
+ if (!parameters.checkJavaPropertiesSet()) {
+ return;
+ }
+
+ // Set each Java property
+ for (String[] javaProperty : parameters.getJavaProperties()) {
+ String javaPropertyName = javaProperty[0];
+ String javaPropertyValue = javaProperty[1];
+
+ // Passwords are encoded using base64, better than sending passwords in the clear
+ if (javaPropertyName.toLowerCase().contains("password")) {
+ javaPropertyValue = new String(Base64.getDecoder().decode(javaPropertyValue.getBytes()));
+ }
+
+ // Set the Java property
+ System.setProperty(javaPropertyName, javaPropertyValue);
+ }
+ }
+
/**
* The main method.
*
package org.onap.policy.apex.service.parameters;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import org.onap.policy.common.parameters.GroupValidationResult;
import org.onap.policy.common.parameters.ParameterGroup;
import org.onap.policy.common.parameters.ValidationStatus;
+import org.onap.policy.common.utils.validation.ParameterValidationUtils;
/**
* The main container parameter class for an Apex service.
private String name;
// Constants for recurring strings
+ private static final String JAVA_PROPERTIES = "javaProperties";
private static final String PEER_STRING = "peer ";
private static final String EVENT_INPUT_PARAMETERS_STRING = "eventInputParameters";
private static final String EVENT_OUTPUT_PARAMETERS_STRING = "eventOutputParameters";
private static final String FOR_PEERED_MODE_STRING = " for peered mode ";
+ // Properties for the Java JVM
+ private String[][] javaProperties = null;
+
// Parameters for the engine service and the engine threads in the engine service
private EngineServiceParameters engineServiceParameters;
this.name = name;
}
+ /**
+ * Check if Java properties have been specified.
+ *
+ * @return true if Java properties have been specified
+ */
+ public boolean checkJavaPropertiesSet() {
+ return javaProperties != null && javaProperties.length > 0;
+ }
+
+ /**
+ * Gets the Java properties that have been specified.
+ *
+ * @return the Java properties that have been specified
+ */
+ public String[][] getJavaProperties() {
+ return javaProperties;
+ }
+
@Override
public GroupValidationResult validate() {
GroupValidationResult result = new GroupValidationResult(this);
+ validateJavaProperties(result);
+
if (engineServiceParameters == null) {
result.setResult("engineServiceParameters", ValidationStatus.INVALID,
- "engine service parameters are not specified");
+ "engine service parameters are not specified");
} else {
result.setResult("engineServiceParameters", engineServiceParameters.validate());
}
// Sanity check, we must have an entry in both output and input maps
if (eventInputParameters.isEmpty()) {
result.setResult(EVENT_INPUT_PARAMETERS_STRING, ValidationStatus.INVALID,
- "at least one event input must be specified");
+ "at least one event input must be specified");
}
if (eventOutputParameters.isEmpty()) {
result.setResult(EVENT_OUTPUT_PARAMETERS_STRING, ValidationStatus.INVALID,
- "at least one event output must be specified");
+ "at least one event output must be specified");
}
// Validate that the values of all parameters are ok
return result;
}
+ /**
+ * This method validates the java properties variable if it is present.
+ *
+ * @param result the result of the validation
+ */
+ private void validateJavaProperties(GroupValidationResult result) {
+ if (javaProperties == null) {
+ return;
+ }
+
+ StringBuilder errorMessageBuilder = new StringBuilder();
+ for (String[] javaProperty : javaProperties) {
+ if (javaProperty == null) {
+ errorMessageBuilder.append("java properties array entry is null\n");
+ } else if (javaProperty.length != 2) {
+ errorMessageBuilder.append("java properties array entries must have one key and one value: "
+ + Arrays.deepToString(javaProperty) + "\n");
+ } else if (!ParameterValidationUtils.validateStringParameter(javaProperty[0])) {
+ errorMessageBuilder
+ .append("java properties key is null or blank: " + Arrays.deepToString(javaProperty) + "\n");
+ } else if (!ParameterValidationUtils.validateStringParameter(javaProperty[1])) {
+ errorMessageBuilder
+ .append("java properties value is null or blank: " + Arrays.deepToString(javaProperty) + "\n");
+ }
+ }
+
+ if (errorMessageBuilder.length() > 0) {
+ result.setResult(JAVA_PROPERTIES, ValidationStatus.INVALID, errorMessageBuilder.toString());
+ }
+ }
+
/**
* This method validates the parameters in an event handler map.
*
* @param parsForValidation The event handler parameters to validate (input or output)
*/
private void validateEventHandlerMap(final String eventHandlerType, final GroupValidationResult result,
- final Map<String, EventHandlerParameters> parsForValidation) {
+ final Map<String, EventHandlerParameters> parsForValidation) {
for (final Entry<String, EventHandlerParameters> parameterEntry : parsForValidation.entrySet()) {
if (parameterEntry.getKey() == null || parameterEntry.getKey().trim().isEmpty()) {
result.setResult(eventHandlerType, parameterEntry.getKey(), ValidationStatus.INVALID,
- "invalid " + eventHandlerType + " name \"" + parameterEntry.getKey() + "\"");
+ "invalid " + eventHandlerType + " name \"" + parameterEntry.getKey() + "\"");
} else if (parameterEntry.getValue() == null) {
result.setResult(eventHandlerType, parameterEntry.getKey(), ValidationStatus.INVALID,
- "invalid/Null event input prameters specified for " + eventHandlerType + " name \""
- + parameterEntry.getKey() + "\" ");
+ "invalid/Null event input prameters specified for " + eventHandlerType + " name \""
+ + parameterEntry.getKey() + "\" ");
} else {
result.setResult(eventHandlerType, parameterEntry.getKey(), parameterEntry.getValue().validate());
}
* @param peeredMode The mode to check
*/
private void validatePeeredModeParameters(final String eventHandlerType, final GroupValidationResult result,
- final Entry<String, EventHandlerParameters> parameterEntry,
- final EventHandlerPeeredMode peeredMode) {
+ final Entry<String, EventHandlerParameters> parameterEntry, final EventHandlerPeeredMode peeredMode) {
final String messagePreamble = "specified peered mode \"" + peeredMode + "\"";
final String peer = parameterEntry.getValue().getPeer(peeredMode);
if (parameterEntry.getValue().isPeeredMode(peeredMode)) {
if (peer == null || peer.trim().isEmpty()) {
result.setResult(eventHandlerType, parameterEntry.getKey(), ValidationStatus.INVALID,
- messagePreamble + " mandatory parameter not specified or is null");
+ messagePreamble + " mandatory parameter not specified or is null");
}
if (parameterEntry.getValue().getPeerTimeout(peeredMode) < 0) {
- result.setResult(eventHandlerType, parameterEntry.getKey(), ValidationStatus.INVALID, messagePreamble
- + " timeout value \"" + parameterEntry.getValue().getPeerTimeout(peeredMode)
- + "\" is illegal, specify a non-negative timeout value in milliseconds");
+ result.setResult(eventHandlerType, parameterEntry.getKey(), ValidationStatus.INVALID,
+ messagePreamble + " timeout value \"" + parameterEntry.getValue().getPeerTimeout(peeredMode)
+ + "\" is illegal, specify a non-negative timeout value in milliseconds");
}
} else {
if (peer != null) {
result.setResult(eventHandlerType, parameterEntry.getKey(), ValidationStatus.INVALID, messagePreamble
- + " peer is illegal on " + eventHandlerType + " \"" + parameterEntry.getKey() + "\" ");
+ + " peer is illegal on " + eventHandlerType + " \"" + parameterEntry.getKey() + "\" ");
}
if (parameterEntry.getValue().getPeerTimeout(peeredMode) != 0) {
- result.setResult(eventHandlerType, parameterEntry.getKey(), ValidationStatus.INVALID,
- messagePreamble + " timeout is illegal on " + eventHandlerType + " \""
- + parameterEntry.getKey() + "\"");
+ result.setResult(eventHandlerType, parameterEntry.getKey(), ValidationStatus.INVALID, messagePreamble
+ + " timeout is illegal on " + eventHandlerType + " \"" + parameterEntry.getKey() + "\"");
}
}
}
// Validate the parameters for each side of the peered mode parameters
validatePeeredModePeers(EVENT_INPUT_PARAMETERS_STRING, result, peeredMode, inputParametersUsingMode,
- outputParametersUsingMode);
+ outputParametersUsingMode);
validatePeeredModePeers(EVENT_OUTPUT_PARAMETERS_STRING, result, peeredMode, outputParametersUsingMode,
- inputParametersUsingMode);
+ inputParametersUsingMode);
}
/**
* @param rightModeParameters The mode parameters being referenced by the checked parameters
*/
private void validatePeeredModePeers(final String handlerMapVariableName, final GroupValidationResult result,
- final EventHandlerPeeredMode peeredMode,
- final Map<String, EventHandlerParameters> leftModeParameterMap,
- final Map<String, EventHandlerParameters> rightModeParameterMap) {
+ final EventHandlerPeeredMode peeredMode, final Map<String, EventHandlerParameters> leftModeParameterMap,
+ final Map<String, EventHandlerParameters> rightModeParameterMap) {
// These sets are used to check for duplicate references on the both sides
final Set<String> leftCheckDuplicateSet = new HashSet<>();
// Check that the peer reference is OK
if (rightModeParameters == null) {
result.setResult(handlerMapVariableName, leftModeParameterEntry.getKey(), ValidationStatus.INVALID,
- PEER_STRING + '"' + leftModeParameters.getPeer(peeredMode) + FOR_PEERED_MODE_STRING
- + peeredMode
- + " does not exist or is not defined with the same peered mode");
+ PEER_STRING + '"' + leftModeParameters.getPeer(peeredMode) + FOR_PEERED_MODE_STRING + peeredMode
+ + " does not exist or is not defined with the same peered mode");
continue;
}
final String rightSidePeer = rightModeParameters.getPeer(peeredMode);
if (!rightSidePeer.equals(leftModeParameterEntry.getKey())) {
result.setResult(handlerMapVariableName, leftModeParameterEntry.getKey(), ValidationStatus.INVALID,
- PEER_STRING + '"' + leftModeParameters.getPeer(peeredMode) + FOR_PEERED_MODE_STRING
- + peeredMode + ", value \"" + rightSidePeer + "\" on peer \""
- + leftSidePeer + "\" does not equal event handler \""
- + leftModeParameterEntry.getKey() + "\"");
+ PEER_STRING + '"' + leftModeParameters.getPeer(peeredMode) + FOR_PEERED_MODE_STRING + peeredMode
+ + ", value \"" + rightSidePeer + "\" on peer \"" + leftSidePeer
+ + "\" does not equal event handler \"" + leftModeParameterEntry.getKey() + "\"");
} else {
// Check for duplicates
if (!leftCheckDuplicateSet.add(leftSidePeer)) {
result.setResult(handlerMapVariableName, leftModeParameterEntry.getKey(), ValidationStatus.INVALID,
- PEER_STRING + '"' + leftModeParameters.getPeer(peeredMode) + FOR_PEERED_MODE_STRING
- + peeredMode + ", peer value \"" + leftSidePeer
- + "\" on event handler \"" + leftModeParameterEntry.getKey()
- + "\" is used more than once");
+ PEER_STRING + '"' + leftModeParameters.getPeer(peeredMode) + FOR_PEERED_MODE_STRING + peeredMode
+ + ", peer value \"" + leftSidePeer + "\" on event handler \""
+ + leftModeParameterEntry.getKey() + "\" is used more than once");
}
if (!rightCheckDuplicateSet.add(rightSidePeer)) {
result.setResult(handlerMapVariableName, leftModeParameterEntry.getKey(), ValidationStatus.INVALID,
- PEER_STRING + '"' + leftModeParameters.getPeer(peeredMode) + FOR_PEERED_MODE_STRING
- + peeredMode + ", peer value \"" + rightSidePeer + "\" on peer \""
- + leftSidePeer + "\" on event handler \""
- + leftModeParameterEntry.getKey() + "\" is used more than once");
+ PEER_STRING + '"' + leftModeParameters.getPeer(peeredMode) + FOR_PEERED_MODE_STRING + peeredMode
+ + ", peer value \"" + rightSidePeer + "\" on peer \"" + leftSidePeer
+ + "\" on event handler \"" + leftModeParameterEntry.getKey() + "\" is used more than once");
}
}
if (!crossCheckPeeredTimeoutValues(leftModeParameters, rightModeParameters, peeredMode)) {
result.setResult(handlerMapVariableName, leftModeParameterEntry.getKey(), ValidationStatus.INVALID,
- PEER_STRING + '"' + leftModeParameters.getPeer(peeredMode) + FOR_PEERED_MODE_STRING
- + peeredMode + " timeout "
- + leftModeParameters.getPeerTimeout(peeredMode) + " on event handler \""
- + leftModeParameters.getName() + "\" does not equal timeout "
- + rightModeParameters.getPeerTimeout(peeredMode)
- + " on event handler \"" + rightModeParameters.getName() + "\"");
+ PEER_STRING + '"' + leftModeParameters.getPeer(peeredMode) + FOR_PEERED_MODE_STRING + peeredMode
+ + " timeout " + leftModeParameters.getPeerTimeout(peeredMode) + " on event handler \""
+ + leftModeParameters.getName() + "\" does not equal timeout "
+ + rightModeParameters.getPeerTimeout(peeredMode) + " on event handler \""
+ + rightModeParameters.getName() + "\"");
}
}
* @return true if the timeout values are cross checked as being OK
*/
private boolean crossCheckPeeredTimeoutValues(final EventHandlerParameters leftModeParameters,
- final EventHandlerParameters rightModeParameters, final EventHandlerPeeredMode peeredMode) {
+ final EventHandlerParameters rightModeParameters, final EventHandlerPeeredMode peeredMode) {
// Cross-set the timeouts if they are not specified
if (leftModeParameters.getPeerTimeout(peeredMode) != 0) {
if (rightModeParameters.getPeerTimeout(peeredMode) != 0) {
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.service.engine.main;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStream;
+import java.io.PrintStream;
+
+import org.junit.Test;
+import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+
+/**
+ * Test the ApexMain class.
+ */
+public class ApexMainTest {
+ private PrintStream stdout = System.out;
+
+ @Test
+ public void testNullParameters() throws ApexException {
+ OutputStream outContent = new ByteArrayOutputStream();
+ System.setOut(new PrintStream(outContent));
+
+ ApexMain.main(null);
+ ThreadUtilities.sleep(200);
+
+ final String outString = outContent.toString();
+
+ System.setOut(stdout);
+
+ assertTrue(outString.contains("Apex configuration file was not specified as an argument"));
+ }
+
+ @Test
+ public void testBadArguments() throws ApexException {
+ OutputStream outContent = new ByteArrayOutputStream();
+ System.setOut(new PrintStream(outContent));
+
+ String[] args = {"-whee"};
+
+ final ApexMain apexMain = new ApexMain(args);
+ ThreadUtilities.sleep(200);
+ apexMain.shutdown();
+
+ final String outString = outContent.toString();
+
+ System.setOut(stdout);
+
+ assertTrue(outString.contains("invalid command line arguments specified : Unrecognized option: -whee"));
+ }
+
+ @Test
+ public void testHelp() throws ApexException {
+ OutputStream outContent = new ByteArrayOutputStream();
+ System.setOut(new PrintStream(outContent));
+
+ String[] args = {"-h"};
+
+ final ApexMain apexMain = new ApexMain(args);
+ ThreadUtilities.sleep(200);
+ apexMain.shutdown();
+
+ final String outString = outContent.toString();
+
+ System.setOut(stdout);
+
+ assertTrue(outString.contains("usage: org.onap.policy.apex.service.engine.main.ApexMain [options...]"));
+ }
+
+ @Test
+ public void testBadParameters() throws ApexException {
+ OutputStream outContent = new ByteArrayOutputStream();
+ System.setOut(new PrintStream(outContent));
+
+ String[] args = {"-c", "src/test/resources/parameters/badParams.json"};
+
+ final ApexMain apexMain = new ApexMain(args);
+ ThreadUtilities.sleep(200);
+ apexMain.shutdown();
+
+ final String outString = outContent.toString();
+
+ System.setOut(stdout);
+
+ assertTrue(outString.contains("parameter group has status INVALID"));
+ }
+
+ @Test
+ public void testCorrectParameters() throws ApexException {
+ OutputStream outContent = new ByteArrayOutputStream();
+ System.setOut(new PrintStream(outContent));
+
+ String[] args = {"-c", "src/test/resources/parameters/correctParams.json"};
+
+ final ApexMain apexMain = new ApexMain(args);
+ assertEquals("MyApexEngine", apexMain.getParameters().getEngineServiceParameters().getName());
+ ThreadUtilities.sleep(200);
+ apexMain.shutdown();
+
+ final String outString = outContent.toString();
+
+ System.setOut(stdout);
+
+ assertTrue(outString.contains("Added the action listener to the engine"));
+ }
+
+ @Test
+ public void testjavaProperties() throws ApexException {
+ OutputStream outContent = new ByteArrayOutputStream();
+ System.setOut(new PrintStream(outContent));
+
+ String[] args = {"-c", "src/test/resources/parameters/correctParamsJavaProperties.json"};
+
+ final ApexMain apexMain = new ApexMain(args);
+ assertEquals("MyApexEngine", apexMain.getParameters().getEngineServiceParameters().getName());
+
+ assertEquals("trust-store-file", System.getProperty("javax.net.ssl.trustStore"));
+ assertEquals("Pol1cy_0nap", System.getProperty("javax.net.ssl.trustStorePassword"));
+ ThreadUtilities.sleep(200);
+ apexMain.shutdown();
+
+ final String outString = outContent.toString();
+
+ System.setOut(stdout);
+
+ assertTrue(outString.contains("Added the action listener to the engine"));
+ }
+}
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.service.engine.parameters;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
+import org.onap.policy.apex.service.parameters.ApexParameterHandler;
+import org.onap.policy.apex.service.parameters.ApexParameters;
+import org.onap.policy.common.parameters.ParameterException;
+
+/**
+ * Test the ApexParameters class.
+ */
+public class ApexParametersTest {
+
+ @Test
+ public void javaPropertiesOk() throws ParameterException {
+ final String[] args =
+ { "-c", "src/test/resources/parameters/javaPropertiesOK.json" };
+ final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
+
+ try {
+ ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
+ assertTrue(parameters.checkJavaPropertiesSet());
+ assertEquals("property0", parameters.getJavaProperties()[0][0]);
+ assertEquals("property0Value", parameters.getJavaProperties()[0][1]);
+ assertEquals("property1", parameters.getJavaProperties()[1][0]);
+ assertEquals("property1Value", parameters.getJavaProperties()[1][1]);
+ } catch (final ParameterException e) {
+ fail("This test should not throw an exception");
+ }
+ }
+
+ @Test
+ public void javaPropertiesEmpty() throws ParameterException {
+ final String[] args =
+ { "-c", "src/test/resources/parameters/javaPropertiesEmpty.json" };
+ final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
+
+ try {
+ ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
+ assertFalse(parameters.checkJavaPropertiesSet());
+ } catch (final ParameterException pe) {
+ fail("This test should not throw an exception");
+ }
+ }
+
+
+ @Test
+ public void javaPropertiesBad() throws ParameterException {
+ final String[] args =
+ { "-c", "src/test/resources/parameters/javaPropertiesBad.json" };
+ final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
+
+ try {
+ new ApexParameterHandler().getParameters(arguments);
+ fail("This test should throw an exception");
+ } catch (final ParameterException pe) {
+ assertTrue(pe.getMessage().contains("java properties array entries must have one key and one value"));
+ assertTrue(pe.getMessage().contains("java properties key is null or blank"));
+ assertTrue(pe.getMessage().contains("java properties value is null or blank"));
+ assertTrue(pe.getMessage().contains("java properties array entry is null"));
+ }
+ }
+
+ @Test
+ public void testGettersSetters() {
+ ApexParameters pars = new ApexParameters();
+ assertNotNull(pars);
+
+ pars.setEngineServiceParameters(null);
+ assertNull(pars.getEngineServiceParameters());
+
+ pars.setEventInputParameters(null);
+ assertNull(pars.getEventInputParameters());
+
+ pars.setEventOutputParameters(null);
+ assertNull(pars.getEventOutputParameters());
+
+ assertFalse(pars.checkJavaPropertiesSet());
+
+ pars.setName("parName");
+ assertEquals("parName", pars.getName());
+ }
+}
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.service.engine.parameters.dummyclasses;
+
+import java.util.Map;
+
+import org.onap.policy.apex.context.ContextException;
+import org.onap.policy.apex.core.engine.executor.StateFinalizerExecutor;
+import org.onap.policy.apex.core.engine.executor.exception.StateMachineException;
+
+/**
+ * Dummy state finalizer executor for testing.
+ */
+public class DummyStateFinalizerExecutor extends StateFinalizerExecutor {
+ public DummyStateFinalizerExecutor() {
+ }
+
+ @Override
+ public String execute(final long executionId, final Map<String, Object> newIncomingFields)
+ throws StateMachineException, ContextException {
+
+ return "stateOutput0";
+ }
+}
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.service.engine.parameters.dummyclasses;
+
+import java.util.Map;
+
+import org.onap.policy.apex.context.ContextException;
+import org.onap.policy.apex.core.engine.event.EnEvent;
+import org.onap.policy.apex.core.engine.executor.TaskExecutor;
+import org.onap.policy.apex.core.engine.executor.exception.StateMachineException;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.policymodel.concepts.AxTask;
+
+/**
+ * Dummy task executor for testing.
+ */
+public class DummyTaskExecutor extends TaskExecutor {
+ public DummyTaskExecutor() {
+ }
+
+ @Override
+ public void prepare() throws StateMachineException {
+ }
+
+ @Override
+ public Map<String, Object> execute(final long executionId, final Map<String, Object> newIncomingFields)
+ throws StateMachineException, ContextException {
+
+ AxArtifactKey event0Key = new AxArtifactKey("Event0:0.0.1");
+ return new EnEvent(event0Key);
+ }
+
+ @Override
+ public AxTask getSubject() {
+ AxArtifactKey taskKey = new AxArtifactKey("FirstTask:0.0.1");
+ return new AxTask(taskKey);
+ }
+
+ @Override
+ public void cleanUp() throws StateMachineException {
+ }
+}
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.service.engine.parameters.dummyclasses;
+
+import org.onap.policy.apex.context.ContextException;
+import org.onap.policy.apex.core.engine.event.EnEvent;
+import org.onap.policy.apex.core.engine.executor.TaskSelectExecutor;
+import org.onap.policy.apex.core.engine.executor.exception.StateMachineException;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+
+/**
+ * Dummy task selection executor for testing.
+ */
+public class DummyTaskSelectExecutor extends TaskSelectExecutor {
+ public DummyTaskSelectExecutor() {
+ }
+
+ @Override
+ public void prepare() throws StateMachineException {
+ }
+
+ @Override
+ public AxArtifactKey execute(final long executionId, final EnEvent newIncomingEvent)
+ throws StateMachineException, ContextException {
+
+ return new AxArtifactKey("task:0.0.1");
+ }
+
+ @Override
+ public void cleanUp() throws StateMachineException {
+ }
+}
--- /dev/null
+{
+ "engineServiceParameters": {
+ "name": "MyApexEngine",
+ "version": "0.0.1",
+ "id": 45,
+ "instanceCount": 2,
+ "deploymentPort": 65522,
+ "policyModelFileName": "src/test/resources/policymodels/SmallModel.json",
+ "engineParameters": {
+ "executorParameters": {
+ "JAVASCRIPT": {
+ "parameterClassName": "org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperExecutorParameters"
+ }
+ }
+ }
+ },
+ "eventOutputParameters": {
+ "FirstProducer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "FILE",
+ "parameters": {
+ "standardIo": true
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ }
+ }
+ },
+ "eventInputParameters": {
+ "TheFileConsumer1": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "FILE",
+ "parameters": {
+ "standardIo": true
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "javaProperties" : [
+ ["javax.net.ssl.trustStore", "trust-store-file"],
+ ["javax.net.ssl.trustStorePassword", "UG9sMWN5XzBuYXA="]
+ ],
+ "engineServiceParameters": {
+ "name": "MyApexEngine",
+ "version": "0.0.1",
+ "id": 45,
+ "instanceCount": 2,
+ "deploymentPort": 65522,
+ "policyModelFileName": "src/test/resources/policymodels/SmallModel.json",
+ "engineParameters": {
+ "executorParameters": {
+ "JAVASCRIPT": {
+ "parameterClassName": "org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperExecutorParameters"
+ }
+ }
+ }
+ },
+ "eventOutputParameters": {
+ "FirstProducer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "FILE",
+ "parameters": {
+ "standardIo": true
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ }
+ }
+ },
+ "eventInputParameters": {
+ "TheFileConsumer1": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "FILE",
+ "parameters": {
+ "standardIo": true
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "javaProperties" : [
+ ["property0"],
+ ["property1", "property1Value", "propertyExtraValue"],
+ [],
+ [null, "proeprtyValue"],
+ null,
+ ["propertyname", null]
+ ],
+ "engineServiceParameters": {
+ "name": "MyApexEngine",
+ "version": "0.0.1",
+ "id": 45,
+ "instanceCount": 345,
+ "deploymentPort": 65522,
+ "policyModelFileName": "src/test/resources/policymodels/SmallModel.json",
+ "engineParameters": {
+ "contextParameters": {
+ "parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters"
+ },
+ "executorParameters": {
+ "JAVASCRIPT": {
+ "parameterClassName": "org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperExecutorParameters"
+ }
+ }
+ }
+ },
+ "eventOutputParameters": {
+ "FirstProducer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "FILE",
+ "parameters": {
+ "fileName": "target/aaa.json"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ }
+ }
+ },
+ "eventInputParameters": {
+ "MySuperDooperConsumer1": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "SUPER_DOOPER",
+ "parameterClassName": "org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters"
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "SUPER_TOK_DEL",
+ "parameterClassName": "org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperTokenDelimitedEventProtocolParameters"
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "javaProperties" : [],
+ "engineServiceParameters": {
+ "name": "MyApexEngine",
+ "version": "0.0.1",
+ "id": 45,
+ "instanceCount": 345,
+ "deploymentPort": 65522,
+ "policyModelFileName": "src/test/resources/policymodels/SmallModel.json",
+ "engineParameters": {
+ "contextParameters": {
+ "parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters"
+ },
+ "executorParameters": {
+ "JAVASCRIPT": {
+ "parameterClassName": "org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperExecutorParameters"
+ }
+ }
+ }
+ },
+ "eventOutputParameters": {
+ "FirstProducer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "FILE",
+ "parameters": {
+ "fileName": "target/aaa.json"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ }
+ }
+ },
+ "eventInputParameters": {
+ "MySuperDooperConsumer1": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "SUPER_DOOPER",
+ "parameterClassName": "org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters"
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "SUPER_TOK_DEL",
+ "parameterClassName": "org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperTokenDelimitedEventProtocolParameters"
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "javaProperties" : [
+ ["property0", "property0Value"],
+ ["property1", "property1Value"]
+ ],
+ "engineServiceParameters": {
+ "name": "MyApexEngine",
+ "version": "0.0.1",
+ "id": 45,
+ "instanceCount": 345,
+ "deploymentPort": 65522,
+ "policyModelFileName": "src/test/resources/policymodels/SmallModel.json",
+ "engineParameters": {
+ "contextParameters": {
+ "parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters"
+ },
+ "executorParameters": {
+ "JAVASCRIPT": {
+ "parameterClassName": "org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperExecutorParameters"
+ }
+ }
+ }
+ },
+ "eventOutputParameters": {
+ "FirstProducer": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "FILE",
+ "parameters": {
+ "fileName": "target/aaa.json"
+ }
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "JSON"
+ }
+ }
+ },
+ "eventInputParameters": {
+ "MySuperDooperConsumer1": {
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "SUPER_DOOPER",
+ "parameterClassName": "org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters"
+ },
+ "eventProtocolParameters": {
+ "eventProtocol": "SUPER_TOK_DEL",
+ "parameterClassName": "org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperTokenDelimitedEventProtocolParameters"
+ }
+ }
+ }
+}
\ No newline at end of file