summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorliamfallon <liam.fallon@ericsson.com>2018-09-23 14:37:49 +0100
committerliamfallon <liam.fallon@ericsson.com>2018-09-23 14:38:00 +0100
commitd191116808e4a90035c7e8b2acea0fefa439d13c (patch)
tree8ceb2112ff221089a76ff951f71a6d594e0d973e
parent6973ec9109fd2651e2284663b6c8039bd830a677 (diff)
Fix more sonar issues
These are the last few easy to fix issues. Most remaining issues are to do with code coverage. Othersare due tot he way script interpreters work and will have to be exempted. Issue-ID: POLICY-1034 Change-Id: Ie1d1def43d33ef78a13d7f9b43ae4e22ef00cb5b Signed-off-by: liamfallon <liam.fallon@ericsson.com>
-rw-r--r--core/core-deployment/src/main/java/org/onap/policy/apex/core/deployment/BatchDeployer.java60
-rw-r--r--services/services-engine/src/main/java/org/onap/policy/apex/service/engine/engdep/EngDepMessageListener.java326
2 files changed, 248 insertions, 138 deletions
diff --git a/core/core-deployment/src/main/java/org/onap/policy/apex/core/deployment/BatchDeployer.java b/core/core-deployment/src/main/java/org/onap/policy/apex/core/deployment/BatchDeployer.java
index b275c72ab..321d61583 100644
--- a/core/core-deployment/src/main/java/org/onap/policy/apex/core/deployment/BatchDeployer.java
+++ b/core/core-deployment/src/main/java/org/onap/policy/apex/core/deployment/BatchDeployer.java
@@ -48,36 +48,6 @@ public class BatchDeployer {
private EngineServiceFacade engineServiceFacade = null;
/**
- * The main method, reads the Apex server host address, port and location of the Apex model file from the command
- * line arguments.
- *
- * @param args the arguments that specify the Apex engine and the Apex model file
- */
- public static void main(final String[] args) {
- if (args.length != NUM_ARGUMENTS) {
- String message = "invalid arguments: " + Arrays.toString(args)
- + "usage: Deployer <server address> <port address> <Apex Model file location>";
- LOGGER.error(message);
- return;
- }
-
- BatchDeployer deployer = null;
- try {
- // Use a Deployer object to handle model deployment
- deployer = new BatchDeployer(args[0], Integer.parseInt(args[1]));
- deployer.init();
- deployer.deployModel(args[2], false, false);
- deployer.startEngines();
- } catch (final ApexException | IOException e) {
- LOGGER.error("model deployment failed on parameters {}", args, e);
- } finally {
- if (deployer != null) {
- deployer.close();
- }
- }
- }
-
- /**
* Instantiates a new deployer.
*
* @param hostName the host name of the host running the Apex Engine
@@ -152,4 +122,34 @@ public class BatchDeployer {
engineServiceFacade.stopEngine(engineKey);
}
}
+
+ /**
+ * The main method, reads the Apex server host address, port and location of the Apex model file from the command
+ * line arguments.
+ *
+ * @param args the arguments that specify the Apex engine and the Apex model file
+ */
+ public static void main(final String[] args) {
+ if (args.length != NUM_ARGUMENTS) {
+ String message = "invalid arguments: " + Arrays.toString(args)
+ + "usage: Deployer <server address> <port address> <Apex Model file location>";
+ LOGGER.error(message);
+ return;
+ }
+
+ BatchDeployer deployer = null;
+ try {
+ // Use a Deployer object to handle model deployment
+ deployer = new BatchDeployer(args[0], Integer.parseInt(args[1]));
+ deployer.init();
+ deployer.deployModel(args[2], false, false);
+ deployer.startEngines();
+ } catch (final ApexException | IOException e) {
+ LOGGER.error("model deployment failed on parameters {}", args, e);
+ } finally {
+ if (deployer != null) {
+ deployer.close();
+ }
+ }
+ }
}
diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/engdep/EngDepMessageListener.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/engdep/EngDepMessageListener.java
index a9b862d41..261ba41cf 100644
--- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/engdep/EngDepMessageListener.java
+++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/engdep/EngDepMessageListener.java
@@ -151,20 +151,26 @@ public class EngDepMessageListener implements MessageListener<Message>, Runnable
public void run() {
// Take messages off the queue and forward them to the Apex engine
while (messageListenerThread.isAlive() && !stopOrderedFlag) {
- try {
- final MessageBlock<Message> data = messageQueue.poll(QUEUE_POLL_TIMEOUT, TimeUnit.MILLISECONDS);
- if (data != null) {
- final List<Message> messages = data.getMessages();
- for (final Message message : messages) {
- handleMessage(message, data.getConnection());
- }
+ pollAndHandleMessage();
+ }
+ }
+
+ /**
+ * Poll the queue for a message and handle that message.
+ */
+ private void pollAndHandleMessage() {
+ try {
+ final MessageBlock<Message> data = messageQueue.poll(QUEUE_POLL_TIMEOUT, TimeUnit.MILLISECONDS);
+ if (data != null) {
+ final List<Message> messages = data.getMessages();
+ for (final Message message : messages) {
+ handleMessage(message, data.getConnection());
}
- } catch (final InterruptedException e) {
- // restore the interrupt status
- Thread.currentThread().interrupt();
- LOGGER.debug("message listener execution has been interrupted");
- break;
}
+ } catch (final InterruptedException e) {
+ // restore the interrupt status
+ Thread.currentThread().interrupt();
+ LOGGER.debug("message listener execution has been interrupted");
}
}
@@ -194,102 +200,7 @@ public class EngDepMessageListener implements MessageListener<Message>, Runnable
+ "action on received message invalid, action must be of type \"EnDepAction\"");
}
- // Handle each incoming message using the inevitable switch statement for the EngDep
- // protocol
- switch (enDepAction) {
- case GET_ENGINE_SERVICE_INFO:
- final GetEngineServiceInfo engineServiceInformationMessage = (GetEngineServiceInfo) message;
- LOGGER.debug("getting engine service information for engine service " + apexService.getKey().getId()
- + " . . .");
- // Send a reply with the engine service information
- sendServiceInfoReply(webSocket, engineServiceInformationMessage, apexService.getKey(),
- apexService.getEngineKeys(), apexService.getApexModelKey());
- LOGGER.debug("returned engine service information for engine service "
- + apexService.getKey().getId());
- break;
-
- case UPDATE_MODEL:
- final UpdateModel updateModelMessage = (UpdateModel) message;
- LOGGER.debug("updating model in engine {} . . .", updateModelMessage.getTarget().getId());
- // Update the model
- apexService.updateModel(updateModelMessage.getTarget(), updateModelMessage.getMessageData(),
- updateModelMessage.isForceInstall());
- // Send a reply indicating the message action worked
- sendReply(webSocket, updateModelMessage, true,
- "updated model in engine " + updateModelMessage.getTarget().getId());
- LOGGER.debug("updated model in engine service {}", updateModelMessage.getTarget().getId());
- break;
-
- case START_ENGINE:
- final StartEngine startEngineMessage = (StartEngine) message;
- LOGGER.debug("starting engine {} . . .", startEngineMessage.getTarget().getId());
- // Start the engine
- apexService.start(startEngineMessage.getTarget());
- // Send a reply indicating the message action worked
- sendReply(webSocket, startEngineMessage, true,
- "started engine " + startEngineMessage.getTarget().getId());
- LOGGER.debug("started engine {}", startEngineMessage.getTarget().getId());
- break;
-
- case STOP_ENGINE:
- final StopEngine stopEngineMessage = (StopEngine) message;
- LOGGER.debug("stopping engine {} . . .", stopEngineMessage.getTarget().getId());
- // Stop the engine
- apexService.stop(stopEngineMessage.getTarget());
- // Send a reply indicating the message action worked
- sendReply(webSocket, stopEngineMessage, true,
- "stopped engine " + stopEngineMessage.getTarget().getId());
- LOGGER.debug("stopping engine {}", stopEngineMessage.getTarget().getId());
- break;
-
- case START_PERIODIC_EVENTS:
- final StartPeriodicEvents startPeriodicEventsMessage = (StartPeriodicEvents) message;
- LOGGER.debug("starting periodic events on engine {} . . .",
- startPeriodicEventsMessage.getTarget().getId());
- // Start periodic events with the period specified in the message
- final Long period = Long.parseLong(startPeriodicEventsMessage.getMessageData());
- apexService.startPeriodicEvents(period);
- // Send a reply indicating the message action worked
- String periodicStartedMessage = "started periodic events on engine "
- + startPeriodicEventsMessage.getTarget().getId() + " with period " + period;
- sendReply(webSocket, startPeriodicEventsMessage, true, periodicStartedMessage);
- LOGGER.debug(periodicStartedMessage);
- break;
-
- case STOP_PERIODIC_EVENTS:
- final StopPeriodicEvents stopPeriodicEventsMessage = (StopPeriodicEvents) message;
- LOGGER.debug("stopping periodic events on engine {} . . .",
- stopPeriodicEventsMessage.getTarget().getId());
- // Stop periodic events
- apexService.stopPeriodicEvents();
- // Send a reply indicating the message action worked
- sendReply(webSocket, stopPeriodicEventsMessage, true, "stopped periodic events on engine "
- + stopPeriodicEventsMessage.getTarget().getId());
- LOGGER.debug("stopped periodic events on engine " + stopPeriodicEventsMessage.getTarget().getId());
- break;
-
- case GET_ENGINE_STATUS:
- final GetEngineStatus getEngineStatusMessage = (GetEngineStatus) message;
- LOGGER.debug("getting status for engine{} . . .", getEngineStatusMessage.getTarget().getId());
- // Send a reply with the engine status
- sendReply(webSocket, getEngineStatusMessage, true,
- apexService.getStatus(getEngineStatusMessage.getTarget()));
- LOGGER.debug("returned status for engine {}", getEngineStatusMessage.getTarget().getId());
- break;
-
- case GET_ENGINE_INFO:
- final GetEngineInfo getEngineInfo = (GetEngineInfo) message;
- LOGGER.debug("getting runtime information for engine {} . . .", getEngineInfo.getTarget().getId());
- // Send a reply with the engine runtime information
- sendReply(webSocket, getEngineInfo, true, apexService.getRuntimeInfo(getEngineInfo.getTarget()));
- LOGGER.debug("returned runtime information for engine {}", getEngineInfo.getTarget().getId());
- break;
- case RESPONSE:
- throw new ApexException("RESPONSE action on received message not handled by engine");
-
- default:
- break;
- }
+ handleIncomingMessages(message, webSocket, enDepAction);
} catch (final ApexException e) {
LOGGER.warn("apex failed to execute message", e);
sendReply(webSocket, message, false, e.getCascadedMessage());
@@ -301,6 +212,205 @@ public class EngDepMessageListener implements MessageListener<Message>, Runnable
}
/**
+ * Handle incoming EngDep messages.
+ *
+ * @param message the incoming message
+ * @param webSocket the web socket the message came in on
+ * @param enDepAction the action from the message
+ * @throws ApexException on message handling errors
+ */
+ private void handleIncomingMessages(final Message message, final WebSocket webSocket, EngDepAction enDepAction)
+ throws ApexException {
+ // Handle each incoming message using the inevitable switch statement for the EngDep
+ // protocol
+ switch (enDepAction) {
+ case GET_ENGINE_SERVICE_INFO:
+ handleGetEngineServiceInfoMessage(message, webSocket);
+ break;
+
+ case UPDATE_MODEL:
+ handleUpdateModelMessage(message, webSocket);
+ break;
+
+ case START_ENGINE:
+ handleStartEngineMessage(message, webSocket);
+ break;
+
+ case STOP_ENGINE:
+ handleStopEngineMessage(message, webSocket);
+ break;
+
+ case START_PERIODIC_EVENTS:
+ handleStartPeriodicEventsMessage(message, webSocket);
+ break;
+
+ case STOP_PERIODIC_EVENTS:
+ handleStopPeriodicEventsMessage(message, webSocket);
+ break;
+
+ case GET_ENGINE_STATUS:
+ handleEngineStatusMessage(message, webSocket);
+ break;
+
+ case GET_ENGINE_INFO:
+ handleEngineInfoMessage(message, webSocket);
+ break;
+
+ case RESPONSE:
+ throw new ApexException("RESPONSE action on received message not handled by engine");
+
+ default:
+ break;
+ }
+ }
+
+ /**
+ * Handle the get engine service information message.
+ *
+ * @param message the message
+ * @param webSocket the web socket that the message came on
+ * @throws ApexException on message handling exceptions
+ */
+ private void handleGetEngineServiceInfoMessage(final Message message, final WebSocket webSocket) {
+ final GetEngineServiceInfo engineServiceInformationMessage = (GetEngineServiceInfo) message;
+ LOGGER.debug("getting engine service information for engine service " + apexService.getKey().getId()
+ + " . . .");
+ // Send a reply with the engine service information
+ sendServiceInfoReply(webSocket, engineServiceInformationMessage, apexService.getKey(),
+ apexService.getEngineKeys(), apexService.getApexModelKey());
+ LOGGER.debug("returned engine service information for engine service "
+ + apexService.getKey().getId());
+ }
+
+ /**
+ * Handle the update model message.
+ *
+ * @param message the message
+ * @param webSocket the web socket that the message came on
+ * @throws ApexException on message handling exceptions
+ */
+ private void handleUpdateModelMessage(final Message message, final WebSocket webSocket) throws ApexException {
+ final UpdateModel updateModelMessage = (UpdateModel) message;
+ LOGGER.debug("updating model in engine {} . . .", updateModelMessage.getTarget().getId());
+ // Update the model
+ apexService.updateModel(updateModelMessage.getTarget(), updateModelMessage.getMessageData(),
+ updateModelMessage.isForceInstall());
+ // Send a reply indicating the message action worked
+ sendReply(webSocket, updateModelMessage, true,
+ "updated model in engine " + updateModelMessage.getTarget().getId());
+ LOGGER.debug("updated model in engine service {}", updateModelMessage.getTarget().getId());
+ }
+
+ /**
+ * Handle the start engine message.
+ *
+ * @param message the message
+ * @param webSocket the web socket that the message came on
+ * @throws ApexException on message handling exceptions
+ */
+ private void handleStartEngineMessage(final Message message, final WebSocket webSocket) throws ApexException {
+ final StartEngine startEngineMessage = (StartEngine) message;
+ LOGGER.debug("starting engine {} . . .", startEngineMessage.getTarget().getId());
+ // Start the engine
+ apexService.start(startEngineMessage.getTarget());
+ // Send a reply indicating the message action worked
+ sendReply(webSocket, startEngineMessage, true,
+ "started engine " + startEngineMessage.getTarget().getId());
+ LOGGER.debug("started engine {}", startEngineMessage.getTarget().getId());
+ }
+
+ /**
+ * Handle the stop engine message.
+ *
+ * @param message the message
+ * @param webSocket the web socket that the message came on
+ * @throws ApexException on message handling exceptions
+ */
+ private void handleStopEngineMessage(final Message message, final WebSocket webSocket) throws ApexException {
+ final StopEngine stopEngineMessage = (StopEngine) message;
+ LOGGER.debug("stopping engine {} . . .", stopEngineMessage.getTarget().getId());
+ // Stop the engine
+ apexService.stop(stopEngineMessage.getTarget());
+ // Send a reply indicating the message action worked
+ sendReply(webSocket, stopEngineMessage, true,
+ "stopped engine " + stopEngineMessage.getTarget().getId());
+ LOGGER.debug("stopping engine {}", stopEngineMessage.getTarget().getId());
+ }
+
+ /**
+ * Handle the start periodic events message.
+ *
+ * @param message the message
+ * @param webSocket the web socket that the message came on
+ * @throws ApexException on message handling exceptions
+ */
+ private void handleStartPeriodicEventsMessage(final Message message, final WebSocket webSocket)
+ throws ApexException {
+ final StartPeriodicEvents startPeriodicEventsMessage = (StartPeriodicEvents) message;
+ LOGGER.debug("starting periodic events on engine {} . . .",
+ startPeriodicEventsMessage.getTarget().getId());
+ // Start periodic events with the period specified in the message
+ final Long period = Long.parseLong(startPeriodicEventsMessage.getMessageData());
+ apexService.startPeriodicEvents(period);
+ // Send a reply indicating the message action worked
+ String periodicStartedMessage = "started periodic events on engine "
+ + startPeriodicEventsMessage.getTarget().getId() + " with period " + period;
+ sendReply(webSocket, startPeriodicEventsMessage, true, periodicStartedMessage);
+ LOGGER.debug(periodicStartedMessage);
+ }
+
+ /**
+ * Handle the stop periodic events message.
+ *
+ * @param message the message
+ * @param webSocket the web socket that the message came on
+ * @throws ApexException on message handling exceptions
+ */
+ private void handleStopPeriodicEventsMessage(final Message message, final WebSocket webSocket)
+ throws ApexException {
+ final StopPeriodicEvents stopPeriodicEventsMessage = (StopPeriodicEvents) message;
+ LOGGER.debug("stopping periodic events on engine {} . . .",
+ stopPeriodicEventsMessage.getTarget().getId());
+ // Stop periodic events
+ apexService.stopPeriodicEvents();
+ // Send a reply indicating the message action worked
+ sendReply(webSocket, stopPeriodicEventsMessage, true, "stopped periodic events on engine "
+ + stopPeriodicEventsMessage.getTarget().getId());
+ LOGGER.debug("stopped periodic events on engine " + stopPeriodicEventsMessage.getTarget().getId());
+ }
+
+ /**
+ * Handle the engine status message.
+ *
+ * @param message the message
+ * @param webSocket the web socket that the message came on
+ * @throws ApexException on message handling exceptions
+ */
+ private void handleEngineStatusMessage(final Message message, final WebSocket webSocket) throws ApexException {
+ final GetEngineStatus getEngineStatusMessage = (GetEngineStatus) message;
+ LOGGER.debug("getting status for engine{} . . .", getEngineStatusMessage.getTarget().getId());
+ // Send a reply with the engine status
+ sendReply(webSocket, getEngineStatusMessage, true,
+ apexService.getStatus(getEngineStatusMessage.getTarget()));
+ LOGGER.debug("returned status for engine {}", getEngineStatusMessage.getTarget().getId());
+ }
+
+ /**
+ * Handle the engine information message.
+ *
+ * @param message the message
+ * @param webSocket the web socket that the message came on
+ * @throws ApexException on message handling exceptions
+ */
+ private void handleEngineInfoMessage(final Message message, final WebSocket webSocket) throws ApexException {
+ final GetEngineInfo getEngineInfo = (GetEngineInfo) message;
+ LOGGER.debug("getting runtime information for engine {} . . .", getEngineInfo.getTarget().getId());
+ // Send a reply with the engine runtime information
+ sendReply(webSocket, getEngineInfo, true, apexService.getRuntimeInfo(getEngineInfo.getTarget()));
+ LOGGER.debug("returned runtime information for engine {}", getEngineInfo.getTarget().getId());
+ }
+
+ /**
* Send the Response message to the client.
*
* @param client the client to which to send the response message