/*
* Template for creating APEX CLI Editor Commands.
*
- * @package com.ericsson.apex.apps.pdsls.base
+ * @package org.onap.policy.apex.apps.pdsls.base
* @author Sven van der Meer <sven.van.der.meer@ericsson.com>
*/
name : "PeriodicEvent",
version : "0.0.1"
},
- nameSpace : "com.ericsson.apex.domains.aadm.events",
+ nameSpace : "org.onap.policy.apex.domains.aadm.events",
parameter : {
entry : [ {
key : "PERIODIC_EVENT_COUNT",
* @param schema the schema
* @throws ContextRuntimeException the context runtime exception
*/
- void init(AxKey userKey, AxContextSchema schema) throws ContextRuntimeException;
+ void init(AxKey userKey, AxContextSchema schema);
/**
* Get the user key of the schema helper.
// Logger for this class
private static final XLogger LOGGER = XLoggerFactory.getXLogger(ContextAlbumImpl.class);
+ // Recurring string constants
+ private static final String NULL_VALUES_ILLEGAL = "null values are illegal on method parameter \"key\"";
+ private static final String ALBUM = "album \"";
+
// The definition of this context album
private final AxContextAlbum albumDefinition;
@Override
public boolean containsKey(final Object key) {
if (key == null) {
- LOGGER.warn("null values are illegal on method parameter \"key\"");
- throw new ContextRuntimeException("null values are illegal on method parameter \"key\"");
+ LOGGER.warn(NULL_VALUES_ILLEGAL);
+ throw new ContextRuntimeException(NULL_VALUES_ILLEGAL);
}
return albumMap.containsKey(key);
public Object get(final Object key) {
if (key == null) {
final String returnString =
- "album \"" + albumDefinition.getId() + "\" null keys are illegal on keys for get()";
+ ALBUM + albumDefinition.getId() + "\" null keys are illegal on keys for get()";
LOGGER.warn(returnString);
throw new ContextRuntimeException(returnString);
}
public Object put(final String key, final Object incomingValue) {
if (key == null) {
final String returnString =
- "album \"" + albumDefinition.getId() + "\" null keys are illegal on keys for put()";
+ ALBUM + albumDefinition.getId() + "\" null keys are illegal on keys for put()";
LOGGER.warn(returnString);
throw new ContextRuntimeException(returnString);
}
if (incomingValue == null) {
- final String returnString = "album \"" + albumDefinition.getId() + "\" null values are illegal on key \""
+ final String returnString = ALBUM + albumDefinition.getId() + "\" null values are illegal on key \""
+ key + "\" for put()";
LOGGER.warn(returnString);
throw new ContextRuntimeException(returnString);
}
if (!albumDefinition.isWritable()) {
- final String returnString = "album \"" + albumDefinition.getId()
+ final String returnString = ALBUM + albumDefinition.getId()
+ "\" put() not allowed on read only albums for key=\"" + key + "\", value=\"" + incomingValue;
LOGGER.warn(returnString);
throw new ContextRuntimeException(returnString);
public void putAll(final Map<? extends String, ? extends Object> incomingContextAlbum) {
if (!albumDefinition.isWritable()) {
final String returnString =
- "album \"" + albumDefinition.getId() + "\" putAll() not allowed on read only albums";
+ ALBUM + albumDefinition.getId() + "\" putAll() not allowed on read only albums";
LOGGER.warn(returnString);
throw new ContextRuntimeException(returnString);
}
@Override
public Object remove(final Object key) {
if (!albumDefinition.isWritable()) {
- final String returnString = "album \"" + albumDefinition.getId()
+ final String returnString = ALBUM + albumDefinition.getId()
+ "\" remove() not allowed on read only albums for key=\"" + key + "\"";
LOGGER.warn(returnString);
throw new ContextRuntimeException(returnString);
}
if (key == null) {
- LOGGER.warn("null values are illegal on method parameter \"key\"");
+ LOGGER.warn(NULL_VALUES_ILLEGAL);
throw new ContextRuntimeException("null values are illegal on method parameter \"keyID\"");
}
public void clear() {
if (!albumDefinition.isWritable()) {
final String returnString =
- "album \"" + albumDefinition.getId() + "\" clear() not allowed on read only albums";
+ ALBUM + albumDefinition.getId() + "\" clear() not allowed on read only albums";
LOGGER.warn(returnString);
throw new ContextRuntimeException(returnString);
}
// Create the lock manager if it doesn't already exist
if (lockManager == null) {
- lockManager = new LockManagerFactory().createLockManager(key);
+ setLockManager(new LockManagerFactory().createLockManager(key));
}
// Set up flushing on the context distributor if its not set up already
if (flushTimer == null) {
- flushTimer = new DistributorFlushTimerTask(this);
+ setFlushTimer(new DistributorFlushTimerTask(this));
}
// Create a new persistor for this key
LOGGER.exit("init(" + key + ")");
}
+ /**
+ * Set the static lock manager
+ * @param incomingLockManager the lock manager value
+ */
+ private static void setLockManager(final LockManager incomingLockManager) {
+ lockManager = incomingLockManager;
+ }
+
+ /**
+ * Set the static flush timer
+ * @param incomingFlushTimer the flush timer value
+ */
+ private static void setFlushTimer(final DistributorFlushTimerTask incomingFlushTimer) {
+ flushTimer = incomingFlushTimer;
+ }
+
/*
* (non-Javadoc)
*
// another process,
// if not, we have to try to read the content from persistence
if (newContextAlbumMap.isEmpty()) {
- // Read entries from persistence
- // TODO: READ ITEMS FROM PRESISTENCE!!!!
+ // Read entries from persistence, (Not implemented yet)
}
// Create the context album and put the context album object onto the distributor
for (final Entry<AxArtifactKey, ContextAlbum> distributorMapEntry : albumMaps.entrySet()) {
// Let the persistor write each of the entries
for (final Object contextItem : distributorMapEntry.getValue().values()) {
- LOGGER.debug(contextItem.toString());
- // persistor.writeContextItem((AxContextSchema) contextItem);
+ persistor.writeContextItem((AxContextSchema) contextItem);
}
}
}
// Shut down the lock manager
if (lockManager != null) {
lockManager.shutdown();
- lockManager = null;
+ setLockManager(null);
}
albumMaps.clear();
private final Distributor contextDistributor;
// Timing information
- private long period = 0;
+ private long flushPeriod = 0;
private long flushCount = 0;
/**
// Set the period for persistence flushing
final PersistorParameters persistorParameters = ParameterService
.get(ContextParameterConstants.PERSISTENCE_GROUP_NAME);
- period = persistorParameters.getFlushPeriod();
+ flushPeriod = persistorParameters.getFlushPeriod();
// Set up the timer
timer = new Timer(DistributorFlushTimerTask.class.getSimpleName(), true);
- timer.schedule(this, period, period);
+ timer.schedule(this, flushPeriod, flushPeriod);
- LOGGER.debug("context distributor " + contextDistributor.getKey().getId() + " flushing set up with interval: "
- + period + "ms");
+ LOGGER.debug("context distributor {} flushing set up with interval: {} ms", contextDistributor.getKey().getId(),
+ flushPeriod);
}
/**
// Increment the flush counter
flushCount++;
- LOGGER.debug("context distributor " + contextDistributor.getKey().getId() + " flushing: period=" + period
- + ": count=" + flushCount);
+ LOGGER.debug("context distributor {} flushing: period={}: count={}", contextDistributor.getKey().getId(),
+ flushPeriod, flushCount);
try {
contextDistributor.flush();
- LOGGER.debug("context distributor " + contextDistributor.getKey().getId() + " flushed: period=" + period
- + ": count=" + flushCount);
+ LOGGER.debug("context distributor {} flushed: period={}: count={}", contextDistributor.getKey().getId(),
+ flushPeriod, flushCount);
} catch (final ContextException e) {
- LOGGER.error("flush error on context distributor " + contextDistributor.getKey().getId() + ": period="
- + period + ": count=" + flushCount, e);
+ LOGGER.error("flush error on context distributor {}: period={}: count={}",
+ contextDistributor.getKey().getId(), flushPeriod, flushCount, e);
}
}
*/
@Override
public String toString() {
- return "ContextDistributorFlushTimerTask [period=" + period + ", flushCount=" + flushCount + "]";
+ return "ContextDistributorFlushTimerTask [period=" + flushPeriod + ", flushCount=" + flushCount + "]";
}
}
// Logger for this class
private static final XLogger LOGGER = XLoggerFactory.getXLogger(AbstractLockManager.class);
+ // Recurring string constants
+ private static final String CONTEXT_ITEM = " context item ";
+
// The key of this lock manager
private AxArtifactKey key = null;
// Map of locks in use on this distributor for each context map
- private final Map<String, Map<String, ReadWriteLock>> lockMaps =
- Collections.synchronizedMap(new HashMap<String, Map<String, ReadWriteLock>>());
+ private final Map<String, Map<String, ReadWriteLock>> lockMaps = Collections
+ .synchronizedMap(new HashMap<String, Map<String, ReadWriteLock>>());
/*
* (non-Javadoc)
lock.readLock().lock();
LOGGER.exit("lockForReading(" + lockTypeKey + "_" + lockKey + ")");
} catch (final Exception e) {
- LOGGER.warn("error acquiring read lock on context map " + lockTypeKey + " context item " + lockKey, e);
+ LOGGER.warn("error acquiring read lock on context map " + lockTypeKey + CONTEXT_ITEM + lockKey, e);
throw new ContextException(
- "error acquiring read lock on context map " + lockTypeKey + " context item " + lockKey, e);
+ "error acquiring read lock on context map " + lockTypeKey + CONTEXT_ITEM + lockKey, e);
}
}
lock.writeLock().lock();
LOGGER.exit("lockForWriting(" + lockTypeKey + "_" + lockKey + ")");
} catch (final Exception e) {
- LOGGER.warn("error acquiring write lock on context map " + lockTypeKey + " context item " + lockKey, e);
+ LOGGER.warn("error acquiring write lock on context map " + lockTypeKey + CONTEXT_ITEM + lockKey, e);
throw new ContextException(
- "error acquiring write lock on context map " + lockTypeKey + " context item " + lockKey, e);
+ "error acquiring write lock on context map " + lockTypeKey + CONTEXT_ITEM + lockKey, e);
}
}
lock.readLock().unlock();
LOGGER.exit("unlockForReading(" + lockTypeKey + "_" + lockKey + ")");
} catch (final Exception e) {
- LOGGER.warn("error releasing read lock on context map " + lockTypeKey + " context item " + lockKey, e);
+ LOGGER.warn("error releasing read lock on context map " + lockTypeKey + CONTEXT_ITEM + lockKey, e);
throw new ContextException(
- "error releasing read lock on context map " + lockTypeKey + " context item " + lockKey, e);
+ "error releasing read lock on context map " + lockTypeKey + CONTEXT_ITEM + lockKey, e);
}
}
lock.writeLock().unlock();
LOGGER.exit("unlockForWriting(" + lockTypeKey + "_" + lockKey + ")");
} catch (final Exception e) {
- LOGGER.warn("error releasing write lock on context map " + lockTypeKey + " context item " + lockKey, e);
+ LOGGER.warn("error releasing write lock on context map " + lockTypeKey + CONTEXT_ITEM + lockKey, e);
throw new ContextException(
- "error releasing write lock on context map " + lockTypeKey + " context item " + lockKey, e);
+ "error releasing write lock on context map " + lockTypeKey + CONTEXT_ITEM + lockKey, e);
}
}
- /*
- * (non-Javadoc)
- *
- * @see org.onap.policy.apex.core.context.LockManager#shutdown()
- */
- @Override
- public abstract void shutdown();
-
/**
* Get a reentrant read write lock from whatever locking mechanism is in use.
*
* @throws ContextException On errors getting the lock
*/
private ReadWriteLock getLock(final String lockTypeKey, final String lockKey, final boolean createMode)
- throws ContextException {
+ throws ContextException {
// Check if we have a lock type map for this lock type yet
if (!lockMaps.containsKey(lockTypeKey)) {
// Create a lock type map for the lock type
}
// Should we create a lock?
+ String errorMessage = "error getting lock on context map " + lockTypeKey + CONTEXT_ITEM + lockKey;
if (!createMode) {
- LOGGER.warn("error getting lock on context map " + lockTypeKey + " context item " + lockKey
- + ", lock does not exist");
- throw new ContextException("error getting lock on context map " + lockTypeKey + " context item " + lockKey
- + ", lock does not exist");
+ String message = errorMessage + ", lock does not exist";
+ LOGGER.warn(message);
+ throw new ContextException(message);
}
try {
lockMaps.get(lockTypeKey).put(lockKey, lock);
if (LOGGER.isTraceEnabled()) {
- LOGGER.trace("created lock " + lockTypeKey + "_" + lockKey);
+ LOGGER.trace("created lock {}_{}", lockTypeKey, lockKey);
}
return lock;
} catch (final Exception e) {
- LOGGER.warn("error getting lock on context map " + lockTypeKey + " context item " + lockKey, e);
- throw new ContextException("error getting lock on context map " + lockTypeKey + " context item " + lockKey,
- e);
+ LOGGER.warn(errorMessage, e);
+ throw new ContextException(errorMessage, e);
}
}
}
* org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema)
*/
@Override
- public void init(final AxKey incomingUserKey, final AxContextSchema incomingSchema) throws ContextRuntimeException {
+ public void init(final AxKey incomingUserKey, final AxContextSchema incomingSchema) {
Assertions.argumentOfClassNotNull(incomingUserKey, ContextRuntimeException.class,
"incomingUserKey may not be null");
Assertions.argumentOfClassNotNull(incomingSchema, ContextRuntimeException.class,
*/
public void monitorInit(final AxArtifactKey albumKey, final AxArtifactKey schemaKey, final String name,
final Object value) {
- LOGGER.trace(monitor("INIT", null, albumKey, schemaKey, name, value));
+ String monitorInitString = monitor("INIT", null, albumKey, schemaKey, name, value);
+ LOGGER.trace(monitorInitString);
}
/**
*/
public void monitorInit(final AxArtifactKey albumKey, final AxArtifactKey schemaKey, final String name,
final Object value, final AxConcept[] userArtifactStack) {
- LOGGER.trace(monitor("INIT", userArtifactStack, albumKey, schemaKey, name, value));
+ String monitorInitString = monitor("INIT", userArtifactStack, albumKey, schemaKey, name, value);
+ LOGGER.trace(monitorInitString);
}
/**
*/
public void monitorDelete(final AxArtifactKey albumKey, final AxArtifactKey schemaKey, final String name,
final Object value, final AxConcept[] userArtifactStack) {
- LOGGER.trace(monitor("DEL", userArtifactStack, albumKey, schemaKey, name, value));
+ String monitorDeleteString = monitor("DEL", userArtifactStack, albumKey, schemaKey, name, value);
+ LOGGER.trace(monitorDeleteString);
}
/**
*/
public void monitorGet(final AxArtifactKey albumKey, final AxArtifactKey schemaKey, final String name,
final Object value, final AxConcept[] userArtifactStack) {
- LOGGER.trace(monitor("GET", userArtifactStack, albumKey, schemaKey, name, value));
+ String monitorGetString = monitor("GET", userArtifactStack, albumKey, schemaKey, name, value);
+ LOGGER.trace(monitorGetString);
}
/**
*/
public void monitorSet(final AxArtifactKey albumKey, final AxArtifactKey schemaKey, final String name,
final Object value, final AxConcept[] userArtifactStack) {
- LOGGER.trace(monitor("SET", userArtifactStack, albumKey, schemaKey, name, value));
+ String monitorSetString = monitor("SET", userArtifactStack, albumKey, schemaKey, name, value);
+ LOGGER.trace(monitorSetString);
}
/**
*/
public void monitorReadLock(final AxArtifactKey albumKey, final AxArtifactKey schemaKey, final String name,
final AxConcept[] userArtifactStack) {
- LOGGER.trace(monitor("READLOCK", userArtifactStack, albumKey, schemaKey, name, null));
+ String monitorReadLockString = monitor("READLOCK", userArtifactStack, albumKey, schemaKey, name, null);
+ LOGGER.trace(monitorReadLockString);
}
/**
*/
public void monitorWriteLock(final AxArtifactKey albumKey, final AxArtifactKey schemaKey, final String name,
final AxConcept[] userArtifactStack) {
- LOGGER.trace(monitor("WRITELOCK", userArtifactStack, albumKey, schemaKey, name, null));
+ String writeLockMonitorString = monitor("WRITELOCK", userArtifactStack, albumKey, schemaKey, name, null);
+ LOGGER.trace(writeLockMonitorString);
}
/**
*/
public void monitorReadUnlock(final AxArtifactKey albumKey, final AxArtifactKey schemaKey, final String name,
final AxConcept[] userArtifactStack) {
- LOGGER.trace(monitor("READUNLOCK", userArtifactStack, albumKey, schemaKey, name, null));
+ String monitorReadUnlockString = monitor("READUNLOCK", userArtifactStack, albumKey, schemaKey, name, null);
+ LOGGER.trace(monitorReadUnlockString);
}
/**
*/
public void monitorWriteUnlock(final AxArtifactKey albumKey, final AxArtifactKey schemaKey, final String name,
final AxConcept[] userArtifactStack) {
- LOGGER.trace(monitor("WRITEUNLOCK", userArtifactStack, albumKey, schemaKey, name, null));
+ String monitorWriteUnlockString = monitor("WRITEUNLOCK", userArtifactStack, albumKey, schemaKey, name, null);
+ LOGGER.trace(monitorWriteUnlockString);
}
/**
assertDouble(contextItem.getTestPolicyContextItem002().getDoubleValue(), PI_VAL);
assertTrue(contextItem.getTestPolicyContextItem003().getFlag());
assertEquals(contextItem.getTestPolicyContextItem004().getLongValue(), testDate.getTime());
- assertEquals(contextItem.getTestPolicyContextItem005().getMapValue(), TEST_HASH_MAP);
+ assertEquals(TEST_HASH_MAP, contextItem.getTestPolicyContextItem005().getMapValue());
final TestGlobalContextItem globalContext =
getTestGlobalContextItem(contextDistributor, testDate, tci9, tciA);
ParameterService.register(contextParameters.getDistributorParameters());
ParameterService.register(contextParameters.getLockManagerParameters());
ParameterService.register(contextParameters.getPersistorParameters());
-
+
schemaParameters = new SchemaParameters();
schemaParameters.setName(ContextParameterConstants.SCHEMA_GROUP_NAME);
schemaParameters.getSchemaHelperParameterMap().put("JAVA", new JavaSchemaHelperParameters());
final AxArtifactKey distributorKey = new AxArtifactKey("AbstractDistributor", "0.0.1");
final Distributor contextDistributor = new DistributorFactory().getDistributor(distributorKey);
- final AxArtifactKey[] usedArtifactStackArray = {new AxArtifactKey("testC-top", "0.0.1"),
- new AxArtifactKey("testC-next", "0.0.1"), new AxArtifactKey("testC-bot", "0.0.1")};
+ final AxArtifactKey[] usedArtifactStackArray =
+ { new AxArtifactKey("testC-top", "0.0.1"), new AxArtifactKey("testC-next", "0.0.1"),
+ new AxArtifactKey("testC-bot", "0.0.1") };
final DaoParameters DaoParameters = new DaoParameters();
DaoParameters.setPluginClass("org.onap.policy.apex.model.basicmodel.dao.impl.DefaultApexDao");
final AxContextModel someContextModel = TestContextAlbumFactory.createMultiAlbumsContextModel();
// Context for Storing Map values
- final AxContextAlbum axContextAlbumForMap =
- someContextModel.getAlbums().getAlbumsMap().get(new AxArtifactKey("MapContextAlbum", "0.0.1"));
+ final AxContextAlbum axContextAlbumForMap = someContextModel.getAlbums().getAlbumsMap()
+ .get(new AxArtifactKey("MapContextAlbum", "0.0.1"));
apexDao.create(axContextAlbumForMap);
contextDistributor.registerModel(someContextModel);
final ContextAlbum contextAlbumForMap = contextDistributor.createContextAlbum(axContextAlbumForMap.getKey());
contextAlbumForMap.putAll(valueMap0);
- assertEquals(
- ((TestContextTreeMapItem) contextAlbumForMap.get("TestPolicyContextItem000")).getMapValue().get("key"),
- "This is a policy context string");
+ assertEquals("This is a policy context string",
+ ((TestContextTreeMapItem) contextAlbumForMap.get("TestPolicyContextItem000")).getMapValue()
+ .get("key"));
contextAlbumForMap.flush();
// Context for Storing Date values
- final AxContextAlbum axContextAlbumForDate =
- someContextModel.getAlbums().getAlbumsMap().get(new AxArtifactKey("DateContextAlbum", "0.0.1"));
+ final AxContextAlbum axContextAlbumForDate = someContextModel.getAlbums().getAlbumsMap()
+ .get(new AxArtifactKey("DateContextAlbum", "0.0.1"));
apexDao.create(axContextAlbumForDate);
contextDistributor.registerModel(someContextModel);
final ContextAlbum contextAlbumForDate = contextDistributor.createContextAlbum(axContextAlbumForDate.getKey());
contextAlbumForDate.putAll(valueMap1);
- assertEquals(((TestContextDateLocaleItem) contextAlbumForDate.get("TestPolicyContextItem00A")).getDateValue(),
- testDate);
- assertEquals(((TestContextDateLocaleItem) contextAlbumForDate.get("TestPolicyContextItem00A")).getDst(), true);
+ assertEquals(testDate, ((TestContextDateLocaleItem) contextAlbumForDate.get("TestPolicyContextItem00A"))
+ .getDateValue());
+ assertEquals(true, ((TestContextDateLocaleItem) contextAlbumForDate.get("TestPolicyContextItem00A")).getDst());
contextAlbumForDate.flush();
// Context for Storing Long values
- final AxContextAlbum axContextAlbumForLong =
- someContextModel.getAlbums().getAlbumsMap().get(new AxArtifactKey("LTypeContextAlbum", "0.0.1"));
+ final AxContextAlbum axContextAlbumForLong = someContextModel.getAlbums().getAlbumsMap()
+ .get(new AxArtifactKey("LTypeContextAlbum", "0.0.1"));
apexDao.create(axContextAlbumForLong);
contextDistributor.registerModel(someContextModel);
final ContextAlbum contextAlbumForLong = contextDistributor.createContextAlbum(axContextAlbumForLong.getKey());
contextAlbumForLong.putAll(valueMap2);
- assertEquals(((TestContextLongItem) contextAlbumForLong.get("TestPolicyContextItem0031")).getLongValue(),
- 0xFFFFFFFFFFFFFFFFL);
- assertEquals(((TestContextLongItem) contextAlbumForLong.get("TestPolicyContextItem0032")).getLongValue(),
- 0xFFFFFFFFFFFFFFFEL);
- assertEquals(((TestContextLongItem) contextAlbumForLong.get("TestPolicyContextItem0033")).getLongValue(),
- 0xFFFFFFFFFFFFFFFDL);
- assertEquals(((TestContextLongItem) contextAlbumForLong.get("TestPolicyContextItem0034")).getLongValue(),
- 0xFFFFFFFFFFFFFFFCL);
- assertEquals(((TestContextLongItem) contextAlbumForLong.get("TestPolicyContextItem0035")).getLongValue(),
- 0xFFFFFFFFFFFFFFFBL);
+ assertEquals(0xFFFFFFFFFFFFFFFFL,
+ ((TestContextLongItem) contextAlbumForLong.get("TestPolicyContextItem0031")).getLongValue());
+ assertEquals(0xFFFFFFFFFFFFFFFEL,
+ ((TestContextLongItem) contextAlbumForLong.get("TestPolicyContextItem0032")).getLongValue());
+ assertEquals(0xFFFFFFFFFFFFFFFDL,
+ ((TestContextLongItem) contextAlbumForLong.get("TestPolicyContextItem0033")).getLongValue());
+ assertEquals(0xFFFFFFFFFFFFFFFCL,
+ ((TestContextLongItem) contextAlbumForLong.get("TestPolicyContextItem0034")).getLongValue());
+ assertEquals(0xFFFFFFFFFFFFFFFBL,
+ ((TestContextLongItem) contextAlbumForLong.get("TestPolicyContextItem0035")).getLongValue());
contextAlbumForLong.flush();
contextDistributor.clear();
* The Class {@link BatchDeployer} deploys an Apex model held as an XML or Json file onto an Apex engine. It uses the
* EngDep protocol to communicate with the engine, with the EngDep protocol being carried on Java web sockets.
*
- * This deployer is a simple command line deployer that reads the communication parameters and the location of the Apex
- * model file as arguments.
+ * <p>This deployer is a simple command line deployer that reads the communication parameters and the location of the
+ * Apex model file as arguments.
*
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
*/
public static void main(final String[] args) {
if (args.length != NUM_ARGUMENTS) {
- LOGGER.error("invalid arguments: " + Arrays.toString(args));
- LOGGER.error("usage: Deployer <server address> <port address> <Apex Model file location>");
+ String message = "invalid arguments: " + Arrays.toString(args)
+ + "usage: Deployer <server address> <port address> <Apex Model file location>";
+ LOGGER.error(message);
return;
}
* @throws IOException on IO exceptions from the operating system
*/
public void deployModel(final String modelFileName, final boolean ignoreConflicts, final boolean force)
- throws ApexException, IOException {
+ throws ApexException, IOException {
engineServiceFacade.deployModel(modelFileName, ignoreConflicts, force);
}
* @throws IOException on IO exceptions from the operating system
*/
public void deployModel(final AxPolicyModel policyModel, final boolean ignoreConflicts, final boolean force)
- throws ApexException, IOException {
+ throws ApexException, IOException {
engineServiceFacade.deployModel(policyModel, ignoreConflicts, force);
}
package org.onap.policy.apex.core.deployment;
+import com.google.common.eventbus.Subscribe;
+
import java.net.URI;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import org.slf4j.ext.XLogger;
import org.slf4j.ext.XLoggerFactory;
-import com.google.common.eventbus.Subscribe;
-
/**
* The Class DeploymentClient handles the client side of an EngDep communication session with an
* Apex server. It runs a thread to handle message sending and session monitoring. It uses a sending
*/
@Override
public void run() {
- LOGGER.debug("engine<-->deployment to \"ws://" + host + ":" + port + "\" thread starting . . .");
+ LOGGER.debug("engine<-->deployment to \"ws://{}:{}\" thread starting . . .", host, port);
// Set up the thread name
thisThread = Thread.currentThread();
return;
}
// Loop forever, sending messages as they appear on the queue
- while (true) {
+ while (started) {
try {
final Message messageForSending = sendQueue.take();
sendMessage(messageForSending);
thisThread.interrupt();
// Wait for the thread to stop
- while (thisThread != null && thisThread.isAlive()) {
- ThreadUtilities.sleep(CLIENT_STOP_WAIT_INTERVAL);
- }
+ ThreadUtilities.sleep(CLIENT_STOP_WAIT_INTERVAL);
// Close the Web Services connection
service.stopConnection();
import org.slf4j.ext.XLoggerFactory;
/**
- * The Class Deployer deploys an Apex model held as an XML file onto an Apex engine. It uses the
- * EngDep protocol to communicate with the engine, with the EngDep protocol being carried on Java
- * web sockets.
+ * The Class Deployer deploys an Apex model held as an XML file onto an Apex engine. It uses the EngDep protocol to
+ * communicate with the engine, with the EngDep protocol being carried on Java web sockets.
*
- * This deployer is a simple command line deployer that reads the communication parameters and the
- * location of the XML model file as arguments.
+ * <p>his deployer is a simple command line deployer that reads the communication parameters and the location of the XML
+ * model file as arguments.
*
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
// Get a reference to the logger
private static final XLogger LOGGER = XLoggerFactory.getXLogger(EngineServiceFacade.class);
+ // Repeated string constants
+ private static final String RECEIVED_FROM_SERVER = " received from server";
+ private static final String FAILED_RESPONSE = "failed response ";
+
// The default message timeout and timeout increment (the amount of time between polls) in
// milliseconds
private static final int CLIENT_START_WAIT_INTERVAL = 100;
// Get engine service information to see what engines we're dealing with
final GetEngineServiceInfo engineServiceInfo = new GetEngineServiceInfo(null);
LOGGER.debug("sending get engine service info message {} to server {}:{} . . .", engineServiceInfo,
- hostName, port);
+ hostName, port);
client.sendMessage(engineServiceInfo);
LOGGER.debug("sent get engine service info message to server {}:{} . . .", hostName, port);
- final EngineServiceInfoResponse engineServiceInfoResponse =
- (EngineServiceInfoResponse) getResponse(engineServiceInfo);
+ final EngineServiceInfoResponse engineServiceInfoResponse = (EngineServiceInfoResponse) getResponse(
+ engineServiceInfo);
if (engineServiceInfoResponse.isSuccessful()) {
engineServiceKey = engineServiceInfoResponse.getEngineServiceKey();
engineKeyArray = engineServiceInfoResponse.getEngineKeyArray();
*
* @param modelFileName the name of the model file containing the model to deploy
* @param ignoreConflicts true if conflicts between context in polices is to be ignored
- * @param force true if the model is to be applied even if it is incompatible with the existing
- * model
+ * @param force true if the model is to be applied even if it is incompatible with the existing model
* @throws ApexException on Apex errors
* @throws IOException on IO exceptions from the operating system
*/
public void deployModel(final String modelFileName, final boolean ignoreConflicts, final boolean force)
- throws ApexException, IOException {
+ throws ApexException, IOException {
if (engineServiceKey == null || engineKeyArray == null || engineKeyArray.length == 0) {
LOGGER.error("cound not deploy apex model, deployer is not initialized");
throw new ApexDeploymentException("cound not deploy apex model, deployer is not initialized");
}
// Get the model file as a string
- URL apexModelURL = ResourceUtils.getLocalFile(modelFileName);
- if (apexModelURL == null) {
- apexModelURL = ResourceUtils.getUrlResource(modelFileName);
- if (apexModelURL == null) {
+ URL apexModelUrl = ResourceUtils.getLocalFile(modelFileName);
+ if (apexModelUrl == null) {
+ apexModelUrl = ResourceUtils.getUrlResource(modelFileName);
+ if (apexModelUrl == null) {
LOGGER.error("cound not create apex model, could not read from XML file {}", modelFileName);
throw new ApexDeploymentException(
- "cound not create apex model, could not read XML file " + modelFileName);
+ "cound not create apex model, could not read XML file " + modelFileName);
}
}
- deployModel(modelFileName, apexModelURL.openStream(), ignoreConflicts, force);
+ deployModel(modelFileName, apexModelUrl.openStream(), ignoreConflicts, force);
}
/**
* @param modelFileName the name of the model file containing the model to deploy
* @param modelInputStream the stream that holds the Apex model
* @param ignoreConflicts true if conflicts between context in polices is to be ignored
- * @param force true if the model is to be applied even if it is incompatible with the existing
- * model
+ * @param force true if the model is to be applied even if it is incompatible with the existing model
* @throws ApexException on model deployment errors
*/
public void deployModel(final String modelFileName, final InputStream modelInputStream,
- final boolean ignoreConflicts, final boolean force) throws ApexException {
+ final boolean ignoreConflicts, final boolean force) throws ApexException {
// Read the policy model from the stream
final ApexModelReader<AxPolicyModel> modelReader = new ApexModelReader<>(AxPolicyModel.class);
modelReader.setValidateFlag(!ignoreConflicts);
*
* @param apexPolicyModel the name of the model to deploy
* @param ignoreConflicts true if conflicts between context in polices is to be ignored
- * @param force true if the model is to be applied even if it is incompatible with the existing
- * model
+ * @param force true if the model is to be applied even if it is incompatible with the existing model
* @throws ApexException on model deployment errors
*/
public void deployModel(final AxPolicyModel apexPolicyModel, final boolean ignoreConflicts, final boolean force)
- throws ApexException {
+ throws ApexException {
// Write the model into a byte array
final ByteArrayOutputStream baOutputStream = new ByteArrayOutputStream();
final ApexModelWriter<AxPolicyModel> modelWriter = new ApexModelWriter<>(AxPolicyModel.class);
modelWriter.write(apexPolicyModel, baOutputStream);
// Create and send Update message
- final UpdateModel umMessage =
- new UpdateModel(engineServiceKey, baOutputStream.toString(), ignoreConflicts, force);
+ final UpdateModel umMessage = new UpdateModel(engineServiceKey, baOutputStream.toString(), ignoreConflicts,
+ force);
LOGGER.debug("sending update message {} to server {}:{} . . .", umMessage, hostName, port);
client.sendMessage(umMessage);
// Check if we got a response
final Response response = getResponse(umMessage);
- if (response.isSuccessful()) {
- LOGGER.debug(response.toString());
- } else {
- LOGGER.warn("failed response {} received from server {}:{}", response.getMessageData(), hostName, port);
- throw new ApexException(
- "failed response " + response.getMessageData() + " received from server" + hostName + ':' + port);
+ if (!response.isSuccessful()) {
+ LOGGER.warn(FAILED_RESPONSE + "{} received from server {}:{}", response.getMessageData(), hostName, port);
+ throw new ApexException(FAILED_RESPONSE + response.getMessageData() + RECEIVED_FROM_SERVER + hostName
+ + ':' + port);
}
}
// Check if we got a response
final Response response = getResponse(startEngineMessage);
- if (response.isSuccessful()) {
- LOGGER.debug(response.toString());
- } else {
- LOGGER.warn("failed response {} received from server {}:{}", response.getMessageData(), hostName, port);
- throw new ApexDeploymentException(
- "failed response " + response.getMessageData() + " received from server" + hostName + ':' + port);
+ if (!response.isSuccessful()) {
+ String message = FAILED_RESPONSE + response.getMessageData() + RECEIVED_FROM_SERVER
+ + hostName + ':' + port;
+ LOGGER.warn(message);
+ throw new ApexDeploymentException(message);
}
}
// Check if we got a response
final Response response = getResponse(stopEngineMessage);
- if (response.isSuccessful()) {
- LOGGER.debug(response.toString());
- } else {
- LOGGER.warn("failed response {} received from server {}:{}", response.getMessageData(), hostName, port);
- throw new ApexDeploymentException(
- "failed response " + response.getMessageData() + " received from server" + hostName + ':' + port);
+ if (!response.isSuccessful()) {
+ String message = FAILED_RESPONSE + response.getMessageData() + RECEIVED_FROM_SERVER
+ + hostName + ':' + port;
+ LOGGER.warn(message);
+ throw new ApexDeploymentException(message);
}
}
final StartPeriodicEvents startPerioidicEventsMessage = new StartPeriodicEvents(engineKey);
startPerioidicEventsMessage.setMessageData(Long.toString(period));
LOGGER.debug("sending start perioidic events {} to server {}:{} . . .", startPerioidicEventsMessage, hostName,
- port);
+ port);
client.sendMessage(startPerioidicEventsMessage);
LOGGER.debug("sent start perioidic events message to server {}:{} . . .", hostName, port);
// Check if we got a response
final Response response = getResponse(startPerioidicEventsMessage);
- if (response.isSuccessful()) {
- LOGGER.debug(response.toString());
- } else {
- LOGGER.warn("failed response {} received from server {}:{}", response.getMessageData(), hostName, port);
- throw new ApexDeploymentException(
- "failed response " + response.getMessageData() + " received from server" + hostName + ':' + port);
+ if (!response.isSuccessful()) {
+ String message = FAILED_RESPONSE + response.getMessageData() + RECEIVED_FROM_SERVER
+ + hostName + ':' + port;
+ LOGGER.warn(message);
+ throw new ApexDeploymentException(message);
}
}
public void stopPerioidicEvents(final AxArtifactKey engineKey) throws ApexDeploymentException {
final StopPeriodicEvents stopPerioidicEventsMessage = new StopPeriodicEvents(engineKey);
LOGGER.debug("sending stop perioidic events {} to server {}:{} . . .", stopPerioidicEventsMessage, hostName,
- port);
+ port);
client.sendMessage(stopPerioidicEventsMessage);
LOGGER.debug("sent stop perioidic events message to server {}:{} . . .", hostName, port);
// Check if we got a response
final Response response = getResponse(stopPerioidicEventsMessage);
- if (response.isSuccessful()) {
- LOGGER.debug(response.toString());
- } else {
- LOGGER.warn("failed response {} received from server {}:{}", response.getMessageData(), hostName, port);
- throw new ApexDeploymentException(
- "failed response " + response.getMessageData() + " received from server" + hostName + ':' + port);
+ if (!response.isSuccessful()) {
+ String message = FAILED_RESPONSE + response.getMessageData() + RECEIVED_FROM_SERVER
+ + hostName + ':' + port;
+ LOGGER.warn(message);
+ throw new ApexDeploymentException(message);
}
}
// Check if we got a response
final Response response = getResponse(engineStatusMessage);
if (!response.isSuccessful()) {
- LOGGER.warn("failed response {} received from server {}:{}", response.getMessageData(), hostName, port);
- throw new ApexException(
- "failed response " + response.getMessageData() + " received from server" + hostName + ':' + port);
+ String message = FAILED_RESPONSE + response.getMessageData() + RECEIVED_FROM_SERVER + hostName
+ + ':' + port;
+ LOGGER.warn(message);
+ throw new ApexException(message);
}
final ByteArrayInputStream baInputStream = new ByteArrayInputStream(response.getMessageData().getBytes());
public String getEngineInfo(final AxArtifactKey engineKey) throws ApexException {
final GetEngineInfo engineInfoMessage = new GetEngineInfo(engineKey);
LOGGER.debug("sending get engine information message {} to server {}:{} . . .", engineInfoMessage, hostName,
- port);
+ port);
client.sendMessage(engineInfoMessage);
LOGGER.debug("sent get engine information message to server {}:{} . . .", hostName, port);
// Check if we got a response
final Response response = getResponse(engineInfoMessage);
if (!response.isSuccessful()) {
- LOGGER.warn("failed response {} received from server {}:{}", response.getMessageData(), hostName, port);
- throw new ApexException(
- "failed response " + response.getMessageData() + " received from server" + hostName + ':' + port);
+ String message = FAILED_RESPONSE + response.getMessageData() + RECEIVED_FROM_SERVER + hostName
+ + ':' + port;
+ LOGGER.warn(message);
+ throw new ApexException(message);
}
return response.getMessageData();
// Wait for the required amount of milliseconds for the response from the Apex server
Message receivedMessage = null;
- for (int timeWaitedSoFar = 0; receivedMessage == null && timeWaitedSoFar < timeoutTime; timeWaitedSoFar +=
- REPLY_MESSAGE_TIMEOUT_INCREMENT) {
+ for (int timeWaitedSoFar = 0; receivedMessage == null
+ && timeWaitedSoFar < timeoutTime; timeWaitedSoFar += REPLY_MESSAGE_TIMEOUT_INCREMENT) {
try {
receivedMessage = client.getReceiveQueue().poll(REPLY_MESSAGE_TIMEOUT_INCREMENT, TimeUnit.MILLISECONDS);
} catch (final InterruptedException e) {
Thread.currentThread().interrupt();
LOGGER.warn("reception of response from server interrupted {}:{}", hostName, port, e);
throw new ApexDeploymentException(
- "reception of response from server interrupted " + hostName + ':' + port, e);
+ "reception of response from server interrupted " + hostName + ':' + port, e);
}
}
// Check instance is a response message
if (!(receivedMessage instanceof Response)) {
LOGGER.warn("response received from server is of incorrect type {}, should be of type {}",
- receivedMessage.getClass().getName(), Response.class.getName());
+ receivedMessage.getClass().getName(), Response.class.getName());
throw new ApexDeploymentException("response received from server is of incorrect type "
- + receivedMessage.getClass().getName() + ", should be of type " + Response.class.getName());
+ + receivedMessage.getClass().getName() + ", should be of type " + Response.class.getName());
}
// Cast the response message
if (!responseMessage.getResponseTo().equals(sentMessage)) {
LOGGER.warn("response received is not response to sent message " + sentMessage.getAction());
throw new ApexDeploymentException(
- "response received is not correct response to sent message " + sentMessage.getAction());
+ "response received is not correct response to sent message " + sentMessage.getAction());
}
// Check if successful
if (responseMessage.isSuccessful()) {
LOGGER.debug("response received: {} message was succssful: {}", sentMessage.getAction(),
- responseMessage.getMessageData());
+ responseMessage.getMessageData());
} else {
LOGGER.debug("response received: {} message failed: {}", sentMessage.getAction(),
- responseMessage.getMessageData());
+ responseMessage.getMessageData());
}
return responseMessage;
*/
public static void main(final String[] args) {
if (args.length != NUM_ARGUMENTS) {
- LOGGER.error("invalid arguments: " + Arrays.toString(args));
- LOGGER.error("usage: Deployer <server address> <port address> <start/stop> <periods in ms>");
+ String message = "invalid arguments: " + Arrays.toString(args)
+ + "\nusage: Deployer <server address> <port address> <start/stop> <periods in ms>";
+ LOGGER.error(message);
return;
}
public static final String EXECUTOR_GROUP_NAME = "EXECUTOR_PARAMETERS";
/**
- * Private default constructor to prevent subclassing
+ * Private default constructor to prevent subclassing.
*/
private EngineParameterConstants() {
// Prevents subclassing
private Distributor contextDistributor = null;
// The key of the current policy, used to return the correct policy context album to the user
- private final AxArtifactKey currentPolicyKey = null;
+ private AxArtifactKey currentPolicyKey = null;
/**
* Constructor, instantiate the context object from the Apex model.
* The amount of milliseconds to wait for the current Apex engine to timeout on engine stop
* requests. If the timeout is exceeded, the stop aborts.
*/
- int APEX_ENGINE_STOP_EXECUTION_WAIT_TIMEOUT = 3000;
+ int STOP_EXECUTION_WAIT_TIMEOUT = 3000;
/** The wait increment (or pause time) when waiting for the Apex engine to stop. */
int APEX_ENGINE_STOP_EXECUTION_WAIT_INCREMENT = 100;
// Logger for this class
private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexEngineImpl.class);
+ // Recurring string constants
+ private static final String UPDATE_MODEL = "updateModel()<-";
+ private static final String START = "start()<-";
+ private static final String STOP = "stop()<-";
+
// The artifact key of this engine
private final AxArtifactKey key;
private AxEngineState state = AxEngineState.STOPPED;
// call back listeners
- private final Map<String, EnEventListener> eventListeners = new LinkedHashMap<String, EnEventListener>();
+ private final Map<String, EnEventListener> eventListeners = new LinkedHashMap<>();
// The context of this engine
private ApexInternalContext internalContext = null;
if (apexModel != null) {
LOGGER.entry("updateModel()->" + key.getId() + ", apexPolicyModel=" + apexModel.getKey().getId());
} else {
- LOGGER.warn("updateModel()<-" + key.getId() + ", Apex model not set");
- throw new ApexException(
- "updateModel()<-" + key.getId() + ", Apex model is not defined, it has a null value");
+ LOGGER.warn(UPDATE_MODEL + key.getId() + ", Apex model not set");
+ throw new ApexException(UPDATE_MODEL + key.getId() + ", Apex model is not defined, it has a null value");
}
// The engine must be stopped in order to do a model update
if (!state.equals(AxEngineState.STOPPED)) {
- throw new ApexException("updateModel()<-" + key.getId()
- + ", cannot update model, engine should be stopped but is in state " + state);
+ throw new ApexException(UPDATE_MODEL + key.getId()
+ + ", cannot update model, engine should be stopped but is in state " + state);
}
// Create new internal context or update the existing one
internalContext.update(apexModel);
}
} catch (final ContextException e) {
- LOGGER.warn(
- "updateModel()<-" + key.getId() + ", error setting the context for engine \"" + key.getId() + "\"",
- e);
- throw new ApexException(
- "updateModel()<-" + key.getId() + ", error setting the context for engine \"" + key.getId() + "\"",
- e);
+ LOGGER.warn(UPDATE_MODEL + key.getId() + ", error setting the context for engine \"" + key.getId() + "\"",
+ e);
+ throw new ApexException(UPDATE_MODEL + key.getId() + ", error setting the context for engine \""
+ + key.getId() + "\"", e);
}
// Set up the state machines
// always set up as new
stateMachineHandler = new StateMachineHandler(internalContext);
} catch (final StateMachineException e) {
- LOGGER.warn("updateModel()<-" + key.getId() + ", error setting up the engine state machines \""
- + key.getId() + "\"", e);
- throw new ApexException("updateModel()<-" + key.getId() + ", error setting up the engine state machines \""
- + key.getId() + "\"", e);
+ LOGGER.warn(UPDATE_MODEL + key.getId() + ", error setting up the engine state machines \"" + key.getId()
+ + "\"", e);
+ throw new ApexException(UPDATE_MODEL + key.getId() + ", error setting up the engine state machines \""
+ + key.getId() + "\"", e);
}
- LOGGER.exit("updateModel()<-" + key.getId());
+ LOGGER.exit(UPDATE_MODEL + key.getId());
}
/*
LOGGER.entry("start()" + key);
if (state != AxEngineState.STOPPED) {
- LOGGER.warn("start()<-" + key.getId() + "," + state + ", cannot start engine, engine not in state STOPPED");
- throw new ApexException(
- "start()<-" + key.getId() + "," + state + ", cannot start engine, engine not in state STOPPED");
+ String message = START + key.getId() + "," + state
+ + ", cannot start engine, engine not in state STOPPED";
+ LOGGER.warn(message);
+ throw new ApexException(message);
}
if (stateMachineHandler == null || internalContext == null) {
- LOGGER.warn("start()<-" + key.getId() + "," + state
- + ", cannot start engine, engine has not been initialized, its model is not loaded");
- throw new ApexException("start()<-" + key.getId() + "," + state
- + ", cannot start engine, engine has not been initialized, its model is not loaded");
+ String message = START + key.getId() + "," + state
+ + ", cannot start engine, engine has not been initialized, its model is not loaded";
+ LOGGER.warn(message);
+ throw new ApexException(START + key.getId() + "," + state
+ + ", cannot start engine, engine has not been initialized, its model is not loaded");
}
// Set up the state machines
stateMachineHandler.start();
engineStats.engineStart();
} catch (final StateMachineException e) {
- LOGGER.warn("updateModel()<-" + key.getId() + ", error starting the engine state machines \"" + key.getId()
- + "\"", e);
- throw new ApexException("updateModel()<-" + key.getId() + ", error starting the engine state machines \""
- + key.getId() + "\"", e);
+ String message = UPDATE_MODEL + key.getId() + ", error starting the engine state machines \"" + key.getId()
+ + "\"";
+ LOGGER.warn(message, e);
+ throw new ApexException(message, e);
}
// OK, we are good to go
LOGGER.entry("stop()->" + key);
// Stop the engine if it is in state READY, if it is in state EXECUTING, wait for execution to finish
- for (int increment = APEX_ENGINE_STOP_EXECUTION_WAIT_TIMEOUT; increment > 0; increment =
- APEX_ENGINE_STOP_EXECUTION_WAIT_INCREMENT) {
+ for (int increment = STOP_EXECUTION_WAIT_TIMEOUT; increment > 0; increment = STOP_EXECUTION_WAIT_TIMEOUT) {
synchronized (state) {
switch (state) {
// Already stopped
case STOPPED:
- throw new ApexException("stop()<-" + key.getId() + "," + state
- + ", cannot stop engine, engine is already stopped");
+ throw new ApexException(STOP + key.getId() + "," + state
+ + ", cannot stop engine, engine is already stopped");
// The normal case, the engine wasn't doing anything or it was executing
case READY:
case STOPPING:
state = AxEngineState.STOPPING;
break;
default:
- throw new ApexException("stop()<-" + key.getId() + "," + state
- + ", cannot stop engine, engine is in an undefined state");
+ throw new ApexException(STOP + key.getId() + "," + state
+ + ", cannot stop engine, engine is in an undefined state");
}
}
}
- throw new ApexException("stop()<-" + key.getId() + "," + state + ", cannot stop engine, engine stop timed out");
+ throw new ApexException(STOP + key.getId() + "," + state + ", cannot stop engine, engine stop timed out");
}
/*
public void clear() throws ApexException {
LOGGER.entry("clear()->" + key);
if (state != AxEngineState.STOPPED) {
- throw new ApexException(
- "clear" + "()<-" + key.getId() + "," + state + ", cannot clear engine, engine is not stopped");
+ throw new ApexException("clear" + "()<-" + key.getId() + "," + state
+ + ", cannot clear engine, engine is not stopped");
}
// Clear everything
@Override
public EnEvent createEvent(final AxArtifactKey eventKey) {
if (state != AxEngineState.READY && state != AxEngineState.EXECUTING) {
- LOGGER.warn(
- "createEvent()<-" + key.getId() + "," + state + ", cannot create event, engine not in state READY");
+ LOGGER.warn("createEvent()<-{},{}, cannot create event, engine not in state READY", key.getId(), state);
return null;
}
public boolean handleEvent(final EnEvent incomingEvent) {
boolean ret = false;
if (incomingEvent == null) {
- LOGGER.warn("handleEvent()<-" + key.getId() + "," + state + ", cannot run engine, incoming event is null");
+ LOGGER.warn("handleEvent()<-{},{}, cannot run engine, incoming event is null", key.getId(), state);
return ret;
}
synchronized (state) {
if (state != AxEngineState.READY) {
- LOGGER.warn("handleEvent()<-" + key.getId() + "," + state
- + ", cannot run engine, engine not in state READY");
+ LOGGER.warn("handleEvent()<-{},{}, cannot run engine, engine not in state READY", key.getId(), state);
return ret;
}
state = AxEngineState.EXECUTING;
}
- LOGGER.debug("execute(): triggered by event " + incomingEvent.toString());
+ String message = "execute(): triggered by event " + incomingEvent.toString();
+ LOGGER.debug(message);
// By default we return a null event on errors
EnEvent outgoingEvent = null;
engineStats.executionExit();
ret = true;
} catch (final StateMachineException e) {
- LOGGER.warn("handleEvent()<-" + key.getId() + "," + state + ", engine execution error: ", e);
+ LOGGER.warn("handleEvent()<-{},{}, engine execution error: ", key.getId(), state, e);
// Create an exception return event
outgoingEvent = createExceptionEvent(incomingEvent, e);
try {
synchronized (eventListeners) {
if (eventListeners.isEmpty()) {
- LOGGER.debug("handleEvent()<-" + key.getId() + "," + state
- + ", There is no listener registered to recieve outgoing event: " + outgoingEvent);
+ LOGGER.debug("handleEvent()<-{},{}, There is no listener registered to recieve outgoing event: {}",
+ key.getId(), state, outgoingEvent);
}
for (final EnEventListener axEventListener : eventListeners.values()) {
axEventListener.onEnEvent(outgoingEvent);
*/
@Override
public Map<AxArtifactKey, Map<String, Object>> getEngineContext() {
- final Map<AxArtifactKey, Map<String, Object>> currentContext =
- new LinkedHashMap<AxArtifactKey, Map<String, Object>>();
+ final Map<AxArtifactKey, Map<String, Object>> currentContext = new LinkedHashMap<>();
for (final Entry<AxArtifactKey, ContextAlbum> contextAlbumEntry : internalContext.getContextAlbums()
- .entrySet()) {
+ .entrySet()) {
currentContext.put(contextAlbumEntry.getKey(), contextAlbumEntry.getValue());
}
try {
smExecutor.prepare();
} catch (final StateMachineException e) {
- final String stateMachineID = smExecutor.getContext().getKey().getId();
- LOGGER.warn("start()<-" + key.getId() + ", start failed, state machine \"" + stateMachineID + "\"", e);
+ final String stateMachineId = smExecutor.getContext().getKey().getId();
+ String message = "start()<-" + key.getId() + ", start failed, state machine \"" + stateMachineId + "\"";
+ LOGGER.warn(message, e);
throw new StateMachineException(
- "start()<-" + key.getId() + ", start failed, state machine \"" + stateMachineID + "\"", e);
+ message, e);
}
}
// Run the state machine
try {
LOGGER.debug("execute(): state machine \"{}\" execution starting . . .", stateMachineExecutor);
- final EnEvent outputObject = stateMachineExecutor.execute(event.getExecutionID(), event);
+ final EnEvent outputObject = stateMachineExecutor.execute(event.getExecutionId(), event);
LOGGER.debug("execute()<-: state machine \"{}\" execution completed", stateMachineExecutor);
return outputObject;
try {
smExecutor.cleanUp();
} catch (final StateMachineException e) {
- final String smID = smExecutor.getContext().getKey().getId();
- LOGGER.warn("stop()<-clean up failed, state machine \"" + smID + "\" cleanup failed", e);
+ final String smId = smExecutor.getContext().getKey().getId();
+ LOGGER.warn("stop()<-clean up failed, state machine \"" + smId + "\" cleanup failed", e);
}
}
LOGGER.exit("stop()<-");
// Logger for this class
private static final XLogger LOGGER = XLoggerFactory.getXLogger(EnEvent.class);
+ // Repeasted string constants
+ private static final String NULL_KEYS_ILLEGAL = "null keys are illegal on method parameter \"key\"";
+
// The definition of this event in the Apex model
private final AxEvent axEvent;
// An identifier for the current event execution. The default value here will always be a random
// number, and should
// be reset
- private long executionID = rand.nextLong();
+ private long executionId = rand.nextLong();
// A string holding a message that indicates why processing of this event threw an exception
private String exceptionMessage;
*
* @return the event key
*/
- public String getID() {
+ public String getId() {
return axEvent.getKey().getId();
}
*
* @return the currently set value for the ExecutionID for this event.
*/
- public long getExecutionID() {
- return executionID;
+ public long getExecutionId() {
+ return executionId;
}
/**
* particular input event. The default initialised value for the ExecutionID is always unique in
* a single JVM.
*
- * @param executionID the new value for the ExecutionID for this event.
+ * @param executionId the new value for the ExecutionID for this event.
*/
- public void setExecutionID(final long executionID) {
- this.executionID = executionID;
+ public void setExecutionId(final long executionId) {
+ this.executionId = executionId;
}
/**
// Check if this key is a parameter on our event
final AxField eventParameter = axEvent.getParameterMap().get(key);
if (eventParameter == null) {
- LOGGER.warn("parameter with key " + key + " not defined on this event");
- throw new EnException("parameter with key " + key + " not defined on this event");
+ String message = "parameter with key " + key + " not defined on this event";
+ LOGGER.warn(message);
+ throw new EnException(message);
}
// Get the item
@Override
public Object put(final String key, final Object incomingValue) {
if (key == null) {
- LOGGER.warn("null keys are illegal on method parameter \"key\"");
- throw new EnException("null keys are illegal on method parameter \"key\"");
+ String message = NULL_KEYS_ILLEGAL;
+ LOGGER.warn(message);
+ throw new EnException(message);
}
// Check if this key is a parameter on our event
final AxField eventParameter = axEvent.getParameterMap().get(key);
if (eventParameter == null) {
- LOGGER.warn("parameter with key \"" + key + "\" not defined on event \"" + getName() + "\"");
- throw new EnException("parameter with key \"" + key + "\" not defined on event \"" + getName() + "\"");
+ String message = "parameter with key \"" + key + "\" not defined on event \"" + getName() + "\"";
+ LOGGER.warn(message);
+ throw new EnException(message);
}
// We allow null values
@Override
public Object remove(final Object key) {
if (key == null) {
- LOGGER.warn("null keys are illegal on method parameter \"key\"");
- throw new EnException("null keys are illegal on method parameter \"key\"");
+ LOGGER.warn(NULL_KEYS_ILLEGAL);
+ throw new EnException(NULL_KEYS_ILLEGAL);
}
// Check if this key is a parameter on our event
final AxField eventParameter = axEvent.getParameterMap().get(key);
if (eventParameter == null) {
- LOGGER.warn("parameter with key " + key + " not defined on this event");
- throw new EnException("parameter with key " + key + " not defined on this event");
+ String message = "parameter with key " + key + " not defined on this event";
+ LOGGER.warn(message);
+ throw new EnException(message);
}
final Object removedValue = super.remove(key);
* @author Sven van der Meer (sven.van.der.meer@ericsson.com)
* @author Liam Fallon (liam.fallon@ericsson.com)
*
- * @param <IN> type of the incoming entity
- * @param <OUT> type of the outgoing entity
- * @param <SUBJECT> type that is the subject of execution
- * @param <CONTEXT> context holding the context of execution
+ * @param <I> type of the incoming entity
+ * @param <O> type of the outgoing entity
+ * @param <S> type that is the subject of execution
+ * @param <C> context holding the context of execution
*/
-public interface Executor<IN, OUT, SUBJECT, CONTEXT> {
+public interface Executor<I, O, S, C> {
/**
* Save the subject and context of the executor.
*
* @param executorSubject the executor subject, the subject of execution
* @param executorContext the executor context, the context in which execution takes place
*/
- void setContext(Executor<?, ?, ?, ?> parent, SUBJECT executorSubject, CONTEXT executorContext);
+ void setContext(Executor<?, ?, ?, ?> parent, S executorSubject, C executorContext);
/**
* Prepares the processing.
/**
* Executes the executor, running through its context in its natural order.
*
- * @param executionID the execution ID of the current APEX execution policy thread
+ * @param executionId the execution ID of the current APEX execution policy thread
* @param incomingEntity the incoming entity that triggers execution
* @return The outgoing entity that is the result of execution
* @throws StateMachineException on an execution error
* @throws ContextException on context errors
*/
- OUT execute(long executionID, IN incomingEntity) throws StateMachineException, ContextException;
+ O execute(long executionId, I incomingEntity) throws StateMachineException, ContextException;
/**
* Carry out the preparatory work for execution.
*
- * @param executionID the execution ID of the current APEX execution policy thread
+ * @param executionId the execution ID of the current APEX execution policy thread
* @param incomingEntity the incoming entity that triggers execution
* @throws StateMachineException on an execution error
* @throws ContextException on context errors
*/
- void executePre(long executionID, IN incomingEntity) throws StateMachineException, ContextException;
+ void executePre(long executionId, I incomingEntity) throws StateMachineException, ContextException;
/**
* Carry out the post work for execution, the returning entity should be set by the child
*
* @return The subject for the executor
*/
- SUBJECT getSubject();
+ S getSubject();
/**
* Get the context of the executor.
*
* @return The context for the executor
*/
- CONTEXT getContext();
+ C getContext();
/**
* Get the incoming object of the executor.
*
* @return The incoming object for the executor
*/
- IN getIncoming();
+ I getIncoming();
/**
* Get the outgoing object of the executor.
*
* @return The outgoing object for the executor
*/
- OUT getOutgoing();
+ O getOutgoing();
/**
* Save the next executor for this executor.
*
* @param nextExecutor the next executor
*/
- void setNext(Executor<IN, OUT, SUBJECT, CONTEXT> nextExecutor);
+ void setNext(Executor<I, O, S, C> nextExecutor);
/**
* Get the next executor to be run after this executor completes its execution.
*
* @return The next executor
*/
- Executor<IN, OUT, SUBJECT, CONTEXT> getNext();
+ Executor<I, O, S, C> getNext();
/**
* Set parameters for this executor, overloaded by executors that use parameters.
* java.lang.Object)
*/
@Override
- public StateOutput execute(final long executionID, final EnEvent incomingEvent)
+ public StateOutput execute(final long executionId, final EnEvent incomingEvent)
throws StateMachineException, ContextException {
this.lastIncomingEvent = incomingEvent;
// Check that the incoming event matches the trigger for this state
if (!incomingEvent.getAxEvent().getKey().equals(axState.getTrigger())) {
- throw new StateMachineException("incoming event \"" + incomingEvent.getID() + "\" does not match trigger \""
+ throw new StateMachineException("incoming event \"" + incomingEvent.getId() + "\" does not match trigger \""
+ axState.getTrigger().getId() + "\" of state \"" + axState.getId() + "\"");
}
// There may be no task selection logic, in which case just return the default task
if (taskSelectExecutor != null) {
// Fire the task selector to find the task to run
- taskKey = taskSelectExecutor.execute(executionID, incomingEvent);
+ taskKey = taskSelectExecutor.execute(executionId, incomingEvent);
}
// If there's no task selection logic or the TSL returned no task, just use the default
final TreeMap<String, Object> incomingValues = new TreeMap<>();
incomingValues.putAll(incomingEvent);
final Map<String, Object> taskExecutionResultMap =
- taskExecutorMap.get(taskKey).execute(executionID, incomingValues);
+ taskExecutorMap.get(taskKey).execute(executionId, incomingValues);
final AxTask task = taskExecutorMap.get(taskKey).getSubject();
// Check if this task has direct output
// Execute the state finalizer logic to select a state output and to adjust the
// taskExecutionResultMap
stateOutputName =
- finalizerLogicExecutor.execute(incomingEvent.getExecutionID(), taskExecutionResultMap);
+ finalizerLogicExecutor.execute(incomingEvent.getExecutionId(), taskExecutionResultMap);
}
// Now look up the the actual state output
stateOutput.copyUnsetFields(incomingEvent);
// Set the ExecutionID for the outgoing event to the value in the incoming event.
- if (stateOutput != null && stateOutput.getOutputEvent() != null) {
- stateOutput.getOutputEvent().setExecutionID(incomingEvent.getExecutionID());
+ if (stateOutput.getOutputEvent() != null) {
+ stateOutput.getOutputEvent().setExecutionId(incomingEvent.getExecutionId());
}
// That's it, the state execution is complete
* java.lang.Object)
*/
@Override
- public final void executePre(final long executionID, final EnEvent incomingEntity) throws StateMachineException {
+ public final void executePre(final long executionId, final EnEvent incomingEntity) throws StateMachineException {
throw new StateMachineException("execution pre work not implemented on class");
}
* engine. ExecutorParameters)
*/
@Override
- public void setParameters(final ExecutorParameters parameters) {}
+ public void setParameters(final ExecutorParameters parameters) {
+ // Not implemented in this class
+ }
}
import org.slf4j.ext.XLoggerFactory;
/**
- * This abstract class executes state finalizer logic in a state of an Apex policy and is
- * specialized by classes that implement execution of state finalizer logic.
+ * This abstract class executes state finalizer logic in a state of an Apex policy and is specialized by classes that
+ * implement execution of state finalizer logic.
*
* @author Sven van der Meer (sven.van.der.meer@ericsson.com)
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
public abstract class StateFinalizerExecutor
- implements Executor<Map<String, Object>, String, AxStateFinalizerLogic, ApexInternalContext> {
+ implements Executor<Map<String, Object>, String, AxStateFinalizerLogic, ApexInternalContext> {
// Logger for this class
private static final XLogger LOGGER = XLoggerFactory.getXLogger(StateFinalizerExecutor.class);
+ // Repeated string constants
+ private static final String EXECUTE_POST_SFL = "execute-post: state finalizer logic \"";
+
// Hold the state and context definitions
private Executor<?, ?, ?, ?> parent = null;
private AxState axState = null;
*/
@Override
public void setContext(final Executor<?, ?, ?, ?> incomingParent,
- final AxStateFinalizerLogic incomingFinalizerLogic, final ApexInternalContext incomingInternalContext) {
+ final AxStateFinalizerLogic incomingFinalizerLogic,
+ final ApexInternalContext incomingInternalContext) {
this.parent = incomingParent;
axState = (AxState) parent.getSubject();
this.finalizerLogic = incomingFinalizerLogic;
@Override
public void prepare() throws StateMachineException {
LOGGER.debug("prepare:" + finalizerLogic.getId() + "," + finalizerLogic.getLogicFlavour() + ","
- + finalizerLogic.getLogic());
+ + finalizerLogic.getLogic());
argumentOfClassNotNull(finalizerLogic.getLogic(), StateMachineException.class, "task logic cannot be null.");
}
/*
* (non-Javadoc)
*
- * @see org.onap.policy.apex.core.engine.executor.Executor#execute(java.lang.long,
- * java.lang.Object)
+ * @see org.onap.policy.apex.core.engine.executor.Executor#execute(java.lang.long, java.lang.Object)
*/
@Override
- public String execute(final long executionID, final Map<String, Object> newIncomingFields)
- throws StateMachineException, ContextException {
- throw new StateMachineException(
- "execute() not implemented on abstract StateFinalizerExecutionContext class, only on its subclasses");
+ public String execute(final long executionId, final Map<String, Object> newIncomingFields)
+ throws StateMachineException, ContextException {
+ throw new StateMachineException("execute() not implemented on abstract StateFinalizerExecutionContext class, "
+ + "only on its subclasses");
}
/*
* (non-Javadoc)
*
- * @see org.onap.policy.apex.core.engine.executor.Executor#executePre(java.lang.long,
- * java.lang.Object)
+ * @see org.onap.policy.apex.core.engine.executor.Executor#executePre(java.lang.long, java.lang.Object)
*/
@Override
- public final void executePre(final long executionID, final Map<String, Object> newIncomingFields)
- throws StateMachineException, ContextException {
+ public final void executePre(final long executionId, final Map<String, Object> newIncomingFields)
+ throws StateMachineException, ContextException {
LOGGER.debug("execute-pre:" + finalizerLogic.getLogicFlavour() + "," + getSubject().getId() + ","
- + finalizerLogic.getLogic());
+ + finalizerLogic.getLogic());
// Record the incoming fields
this.incomingFields = newIncomingFields;
// Get state finalizer context object
- executionContext = new StateFinalizerExecutionContext(this, executionID, axState, getIncoming(),
- axState.getStateOutputs().keySet(), getContext());
+ executionContext = new StateFinalizerExecutionContext(this, executionId, axState, getIncoming(),
+ axState.getStateOutputs().keySet(), getContext());
}
/*
public final void executePost(final boolean returnValue) throws StateMachineException, ContextException {
if (!returnValue) {
String errorMessage = "execute-post: state finalizer logic execution failure on state \"" + axState.getId()
- + "\" on finalizer logic " + finalizerLogic.getId();
+ + "\" on finalizer logic " + finalizerLogic.getId();
if (executionContext.getMessage() != null) {
errorMessage += ", user message: " + executionContext.getMessage();
}
// Check a state output has been selected
if (getOutgoing() == null) {
- LOGGER.warn("execute-post: state finalizer logic \"" + finalizerLogic.getId()
- + "\" did not select an output state");
- throw new StateMachineException("execute-post: state finalizer logic \"" + finalizerLogic.getId()
- + "\" did not select an output state");
+ String message = EXECUTE_POST_SFL + finalizerLogic.getId() + "\" did not select an output state";
+ LOGGER.warn(message);
+ throw new StateMachineException(message);
}
if (!axState.getStateOutputs().keySet().contains(getOutgoing())) {
- LOGGER.warn(
- "execute-post: state finalizer logic \"" + finalizerLogic.getId() + "\" selected output state \""
- + getOutgoing() + "\" that does not exsist on state \"" + axState.getId() + "\"");
- throw new StateMachineException(
- "execute-post: state finalizer logic \"" + finalizerLogic.getId() + "\" selected output state \""
+ LOGGER.warn(EXECUTE_POST_SFL + finalizerLogic.getId() + "\" selected output state \"" + getOutgoing()
+ + "\" that does not exsist on state \"" + axState.getId() + "\"");
+ throw new StateMachineException(EXECUTE_POST_SFL + finalizerLogic.getId() + "\" selected output state \""
+ getOutgoing() + "\" that does not exsist on state \"" + axState.getId() + "\"");
}
- LOGGER.debug("execute-post:" + finalizerLogic.getId() + ", returning state output \"" + getOutgoing()
- + " and fields " + incomingFields);
+ LOGGER.debug("execute-post:{}, returning state output \"{}\" and fields {}", finalizerLogic.getId(),
+ getOutgoing(), incomingFields);
}
/*
/*
* (non-Javadoc)
*
- * @see
- * org.onap.policy.apex.core.engine.executor.Executor#setNext(org.onap.policy.apex.core.engine.
+ * @see org.onap.policy.apex.core.engine.executor.Executor#setNext(org.onap.policy.apex.core.engine.
* executor.Executor)
*/
@Override
- public void setNext(final Executor<Map<String, Object>, String, AxStateFinalizerLogic, ApexInternalContext>
- incomingNextExecutor) {
- this.nextExecutor = incomingNextExecutor;
+ public void setNext(
+ final Executor<Map<String, Object>, String, AxStateFinalizerLogic, ApexInternalContext> inNextEx) {
+ this.nextExecutor = inNextEx;
}
/*
/*
* (non-Javadoc)
*
- * @see
- * org.onap.policy.apex.core.engine.executor.Executor#setParameters(org.onap.policy.apex.core.
- * engine. ExecutorParameters)
+ * @see org.onap.policy.apex.core.engine.executor.Executor#setParameters(org.onap.policy.apex.core. engine.
+ * ExecutorParameters)
*/
@Override
- public void setParameters(final ExecutorParameters parameters) {}
+ public void setParameters(final ExecutorParameters parameters) {
+ }
}
* java.lang.Object)
*/
@Override
- public EnEvent execute(final long executionID, final EnEvent incomingEvent)
+ public EnEvent execute(final long executionId, final EnEvent incomingEvent)
throws StateMachineException, ContextException {
// Check if there are any states on the state machine
if (stateExecutorMap.size() == 0) {
incomingEvent.getKey(), firstExecutor.getSubject().getKey()), incomingEvent);
while (true) {
// Execute the state
- stateOutput = stateExecutor.execute(executionID, stateOutput.getOutputEvent());
+ stateOutput = stateExecutor.execute(executionId, stateOutput.getOutputEvent());
if (stateOutput == null) {
throw new StateMachineException("state execution failed, invalid state output returned");
}
* java.lang.Object)
*/
@Override
- public final void executePre(final long executionID, final EnEvent incomingEntity) throws StateMachineException {
+ public final void executePre(final long executionId, final EnEvent incomingEntity) throws StateMachineException {
throw new StateMachineException("execution pre work not implemented on class");
}
* engine. ExecutorParameters)
*/
@Override
- public void setParameters(final ExecutorParameters parameters) {}
+ public void setParameters(final ExecutorParameters parameters) {
+ // Not implemented in this class
+ }
}
import org.onap.policy.apex.model.utilities.Assertions;
/**
- * This class is the output of a state, and is used by the engine to decide what the next state for
- * execution is.
+ * This class is the output of a state, and is used by the engine to decide what the next state for execution is.
*
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
* @throws StateMachineException on errors populating the event fields
*/
public void setEventFields(final Map<String, AxField> incomingFieldDefinitionMap,
- final Map<String, Object> eventFieldMap) throws StateMachineException {
+ final Map<String, Object> eventFieldMap) throws StateMachineException {
Assertions.argumentNotNull(incomingFieldDefinitionMap, "incomingFieldDefinitionMap may not be null");
Assertions.argumentNotNull(eventFieldMap, "eventFieldMap may not be null");
if (!incomingFieldDefinitionMap.keySet().equals(eventFieldMap.keySet())) {
throw new StateMachineException(
- "field definitions and values do not match for event " + outputEventDef.getId() + '\n'
- + incomingFieldDefinitionMap.keySet() + '\n' + eventFieldMap.keySet());
+ "field definitions and values do not match for event " + outputEventDef.getId() + '\n'
+ + incomingFieldDefinitionMap.keySet() + '\n' + eventFieldMap.keySet());
}
for (final Entry<String, Object> incomingFieldEntry : eventFieldMap.entrySet()) {
final String fieldName = incomingFieldEntry.getKey();
// Check if this field is a field in the event
if (!outputEventDef.getFields().contains(fieldDef)) {
- throw new StateMachineException(
- "field \"" + fieldName + "\" does not exist on event \"" + outputEventDef.getId() + "\"");
+ throw new StateMachineException("field \"" + fieldName + "\" does not exist on event \""
+ + outputEventDef.getId() + "\"");
}
// Set the value in the output event
}
/**
- * This method copies any fields that exist on the input event that also exist on the output
- * event if they are not set on the output event.
+ * This method copies any fields that exist on the input event that also exist on the output event if they are not
+ * set on the output event.
*
* @param incomingEvent The incoming event to copy from
*/
final String fieldName = incomingField.getKey();
// Check if the field exists on the outgoing event
- if (!outputEventDef.getParameterMap().containsKey(fieldName)) {
- continue;
- }
+ if ((!outputEventDef.getParameterMap().containsKey(fieldName))
- // Check if the field is set on the outgoing event
- if (outputEvent.containsKey(fieldName)) {
- continue;
- }
+ // Check if the field is set on the outgoing event
+ || (outputEvent.containsKey(fieldName))
- // Now, check the fields have the same type
- if (!incomingEvent.getAxEvent().getParameterMap().get(fieldName)
- .equals(outputEvent.getAxEvent().getParameterMap().get(fieldName))) {
+ // Now, check the fields have the same type
+ || (!incomingEvent.getAxEvent().getParameterMap().get(fieldName)
+ .equals(outputEvent.getAxEvent().getParameterMap().get(fieldName)))) {
continue;
}
public void prepare() throws StateMachineException {
LOGGER.debug("prepare:" + axTask.getKey().getId() + "," + axTask.getTaskLogic().getLogicFlavour() + ","
+ axTask.getTaskLogic().getLogic());
- argumentOfClassNotNull(axTask.getTaskLogic().getLogic(), StateMachineException.class, "task logic cannot be null.");
+ argumentOfClassNotNull(axTask.getTaskLogic().getLogic(), StateMachineException.class,
+ "task logic cannot be null.");
}
/*
* java.lang.Object)
*/
@Override
- public Map<String, Object> execute(final long executionID, final Map<String, Object> newIncomingFields)
+ public Map<String, Object> execute(final long executionId, final Map<String, Object> newIncomingFields)
throws StateMachineException, ContextException {
throw new StateMachineException(
"execute() not implemented on abstract TaskExecutor class, only on its subclasses");
* java.lang.Object)
*/
@Override
- public final void executePre(final long executionID, final Map<String, Object> newIncomingFields)
+ public final void executePre(final long executionId, final Map<String, Object> newIncomingFields)
throws StateMachineException, ContextException {
LOGGER.debug("execute-pre:" + getSubject().getTaskLogic().getLogicFlavour() + ","
+ getSubject().getKey().getId() + "," + getSubject().getTaskLogic().getLogic());
// Get task context object
executionContext =
- new TaskExecutionContext(this, executionID, getSubject(), getIncoming(), getOutgoing(), getContext());
+ new TaskExecutionContext(this, executionId, getSubject(), getIncoming(), getOutgoing(), getContext());
}
/*
+ "\" are unwanted for task \"" + axTask.getKey().getId() + "\"");
}
- LOGGER.debug("execute-post:" + axTask.getKey().getId() + ", returning fields " + outgoingFields.toString());
+ String message = "execute-post:" + axTask.getKey().getId() + ", returning fields " + outgoingFields.toString();
+ LOGGER.debug(message);
}
/*
* java.lang.Object)
*/
@Override
- public AxArtifactKey execute(final long executionID, final EnEvent newIncomingEvent)
+ public AxArtifactKey execute(final long executionId, final EnEvent newIncomingEvent)
throws StateMachineException, ContextException {
throw new StateMachineException("execute() not implemented on class");
}
* java.lang.Object)
*/
@Override
- public final void executePre(final long executionID, final EnEvent newIncomingEvent) throws StateMachineException {
+ public final void executePre(final long executionId, final EnEvent newIncomingEvent) throws StateMachineException {
LOGGER.debug("execute-pre:" + axState.getKey().getId() + "," + axState.getTaskSelectionLogic().getLogicFlavour()
+ "," + axState.getTaskSelectionLogic().getLogic());
outgoingTaskKey = new AxArtifactKey();
// Get task selection context object
- executionContext = new TaskSelectionExecutionContext(this, executionID, getSubject(), getIncoming(),
+ executionContext = new TaskSelectionExecutionContext(this, executionId, getSubject(), getIncoming(),
getOutgoing(), getContext());
}
public final AxStateFacade subject;
/** the execution ID for the current APEX policy execution instance. */
- public final Long executionID;
+ public final Long executionId;
/**
* The list of state outputs for this state finalizer. The purpose of a state finalizer is to
* Instantiates a new state finalizer execution context.
*
* @param stateFinalizerExecutor the state finalizer executor that requires context
- * @param executionID the execution ID for the current APEX policy execution instance
+ * @param executionId the execution ID for the current APEX policy execution instance
* @param axState the state definition that is the subject of execution
* @param fields the fields to be manipulated by the state finalizer
* @param stateOutputNames the state output names, one of which will be selected by the state
* @param internalContext the execution context of the Apex engine in which the task is being
* executed
*/
- public StateFinalizerExecutionContext(final StateFinalizerExecutor stateFinalizerExecutor, final long executionID,
+ public StateFinalizerExecutionContext(final StateFinalizerExecutor stateFinalizerExecutor, final long executionId,
final AxState axState, final Map<String, Object> fields, final Set<String> stateOutputNames,
final ApexInternalContext internalContext) {
subject = new AxStateFacade(axState);
// Execution ID is the current policy execution instance
- this.executionID = executionID;
+ this.executionId = executionId;
this.fields = fields;
this.stateOutputNames = stateOutputNames;
* @throws ContextRuntimeException if the context album does not exist on the state for this
* executor
*/
- public ContextAlbum getContextAlbum(final String contextAlbumName) throws ContextRuntimeException {
+ public ContextAlbum getContextAlbum(final String contextAlbumName) {
// Find the context album
final ContextAlbum foundContextAlbum = context.get(contextAlbumName);
// CHECKSTYLE:OFF: checkstyle:VisibilityModifier Logic has access to these field
/** A constant <code>boolean true</code> value available for reuse e.g., for the return value */
- public final Boolean TRUE = true;
+ public final Boolean isTrue = true;
/**
* A constant <code>boolean false</code> value available for reuse e.g., for the return value
*/
- public final Boolean FALSE = false;
+ public final Boolean isFalse = false;
/** A facade to the full task definition for the task logic being executed. */
public final AxTaskFacade subject;
/** the execution ID for the current APEX policy execution instance. */
- public final Long executionID;
+ public final Long executionId;
/**
* The incoming fields from the trigger event for the task. The task logic can access these
* Instantiates a new task execution context.
*
* @param taskExecutor the task executor that requires context
- * @param executionID the execution ID for the current APEX policy execution instance
+ * @param executionId the execution ID for the current APEX policy execution instance
* @param axTask the task definition that is the subject of execution
* @param inFields the in fields
* @param outFields the out fields
* @param internalContext the execution context of the Apex engine in which the task is being
* executed
*/
- public TaskExecutionContext(final TaskExecutor taskExecutor, final long executionID, final AxTask axTask,
+ public TaskExecutionContext(final TaskExecutor taskExecutor, final long executionId, final AxTask axTask,
final Map<String, Object> inFields, final Map<String, Object> outFields,
final ApexInternalContext internalContext) {
// The subject is the task definition
subject = new AxTaskFacade(axTask);
// Execution ID is the current policy execution instance
- this.executionID = executionID;
+ this.executionId = executionId;
// The input and output fields
this.inFields = Collections.unmodifiableMap(inFields);
* @throws ContextRuntimeException if the context album does not exist on the task for this
* executor
*/
- public ContextAlbum getContextAlbum(final String contextAlbumName) throws ContextRuntimeException {
+ public ContextAlbum getContextAlbum(final String contextAlbumName) {
// Find the context album
final ContextAlbum foundContextAlbum = context.get(contextAlbumName);
// CHECKSTYLE:OFF: checkstyle:VisibilityModifier Logic has access to these field
/** A constant <code>boolean true</code> value available for reuse e.g., for the return value */
- public final Boolean TRUE = true;
+ public final Boolean isTrue = true;
/**
* A constant <code>boolean false</code> value available for reuse e.g., for the return value
*/
- public final Boolean FALSE = false;
+ public final Boolean isFalse = false;
/** A facade to the full state definition for the task selection logic being executed. */
public final AxStateFacade subject;
/** the execution ID for the current APEX policy execution instance. */
- public final Long executionID;
+ public final Long executionId;
/**
* The incoming fields from the trigger event for the state. The task selection logic can access
* Instantiates a new task selection execution context.
*
* @param taskSelectExecutor the task selection executor that requires context
- * @param executionID the execution identifier
+ * @param executionId the execution identifier
* @param axState the state definition that is the subject of execution
* @param incomingEvent the incoming event for the state
* @param outgoingKey the outgoing key for the task to execute in this state
* @param internalContext the execution context of the Apex engine in which the task is being
* executed
*/
- public TaskSelectionExecutionContext(final TaskSelectExecutor taskSelectExecutor, final long executionID,
+ public TaskSelectionExecutionContext(final TaskSelectExecutor taskSelectExecutor, final long executionId,
final AxState axState, final EnEvent incomingEvent, final AxArtifactKey outgoingKey,
final ApexInternalContext internalContext) {
// The subject is the state definition
subject = new AxStateFacade(axState);
// Execution ID is the current policy execution instance
- this.executionID = executionID;
+ this.executionId = executionId;
// The events
inFields = incomingEvent;
* @throws ContextRuntimeException if the context album does not exist on the state for this
* executor
*/
- public ContextAlbum getContextAlbum(final String contextAlbumName) throws ContextRuntimeException {
+ public ContextAlbum getContextAlbum(final String contextAlbumName) {
// Find the context album
final ContextAlbum foundContextAlbum = context.get(contextAlbumName);
* @param userArtifactStack the keys of the artifacts using the event at the moment
*/
public void monitorGet(final AxField eventParameter, final Object value, final AxConcept[] userArtifactStack) {
- LOGGER.trace(monitor("GET", userArtifactStack, eventParameter, value));
+ String monitorGetString = monitor("GET", userArtifactStack, eventParameter, value);
+ LOGGER.trace(monitorGetString);
}
/**
* @param userArtifactStack the keys of the artifacts using the event at the moment
*/
public void monitorSet(final AxField eventParameter, final Object value, final AxConcept[] userArtifactStack) {
- LOGGER.trace(monitor("SET", userArtifactStack, eventParameter, value));
+ String monitorSetString = monitor("SET", userArtifactStack, eventParameter, value);
+ LOGGER.trace(monitorSetString);
}
/**
*/
public void monitorRemove(final AxField eventParameter, final Object removedValue,
final AxConcept[] userArtifactStack) {
- LOGGER.trace(monitor("REMOVE", userArtifactStack, eventParameter, removedValue));
+ String monitorRemoveString = monitor("REMOVE", userArtifactStack, eventParameter, removedValue);
+ LOGGER.trace(monitorRemoveString);
}
/**
/**
* Instantiates a new Java handling exception.
*
- * @param e the exception to wrap
+ * @param exception the exception to wrap
*/
- public JavaHandlingException(final Exception e) {
- super(e);
+ public JavaHandlingException(final Exception exception) {
+ super(exception);
}
/**
* Instantiates a new Java handling exception.
*
* @param message the message
- * @param e the exception to wrap
+ * @param exception the exception to wrap
*/
- public JavaHandlingException(final String message, final Exception e) {
- super(message, e);
+ public JavaHandlingException(final String message, final Exception exception) {
+ super(message, exception);
}
}
import java.io.File;
import java.io.FileInputStream;
+import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.net.URL;
// Get a reference to the logger
private static final XLogger LOGGER = XLoggerFactory.getXLogger(ClassUtils.class);
+ // Repeated string constants
+ private static final String CLASS_PATTERN = "\\.class$";
+
// The boot directory in Java for predefined JARs
private static final String SUN_BOOT_LIBRARY_PATH = "sun.boot.library.path";
try {
final Class<?> nullclassloader = Class.forName("sun.misc.Launcher");
if (nullclassloader != null) {
- // There a long way and a short way, Short way: causes a warning that cannot be suppressed
- // URL[] moreurls = sun.misc.Launcher.getBootstrapClassPath().getURLs();
- // long way:
- Method m = nullclassloader.getMethod("getBootstrapClassPath");
- if (m != null) {
- final Object cp = m.invoke(null, (Object[]) null);
+ Method mmethod = nullclassloader.getMethod("getBootstrapClassPath");
+ if (mmethod != null) {
+ final Object cp = mmethod.invoke(null, (Object[]) null);
if (cp != null) {
- m = cp.getClass().getMethod("getURLs");
- if (m != null) {
- final URL[] moreurls = (URL[]) (m.invoke(cp, (Object[]) null));
+ mmethod = cp.getClass().getMethod("getURLs");
+ if (mmethod != null) {
+ final URL[] moreurls = (URL[]) (mmethod.invoke(cp, (Object[]) null));
if (moreurls != null && moreurls.length > 0) {
if (urls.length == 0) {
urls = moreurls;
// JARs are processed as well
else if (url.getFile().endsWith(".jar")) {
classNameSet.addAll(processJar(urlFile));
- } else {
- // It's a resource or some other non-executable thing
- continue;
}
+ // It's a resource or some other non-executable thing
}
} catch (final Exception e) {
LOGGER.warn("could not get the names of Java classes", e);
} else if (child.getName().endsWith(".class") && !child.getName().contains("$")) {
// Process the ".class" file
classNameSet.add(
- child.getAbsolutePath().replace(rootDir, "").replaceFirst("\\.class$", "").replace('/', '.'));
- } else {
- continue;
+ child.getAbsolutePath().replace(rootDir, "").replaceFirst(CLASS_PATTERN, "").replace('/', '.'));
}
}
return classNameSet;
fileName = fileName.substring(classesPos + CLASSES_TOKEN.length());
}
- return fileName.replaceFirst("\\.class$", "").replace('/', '.');
+ return fileName.replaceFirst(CLASS_PATTERN, "").replace('/', '.');
}
/**
*
* @param jarFile the JAR file
* @return a set of class names
- * @throws Exception on errors processing JARs
+ * @throws IOException on errors processing JARs
*/
- public static Set<String> processJar(final File jarFile) throws Exception {
+ public static Set<String> processJar(final File jarFile) throws IOException {
// Pass the file as an input stream
return processJar(new FileInputStream(jarFile.getAbsolutePath()));
}
*
* @param jarInputStream the JAR input stream
* @return a set of class names
- * @throws Exception on errors processing JARs
+ * @throws IOException on errors processing JARs
*/
- public static Set<String> processJar(final InputStream jarInputStream) throws Exception {
+ public static Set<String> processJar(final InputStream jarInputStream) throws IOException {
// The return set
final TreeSet<String> classPathSet = new TreeSet<>();
// Iterate over each entry in the JAR
for (ZipEntry entry = zip.getNextEntry(); entry != null; entry = zip.getNextEntry()) {
if (!entry.isDirectory() && entry.getName().endsWith(".class") && !entry.getName().contains("$")) {
- classPathSet.add(entry.getName().replaceFirst("\\.class$", "").replace('/', '.'));
+ classPathSet.add(entry.getName().replaceFirst(CLASS_PATTERN, "").replace('/', '.'));
}
}
zip.close();
*/
public static void main(final String[] args) {
for (final String clz : getClassNames()) {
- System.out.println("Found class: " + clz);
+ LOGGER.info("Found class: {}", clz);
}
}
}
*/
public void compile() throws JavaHandlingException {
// Get the list of compilation units, there is only one here
- final List<? extends JavaFileObject> compilationUnits =
- Arrays.asList(new SingleClassCompilationUnit(className, sourceCode));
+ final List<? extends JavaFileObject> compilationUnits = Arrays
+ .asList(new SingleClassCompilationUnit(className, sourceCode));
// Allows us to get diagnostics from the compilation
final DiagnosticCollector<JavaFileObject> diagnosticListener = new DiagnosticCollector<>();
// Set up the target file manager and call the compiler
singleFileManager = new SingleFileManager(compiler, new SingleClassByteCodeFileObject(className));
- final JavaCompiler.CompilationTask task =
- compiler.getTask(null, singleFileManager, diagnosticListener, null, null, compilationUnits);
+ final JavaCompiler.CompilationTask task = compiler.getTask(null, singleFileManager, diagnosticListener, null,
+ null, compilationUnits);
// Check if the compilation worked
if (!task.call()) {
builder.append("\n");
}
- LOGGER.warn("error compiling Java code for class \"" + className + "\": " + builder.toString());
- throw new JavaHandlingException(
- "error compiling Java code for class \"" + className + "\": " + builder.toString());
+ String message = "error compiling Java code for class \"" + className + "\": " + builder.toString();
+ LOGGER.warn(message);
+ throw new JavaHandlingException(message);
}
}
* @throws ClassNotFoundException the byte code for the class is not found in the class loader
* @throws JavaHandlingException the java handling exception if the Java class source code is not compiled
*/
- public Object createObject()
- throws InstantiationException, IllegalAccessException, ClassNotFoundException, JavaHandlingException {
+ public Object createObject() throws InstantiationException, IllegalAccessException, ClassNotFoundException,
+ JavaHandlingException {
if (singleFileManager == null) {
- LOGGER.warn("error instantiating instance for class \"" + className + "\": code may not be compiled");
- throw new JavaHandlingException(
- "error instantiating instance for class \"" + className + "\": code may not be compiled");
+ String message = "error instantiating instance for class \"" + className + "\": code may not be compiled";
+ LOGGER.warn(message);
+ throw new JavaHandlingException(message);
}
return singleFileManager.getClassLoader(null).findClass(className).newInstance();
* basis for {@code JavaFileObject} implementations. Subclasses can override the implementation and specification of any
* method of this class as long as the general contract of {@code JavaFileObject} is obeyed.
*
- * This class holds the byte code for a single class in memory.
+ * <p>This class holds the byte code for a single class in memory.
*
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
* is an implementation of {@code JavaFileManager} that forwards the {@code JavaFileManager} methods to a given file
* manager.
*
- * This class instantiates and forwards those requests to a {@link StandardJavaFileManager} instance to act as a
+ * <p>This class instantiates and forwards those requests to a {@link StandardJavaFileManager} instance to act as a
* {@code JavaFileManager} for a Java single file, managing class loading for the class.
*
* @author Liam Fallon (liam.fallon@ericsson.com)
* implementation.
*
* @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
- * @param <MESSAGE> the generic type of message being handled by a message holder instance
+ * @param <M> the generic type of message being handled by a message holder instance
*/
-public class MessageHolder<MESSAGE> implements Serializable {
+public class MessageHolder<M> implements Serializable {
private static final int HASH_PRIME = 31;
private static final int FOUR_BYTES = 32;
private final InetAddress senderHostAddress;
// Sequence of message in the message holder
- private final List<MESSAGE> messages;
+ private final List<M> messages;
/**
* Constructor, create the message holder.
*
* @return the messages
*/
- public List<MESSAGE> getMessages() {
+ public List<M> getMessages() {
return messages;
}
*
* @param message the message to add
*/
- public void addMessage(final MESSAGE message) {
+ public void addMessage(final M message) {
if (!messages.contains(message)) {
messages.add(message);
} else {
} else if (!messages.equals(other.messages)) {
return false;
}
- if (creationTime != other.creationTime) {
- return false;
- }
- return true;
+ return creationTime == other.creationTime;
}
}
* implements this interface.
*
* @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
- * @param <MESSAGE> of message of any given type that is being listened for and handled
+ * @param <M> of message of any given type that is being listened for and handled
*/
-public interface MessageListener<MESSAGE> {
+public interface MessageListener<M> {
/**
* This method is called when a message block is received on a web socket and is to be forwarded to a listener.
*
* @param data the message data containing a message
*/
- void onMessage(MessageBlock<MESSAGE> data);
+ void onMessage(MessageBlock<M> data);
/**
* This method is called when a string message is received on a web socket and is to be forwarded to a listener.
* messaging.
*
* @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
- * @param <MESSAGE> the type of message being passed by an implementation of Apex messaging
+ * @param <M> the type of message being passed by an implementation of Apex messaging
*/
-public interface MessagingService<MESSAGE> {
+public interface MessagingService<M> {
/**
* Start the messaging connection.
*
* @param messageHolder The message holder holding the messages to be sent
*/
- void send(MessageHolder<MESSAGE> messageHolder);
+ void send(MessageHolder<M> messageHolder);
/**
* Send a string message on the connection.
*
* @param messageListener the message listener
*/
- void addMessageListener(MessageListener<MESSAGE> messageListener);
+ void addMessageListener(MessageListener<M> messageListener);
/**
* Removes the message listener.
*
* @param messageListener the message listener
*/
- void removeMessageListener(MessageListener<MESSAGE> messageListener);
+ void removeMessageListener(MessageListener<M> messageListener);
}
* A factory class to create a "server" or "client" type Messaging Service.
*
* @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
- * @param <MESSAGE> the generic type of message to be handled by this messaging service
+ * @param <M> the generic type of message to be handled by this messaging service
*/
-public class MessagingServiceFactory<MESSAGE> {
+public class MessagingServiceFactory<M> {
/**
* Create a web socket server instance and returns to the caller.
* @param address the address of the server machine
* @return the messaging service
*/
- public MessagingService<MESSAGE> createServer(final InetSocketAddress address) {
+ public MessagingService<M> createServer(final InetSocketAddress address) {
return new MessageServerImpl<>(address);
}
* @param uri the URI of the server to connect to
* @return an instance of {@link MessagingService}
*/
- public MessagingService<MESSAGE> createClient(final URI uri) {
+ public MessagingService<M> createClient(final URI uri) {
if (uri == null) {
throw new IllegalArgumentException("URI cannot be null");
}
package org.onap.policy.apex.core.infrastructure.messaging.impl.ws;
+import com.google.common.eventbus.Subscribe;
+
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import org.slf4j.ext.XLogger;
import org.slf4j.ext.XLoggerFactory;
-import com.google.common.eventbus.Subscribe;
-
/**
- * The Class RawMessageHandler handles raw messages being received on a Java web socket and forwards
- * the messages to the DataHandler instance that has subscribed to the RawMessageHandler instance.
+ * The Class RawMessageHandler handles raw messages being received on a Java web socket and forwards the messages to the
+ * DataHandler instance that has subscribed to the RawMessageHandler instance.
*
* @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
- * @param <MESSAGE> the generic type of message being received
+ * @param <M> the generic type of message being received
*/
-public class RawMessageHandler<MESSAGE> implements WebSocketMessageListener<MESSAGE>, Runnable {
+public class RawMessageHandler<M> implements WebSocketMessageListener<M>, Runnable {
// The logger for this class
private static final XLogger LOGGER = XLoggerFactory.getXLogger(RawMessageHandler.class);
+ // Repeated string constants
+ private static final String RAW_MESSAGE_LISTENING_INTERRUPTED = "raw message listening has been interrupted";
+
// The amount of time to sleep during shutdown for the thread of this message handler to stop
private static final int SHUTDOWN_WAIT_TIME = 10;
private static final long QUEUE_POLL_TIMEOUT = 50;
// A queue that temporarily holds message blocks
- private final BlockingQueue<MessageBlock<MESSAGE>> messageBlockQueue = new LinkedBlockingDeque<>();
+ private final BlockingQueue<MessageBlock<M>> messageBlockQueue = new LinkedBlockingDeque<>();
// A queue that temporarily holds message blocks
private final BlockingQueue<String> stringMessageQueue = new LinkedBlockingDeque<>();
// Client applications that have subscribed for messages
- private final MessageBlockHandler<MESSAGE> dataHandler = new MessageBlockHandler<MESSAGE>("data-processor");
+ private final MessageBlockHandler<M> dataHandler = new MessageBlockHandler<>("data-processor");
// The thread that the raw message handler is receiving messages on
private Thread thisThread = null;
// processing thread
try (final ByteArrayInputStream stream = new ByteArrayInputStream(dataByteBuffer.array());
- final ObjectInputStream ois = new ObjectInputStream(stream);) {
+ final ObjectInputStream ois = new ObjectInputStream(stream);) {
@SuppressWarnings("unchecked")
- final MessageHolder<MESSAGE> messageHolder = (MessageHolder<MESSAGE>) ois.readObject();
+ final MessageHolder<M> messageHolder = (MessageHolder<M>) ois.readObject();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("message {} recieved from the client {} ", messageHolder,
- messageHolder == null ? "Apex Engine " : messageHolder.getSenderHostAddress());
+ messageHolder == null ? "Apex Engine " : messageHolder.getSenderHostAddress());
}
if (messageHolder != null) {
- final List<MESSAGE> messages = messageHolder.getMessages();
+ final List<M> messages = messageHolder.getMessages();
if (messages != null) {
- messageBlockQueue.add(new MessageBlock<MESSAGE>(messages, incomingData.getConn()));
+ messageBlockQueue.add(new MessageBlock<M>(messages, incomingData.getConn()));
}
}
} catch (final IOException | ClassNotFoundException e) {
}
/**
- * This method is called when a string message is received on a web socket and is to be
- * forwarded to a listener.
+ * This method is called when a string message is received on a web socket and is to be forwarded to a listener.
*
* @param messageString the message string
*/
stringMessageQueue.add(messageString);
}
+ /**
+ * This method is called when a message is received on a web socket and is to be forwarded to a listener.
+ *
+ * @param data the message data containing a message
+ */
+ @Override
+ public void onMessage(final MessageBlock<M> data) {
+ throw new UnsupportedOperationException("this operation is not supported");
+ }
+
/**
* This thread monitors the message queue and processes messages as they appear on the queue.
*
while (thisThread.isAlive() && !thisThread.isInterrupted()) {
try {
// Read message block messages from the queue and pass it to the data handler
- MessageBlock<MESSAGE> messageBlock = null;
+ MessageBlock<M> messageBlock = null;
while ((messageBlock = messageBlockQueue.poll(1, TimeUnit.MILLISECONDS)) != null) {
dataHandler.post(messageBlock);
}
} catch (final InterruptedException e) {
// restore the interrupt status
Thread.currentThread().interrupt();
- LOGGER.debug("raw message listening has been interrupted");
+ LOGGER.debug(RAW_MESSAGE_LISTENING_INTERRUPTED);
break;
}
} catch (final InterruptedException e) {
// restore the interrupt status
Thread.currentThread().interrupt();
- LOGGER.debug("raw message listening has been interrupted");
+ LOGGER.debug(RAW_MESSAGE_LISTENING_INTERRUPTED);
break;
}
} catch (final InterruptedException e) {
// restore the interrupt status
Thread.currentThread().interrupt();
- LOGGER.debug("raw message listening has been interrupted");
+ LOGGER.debug(RAW_MESSAGE_LISTENING_INTERRUPTED);
break;
}
}
LOGGER.exit("shut down raw message listening");
}
- /**
- * This method is called when a message is received on a web socket and is to be forwarded to a
- * listener.
- *
- * @param data the message data containing a message
- */
- @Override
- public void onMessage(final MessageBlock<MESSAGE> data) {
- throw new UnsupportedOperationException("this operation is not supported");
- }
-
/**
* Register a data forwarder to which messages coming in on the web socket will be forwarded.
*
* @param listener The listener to register
*/
@Override
- public void registerDataForwarder(final MessageListener<MESSAGE> listener) {
+ public void registerDataForwarder(final MessageListener<M> listener) {
stateCheck(listener);
dataHandler.registerMessageHandler(listener);
}
* @param listener The listener to unregister
*/
@Override
- public void unRegisterDataForwarder(final MessageListener<MESSAGE> listener) {
+ public void unRegisterDataForwarder(final MessageListener<M> listener) {
stateCheck(listener);
dataHandler.unRegisterMessageHandler(listener);
}
*
* @param listener the listener to check
*/
- private void stateCheck(final MessageListener<MESSAGE> listener) {
+ private void stateCheck(final MessageListener<M> listener) {
if (listener == null) {
throw new IllegalArgumentException("The listener object cannot be null");
}
* object's appropriate method is invoked.
*
* @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
- * @param <MESSAGE> the generic type
+ * @param <M> the generic type
* @see RawMessageBlock
*/
-public interface WebSocketMessageListener<MESSAGE> extends MessageListener<MESSAGE>, Runnable {
+public interface WebSocketMessageListener<M> extends MessageListener<M>, Runnable {
/**
* This method is called by the class with which this message listener has been registered.
*
* @param listener The listener to register
*/
- void registerDataForwarder(MessageListener<MESSAGE> listener);
+ void registerDataForwarder(MessageListener<M> listener);
/**
* Unregister a data forwarder that was previously registered on the web socket listener.
*
* @param listener The listener to unregister
*/
- void unRegisterDataForwarder(MessageListener<MESSAGE> listener);
+ void unRegisterDataForwarder(MessageListener<M> listener);
}
* receive messages on the web socket.
*
* @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
- * @param <MESSAGE> the generic type of message being handled
+ * @param <M> the generic type of message being handled
*/
-abstract class InternalMessageBusClient<MESSAGE> extends WebSocketClientImpl {
+abstract class InternalMessageBusClient<M> extends WebSocketClientImpl {
private static final int THREAD_FACTORY_STACK_SIZE = 256;
// The logger for this class
private static final String RAW_EVENT_BUS = "Raw-Event-Bus";
// This instance handles the raw data received from the web socket
- private final RawMessageHandler<MESSAGE> rawMessageHandler = new RawMessageHandler<>();
+ private final RawMessageHandler<M> rawMessageHandler = new RawMessageHandler<>();
// The message block handler to which to pass messages coming in on this client
- private MessageBlockHandler<MESSAGE> messageBlockHandler = null;
+ private MessageBlockHandler<M> messageBlockHandler = null;
// The raw message handler uses a thread to process incoming events off a queue, this class owns and controls that
// thread. These fields hold the thread and
// the thread factory for creating threads.
- private ApplicationThreadFactory tFactory =
+ private ApplicationThreadFactory threadFactory =
new ApplicationThreadFactory("ws-client-thread", THREAD_FACTORY_STACK_SIZE);
private Thread forwarderThread = null;
messageBlockHandler.registerMessageHandler(rawMessageHandler);
// Create the thread that manages the queue in the data handler
- forwarderThread = tFactory.newThread(rawMessageHandler);
+ forwarderThread = threadFactory.newThread(rawMessageHandler);
forwarderThread.start();
LOGGER.exit();
*
* @param listener a simple class, that listens for the events from Event
*/
- public void addMessageListener(final MessageListener<MESSAGE> listener) {
+ public void addMessageListener(final MessageListener<M> listener) {
rawMessageHandler.registerDataForwarder(listener);
}
*
* @param listener the listener
*/
- public void removeMessageListener(final MessageListener<MESSAGE> listener) {
+ public void removeMessageListener(final MessageListener<M> listener) {
rawMessageHandler.unRegisterDataForwarder(listener);
}
* message reception on the client side of a web socket in Apex.
*
* @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
- * @param <MESSAGE> the generic type
+ * @param <M> the generic type
*/
-public class MessagingClient<MESSAGE> extends InternalMessageBusClient<MESSAGE> implements MessagingService<MESSAGE> {
+public class MessagingClient<M> extends InternalMessageBusClient<M> implements MessagingService<M> {
// The length of time to wait for a connection to a web socket server before aborting
private static final int CONNECTION_TIMEOUT_TIME_MS = 3000;
*/
private boolean waitforConnection(final WebSocket connection) {
// The total time we have before timeout
- int timeoutMSCounter = CONNECTION_TIMEOUT_TIME_MS;
+ int timeoutMsCounter = CONNECTION_TIMEOUT_TIME_MS;
// Check the connection state
do {
case CLOSING:
// Not connected yet so wait for the try interval
ThreadUtilities.sleep(CONNECTION_TRY_INTERVAL_MS);
- timeoutMSCounter -= CONNECTION_TRY_INTERVAL_MS;
+ timeoutMsCounter -= CONNECTION_TRY_INTERVAL_MS;
break;
case OPEN:
// Connection is open, happy days
}
}
// While the timeout value has not expired
- while (timeoutMSCounter > 0);
+ while (timeoutMsCounter > 0);
// We have timed out
return false;
* .core. infrastructure. messaging.MessageHolder)
*/
@Override
- public void send(final MessageHolder<MESSAGE> commands) {
+ public void send(final MessageHolder<M> commands) {
// Get the connection and send the message
final WebSocket connection = super.getConnection();
connection.send(MessagingUtils.serializeObject(commands));
* This class encapsulate messages and the web socket on which they are handled.
*
* @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
- * @param <MESSAGE> the generic type of message being handled
+ * @param <M> the generic type of message being handled
*/
-public final class MessageBlock<MESSAGE> {
+public final class MessageBlock<M> {
// List of Messages received on a web socket
- private final List<MESSAGE> messages;
+ private final List<M> messages;
// The web socket on which the messages are handled
private final WebSocket webSocket;
* @param messages the messages in the message block
* @param webSocket the web socket used to handle the message block
*/
- public MessageBlock(final List<MESSAGE> messages, final WebSocket webSocket) {
+ public MessageBlock(final List<M> messages, final WebSocket webSocket) {
this.messages = messages;
this.webSocket = webSocket;
}
*
* @return the messages
*/
- public List<MESSAGE> getMessages() {
+ public List<M> getMessages() {
return messages;
}
* event bus.
*
* @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
- * @param <MESSAGE> the generic type
+ * @param <M> the generic type
*/
-public class MessageBlockHandler<MESSAGE> {
+public class MessageBlockHandler<M> {
// Logger for this class
private static final XLogger LOGGER = XLoggerFactory.getXLogger(MessageBlockHandler.class);
*
* @param messageBlock the block containing typed messages
*/
- public void post(final MessageBlock<MESSAGE> messageBlock) {
+ public void post(final MessageBlock<M> messageBlock) {
if (messageBlock.getMessages() != null) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("new data message recieved from {}", messageBlock.getConnection() == null ? "server"
public void post(final String messageString) {
if (messageString != null) {
if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("new string message recieved from server: " + messageString);
+ LOGGER.debug("new string message recieved from server: {}", messageString);
}
eventBus.post(messageString);
}
*
* @param listener is an instance of WebSocketMessageListener
*/
- public void registerMessageHandler(final MessageListener<MESSAGE> listener) {
+ public void registerMessageHandler(final MessageListener<M> listener) {
LOGGER.entry(listener);
if (listener == null) {
throw new IllegalArgumentException("listener object cannot be null");
*
* @param listener the listener
*/
- public void unRegisterMessageHandler(final MessageListener<MESSAGE> listener) {
+ public void unRegisterMessageHandler(final MessageListener<M> listener) {
if (listener == null) {
throw new IllegalArgumentException("listener object cannot be null");
}
* receive messages on the web socket.
*
* @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
- * @param <MESSAGE> the generic type
+ * @param <M> the generic type
*/
-abstract class InternalMessageBusServer<MESSAGE> extends WebSocketServerImpl implements MessagingService<MESSAGE> {
+abstract class InternalMessageBusServer<M> extends WebSocketServerImpl implements MessagingService<M> {
// Logger for this class
private static final XLogger LOGGER = XLoggerFactory.getXLogger(InternalMessageBusServer.class);
private static final String RAW_EVENT_BUS = "Raw-Event-Bus";
// This instance handles the raw data received from the web socket
- private final RawMessageHandler<MESSAGE> rawMessageHandler = new RawMessageHandler<>();
+ private final RawMessageHandler<M> rawMessageHandler = new RawMessageHandler<>();
// The message block handler to which to pass messages coming in on this client
- private MessageBlockHandler<MESSAGE> messageBlockHandler = null;
+ private MessageBlockHandler<M> messageBlockHandler = null;
// The raw message handler uses a thread to process incoming events off a queue, this class owns and controls that
// thread. These fields hold the thread and
// the thread factory for creating threads.
- private ApplicationThreadFactory tFactory =
+ private ApplicationThreadFactory threadFactory =
new ApplicationThreadFactory("ws-server-thread", THREAD_FACTORY_STACK_SIZE);
private Thread forwarderThread = null;
messageBlockHandler.registerMessageHandler(rawMessageHandler);
// Create the thread that manages the queue in the data handler
- forwarderThread = tFactory.newThread(rawMessageHandler);
+ forwarderThread = threadFactory.newThread(rawMessageHandler);
forwarderThread.start();
LOGGER.exit();
messageBlockHandler.post(new RawMessageBlock(rawMessage, webSocket));
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.java_websocket.server.WebSocketServer#onMessage(org.java_websocket.WebSocket, java.lang.String)
+ */
+ @Override
+ public void onMessage(final WebSocket webSocket, final String stringMessage) {
+ messageBlockHandler.post(stringMessage);
+ }
+
/**
* Register a subscriber class to the raw message handler.
*
* @param subscriber the subscriber
*/
@Override
- public void addMessageListener(final MessageListener<MESSAGE> subscriber) {
+ public void addMessageListener(final MessageListener<M> subscriber) {
rawMessageHandler.registerDataForwarder(subscriber);
}
* @param subscriber the subscriber
*/
@Override
- public void removeMessageListener(final MessageListener<MESSAGE> subscriber) {
+ public void removeMessageListener(final MessageListener<M> subscriber) {
rawMessageHandler.unRegisterDataForwarder(subscriber);
}
- /*
- * (non-Javadoc)
- *
- * @see org.java_websocket.server.WebSocketServer#onMessage(org.java_websocket.WebSocket, java.lang.String)
- */
- @Override
- public void onMessage(final WebSocket webSocket, final String stringMessage) {
- messageBlockHandler.post(stringMessage);
- }
-
/**
* Stop the thread handling message forwarding.
*/
* A messaging server implementation using web socket.
*
* @author Sajeevan Achuthan (sajeevan.achuthan@ericsson.com)
- * @param <MESSAGE> the generic type of message being passed
+ * @param <M> the generic type of message being passed
*/
-public class MessageServerImpl<MESSAGE> extends InternalMessageBusServer<MESSAGE> {
+public class MessageServerImpl<M> extends InternalMessageBusServer<M> {
// The logger for this class
private static final XLogger LOGGER = XLoggerFactory.getXLogger(MessageServerImpl.class);
private static final String PROTOCOL = "ws://";
// URI of this server
- private final String connectionURI;
+ private final String connectionUri;
// Indicates if the web socket server is started or not
private boolean isStarted = false;
LOGGER.entry(address);
// Compose the Web Socket URI
- connectionURI = PROTOCOL + address.getHostString() + ":" + address.getPort();
- LOGGER.debug("Server connection URI: {}", connectionURI);
+ connectionUri = PROTOCOL + address.getHostString() + ":" + address.getPort();
+ LOGGER.debug("Server connection URI: {}", connectionUri);
LOGGER.exit();
}
}
/**
- * This method returns the current connection URI , if the server started otherwise it throws
- * {@link IllegalStateException}.
+ * Return the current connection URI.
*
* @return connection URI
*/
- public String getConnectionURI() {
- if (connectionURI == null) {
+ public String getConnectionUrl() {
+ if (connectionUri == null) {
throw new IllegalStateException("URI not set - The server is not started");
}
- return connectionURI;
+ return connectionUri;
}
/*
* (non-Javadoc)
*
- * @see
- * org.onap.policy.apex.core.infrastructure.messaging.MessagingService#send(org.onap.policy.apex
- * .core. infrastructure. messaging.MessageHolder)
+ * @see org.onap.policy.apex.core.infrastructure.messaging.MessagingService#send(org.onap.policy.apex .core.
+ * infrastructure. messaging.MessageHolder)
*/
@Override
- public void send(final MessageHolder<MESSAGE> message) {
+ public void send(final MessageHolder<M> message) {
// Send the incoming message to all clients connected to this web socket
final Collection<WebSocket> connections = getConnections();
for (final WebSocket webSocket : connections) {
/*
* (non-Javadoc)
*
- * @see
- * org.onap.policy.apex.core.infrastructure.messaging.MessagingService#send(java.lang.String)
+ * @see org.onap.policy.apex.core.infrastructure.messaging.MessagingService#send(java.lang.String)
*/
@Override
public void send(final String messageString) {
@Override
public void onStart() {
- LOGGER.debug("started deployment server on URI: {}", connectionURI);
+ LOGGER.debug("started deployment server on URI: {}", connectionUri);
}
}
*
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
-public class WSStringMessageClient implements WSStringMessager {
- private static final XLogger LOGGER = XLoggerFactory.getXLogger(WSStringMessageClient.class);
+public class WsStringMessageClient implements WsStringMessager {
+ private static final XLogger LOGGER = XLoggerFactory.getXLogger(WsStringMessageClient.class);
+
+ // Repeated string constants
+ private static final String MESSAGE_PREAMBLE = "web socket event consumer client to \"";
// Message service factory and the message service itself
private final MessagingServiceFactory<String> factory = new MessagingServiceFactory<>();
private MessagingService<String> service = null;
// The listener to use for reception of strings
- private WSStringMessageListener wsStringMessageListener;
+ private WsStringMessageListener wsStringMessageListener;
// Address of the server
private final String host;
* @param host the host of the server
* @param port the port of the server
*/
- public WSStringMessageClient(final String host, final int port) {
+ public WsStringMessageClient(final String host, final int port) {
this.host = host;
this.port = port;
}
* apex. core.infrastructure.messaging. stringmessaging.WSStringMessageListener)
*/
@Override
- public void start(final WSStringMessageListener newWsStringMessageListener) throws MessagingException {
+ public void start(final WsStringMessageListener newWsStringMessageListener) throws MessagingException {
this.wsStringMessageListener = newWsStringMessageListener;
uriString = "ws://" + host + ":" + port;
- LOGGER.entry("web socket event consumer client to \"" + uriString + "\" starting . . .");
+ String messagePreamble = MESSAGE_PREAMBLE + uriString + "\" ";
+ LOGGER.entry(messagePreamble + "starting . . .");
try {
service = factory.createClient(new URI(uriString));
- service.addMessageListener(new WSStringMessageClientListener());
+ service.addMessageListener(new WsStringMessageClientListener());
service.startConnection();
} catch (final Exception e) {
- LOGGER.warn("web socket event consumer client to \"" + uriString + "\" start failed", e);
- throw new MessagingException("web socket event consumer client to \"" + uriString + "\" start failed", e);
+ String message = messagePreamble + "start failed";
+ LOGGER.warn(message, e);
+ throw new MessagingException(message, e);
}
- LOGGER.exit("web socket event consumer client to \"" + uriString + "\" started");
+ LOGGER.exit(messagePreamble + "started");
}
/*
*/
@Override
public void stop() {
- LOGGER.entry("web socket event consumer client to \"" + uriString + "\" stopping . . .");
+ LOGGER.entry(MESSAGE_PREAMBLE + uriString + "\" stopping . . .");
service.stopConnection();
- LOGGER.exit("web socket event consumer client to \"" + uriString + "\" stopped");
+ LOGGER.exit(MESSAGE_PREAMBLE + uriString + "\" stopped");
}
/*
service.send(stringMessage);
if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("message sent to server: " + stringMessage);
+ String message = "message sent to server: " + stringMessage;
+ LOGGER.debug(message);
}
}
/**
* The Class WSStringMessageClientListener.
*/
- private class WSStringMessageClientListener implements MessageListener<String> {
+ private class WsStringMessageClientListener implements MessageListener<String> {
/*
* (non-Javadoc)
*
*
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
-public interface WSStringMessageListener {
+public interface WsStringMessageListener {
/**
* Receive a string coming off a web socket.
*
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
-public class WSStringMessageServer implements WSStringMessager {
- private static final XLogger LOGGER = XLoggerFactory.getXLogger(WSStringMessageServer.class);
+public class WsStringMessageServer implements WsStringMessager {
+ private static final XLogger LOGGER = XLoggerFactory.getXLogger(WsStringMessageServer.class);
// Message service factory and the message service itself
private final MessagingServiceFactory<String> factory = new MessagingServiceFactory<>();
private MessagingService<String> service = null;
// The listener to use for reception of strings
- private WSStringMessageListener wsStringMessageListener;
+ private WsStringMessageListener wsStringMessageListener;
// Address of the server
private final int port;
*
* @param port the port of the server
*/
- public WSStringMessageServer(final int port) {
+ public WsStringMessageServer(final int port) {
this.port = port;
}
* apex. core.infrastructure.messaging. stringmessaging.WSStringMessageListener)
*/
@Override
- public void start(final WSStringMessageListener newWsStringMessageListener) throws MessagingException {
+ public void start(final WsStringMessageListener newWsStringMessageListener) throws MessagingException {
this.wsStringMessageListener = newWsStringMessageListener;
LOGGER.entry("web socket event consumer server starting . . .");
try {
- final InetAddress addrLan = MessagingUtils.getLocalHostLANAddress();
+ final InetAddress addrLan = MessagingUtils.getLocalHostLanAddress();
LOGGER.debug("web socket string message server LAN address=" + addrLan.getHostAddress());
final InetAddress addr = InetAddress.getLocalHost();
LOGGER.debug("web socket string message server host address=" + addr.getHostAddress());
service = factory.createServer(new InetSocketAddress(port));
- service.addMessageListener(new WSStringMessageServerListener());
+ service.addMessageListener(new WsStringMessageServerListener());
service.startConnection();
} catch (final Exception e) {
public void sendString(final String stringMessage) {
service.send(stringMessage);
if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("server sent message: " + stringMessage);
+ LOGGER.debug("server sent message: {}", stringMessage);
}
}
/**
* The listener for strings coming into the server.
*/
- private class WSStringMessageServerListener implements MessageListener<String> {
+ private class WsStringMessageServerListener implements MessageListener<String> {
/*
* (non-Javadoc)
*
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
-public interface WSStringMessager {
+public interface WsStringMessager {
/**
* Start the string message sender.
* @param wsStringMessageListener the listener to use for listening for string messages
* @throws MessagingException the messaging exception
*/
- void start(WSStringMessageListener wsStringMessageListener) throws MessagingException;
+ void start(WsStringMessageListener wsStringMessageListener) throws MessagingException;
/**
* Stop the string messaging sender.
private static final int LOWEST_USER_PORT = 1024;
/**
- * Port number is an unsigned 16-bit integer, so maximum port is 65535
+ * Port number is an unsigned 16-bit integer, so maximum port is 65535.
*/
private static final int MAX_PORT_RANGE = 65535;
return port;
}
LOGGER.debug("Port {} is not available", port);
- throw new RuntimeException("could not allocate requested port: " + port);
+ throw new IllegalArgumentException("could not allocate requested port: " + port);
}
/**
LOGGER.debug("Port {} is not available", availablePort);
availablePort++;
}
- throw new RuntimeException("could not find free available");
+ throw new IllegalArgumentException("could not find free available");
}
/**
* @return an Internet address
* @throws UnknownHostException if the address of the local host cannot be found
*/
- public static InetAddress getLocalHostLANAddress() throws UnknownHostException {
+ public static InetAddress getLocalHostLanAddress() throws UnknownHostException {
try {
InetAddress candidateAddress = null;
// Iterate all NICs (network interface cards)...
} finally {
flushAndClose(oos, bytesOut);
}
- final byte[] bytes = bytesOut.toByteArray();
- return bytes;
+ return bytesOut.toByteArray();
}
/**
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageClient;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageListener;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageServer;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageClient;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageListener;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageServer;
import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
import org.slf4j.ext.XLogger;
import org.slf4j.ext.XLoggerFactory;
// Logger for this class
private static final XLogger logger = XLoggerFactory.getXLogger(EndToEndStringMessagingTest.class);
- private WSStringMessageServer server;
- private WSStringMessageClient client;
+ private WsStringMessageServer server;
+ private WsStringMessageClient client;
private boolean finished = false;
@Test
public void testEndToEndMessaging() throws MessagingException {
logger.debug("end to end messaging test starting . . .");
- server = new WSStringMessageServer(44441);
+ server = new WsStringMessageServer(44441);
assertNotNull(server);
- server.start(new WSStringServerMessageListener());
+ server.start(new WsStringServerMessageListener());
try {
- client = new WSStringMessageClient("localhost", 44441);
+ client = new WsStringMessageClient("localhost", 44441);
assertNotNull(client);
- client.start(new WSStringClientMessageListener());
+ client.start(new WsStringClientMessageListener());
client.sendString("Hello, client here");
logger.debug("end to end messaging test finished");
}
- private class WSStringServerMessageListener implements WSStringMessageListener {
+ private class WsStringServerMessageListener implements WsStringMessageListener {
@Override
public void receiveString(final String stringMessage) {
logger.debug(stringMessage);
}
}
- private class WSStringClientMessageListener implements WSStringMessageListener {
+ private class WsStringClientMessageListener implements WsStringMessageListener {
@Override
public void receiveString(final String stringMessage) {
logger.debug(stringMessage);
import static org.junit.Assert.assertNotNull;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageListener;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageServer;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageListener;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageServer;
import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
+// TODO: Auto-generated Javadoc
+/**
+ * The Class StringTestServer.
+ */
public class StringTestServer {
- private WSStringMessageServer server;
+ private WsStringMessageServer server;
+ /**
+ * Create a string test server.
+ *
+ * @param port port to use
+ * @param timeToLive time to live
+ * @throws MessagingException exceptions on messages
+ */
public StringTestServer(final int port, long timeToLive) throws MessagingException {
System.out.println("StringTestServer starting on port " + port + " for " + timeToLive + " seconds . . .");
- server = new WSStringMessageServer(port);
+ server = new WsStringMessageServer(port);
assertNotNull(server);
- server.start(new WSStringServerMessageListener());
+ server.start(new WsStringServerMessageListener());
System.out.println("StringTestServer started on port " + port + " for " + timeToLive + " seconds");
System.out.println("StringTestServer completed");
}
- private class WSStringServerMessageListener implements WSStringMessageListener {
+ /**
+ * The listener interface for receiving WSStringServerMessage events. The class that is interested in processing a
+ * WSStringServerMessage event implements this interface, and the object created with that class is registered with
+ * a component using the component's <code>addWSStringServerMessageListener</code> method. When the
+ * WSStringServerMessage event occurs, that object's appropriate method is invoked.
+ *
+ * @see WSStringServerMessageEvent
+ */
+ private class WsStringServerMessageListener implements WsStringMessageListener {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageListener#receiveString(java
+ * .lang.String)
+ */
@Override
public void receiveString(final String stringMessage) {
System.out.println("Server received string \"" + stringMessage + "\"");
}
}
+ /**
+ * The main method.
+ *
+ * @param args the arguments
+ * @throws MessagingException the messaging exception
+ */
public static void main(final String[] args) throws MessagingException {
if (args.length != 2) {
System.err.println("Usage: StringTestServer port timeToLive");
apexEngine.handleEvent(event);
EnEvent result = listener.getResult();
assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
- assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID());
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), result.getExecutionId());
// no DOS_IN_eNodeB set so return probe action
assertTrue(result.get("ACTTASK").equals("probe"));
assertTrue((boolean) result.get("TCP_ON"));
apexEngine.handleEvent(event);
result = listener.getResult();
assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
- assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID());
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), result.getExecutionId());
// DOS_IN_eNodeB set to be more than throughput so return act action
assertTrue(result.get("ACTTASK").equals("act"));
// only one imsi was sent to process, so stop probe and tcp
apexEngine.handleEvent(event);
result = listener.getResult();
assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
- assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID());
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), result.getExecutionId());
assertTrue(result.get("ACTTASK").equals("probe"));
assertTrue((boolean) result.get("TCP_ON"));
assertTrue((boolean) result.get("PROBE_ON"));
apexEngine.handleEvent(event);
result = listener.getResult();
assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
- assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID());
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), result.getExecutionId());
assertTrue(result.get("ACTTASK").equals("act"));
assertTrue(!(boolean) result.get("TCP_ON"));
assertTrue(!(boolean) result.get("PROBE_ON"));
apexEngine.handleEvent(event);
result = listener.getResult();
assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
- assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID());
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), result.getExecutionId());
assertTrue(result.get("ACTTASK").equals("act"));
assertTrue(!(boolean) result.get("TCP_ON"));
assertTrue(!(boolean) result.get("PROBE_ON"));
apexEngine.handleEvent(event);
result = listener.getResult();
assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
- assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID());
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), result.getExecutionId());
assertTrue(result.get("ACTTASK").equals("probe"));
assertTrue((boolean) result.get("TCP_ON"));
assertTrue((boolean) result.get("PROBE_ON"));
apexEngine.handleEvent(event);
result = listener.getResult();
assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
- assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID());
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), result.getExecutionId());
assertTrue(result.get("ACTTASK").equals("probe"));
assertTrue((boolean) result.get("TCP_ON"));
assertTrue((boolean) result.get("PROBE_ON"));
apexEngine.handleEvent(event);
result = listener.getResult();
assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
- assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID());
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), result.getExecutionId());
assertTrue(result.get("ACTTASK").equals("probe"));
assertTrue((boolean) result.get("TCP_ON"));
assertTrue((boolean) result.get("PROBE_ON"));
apexEngine.handleEvent(event);
result = listener.getResult();
assertTrue(result.getName().startsWith("SAPCBlacklistSubscriberEvent"));
- assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID());
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), result.getExecutionId());
assertEquals(0L, result.get("IMSI"));
assertTrue(result.get("PROFILE").equals("ServiceA"));
assertTrue(result.get("BLACKLIST_ON").equals(false));
apexEngine1.handleEvent(triggerEvent);
final EnEvent result = listener1.getResult();
LOGGER.info("Receiving action event {} ", result);
- assertEquals("ExecutionIDs are different", triggerEvent.getExecutionID(), result.getExecutionID());
+ assertEquals("ExecutionIDs are different", triggerEvent.getExecutionId(), result.getExecutionId());
triggerEvent.clear();
result.clear();
Thread.sleep(1);
apexEngine1.handleEvent(triggerEvent);
final EnEvent result = listener1.getResult();
LOGGER.info("Receiving action event {} ", result);
- assertEquals("ExecutionIDs are different", triggerEvent.getExecutionID(), result.getExecutionID());
+ assertEquals("ExecutionIDs are different", triggerEvent.getExecutionId(), result.getExecutionId());
triggerEvent.clear();
result.clear();
Thread.sleep(1);
resulexpected =
fillResultEvent(axEventout, "examples/events/MyFirstPolicy/1/EventOut_BoozeItem_201713GMT.json");
assertEquals(resulexpected, resultout);
- assertEquals("ExecutionIDs are different", event.getExecutionID(), resultout.getExecutionID());
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), resultout.getExecutionId());
event = fillTriggerEvent(axEventin, "examples/events/MyFirstPolicy/1/EventIn_NonBoozeItem_101309GMT.json");
apexEngine.handleEvent(event);
resulexpected =
fillResultEvent(axEventout, "examples/events/MyFirstPolicy/1/EventOut_NonBoozeItem_101309GMT.json");
assertEquals(resulexpected, resultout);
- assertEquals("ExecutionIDs are different", event.getExecutionID(), resultout.getExecutionID());
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), resultout.getExecutionId());
apexEngine.stop();
}
EnEvent event = fillTriggerEvent(axEventin, "examples/events/MyFirstPolicy/1/EventIn_BoozeItem_084106GMT.json");
apexEngine.handleEvent(event);
EnEvent resultout = listener.getResult();
- EnEvent resulexpected =
+ EnEvent resultexpected =
fillResultEvent(axEventout, "examples/events/MyFirstPolicy/1/EventOut_BoozeItem_084106GMT.json");
- assertEquals(resulexpected, resultout);
- assertEquals("ExecutionIDs are different", event.getExecutionID(), resultout.getExecutionID());
+ assertEquals(resultexpected, resultout);
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), resultout.getExecutionId());
event = fillTriggerEvent(axEventin, "examples/events/MyFirstPolicy/1/EventIn_BoozeItem_201713GMT.json");
apexEngine.handleEvent(event);
resultout = listener.getResult();
- resulexpected =
+ resultexpected =
fillResultEvent(axEventout, "examples/events/MyFirstPolicy/1/EventOut_BoozeItem_201713GMT.json");
- assertEquals(resulexpected, resultout);
- assertEquals("ExecutionIDs are different", event.getExecutionID(), resultout.getExecutionID());
+ assertEquals(resultexpected, resultout);
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), resultout.getExecutionId());
event = fillTriggerEvent(axEventin, "examples/events/MyFirstPolicy/1/EventIn_NonBoozeItem_101309GMT.json");
apexEngine.handleEvent(event);
resultout = listener.getResult();
- resulexpected =
+ resultexpected =
fillResultEvent(axEventout, "examples/events/MyFirstPolicy/1/EventOut_NonBoozeItem_101309GMT.json");
- assertEquals(resulexpected, resultout);
- assertEquals("ExecutionIDs are different", event.getExecutionID(), resultout.getExecutionID());
+ assertEquals(resultexpected, resultout);
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), resultout.getExecutionId());
event = fillTriggerEvent(axEventin, "examples/events/MyFirstPolicy/2/EventIn_BoozeItem_101433CET_thurs.json");
apexEngine.handleEvent(event);
resultout = listener.getResult();
- resulexpected =
+ resultexpected =
fillResultEvent(axEventout, "examples/events/MyFirstPolicy/2/EventOut_BoozeItem_101433CET_thurs.json");
- assertEquals(resulexpected, resultout);
- assertEquals("ExecutionIDs are different", event.getExecutionID(), resultout.getExecutionID());
+ assertEquals(resultexpected, resultout);
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), resultout.getExecutionId());
event = fillTriggerEvent(axEventin, "examples/events/MyFirstPolicy/2/EventIn_BoozeItem_171937CET_sun.json");
apexEngine.handleEvent(event);
resultout = listener.getResult();
- resulexpected =
+ resultexpected =
fillResultEvent(axEventout, "examples/events/MyFirstPolicy/2/EventOut_BoozeItem_171937CET_sun.json");
- assertEquals(resulexpected, resultout);
- assertEquals("ExecutionIDs are different", event.getExecutionID(), resultout.getExecutionID());
+ assertEquals(resultexpected, resultout);
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), resultout.getExecutionId());
event = fillTriggerEvent(axEventin, "examples/events/MyFirstPolicy/2/EventIn_NonBoozeItem_111309CET_mon.json");
apexEngine.handleEvent(event);
resultout = listener.getResult();
- resulexpected =
+ resultexpected =
fillResultEvent(axEventout, "examples/events/MyFirstPolicy/2/EventOut_NonBoozeItem_111309CET_mon.json");
- assertEquals(resulexpected, resultout);
- assertEquals("ExecutionIDs are different", event.getExecutionID(), resultout.getExecutionID());
+ assertEquals(resultexpected, resultout);
+ assertEquals("ExecutionIDs are different", event.getExecutionId(), resultout.getExecutionId());
apexEngine.stop();
}
if (validateFlag) {
// Validate the configuration file
final AxValidationResult validationResult = apexConcept.validate(new AxValidationResult());
- LOGGER.debug(validationResult.toString());
if (validationResult.isValid()) {
return apexConcept;
}
else {
- LOGGER.error("Apex concept validation failed" + validationResult.toString());
- throw new ApexModelException("Apex concept validation failed" + validationResult.toString());
+ String message = "Apex concept validation failed" + validationResult.toString();
+ LOGGER.error(message);
+ throw new ApexModelException(message);
}
}
else {
System.setProperty("javax.xml.bind.context.factory", "org.eclipse.persistence.jaxb.JAXBContextFactory");
try {
- final JAXBContext jaxbContext = JAXBContextFactory.createContext(new Class[] {rootConceptClass}, null);
+ final JAXBContext jaxbContext = JAXBContextFactory.createContext(new Class[]
+ { rootConceptClass }, null);
// Set up the unmarshaller to carry out validation
marshaller = jaxbContext.createMarshaller();
if (validateFlag) {
// Validate the concept first
final AxValidationResult validationResult = concept.validate(new AxValidationResult());
- LOGGER.debug(validationResult.toString());
if (!validationResult.isValid()) {
- LOGGER.warn(validationResult.toString());
- throw new ApexModelException("Apex concept xml (" + concept.getKey().getId() + ") validation failed");
+ String message = "Apex concept xml (" + concept.getKey().getId() + ") validation failed: "
+ + validationResult.toString();
+ LOGGER.warn(message);
+ throw new ApexModelException(message);
}
}
// Convert the cDataFieldSet into a space delimited string
domTransformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS,
- cdataFieldSet.toString().replaceAll("[\\[\\]\\,]", " "));
+ cdataFieldSet.toString().replaceAll("[\\[\\]\\,]", " "));
domTransformer.transform(new DOMSource(document), new StreamResult(apexConceptWriter));
} catch (JAXBException | TransformerException | ParserConfigurationException e) {
LOGGER.warn("Unable to marshal Apex concept XML", e);
LOGGER.debug("wrote Apex concept XML");
}
-
private Transformer getTransformer() throws TransformerConfigurationException {
// Transform the DOM to the output stream
final TransformerFactory transformerFactory = TransformerFactory.newInstance();
final AxValidationResult result = model.validate(new AxValidationResult());
if (!result.isValid()) {
- LOGGER.warn(MODEL_IS_INVALID + result.toString());
- throw new ApexException(MODEL_IS_INVALID + result.toString());
+ String message = MODEL_IS_INVALID + result.toString();
+ LOGGER.warn(message);
+ throw new ApexException(message);
}
LOGGER.debug("ran testApexModelVaid");
final AxValidationResult result = model.validate(new AxValidationResult());
if (result.isValid()) {
- LOGGER.warn("model should not be valid " + result.toString());
- throw new ApexException("should not be valid " + result.toString());
+ String message = "model should not be valid " + result.toString();
+ LOGGER.warn(message);
+ throw new ApexException(message);
}
LOGGER.debug("ran testApexModelVaidateMalstructured");
final AxValidationResult result = model.validate(new AxValidationResult());
if (!result.isValid()) {
- LOGGER.warn(MODEL_IS_INVALID + result.toString());
- throw new ApexException(MODEL_IS_INVALID + result.toString());
+ String message = MODEL_IS_INVALID + result.toString();
+ LOGGER.warn(message);
+ throw new ApexException(message);
}
if (!result.getValidationResult().equals(AxValidationResult.ValidationResult.OBSERVATION)) {
final AxValidationResult result = model.validate(new AxValidationResult());
if (!result.isValid()) {
- LOGGER.warn(MODEL_IS_INVALID + result.toString());
- throw new ApexException(MODEL_IS_INVALID + result.toString());
+ String message = MODEL_IS_INVALID + result.toString();
+ LOGGER.warn(message);
+ throw new ApexException(message);
}
if (!result.getValidationResult().equals(AxValidationResult.ValidationResult.WARNING)) {
final AxValidationResult result = model.validate(new AxValidationResult());
if (result.isValid()) {
- LOGGER.warn("model should not be valid " + result.toString());
- throw new ApexException("should not be valid " + result.toString());
+ String message = "model should not be valid " + result.toString();
+ LOGGER.warn(message);
+ throw new ApexException(message);
}
LOGGER.debug("ran testApexModelVaidateInvalidModel");
testApexModel.testApexModelVaidateInvalidModel();
fail("Test should throw an exception");
} catch (final Exception e) {
- assertEquals("should not be valid ***validation of model successful***", e.getMessage());
+ assertEquals("model should not be valid ***validation of model successful***", e.getMessage());
}
try {
testApexModel.testApexModelVaidateMalstructured();
fail("Test should throw an exception");
} catch (final Exception e) {
- assertEquals("should not be valid ***validation of model successful***", e.getMessage());
+ assertEquals("model should not be valid ***validation of model successful***", e.getMessage());
}
}
@Test
public void testModelWriter() throws IOException, ApexException {
ApexModelWriter<AxModel> modelWriter = new ApexModelWriter<AxModel>(AxModel.class);
-
+
modelWriter.setValidateFlag(true);
assertTrue(modelWriter.getValidateFlag());
assertEquals(0, modelWriter.getCDataFieldSet().size());
-
+
assertFalse(modelWriter.isJsonOutput());
modelWriter.setJsonOutput(true);
assertTrue(modelWriter.isJsonOutput());
modelWriter.setJsonOutput(false);
assertFalse(modelWriter.isJsonOutput());
-
+
ByteArrayOutputStream baos = new ByteArrayOutputStream();
AxModel model = new TestApexBasicModelCreator().getModel();
-
+
modelWriter.write(model, baos);
modelWriter.setJsonOutput(true);
modelWriter.write(model, baos);
modelWriter.setJsonOutput(false);
-
+
modelWriter.setValidateFlag(false);
modelWriter.write(model, baos);
modelWriter.setJsonOutput(true);
modelWriter.write(model, baos);
modelWriter.setJsonOutput(false);
-
+
modelWriter.setValidateFlag(true);
model.getKeyInformation().getKeyInfoMap().clear();
try {
modelWriter.write(model, baos);
fail("Test should throw an exception here");
- }
- catch (Exception e) {
- assertEquals("Apex concept xml (BasicModel:0.0.1) validation failed", e.getMessage());
+ } catch (Exception e) {
+ assertEquals("Apex concept xml (BasicModel:0.0.1) validation failed", e.getMessage().substring(0, 53));
}
model.getKeyInformation().generateKeyInfo(model);
try {
modelWriter.write(null, baos);
fail("Test should throw an exception here");
- }
- catch (Exception e) {
+ } catch (Exception e) {
assertEquals("concept may not be null", e.getMessage());
}
-
+
try {
ByteArrayOutputStream nullBaos = null;
modelWriter.write(model, nullBaos);
fail("Test should throw an exception here");
- }
- catch (Exception e) {
+ } catch (Exception e) {
assertEquals("concept stream may not be null", e.getMessage());
}
}
* @param parent the parent object of this object in the unmarshaler
*/
public void afterUnmarshal(final Unmarshaller unmarsaller, final Object parent) {
+ Assertions.argumentNotNull(unmarsaller, "unmarsaller should not be null");
+ Assertions.argumentNotNull(parent, "parent should not be null");
+
// The map must be navigable to allow name and version searching, unmarshaling returns a
// hash map
final NavigableMap<AxArtifactKey, AxContextAlbum> navigableAlbums = new TreeMap<>();
// Check if the logic was found
if (logicString == null || logicString.length() == 0) {
- LOGGER.warn("logic not found for logic \"" + fullLogicFilePath + "\"");
- throw new PolicyRuntimeException("logic not found for logic \"" + fullLogicFilePath + "\"");
+ String errorMessage = "logic not found for logic \"" + fullLogicFilePath + "\"";
+ LOGGER.warn(errorMessage);
+ throw new PolicyRuntimeException(errorMessage);
}
// Return the right trimmed logic string
final AxValidationResult leftValidationResult = new AxValidationResult();
leftPolicyModel.validate(leftValidationResult);
if (!leftValidationResult.isValid()) {
- LOGGER.warn("left model is invalid: " + leftValidationResult.toString());
- throw new ApexModelException("left model is invalid: " + leftValidationResult.toString());
+ String message = "left model is invalid: " + leftValidationResult.toString();
+ LOGGER.warn(message);
+ throw new ApexModelException(message);
}
}
final AxValidationResult rightValidationResult = new AxValidationResult();
rightPolicyModel.validate(rightValidationResult);
if (!rightValidationResult.isValid()) {
- LOGGER.warn("right model is invalid: " + rightValidationResult.toString());
- throw new ApexModelException("right model is invalid: " + rightValidationResult.toString());
+ String message = "right model is invalid: " + rightValidationResult.toString();
+ LOGGER.warn(message);
+ throw new ApexModelException(message);
}
}
// The new policy model uses the favoured copy side as its base
- final AxPolicyModel mergedPolicyModel = (AxPolicyModel) (useLeftOnMatches ? new AxPolicyModel(leftPolicyModel)
+ final AxPolicyModel mergedPolicyModel = (useLeftOnMatches ? new AxPolicyModel(leftPolicyModel)
: new AxPolicyModel(rightPolicyModel));
// The Compared to policy model is the unfavoured side
final AxValidationResult sourceValidationResult = new AxValidationResult();
sourcePolicyModel.validate(sourceValidationResult);
if (!sourceValidationResult.isValid()) {
- LOGGER.warn("source model is invalid: " + sourceValidationResult.toString());
- throw new ApexModelException("source model is invalid: " + sourceValidationResult.toString());
+ String message = "source model is invalid: " + sourceValidationResult.toString();
+ LOGGER.warn(message);
+ throw new ApexModelException(message);
}
}
for (final AxArtifactKey subPolicyKey : subPolicies) {
final AxPolicy subPolicy = sourcePolicyModel.getPolicies().getPolicyMap().get(subPolicyKey);
if (subPolicy == null) {
- LOGGER.warn("source sub policy not found: " + subPolicyKey);
+ LOGGER.warn("source sub policy not found: {}", subPolicyKey);
continue;
}
* (non-Javadoc)
*
* @see
- * com.ericsson.apex.context.impl.distribution.AbstractContextDistributor#init(com.ericsson.apex
+ * org.onap.policy.apex.context.impl.distribution.AbstractContextDistributor#init(org.onap.policy.apex
* .model.basicmodel.concepts.AxArtifactKey)
*/
@Override
/*
* (non-Javadoc)
*
- * @see com.ericsson.apex.core.context.impl.distribution.AbstractContextDistributor#
- * getContextAlbumMap(com.ericsson.apex.core.model.concepts.AxArtifactKey)
+ * @see org.onap.policy.apex.core.context.impl.distribution.AbstractContextDistributor#
+ * getContextAlbumMap(org.onap.policy.apex.core.model.concepts.AxArtifactKey)
*/
@Override
public Map<String, Object> getContextAlbumMap(final AxArtifactKey contextAlbumKey) {
/*
* (non-Javadoc)
*
- * @see com.ericsson.apex.core.context.impl.distribution.AbstractContextDistributor#shutdown()
+ * @see org.onap.policy.apex.core.context.impl.distribution.AbstractContextDistributor#shutdown()
*/
@Override
public void shutdown() {
/*
* (non-Javadoc)
*
- * @see com.ericsson.apex.context.parameters.DistributorParameters#toString()
+ * @see org.onap.policy.apex.context.parameters.DistributorParameters#toString()
*/
@Override
public String toString() {
{
- "type": "array",
- "items": {
- "type": "record",
- "name": "AAIInventoryResponseItem_Type",
- "fields": [
- {
- "name": "model_DasH_name",
- "type": "string"
- },
- {
- "name": "extra_DasH_properties",
- "type": {
- "type": "record",
- "name": "AAIInventoryResponseItemExtraProperties_Type",
- "fields": []
- }
- },
- {
- "name": "generic_DasH_vnf",
- "type": {
- "type": "record",
- "name": "AAIInventoryResponseItemGenericVNF_Type",
- "fields": [
- {
- "name": "vnf_DasH_id",
- "type": "string"
- },
- {
- "name": "vnf_DasH_name",
- "type": "string"
- },
- {
- "name": "vnf_DasH_type",
- "type": "string"
- },
- {
- "name": "service_DasH_id",
- "type": "string"
- },
- {
- "name": "orchestration_DasH_status",
- "type": "string"
- },
- {
- "name": "in_DasH_maint",
- "type": "boolean"
- },
- {
- "name": "is_DasH_closed_DasH_loop_DasH_disabled",
- "type": "boolean"
- },
- {
- "name": "resource_DasH_version",
- "type": "string"
- },
- {
- "name": "model_DasH_invariant_DasH_id",
- "type": "string"
- },
- {
- "name": "model_DasH_version_DasH_id",
- "type": "string"
- }
- ]
- }
- }
- ]
- }
+ "type": "array",
+ "items": {
+ "type": "record",
+ "name": "AAIInventoryResponseItem_Type",
+ "fields": [
+ {
+ "name": "model_DasH_name",
+ "type": "string"
+ },
+ {
+ "name": "extra_DasH_properties",
+ "type": {
+ "type": "record",
+ "name": "AAIInventoryResponseItemExtraProperties_Type",
+ "fields": []
+ }
+ },
+ {
+ "name": "generic_DasH_vnf",
+ "type": {
+ "type": "record",
+ "name": "AAIInventoryResponseItemGenericVNF_Type",
+ "fields": [
+ {
+ "name": "vnf_DasH_id",
+ "type": "string"
+ },
+ {
+ "name": "vnf_DasH_name",
+ "type": "string"
+ },
+ {
+ "name": "vnf_DasH_type",
+ "type": "string"
+ },
+ {
+ "name": "service_DasH_id",
+ "type": "string"
+ },
+ {
+ "name": "orchestration_DasH_status",
+ "type": "string"
+ },
+ {
+ "name": "in_DasH_maint",
+ "type": "boolean"
+ },
+ {
+ "name": "is_DasH_closed_DasH_loop_DasH_disabled",
+ "type": "boolean"
+ },
+ {
+ "name": "resource_DasH_version",
+ "type": "string"
+ },
+ {
+ "name": "model_DasH_invariant_DasH_id",
+ "type": "string"
+ },
+ {
+ "name": "model_DasH_version_DasH_id",
+ "type": "string"
+ }
+ ]
+ }
+ }
+ ]
+ }
}
{
- "type": "array", "items": {
- "type" : "record",
- "name" : "AddressUSRecord",
- "fields" : [
- {"name": "streetaddress", "type": "string"},
- {"name": "city", "type": "string"}
- ]
- }
+ "type": "array", "items": {
+ "type" : "record",
+ "name" : "AddressUSRecord",
+ "fields" : [
+ {"name": "streetaddress", "type": "string"},
+ {"name": "city", "type": "string"}
+ ]
+ }
}
\ No newline at end of file
{
- "type": "array", "items": "long"
+ "type": "array", "items": "long"
}
\ No newline at end of file
{
- "type": "enum",
- "name": "Suit",
- "symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
+ "type": "enum",
+ "name": "Suit",
+ "symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
}
\ No newline at end of file
{
- "type" : "fixed",
- "name" : "binaryData",
- "size" : 64
+ "type" : "fixed",
+ "name" : "binaryData",
+ "size" : 64
}
\ No newline at end of file
{
- "type" : "record",
- "name" : "HealthCheckBody_Type",
- "namespace" : "com.ericsson.apex.onap.tlgoal2017",
- "fields" : [
- {
- "name": "input",
- "type": {
- "type" : "record",
- "name" : "InputRecord",
- "fields" : [
- {
- "name": "action", "type": "string"
- },
- {
- "name": "action_DasH_identifiers",
- "type": {
- "type" : "record",
- "name" : "ActionIdentifiersRecord",
- "fields" : [
- {
- "name": "vnf_DasH_id", "type": "string"
- }
- ]
- }
- },
- {
- "name": "common_DasH_header",
- "type": {
- "type" : "record",
- "name" : "CommonHeaderRecord",
- "fields" : [
- {
- "name": "request_DasH_id", "type": "string"
- },
- {
- "name": "originator_DasH_id", "type": "string"
- },
- {
- "name": "api_DasH_ver", "type": "string"
- },
- {
- "name": "sub_DasH_request_DasH_id", "type": "string"
- },
- {
- "name": "timestamp", "type": "string"
- },
- {
- "name": "flags",
- "type": {
- "type" : "record",
- "name" : "FlagsRecord",
- "fields" : [
- {
- "name": "ttl", "type": "string"
- },
- {
- "name": "force", "type": "string"
- },
- {
- "name": "mode", "type": "string"
- }
- ]
- }
- }
- ]
- }
- },
- {
- "name": "payload", "type": "string"
- }
- ]
- }
- }
- ]
+ "type" : "record",
+ "name" : "HealthCheckBody_Type",
+ "namespace" : "org.onap.policy.apex.onap.tlgoal2017",
+ "fields" : [
+ {
+ "name": "input",
+ "type": {
+ "type" : "record",
+ "name" : "InputRecord",
+ "fields" : [
+ {
+ "name": "action", "type": "string"
+ },
+ {
+ "name": "action_DasH_identifiers",
+ "type": {
+ "type" : "record",
+ "name" : "ActionIdentifiersRecord",
+ "fields" : [
+ {
+ "name": "vnf_DasH_id", "type": "string"
+ }
+ ]
+ }
+ },
+ {
+ "name": "common_DasH_header",
+ "type": {
+ "type" : "record",
+ "name" : "CommonHeaderRecord",
+ "fields" : [
+ {
+ "name": "request_DasH_id", "type": "string"
+ },
+ {
+ "name": "originator_DasH_id", "type": "string"
+ },
+ {
+ "name": "api_DasH_ver", "type": "string"
+ },
+ {
+ "name": "sub_DasH_request_DasH_id", "type": "string"
+ },
+ {
+ "name": "timestamp", "type": "string"
+ },
+ {
+ "name": "flags",
+ "type": {
+ "type" : "record",
+ "name" : "FlagsRecord",
+ "fields" : [
+ {
+ "name": "ttl", "type": "string"
+ },
+ {
+ "name": "force", "type": "string"
+ },
+ {
+ "name": "mode", "type": "string"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "payload", "type": "string"
+ }
+ ]
+ }
+ }
+ ]
}
{
- "type": "map", "values": {
- "type" : "record",
- "name" : "AddressUSRecord",
- "fields" : [
- {"name": "streetaddress", "type": "string"},
- {"name": "city", "type": "string"}
- ]
- }
+ "type": "map", "values": {
+ "type" : "record",
+ "name" : "AddressUSRecord",
+ "fields" : [
+ {"name": "streetaddress", "type": "string"},
+ {"name": "city", "type": "string"}
+ ]
+ }
}
\ No newline at end of file
{
- "type": "map", "values": {
- "type" : "record",
- "name" : "AddressUSRecord",
- "fields" : [
- {"name": "street_DasH_address", "type": "string"},
- {"name": "the_DoT_city", "type": "string"}
- ]
- }
+ "type": "map", "values": {
+ "type" : "record",
+ "name" : "AddressUSRecord",
+ "fields" : [
+ {"name": "street_DasH_address", "type": "string"},
+ {"name": "the_DoT_city", "type": "string"}
+ ]
+ }
}
\ No newline at end of file
{
- "type": "map", "values": "long"
+ "type": "map", "values": "long"
}
\ No newline at end of file
{
- "type": "record",
- "name": "User",
- "namespace": "com.example.avro",
- "doc": "This is a user record in a fictitious to-do-list management app. It supports arbitrary grouping and nesting of items, and allows you to add items by email or by tweeting.\n\nNote this app doesn't actually exist. The schema is just a demo for [Avrodoc](https://github.com/ept/avrodoc)!",
- "fields": [
+ "type": "record",
+ "name": "User",
+ "namespace": "com.example.avro",
+ "doc": "This is a user record in a fictitious to-do-list management app. It supports arbitrary grouping and nesting of items, and allows you to add items by email or by tweeting.\n\nNote this app doesn't actually exist. The schema is just a demo for [Avrodoc](https://github.com/ept/avrodoc)!",
+ "fields": [
{"name": "firstname", "type": "string"},
{"name": "lastname", "type": "string"},
- {
- "name": "address",
- "type": {
- "type" : "record",
- "name" : "AddressUSRecord",
- "fields" : [
- {"name": "streetaddress", "type": "string"},
- {"name": "city", "type": "string"}
- ]
- }
- },
- {
- "name": "id",
- "doc": "System-assigned numeric user ID. Cannot be changed by the user.",
- "type": "int"
- },
- {
- "name": "username",
- "doc": "The username chosen by the user. Can be changed by the user.",
- "type": "string"
- },
- {
- "name": "passwordHash",
- "doc": "The user's password, hashed using [scrypt](http://www.tarsnap.com/scrypt.html).",
- "type": "string"
- },
- {
- "name": "signupDate",
- "doc": "Timestamp (milliseconds since epoch) when the user signed up",
- "type": "long"
- },
- {
- "name": "emailAddresses",
- "doc": "All email addresses on the user's account",
- "type": {
- "type": "array",
- "items": {
- "type": "record",
- "name": "EmailAddress",
- "doc": "Stores details about an email address that a user has associated with their account.",
- "fields": [
- {
- "name": "address",
- "doc": "The email address, e.g. `foo@example.com`",
- "type": "string"
- },
- {
- "name": "verified",
- "doc": "true if the user has clicked the link in a confirmation email to this address.",
- "type": "boolean",
- "default": false
- },
- {
- "name": "dateAdded",
- "doc": "Timestamp (milliseconds since epoch) when the email address was added to the account.",
- "type": "long"
- },
- {
- "name": "dateBounced",
- "doc": "Timestamp (milliseconds since epoch) when an email sent to this address last bounced. Reset to null when the address no longer bounces.",
- "type": ["null", "long"]
- }
- ]
- }
- }
- },
- {
- "name": "twitterAccounts",
- "doc": "All Twitter accounts that the user has OAuthed",
- "type": {
- "type": "array",
- "items": {
- "type": "record",
- "name": "TwitterAccount",
- "doc": "Stores access credentials for one Twitter account, as granted to us by the user by OAuth.",
- "fields": [
- {
- "name": "status",
- "doc": "Indicator of whether this authorization is currently active, or has been revoked",
- "type": {
- "type": "enum",
- "name": "OAuthStatus",
- "doc": "* `PENDING`: the user has started authorizing, but not yet finished\n* `ACTIVE`: the token should work\n* `DENIED`: the user declined the authorization\n* `EXPIRED`: the token used to work, but now it doesn't\n* `REVOKED`: the user has explicitly revoked the token",
- "symbols": ["PENDING", "ACTIVE", "DENIED", "EXPIRED", "REVOKED"]
- }
- },
- {
- "name": "userId",
- "doc": "Twitter's numeric ID for this user",
- "type": "long"
- },
- {
- "name": "screenName",
- "doc": "The twitter username for this account (can be changed by the user)",
- "type": "string"
- },
- {
- "name": "oauthToken",
- "doc": "The OAuth token for this Twitter account",
- "type": "string"
- },
- {
- "name": "oauthTokenSecret",
- "doc": "The OAuth secret, used for signing requests on behalf of this Twitter account. `null` whilst the OAuth flow is not yet complete.",
- "type": ["null", "string"]
- },
- {
- "name": "dateAuthorized",
- "doc": "Timestamp (milliseconds since epoch) when the user last authorized this Twitter account",
- "type": "long"
- }
- ]
- }
- }
- },
- {
- "name": "toDoItems",
- "doc": "The top-level items in the user's to-do list",
- "type": {
- "type": "array",
- "items": {
- "type": "record",
- "name": "ToDoItem",
- "doc": "A record is one node in a To-Do item tree (every record can contain nested sub-records).",
- "fields": [
- {
- "name": "status",
- "doc": "User-selected state for this item (e.g. whether or not it is marked as done)",
- "type": {
- "type": "enum",
- "name": "ToDoStatus",
- "doc": "* `HIDDEN`: not currently visible, e.g. because it becomes actionable in future\n* `ACTIONABLE`: appears in the current to-do list\n* `DONE`: marked as done, but still appears in the list\n* `ARCHIVED`: marked as done and no longer visible\n* `DELETED`: not done and removed from list (preserved for undo purposes)",
- "symbols": ["HIDDEN", "ACTIONABLE", "DONE", "ARCHIVED", "DELETED"]
- }
- },
- {
- "name": "title",
- "doc": "One-line summary of the item",
- "type": "string"
- },
- {
- "name": "description",
- "doc": "Detailed description (may contain HTML markup)",
- "type": ["null", "string"]
- },
- {
- "name": "snoozeDate",
- "doc": "Timestamp (milliseconds since epoch) at which the item should go from `HIDDEN` to `ACTIONABLE` status",
- "type": ["null", "long"]
- },
- {
- "name": "subItems",
- "doc": "List of children of this to-do tree node",
- "type": {
- "type": "array",
- "items": "ToDoItem"
- }
- }
- ]
- }
- }
- }
- ]
+ {
+ "name": "address",
+ "type": {
+ "type" : "record",
+ "name" : "AddressUSRecord",
+ "fields" : [
+ {"name": "streetaddress", "type": "string"},
+ {"name": "city", "type": "string"}
+ ]
+ }
+ },
+ {
+ "name": "id",
+ "doc": "System-assigned numeric user ID. Cannot be changed by the user.",
+ "type": "int"
+ },
+ {
+ "name": "username",
+ "doc": "The username chosen by the user. Can be changed by the user.",
+ "type": "string"
+ },
+ {
+ "name": "passwordHash",
+ "doc": "The user's password, hashed using [scrypt](http://www.tarsnap.com/scrypt.html).",
+ "type": "string"
+ },
+ {
+ "name": "signupDate",
+ "doc": "Timestamp (milliseconds since epoch) when the user signed up",
+ "type": "long"
+ },
+ {
+ "name": "emailAddresses",
+ "doc": "All email addresses on the user's account",
+ "type": {
+ "type": "array",
+ "items": {
+ "type": "record",
+ "name": "EmailAddress",
+ "doc": "Stores details about an email address that a user has associated with their account.",
+ "fields": [
+ {
+ "name": "address",
+ "doc": "The email address, e.g. `foo@example.com`",
+ "type": "string"
+ },
+ {
+ "name": "verified",
+ "doc": "true if the user has clicked the link in a confirmation email to this address.",
+ "type": "boolean",
+ "default": false
+ },
+ {
+ "name": "dateAdded",
+ "doc": "Timestamp (milliseconds since epoch) when the email address was added to the account.",
+ "type": "long"
+ },
+ {
+ "name": "dateBounced",
+ "doc": "Timestamp (milliseconds since epoch) when an email sent to this address last bounced. Reset to null when the address no longer bounces.",
+ "type": ["null", "long"]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "name": "twitterAccounts",
+ "doc": "All Twitter accounts that the user has OAuthed",
+ "type": {
+ "type": "array",
+ "items": {
+ "type": "record",
+ "name": "TwitterAccount",
+ "doc": "Stores access credentials for one Twitter account, as granted to us by the user by OAuth.",
+ "fields": [
+ {
+ "name": "status",
+ "doc": "Indicator of whether this authorization is currently active, or has been revoked",
+ "type": {
+ "type": "enum",
+ "name": "OAuthStatus",
+ "doc": "* `PENDING`: the user has started authorizing, but not yet finished\n* `ACTIVE`: the token should work\n* `DENIED`: the user declined the authorization\n* `EXPIRED`: the token used to work, but now it doesn't\n* `REVOKED`: the user has explicitly revoked the token",
+ "symbols": ["PENDING", "ACTIVE", "DENIED", "EXPIRED", "REVOKED"]
+ }
+ },
+ {
+ "name": "userId",
+ "doc": "Twitter's numeric ID for this user",
+ "type": "long"
+ },
+ {
+ "name": "screenName",
+ "doc": "The twitter username for this account (can be changed by the user)",
+ "type": "string"
+ },
+ {
+ "name": "oauthToken",
+ "doc": "The OAuth token for this Twitter account",
+ "type": "string"
+ },
+ {
+ "name": "oauthTokenSecret",
+ "doc": "The OAuth secret, used for signing requests on behalf of this Twitter account. `null` whilst the OAuth flow is not yet complete.",
+ "type": ["null", "string"]
+ },
+ {
+ "name": "dateAuthorized",
+ "doc": "Timestamp (milliseconds since epoch) when the user last authorized this Twitter account",
+ "type": "long"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "name": "toDoItems",
+ "doc": "The top-level items in the user's to-do list",
+ "type": {
+ "type": "array",
+ "items": {
+ "type": "record",
+ "name": "ToDoItem",
+ "doc": "A record is one node in a To-Do item tree (every record can contain nested sub-records).",
+ "fields": [
+ {
+ "name": "status",
+ "doc": "User-selected state for this item (e.g. whether or not it is marked as done)",
+ "type": {
+ "type": "enum",
+ "name": "ToDoStatus",
+ "doc": "* `HIDDEN`: not currently visible, e.g. because it becomes actionable in future\n* `ACTIONABLE`: appears in the current to-do list\n* `DONE`: marked as done, but still appears in the list\n* `ARCHIVED`: marked as done and no longer visible\n* `DELETED`: not done and removed from list (preserved for undo purposes)",
+ "symbols": ["HIDDEN", "ACTIONABLE", "DONE", "ARCHIVED", "DELETED"]
+ }
+ },
+ {
+ "name": "title",
+ "doc": "One-line summary of the item",
+ "type": "string"
+ },
+ {
+ "name": "description",
+ "doc": "Detailed description (may contain HTML markup)",
+ "type": ["null", "string"]
+ },
+ {
+ "name": "snoozeDate",
+ "doc": "Timestamp (milliseconds since epoch) at which the item should go from `HIDDEN` to `ACTIONABLE` status",
+ "type": ["null", "long"]
+ },
+ {
+ "name": "subItems",
+ "doc": "List of children of this to-do tree node",
+ "type": {
+ "type": "array",
+ "items": "ToDoItem"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
}
{
- "type": "record",
- "name": "User",
- "namespace": "com.example.avro",
- "doc": "This is a user record in a fictitious to-do-list management app. It supports arbitrary grouping and nesting of items, and allows you to add items by email or by tweeting.\n\nNote this app doesn't actually exist. The schema is just a demo for [Avrodoc](https://github.com/ept/avrodoc)!",
- "fields": [
+ "type": "record",
+ "name": "User",
+ "namespace": "com.example.avro",
+ "doc": "This is a user record in a fictitious to-do-list management app. It supports arbitrary grouping and nesting of items, and allows you to add items by email or by tweeting.\n\nNote this app doesn't actually exist. The schema is just a demo for [Avrodoc](https://github.com/ept/avrodoc)!",
+ "fields": [
{"name": "firstname", "type": "string"},
{"name": "lastname", "type": "string"},
- {
- "name": "address",
- "type": {
- "type" : "record",
- "name" : "AddressUSRecord",
- "fields" : [
- {"name": "streetaddress_DasH_1", "type": "string"},
- {"name": "city", "type": "string"}
- ]
- }
- },
- {
- "name": "id",
- "doc": "System-assigned numeric user ID. Cannot be changed by the user.",
- "type": "int"
- },
- {
- "name": "username",
- "doc": "The username chosen by the user. Can be changed by the user.",
- "type": "string"
- },
- {
- "name": "passwordHash",
- "doc": "The user's password, hashed using [scrypt](http://www.tarsnap.com/scrypt.html).",
- "type": "string"
- },
- {
- "name": "signupDate",
- "doc": "Timestamp (milliseconds since epoch) when the user signed up",
- "type": "long"
- },
- {
- "name": "email_DoT_Addresses",
- "doc": "All email addresses on the user's account",
- "type": {
- "type": "array",
- "items": {
- "type": "record",
- "name": "EmailAddress",
- "doc": "Stores details about an email address that a user has associated with their account.",
- "fields": [
- {
- "name": "address",
- "doc": "The email address, e.g. `foo@example.com`",
- "type": "string"
- },
- {
- "name": "verified",
- "doc": "true if the user has clicked the link in a confirmation email to this address.",
- "type": "boolean",
- "default": false
- },
- {
- "name": "dateAdded",
- "doc": "Timestamp (milliseconds since epoch) when the email address was added to the account.",
- "type": "long"
- },
- {
- "name": "dateBounced",
- "doc": "Timestamp (milliseconds since epoch) when an email sent to this address last bounced. Reset to null when the address no longer bounces.",
- "type": ["null", "long"]
- }
- ]
- }
- }
- },
- {
- "name": "twitterAccounts",
- "doc": "All Twitter accounts that the user has OAuthed",
- "type": {
- "type": "array",
- "items": {
- "type": "record",
- "name": "TwitterAccount",
- "doc": "Stores access credentials for one Twitter account, as granted to us by the user by OAuth.",
- "fields": [
- {
- "name": "status",
- "doc": "Indicator of whether this authorization is currently active, or has been revoked",
- "type": {
- "type": "enum",
- "name": "OAuthStatus",
- "doc": "* `PENDING`: the user has started authorizing, but not yet finished\n* `ACTIVE`: the token should work\n* `DENIED`: the user declined the authorization\n* `EXPIRED`: the token used to work, but now it doesn't\n* `REVOKED`: the user has explicitly revoked the token",
- "symbols": ["PENDING", "ACTIVE", "DENIED", "EXPIRED", "REVOKED"]
- }
- },
- {
- "name": "userId",
- "doc": "Twitter's numeric ID for this user",
- "type": "long"
- },
- {
- "name": "screenName",
- "doc": "The twitter username for this account (can be changed by the user)",
- "type": "string"
- },
- {
- "name": "oauthToken",
- "doc": "The OAuth token for this Twitter account",
- "type": "string"
- },
- {
- "name": "oauthTokenSecret",
- "doc": "The OAuth secret, used for signing requests on behalf of this Twitter account. `null` whilst the OAuth flow is not yet complete.",
- "type": ["null", "string"]
- },
- {
- "name": "dateAuthorized",
- "doc": "Timestamp (milliseconds since epoch) when the user last authorized this Twitter account",
- "type": "long"
- }
- ]
- }
- }
- },
- {
- "name": "toDoItems",
- "doc": "The top-level items in the user's to-do list",
- "type": {
- "type": "array",
- "items": {
- "type": "record",
- "name": "ToDoItem",
- "doc": "A record is one node in a To-Do item tree (every record can contain nested sub-records).",
- "fields": [
- {
- "name": "status",
- "doc": "User-selected state for this item (e.g. whether or not it is marked as done)",
- "type": {
- "type": "enum",
- "name": "ToDoStatus",
- "doc": "* `HIDDEN`: not currently visible, e.g. because it becomes actionable in future\n* `ACTIONABLE`: appears in the current to-do list\n* `DONE`: marked as done, but still appears in the list\n* `ARCHIVED`: marked as done and no longer visible\n* `DELETED`: not done and removed from list (preserved for undo purposes)",
- "symbols": ["HIDDEN", "ACTIONABLE", "DONE", "ARCHIVED", "DELETED"]
- }
- },
- {
- "name": "title_DasH_long",
- "doc": "One-line summary of the item",
- "type": "string"
- },
- {
- "name": "description",
- "doc": "Detailed description (may contain HTML markup)",
- "type": ["null", "string"]
- },
- {
- "name": "snoozeDate",
- "doc": "Timestamp (milliseconds since epoch) at which the item should go from `HIDDEN` to `ACTIONABLE` status",
- "type": ["null", "long"]
- },
- {
- "name": "subItems",
- "doc": "List of children of this to-do tree node",
- "type": {
- "type": "array",
- "items": "ToDoItem"
- }
- }
- ]
- }
- }
- }
- ]
+ {
+ "name": "address",
+ "type": {
+ "type" : "record",
+ "name" : "AddressUSRecord",
+ "fields" : [
+ {"name": "streetaddress_DasH_1", "type": "string"},
+ {"name": "city", "type": "string"}
+ ]
+ }
+ },
+ {
+ "name": "id",
+ "doc": "System-assigned numeric user ID. Cannot be changed by the user.",
+ "type": "int"
+ },
+ {
+ "name": "username",
+ "doc": "The username chosen by the user. Can be changed by the user.",
+ "type": "string"
+ },
+ {
+ "name": "passwordHash",
+ "doc": "The user's password, hashed using [scrypt](http://www.tarsnap.com/scrypt.html).",
+ "type": "string"
+ },
+ {
+ "name": "signupDate",
+ "doc": "Timestamp (milliseconds since epoch) when the user signed up",
+ "type": "long"
+ },
+ {
+ "name": "email_DoT_Addresses",
+ "doc": "All email addresses on the user's account",
+ "type": {
+ "type": "array",
+ "items": {
+ "type": "record",
+ "name": "EmailAddress",
+ "doc": "Stores details about an email address that a user has associated with their account.",
+ "fields": [
+ {
+ "name": "address",
+ "doc": "The email address, e.g. `foo@example.com`",
+ "type": "string"
+ },
+ {
+ "name": "verified",
+ "doc": "true if the user has clicked the link in a confirmation email to this address.",
+ "type": "boolean",
+ "default": false
+ },
+ {
+ "name": "dateAdded",
+ "doc": "Timestamp (milliseconds since epoch) when the email address was added to the account.",
+ "type": "long"
+ },
+ {
+ "name": "dateBounced",
+ "doc": "Timestamp (milliseconds since epoch) when an email sent to this address last bounced. Reset to null when the address no longer bounces.",
+ "type": ["null", "long"]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "name": "twitterAccounts",
+ "doc": "All Twitter accounts that the user has OAuthed",
+ "type": {
+ "type": "array",
+ "items": {
+ "type": "record",
+ "name": "TwitterAccount",
+ "doc": "Stores access credentials for one Twitter account, as granted to us by the user by OAuth.",
+ "fields": [
+ {
+ "name": "status",
+ "doc": "Indicator of whether this authorization is currently active, or has been revoked",
+ "type": {
+ "type": "enum",
+ "name": "OAuthStatus",
+ "doc": "* `PENDING`: the user has started authorizing, but not yet finished\n* `ACTIVE`: the token should work\n* `DENIED`: the user declined the authorization\n* `EXPIRED`: the token used to work, but now it doesn't\n* `REVOKED`: the user has explicitly revoked the token",
+ "symbols": ["PENDING", "ACTIVE", "DENIED", "EXPIRED", "REVOKED"]
+ }
+ },
+ {
+ "name": "userId",
+ "doc": "Twitter's numeric ID for this user",
+ "type": "long"
+ },
+ {
+ "name": "screenName",
+ "doc": "The twitter username for this account (can be changed by the user)",
+ "type": "string"
+ },
+ {
+ "name": "oauthToken",
+ "doc": "The OAuth token for this Twitter account",
+ "type": "string"
+ },
+ {
+ "name": "oauthTokenSecret",
+ "doc": "The OAuth secret, used for signing requests on behalf of this Twitter account. `null` whilst the OAuth flow is not yet complete.",
+ "type": ["null", "string"]
+ },
+ {
+ "name": "dateAuthorized",
+ "doc": "Timestamp (milliseconds since epoch) when the user last authorized this Twitter account",
+ "type": "long"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "name": "toDoItems",
+ "doc": "The top-level items in the user's to-do list",
+ "type": {
+ "type": "array",
+ "items": {
+ "type": "record",
+ "name": "ToDoItem",
+ "doc": "A record is one node in a To-Do item tree (every record can contain nested sub-records).",
+ "fields": [
+ {
+ "name": "status",
+ "doc": "User-selected state for this item (e.g. whether or not it is marked as done)",
+ "type": {
+ "type": "enum",
+ "name": "ToDoStatus",
+ "doc": "* `HIDDEN`: not currently visible, e.g. because it becomes actionable in future\n* `ACTIONABLE`: appears in the current to-do list\n* `DONE`: marked as done, but still appears in the list\n* `ARCHIVED`: marked as done and no longer visible\n* `DELETED`: not done and removed from list (preserved for undo purposes)",
+ "symbols": ["HIDDEN", "ACTIONABLE", "DONE", "ARCHIVED", "DELETED"]
+ }
+ },
+ {
+ "name": "title_DasH_long",
+ "doc": "One-line summary of the item",
+ "type": "string"
+ },
+ {
+ "name": "description",
+ "doc": "Detailed description (may contain HTML markup)",
+ "type": ["null", "string"]
+ },
+ {
+ "name": "snoozeDate",
+ "doc": "Timestamp (milliseconds since epoch) at which the item should go from `HIDDEN` to `ACTIONABLE` status",
+ "type": ["null", "long"]
+ },
+ {
+ "name": "subItems",
+ "doc": "List of children of this to-do tree node",
+ "type": {
+ "type": "array",
+ "items": "ToDoItem"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
}
{
"type" : "record",
"name" : "VPNActEvent",
- "namespace" : "com.ericsson.apex.domains.vpn.events",
+ "namespace" : "org.onap.policy.apex.domains.vpn.events",
"fields" : [
{"name": "nameSpace", "type": "string"},
{"name": "name", "type": "string"},
{"name": "LinkMap", "type": {
"type" : "record",
"name" : "LinkMap",
- "namespace" : "com.ericsson.apex.domains.vpn",
+ "namespace" : "org.onap.policy.apex.domains.vpn",
"fields" : [ ]
}
},
{"name": "CustomerMap", "type": {
"type" : "record",
"name" : "CustomerMap",
- "namespace" : "com.ericsson.apex.domains.vpn",
+ "namespace" : "org.onap.policy.apex.domains.vpn",
"fields" : [ ]
}
}
{
- "type" : "record",
- "name" : "VPNActEvent",
- "namespace" : "com.ericsson.apex.domains.vpn.events",
- "fields" : [
- {"name": "nameSpace", "type": "string"},
- {"name": "name", "type": "string"},
- {"name": "version", "type": "string"},
- {"name": "source", "type": "string"},
- {"name": "target", "type": "string"},
- {"name": "LinkMap", "type": {
- "type" : "record",
- "name" : "LinkMap",
- "namespace" : "com.ericsson.apex.domains.vpn",
- "fields" : [ ]
- }
- },
- {"name": "CustomerMap", "type": {
- "type" : "record",
- "name" : "CustomerMap",
- "namespace" : "com.ericsson.apex.domains.vpn",
- "fields" : [ ]
- }
- },
- {"name": "CustomerMap1", "type": "com.ericsson.apex.domains.vpn.CustomerMap"},
- {
- "name" : "CustomerMapArray",
- "type": {
- "type": "array",
- "items": "com.ericsson.apex.domains.vpn.CustomerMap"
- }
- }
- ]
+ "type" : "record",
+ "name" : "VPNActEvent",
+ "namespace" : "org.onap.policy.apex.domains.vpn.events",
+ "fields" : [
+ {"name": "nameSpace", "type": "string"},
+ {"name": "name", "type": "string"},
+ {"name": "version", "type": "string"},
+ {"name": "source", "type": "string"},
+ {"name": "target", "type": "string"},
+ {"name": "LinkMap", "type": {
+ "type" : "record",
+ "name" : "LinkMap",
+ "namespace" : "org.onap.policy.apex.domains.vpn",
+ "fields" : [ ]
+ }
+ },
+ {"name": "CustomerMap", "type": {
+ "type" : "record",
+ "name" : "CustomerMap",
+ "namespace" : "org.onap.policy.apex.domains.vpn",
+ "fields" : [ ]
+ }
+ },
+ {"name": "CustomerMap1", "type": "org.onap.policy.apex.domains.vpn.CustomerMap"},
+ {
+ "name" : "CustomerMapArray",
+ "type": {
+ "type": "array",
+ "items": "org.onap.policy.apex.domains.vpn.CustomerMap"
+ }
+ }
+ ]
}
{
- "namespace": "example.avro",
- "type": "record",
- "name": "User",
- "fields": [
- {
- "name": "name",
- "type": "string"
- },
- {
- "name": "favourite_number",
- "type": [
- "null",
- "int"
- ]
- },
- {
- "name": "favourite_colour",
- "type": [
- "null",
- "string"
- ]
- },
- {
- "name": "favourite_group",
- "type": ["null", "string"],
- "default": "null"
- }
- ]
+ "namespace": "example.avro",
+ "type": "record",
+ "name": "User",
+ "fields": [
+ {
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "name": "favourite_number",
+ "type": [
+ "null",
+ "int"
+ ]
+ },
+ {
+ "name": "favourite_colour",
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ {
+ "name": "favourite_group",
+ "type": ["null", "string"],
+ "default": "null"
+ }
+ ]
}
\ No newline at end of file
[
- {
- "model-name": "service-instance",
- "generic-vnf": {
- "vnf-id": "de7cc3ab-0212-47df-9e64-da1c79234deb",
- "vnf-name": "ZRDM2MMEX39",
- "vnf-type": "vMME Svc Jul 14/vMME VF Jul 14 1",
- "service-id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
- "orchestration-status": "active",
- "in-maint": false,
- "is-closed-loop-disabled": false,
- "resource-version": "1503082370097",
- "model-invariant-id": "82194af1-3c2c-485a-8f44-420e22a9eaa4",
- "model-version-id": "46b92144-923a-4d20-b85a-3cbd847668a9"
- },
- "extra-properties": {
-
- }
- }
+ {
+ "model-name": "service-instance",
+ "generic-vnf": {
+ "vnf-id": "de7cc3ab-0212-47df-9e64-da1c79234deb",
+ "vnf-name": "ZRDM2MMEX39",
+ "vnf-type": "vMME Svc Jul 14/vMME VF Jul 14 1",
+ "service-id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "orchestration-status": "active",
+ "in-maint": false,
+ "is-closed-loop-disabled": false,
+ "resource-version": "1503082370097",
+ "model-invariant-id": "82194af1-3c2c-485a-8f44-420e22a9eaa4",
+ "model-version-id": "46b92144-923a-4d20-b85a-3cbd847668a9"
+ },
+ "extra-properties": {
+
+ }
+ }
]
[
- {
- "model-name": "vFW",
- "generic-vnf": {
- "vnf-id": "vFirewall_demo_app",
- "vnf-name": "vFirewall_demo_app",
- "vnf-type": "vFW",
- "service-id": "vFirewall_demo_app",
- "orchestration-status": "running",
- "in-maint": false,
- "is-closed-loop-disabled": false,
- "resource-version": "1509456799110",
- "model-invariant-id": "vFirewall",
- "model-version-id": "vFW"
- },
- "extra-properties": {
-
- },
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "vserver": {
- "vserver-id": "5b06cf36-40a0-4bcb-bde9-849aa4702d67",
- "vserver-name": "vFW",
- "vserver-name2": "vFW",
- "prov-status": "Running",
- "vserver-selflink": "http://10.12.25.2:8774/v2.1/466979b815b5415ba14ada713e6e1846/servers/5b06cf36-40a0-4bcb-bde9-849aa4702d67",
- "in-maint": false,
- "is-closed-loop-disabled": false,
- "resource-version": "1509047869791"
- },
- "extra-properties": {
-
- },
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "vnfc": {
- "vnfc-name": "VNFC_vGMUX_demo_app2",
- "nfc-naming-code": "vGMUXCODE2",
- "nfc-function": "vGMUX",
- "prov-status": "Running",
- "orchestration-status": "Error",
- "in-maint": false,
- "is-closed-loop-disabled": false,
- "resource-version": "1509407048855"
- },
- "extra-properties": {
-
- }
- },
- {
- "tenant": {
- "tenant-id": "466979b815b5415ba14ada713e6e1846",
- "tenant-name": "Integration",
- "resource-version": "1508920100541"
- },
- "extra-properties": {
-
- },
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "cloud-region": {
- "cloud-owner": "pod25",
- "cloud-region-id": "RegionOne",
- "identity-url": "http://10.12.25.2:5000/v3",
- "sriov-automation": false,
- "resource-version": "1509048416263"
- },
- "extra-properties": {
-
- },
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "esr-system-info": {
- "esr-system-info-id": "432ac032-e996-41f2-84ed-9c7a1766eb29",
- "system-name": "example-system-name-val-29070",
- "type": "example-type-val-85254",
- "vendor": "example-vendor-val-94515",
- "version": "example-version-val-71880",
- "service-url": "http://10.12.25.2:5000/v3",
- "user-name": "demo",
- "password": "onapdemo",
- "system-type": "VIM",
- "ssl-cacert": "example-ssl-cacert-val-75021",
- "ssl-insecure": true,
- "ip-address": "example-ip-address-val-44431",
- "port": "example-port-val-93234",
- "cloud-domain": "Default",
- "default-tenant": "Integration",
- "resource-version": "1508920101033"
- },
- "extra-properties": {
-
- }
- }
- ]
- }
- }
- ]
- }
- }
- ]
- }
- },
- {
- "vserver": {
- "vserver-id": "0c52905c-f682-42cf-bd52-e7f8953e80e3",
- "vserver-name": "vFW",
- "vserver-name2": "vFW",
- "prov-status": "Running",
- "vserver-selflink": "http://10.12.25.2:8774/v2.1/466979b815b5415ba14ada713e6e1846/servers/0c52905c-f682-42cf-bd52-e7f8953e80e3",
- "in-maint": false,
- "is-closed-loop-disabled": false,
- "resource-version": "1509047548567"
- },
- "extra-properties": {
-
- },
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "vnfc": {
- "vnfc-name": "VNFC_vGMUX_demo_app3",
- "nfc-naming-code": "vGMUXCODE3",
- "nfc-function": "vGMUX",
- "prov-status": "Running",
- "orchestration-status": "Running",
- "in-maint": false,
- "is-closed-loop-disabled": false,
- "resource-version": "1509041912808"
- },
- "extra-properties": {
-
- }
- },
- {
- "tenant": {
- "tenant-id": "466979b815b5415ba14ada713e6e1846",
- "tenant-name": "Integration",
- "resource-version": "1508920100541"
- },
- "extra-properties": {
-
- },
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "cloud-region": {
- "cloud-owner": "pod25",
- "cloud-region-id": "RegionOne",
- "identity-url": "http://10.12.25.2:5000/v3",
- "sriov-automation": false,
- "resource-version": "1509048416263"
- },
- "extra-properties": {
-
- },
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "esr-system-info": {
- "esr-system-info-id": "432ac032-e996-41f2-84ed-9c7a1766eb29",
- "system-name": "example-system-name-val-29070",
- "type": "example-type-val-85254",
- "vendor": "example-vendor-val-94515",
- "version": "example-version-val-71880",
- "service-url": "http://10.12.25.2:5000/v3",
- "user-name": "demo",
- "password": "onapdemo",
- "system-type": "VIM",
- "ssl-cacert": "example-ssl-cacert-val-75021",
- "ssl-insecure": true,
- "ip-address": "example-ip-address-val-44431",
- "port": "example-port-val-93234",
- "cloud-domain": "Default",
- "default-tenant": "Integration",
- "resource-version": "1508920101033"
- },
- "extra-properties": {
-
- }
- }
- ]
- }
- }
- ]
- }
- }
- ]
- }
- },
- {
- "vserver": {
- "vserver-id": "33e16e02-098a-4f4e-a37f-b4e0307596c0",
- "vserver-name": "vFW",
- "vserver-name2": "vFW",
- "prov-status": "Running",
- "vserver-selflink": "http://10.12.25.2:8774/v2.1/466979b815b5415ba14ada713e6e1846/servers/33e16e02-098a-4f4e-a37f-b4e0307596c0",
- "in-maint": false,
- "is-closed-loop-disabled": false,
- "resource-version": "1509047285114"
- },
- "extra-properties": {
-
- },
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "vnfc": {
- "vnfc-name": "vnfc-related-to-vserver-example",
- "nfc-naming-code": "example-nfc-naming-code-val-78172",
- "nfc-function": "example-nfc-function-val-56352",
- "prov-status": "example-prov-status-val-10699",
- "orchestration-status": "example-orchestration-status-val-68896",
- "ipaddress-v4-oam-vip": "example-ipaddress-v4-oam-vip-val-71483",
- "in-maint": true,
- "is-closed-loop-disabled": true,
- "group-notation": "example-group-notation-val-31912",
- "resource-version": "1508800709772"
- },
- "extra-properties": {
-
- }
- },
- {
- "vnfc": {
- "vnfc-name": "VNFC_vGMUX_demo_app",
- "nfc-naming-code": "vGMUXCODE",
- "nfc-function": "vGMUX",
- "prov-status": "Running",
- "orchestration-status": "Running",
- "in-maint": false,
- "is-closed-loop-disabled": false,
- "resource-version": "1509041573965"
- },
- "extra-properties": {
-
- }
- },
- {
- "tenant": {
- "tenant-id": "466979b815b5415ba14ada713e6e1846",
- "tenant-name": "Integration",
- "resource-version": "1508920100541"
- },
- "extra-properties": {
-
- },
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "cloud-region": {
- "cloud-owner": "pod25",
- "cloud-region-id": "RegionOne",
- "identity-url": "http://10.12.25.2:5000/v3",
- "sriov-automation": false,
- "resource-version": "1509048416263"
- },
- "extra-properties": {
-
- },
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "esr-system-info": {
- "esr-system-info-id": "432ac032-e996-41f2-84ed-9c7a1766eb29",
- "system-name": "example-system-name-val-29070",
- "type": "example-type-val-85254",
- "vendor": "example-vendor-val-94515",
- "version": "example-version-val-71880",
- "service-url": "http://10.12.25.2:5000/v3",
- "user-name": "demo",
- "password": "onapdemo",
- "system-type": "VIM",
- "ssl-cacert": "example-ssl-cacert-val-75021",
- "ssl-insecure": true,
- "ip-address": "example-ip-address-val-44431",
- "port": "example-port-val-93234",
- "cloud-domain": "Default",
- "default-tenant": "Integration",
- "resource-version": "1508920101033"
- },
- "extra-properties": {
-
- }
- }
- ]
- }
- }
- ]
- }
- }
- ]
- }
- }
- ]
- }
- }
+ {
+ "model-name": "vFW",
+ "generic-vnf": {
+ "vnf-id": "vFirewall_demo_app",
+ "vnf-name": "vFirewall_demo_app",
+ "vnf-type": "vFW",
+ "service-id": "vFirewall_demo_app",
+ "orchestration-status": "running",
+ "in-maint": false,
+ "is-closed-loop-disabled": false,
+ "resource-version": "1509456799110",
+ "model-invariant-id": "vFirewall",
+ "model-version-id": "vFW"
+ },
+ "extra-properties": {
+
+ },
+ "inventory-response-items": {
+ "inventory-response-item": [
+ {
+ "vserver": {
+ "vserver-id": "5b06cf36-40a0-4bcb-bde9-849aa4702d67",
+ "vserver-name": "vFW",
+ "vserver-name2": "vFW",
+ "prov-status": "Running",
+ "vserver-selflink": "http://10.12.25.2:8774/v2.1/466979b815b5415ba14ada713e6e1846/servers/5b06cf36-40a0-4bcb-bde9-849aa4702d67",
+ "in-maint": false,
+ "is-closed-loop-disabled": false,
+ "resource-version": "1509047869791"
+ },
+ "extra-properties": {
+
+ },
+ "inventory-response-items": {
+ "inventory-response-item": [
+ {
+ "vnfc": {
+ "vnfc-name": "VNFC_vGMUX_demo_app2",
+ "nfc-naming-code": "vGMUXCODE2",
+ "nfc-function": "vGMUX",
+ "prov-status": "Running",
+ "orchestration-status": "Error",
+ "in-maint": false,
+ "is-closed-loop-disabled": false,
+ "resource-version": "1509407048855"
+ },
+ "extra-properties": {
+
+ }
+ },
+ {
+ "tenant": {
+ "tenant-id": "466979b815b5415ba14ada713e6e1846",
+ "tenant-name": "Integration",
+ "resource-version": "1508920100541"
+ },
+ "extra-properties": {
+
+ },
+ "inventory-response-items": {
+ "inventory-response-item": [
+ {
+ "cloud-region": {
+ "cloud-owner": "pod25",
+ "cloud-region-id": "RegionOne",
+ "identity-url": "http://10.12.25.2:5000/v3",
+ "sriov-automation": false,
+ "resource-version": "1509048416263"
+ },
+ "extra-properties": {
+
+ },
+ "inventory-response-items": {
+ "inventory-response-item": [
+ {
+ "esr-system-info": {
+ "esr-system-info-id": "432ac032-e996-41f2-84ed-9c7a1766eb29",
+ "system-name": "example-system-name-val-29070",
+ "type": "example-type-val-85254",
+ "vendor": "example-vendor-val-94515",
+ "version": "example-version-val-71880",
+ "service-url": "http://10.12.25.2:5000/v3",
+ "user-name": "demo",
+ "password": "onapdemo",
+ "system-type": "VIM",
+ "ssl-cacert": "example-ssl-cacert-val-75021",
+ "ssl-insecure": true,
+ "ip-address": "example-ip-address-val-44431",
+ "port": "example-port-val-93234",
+ "cloud-domain": "Default",
+ "default-tenant": "Integration",
+ "resource-version": "1508920101033"
+ },
+ "extra-properties": {
+
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "vserver": {
+ "vserver-id": "0c52905c-f682-42cf-bd52-e7f8953e80e3",
+ "vserver-name": "vFW",
+ "vserver-name2": "vFW",
+ "prov-status": "Running",
+ "vserver-selflink": "http://10.12.25.2:8774/v2.1/466979b815b5415ba14ada713e6e1846/servers/0c52905c-f682-42cf-bd52-e7f8953e80e3",
+ "in-maint": false,
+ "is-closed-loop-disabled": false,
+ "resource-version": "1509047548567"
+ },
+ "extra-properties": {
+
+ },
+ "inventory-response-items": {
+ "inventory-response-item": [
+ {
+ "vnfc": {
+ "vnfc-name": "VNFC_vGMUX_demo_app3",
+ "nfc-naming-code": "vGMUXCODE3",
+ "nfc-function": "vGMUX",
+ "prov-status": "Running",
+ "orchestration-status": "Running",
+ "in-maint": false,
+ "is-closed-loop-disabled": false,
+ "resource-version": "1509041912808"
+ },
+ "extra-properties": {
+
+ }
+ },
+ {
+ "tenant": {
+ "tenant-id": "466979b815b5415ba14ada713e6e1846",
+ "tenant-name": "Integration",
+ "resource-version": "1508920100541"
+ },
+ "extra-properties": {
+
+ },
+ "inventory-response-items": {
+ "inventory-response-item": [
+ {
+ "cloud-region": {
+ "cloud-owner": "pod25",
+ "cloud-region-id": "RegionOne",
+ "identity-url": "http://10.12.25.2:5000/v3",
+ "sriov-automation": false,
+ "resource-version": "1509048416263"
+ },
+ "extra-properties": {
+
+ },
+ "inventory-response-items": {
+ "inventory-response-item": [
+ {
+ "esr-system-info": {
+ "esr-system-info-id": "432ac032-e996-41f2-84ed-9c7a1766eb29",
+ "system-name": "example-system-name-val-29070",
+ "type": "example-type-val-85254",
+ "vendor": "example-vendor-val-94515",
+ "version": "example-version-val-71880",
+ "service-url": "http://10.12.25.2:5000/v3",
+ "user-name": "demo",
+ "password": "onapdemo",
+ "system-type": "VIM",
+ "ssl-cacert": "example-ssl-cacert-val-75021",
+ "ssl-insecure": true,
+ "ip-address": "example-ip-address-val-44431",
+ "port": "example-port-val-93234",
+ "cloud-domain": "Default",
+ "default-tenant": "Integration",
+ "resource-version": "1508920101033"
+ },
+ "extra-properties": {
+
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "vserver": {
+ "vserver-id": "33e16e02-098a-4f4e-a37f-b4e0307596c0",
+ "vserver-name": "vFW",
+ "vserver-name2": "vFW",
+ "prov-status": "Running",
+ "vserver-selflink": "http://10.12.25.2:8774/v2.1/466979b815b5415ba14ada713e6e1846/servers/33e16e02-098a-4f4e-a37f-b4e0307596c0",
+ "in-maint": false,
+ "is-closed-loop-disabled": false,
+ "resource-version": "1509047285114"
+ },
+ "extra-properties": {
+
+ },
+ "inventory-response-items": {
+ "inventory-response-item": [
+ {
+ "vnfc": {
+ "vnfc-name": "vnfc-related-to-vserver-example",
+ "nfc-naming-code": "example-nfc-naming-code-val-78172",
+ "nfc-function": "example-nfc-function-val-56352",
+ "prov-status": "example-prov-status-val-10699",
+ "orchestration-status": "example-orchestration-status-val-68896",
+ "ipaddress-v4-oam-vip": "example-ipaddress-v4-oam-vip-val-71483",
+ "in-maint": true,
+ "is-closed-loop-disabled": true,
+ "group-notation": "example-group-notation-val-31912",
+ "resource-version": "1508800709772"
+ },
+ "extra-properties": {
+
+ }
+ },
+ {
+ "vnfc": {
+ "vnfc-name": "VNFC_vGMUX_demo_app",
+ "nfc-naming-code": "vGMUXCODE",
+ "nfc-function": "vGMUX",
+ "prov-status": "Running",
+ "orchestration-status": "Running",
+ "in-maint": false,
+ "is-closed-loop-disabled": false,
+ "resource-version": "1509041573965"
+ },
+ "extra-properties": {
+
+ }
+ },
+ {
+ "tenant": {
+ "tenant-id": "466979b815b5415ba14ada713e6e1846",
+ "tenant-name": "Integration",
+ "resource-version": "1508920100541"
+ },
+ "extra-properties": {
+
+ },
+ "inventory-response-items": {
+ "inventory-response-item": [
+ {
+ "cloud-region": {
+ "cloud-owner": "pod25",
+ "cloud-region-id": "RegionOne",
+ "identity-url": "http://10.12.25.2:5000/v3",
+ "sriov-automation": false,
+ "resource-version": "1509048416263"
+ },
+ "extra-properties": {
+
+ },
+ "inventory-response-items": {
+ "inventory-response-item": [
+ {
+ "esr-system-info": {
+ "esr-system-info-id": "432ac032-e996-41f2-84ed-9c7a1766eb29",
+ "system-name": "example-system-name-val-29070",
+ "type": "example-type-val-85254",
+ "vendor": "example-vendor-val-94515",
+ "version": "example-version-val-71880",
+ "service-url": "http://10.12.25.2:5000/v3",
+ "user-name": "demo",
+ "password": "onapdemo",
+ "system-type": "VIM",
+ "ssl-cacert": "example-ssl-cacert-val-75021",
+ "ssl-insecure": true,
+ "ip-address": "example-ip-address-val-44431",
+ "port": "example-port-val-93234",
+ "cloud-domain": "Default",
+ "default-tenant": "Integration",
+ "resource-version": "1508920101033"
+ },
+ "extra-properties": {
+
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
]
{
- "inventory-response-item": [
- {
- "vserver": {
- "vserver-id": "6ed3642c-f7a1-4a7c-9290-3d51fe1531eb",
- "vserver-name": "zdfw1lb01lb02",
- "vserver-name2": "zdfw1lb01lb02",
- "prov-status": "ACTIVE",
- "vserver-selflink": "http://10.12.25.2:8774/v2.1/41d6d38489bd40b09ea8a6b6b852dcbd/servers/6ed3642c-f7a1-4a7c-9290-3d51fe1531eb",
- "in-maint": false,
- "is-closed-loop-disabled": false,
- "resource-version": "1510606403522"
- },
- "extra-properties": {
-
- },
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "model-name": "vLoadBalancer",
- "generic-vnf": {
- "vnf-id": "db373a8d-f7be-4d02-8ac8-6ca4c305d144",
- "vnf-name": "Vfmodule_vLB1113",
- "vnf-type": "vLoadBalancer-1106/vLoadBalancer 0",
- "service-id": "66f157fc-4148-4880-95f5-e120677e98d1",
- "prov-status": "PREPROV",
- "orchestration-status": "Created",
- "in-maint": false,
- "is-closed-loop-disabled": false,
- "resource-version": "1510604011851",
- "model-invariant-id": "cee050ed-92a5-494f-ab04-234307a846dc",
- "model-version-id": "fd65becc-6b2c-4fe8-ace9-cc29db9a3da2",
- "model-customization-id": "1983c783-444f-4e79-af3a-85e5d49628f3",
- "nf-type": "",
- "nf-function": "",
- "nf-role": "",
- "nf-naming-code": ""
- },
- "extra-properties": {
- "extra-property": [
- {
- "property-name": "model-ver.model-version-id",
- "property-value": "fd65becc-6b2c-4fe8-ace9-cc29db9a3da2"
- },
- {
- "property-name": "model-ver.model-name",
- "property-value": "vLoadBalancer"
- },
- {
- "property-name": "model.model-type",
- "property-value": "resource"
- },
- {
- "property-name": "model.model-invariant-id",
- "property-value": "cee050ed-92a5-494f-ab04-234307a846dc"
- },
- {
- "property-name": "model-ver.model-version",
- "property-value": "1.0"
- }
- ]
- },
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "model-name": "vLoadBalancer-1106",
- "service-instance": {
- "service-instance-id": "3b12f31f-8f2d-4f5c-b875-61ff1194b941",
- "service-instance-name": "vLoadBalancer-1113",
- "model-invariant-id": "1321d60d-f7ff-4300-96c2-6bf0b3268b7a",
- "model-version-id": "732d4692-4b97-46f9-a996-0b3339e88c50",
- "resource-version": "1510603936425"
- },
- "extra-properties": {
- "extra-property": [
- {
- "property-name": "model-ver.model-version-id",
- "property-value": "732d4692-4b97-46f9-a996-0b3339e88c50"
- },
- {
- "property-name": "model-ver.model-name",
- "property-value": "vLoadBalancer-1106"
- },
- {
- "property-name": "model.model-type",
- "property-value": "service"
- },
- {
- "property-name": "model.model-invariant-id",
- "property-value": "1321d60d-f7ff-4300-96c2-6bf0b3268b7a"
- },
- {
- "property-name": "model-ver.model-version",
- "property-value": "1.0"
- }
- ]
- }
- },
- {
- "model-name": "Vloadbalancer..base_vlb..module-0",
- "vf-module": {
- "vf-module-id": "e6b3e3eb-34e1-4c00-b8c1-2a4fbe479b12",
- "vf-module-name": "Vfmodule_vLB1113-1",
- "heat-stack-id": "Vfmodule_vLB1113-1/3dd6d900-772f-4fcc-a0cb-e250ab2bb4db",
- "orchestration-status": "active",
- "is-base-vf-module": true,
- "resource-version": "1510604612557",
- "model-invariant-id": "6d760188-9a24-451a-b05b-e08b86cb94f2",
- "model-version-id": "93facad9-55f2-4fe0-9574-814c2bc2d071",
- "model-customization-id": "93fd5bd4-8051-4074-8530-c0c504604df5",
- "module-index": 0
- },
- "extra-properties": {
- "extra-property": [
- {
- "property-name": "model-ver.model-version-id",
- "property-value": "93facad9-55f2-4fe0-9574-814c2bc2d071"
- },
- {
- "property-name": "model-ver.model-name",
- "property-value": "Vloadbalancer..base_vlb..module-0"
- },
- {
- "property-name": "model.model-type",
- "property-value": "resource"
- },
- {
- "property-name": "model.model-invariant-id",
- "property-value": "6d760188-9a24-451a-b05b-e08b86cb94f2"
- },
- {
- "property-name": "model-ver.model-version",
- "property-value": "1"
- }
- ]
- }
- },
- {
- "model-name": "Vloadbalancer..dnsscaling..module-1",
- "vf-module": {
- "vf-module-id": "dummy_db373a8d-f7be-4d02-8ac8-6ca4c305d144",
- "vf-module-name": "dummy_db373a8d-f7be-4d02-8ac8-6ca4c305d144",
- "is-base-vf-module": false,
- "resource-version": "1510610079687",
- "model-invariant-id": "356a1cff-71f2-4086-9980-a2927ce11c1c",
- "model-version-id": "6b93d804-cfc8-4be3-92cc-9336d135859a"
- },
- "extra-properties": {
- "extra-property": [
- {
- "property-name": "model-ver.model-version-id",
- "property-value": "6b93d804-cfc8-4be3-92cc-9336d135859a"
- },
- {
- "property-name": "model-ver.model-name",
- "property-value": "Vloadbalancer..dnsscaling..module-1"
- },
- {
- "property-name": "model.model-type",
- "property-value": "resource"
- },
- {
- "property-name": "model.model-invariant-id",
- "property-value": "356a1cff-71f2-4086-9980-a2927ce11c1c"
- },
- {
- "property-name": "model-ver.model-version",
- "property-value": "1"
- }
- ]
- }
- }
- ]
- }
- },
- {
- "tenant": {
- "tenant-id": "41d6d38489bd40b09ea8a6b6b852dcbd",
- "tenant-name": "Integration-SB-00",
- "resource-version": "1509587770200"
- },
- "extra-properties": {
-
- },
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "cloud-region": {
- "cloud-owner": "CloudOwner",
- "cloud-region-id": "RegionOne",
- "cloud-type": "SharedNode",
- "owner-defined-type": "OwnerType",
- "cloud-region-version": "v1",
- "cloud-zone": "CloudZone",
- "sriov-automation": false,
- "resource-version": "1509587770092"
- },
- "extra-properties": {
-
- }
- }
- ]
- }
- }
- ]
- }
- }
- ]
+ "inventory-response-item": [
+ {
+ "vserver": {
+ "vserver-id": "6ed3642c-f7a1-4a7c-9290-3d51fe1531eb",
+ "vserver-name": "zdfw1lb01lb02",
+ "vserver-name2": "zdfw1lb01lb02",
+ "prov-status": "ACTIVE",
+ "vserver-selflink": "http://10.12.25.2:8774/v2.1/41d6d38489bd40b09ea8a6b6b852dcbd/servers/6ed3642c-f7a1-4a7c-9290-3d51fe1531eb",
+ "in-maint": false,
+ "is-closed-loop-disabled": false,
+ "resource-version": "1510606403522"
+ },
+ "extra-properties": {
+
+ },
+ "inventory-response-items": {
+ "inventory-response-item": [
+ {
+ "model-name": "vLoadBalancer",
+ "generic-vnf": {
+ "vnf-id": "db373a8d-f7be-4d02-8ac8-6ca4c305d144",
+ "vnf-name": "Vfmodule_vLB1113",
+ "vnf-type": "vLoadBalancer-1106/vLoadBalancer 0",
+ "service-id": "66f157fc-4148-4880-95f5-e120677e98d1",
+ "prov-status": "PREPROV",
+ "orchestration-status": "Created",
+ "in-maint": false,
+ "is-closed-loop-disabled": false,
+ "resource-version": "1510604011851",
+ "model-invariant-id": "cee050ed-92a5-494f-ab04-234307a846dc",
+ "model-version-id": "fd65becc-6b2c-4fe8-ace9-cc29db9a3da2",
+ "model-customization-id": "1983c783-444f-4e79-af3a-85e5d49628f3",
+ "nf-type": "",
+ "nf-function": "",
+ "nf-role": "",
+ "nf-naming-code": ""
+ },
+ "extra-properties": {
+ "extra-property": [
+ {
+ "property-name": "model-ver.model-version-id",
+ "property-value": "fd65becc-6b2c-4fe8-ace9-cc29db9a3da2"
+ },
+ {
+ "property-name": "model-ver.model-name",
+ "property-value": "vLoadBalancer"
+ },
+ {
+ "property-name": "model.model-type",
+ "property-value": "resource"
+ },
+ {
+ "property-name": "model.model-invariant-id",
+ "property-value": "cee050ed-92a5-494f-ab04-234307a846dc"
+ },
+ {
+ "property-name": "model-ver.model-version",
+ "property-value": "1.0"
+ }
+ ]
+ },
+ "inventory-response-items": {
+ "inventory-response-item": [
+ {
+ "model-name": "vLoadBalancer-1106",
+ "service-instance": {
+ "service-instance-id": "3b12f31f-8f2d-4f5c-b875-61ff1194b941",
+ "service-instance-name": "vLoadBalancer-1113",
+ "model-invariant-id": "1321d60d-f7ff-4300-96c2-6bf0b3268b7a",
+ "model-version-id": "732d4692-4b97-46f9-a996-0b3339e88c50",
+ "resource-version": "1510603936425"
+ },
+ "extra-properties": {
+ "extra-property": [
+ {
+ "property-name": "model-ver.model-version-id",
+ "property-value": "732d4692-4b97-46f9-a996-0b3339e88c50"
+ },
+ {
+ "property-name": "model-ver.model-name",
+ "property-value": "vLoadBalancer-1106"
+ },
+ {
+ "property-name": "model.model-type",
+ "property-value": "service"
+ },
+ {
+ "property-name": "model.model-invariant-id",
+ "property-value": "1321d60d-f7ff-4300-96c2-6bf0b3268b7a"
+ },
+ {
+ "property-name": "model-ver.model-version",
+ "property-value": "1.0"
+ }
+ ]
+ }
+ },
+ {
+ "model-name": "Vloadbalancer..base_vlb..module-0",
+ "vf-module": {
+ "vf-module-id": "e6b3e3eb-34e1-4c00-b8c1-2a4fbe479b12",
+ "vf-module-name": "Vfmodule_vLB1113-1",
+ "heat-stack-id": "Vfmodule_vLB1113-1/3dd6d900-772f-4fcc-a0cb-e250ab2bb4db",
+ "orchestration-status": "active",
+ "is-base-vf-module": true,
+ "resource-version": "1510604612557",
+ "model-invariant-id": "6d760188-9a24-451a-b05b-e08b86cb94f2",
+ "model-version-id": "93facad9-55f2-4fe0-9574-814c2bc2d071",
+ "model-customization-id": "93fd5bd4-8051-4074-8530-c0c504604df5",
+ "module-index": 0
+ },
+ "extra-properties": {
+ "extra-property": [
+ {
+ "property-name": "model-ver.model-version-id",
+ "property-value": "93facad9-55f2-4fe0-9574-814c2bc2d071"
+ },
+ {
+ "property-name": "model-ver.model-name",
+ "property-value": "Vloadbalancer..base_vlb..module-0"
+ },
+ {
+ "property-name": "model.model-type",
+ "property-value": "resource"
+ },
+ {
+ "property-name": "model.model-invariant-id",
+ "property-value": "6d760188-9a24-451a-b05b-e08b86cb94f2"
+ },
+ {
+ "property-name": "model-ver.model-version",
+ "property-value": "1"
+ }
+ ]
+ }
+ },
+ {
+ "model-name": "Vloadbalancer..dnsscaling..module-1",
+ "vf-module": {
+ "vf-module-id": "dummy_db373a8d-f7be-4d02-8ac8-6ca4c305d144",
+ "vf-module-name": "dummy_db373a8d-f7be-4d02-8ac8-6ca4c305d144",
+ "is-base-vf-module": false,
+ "resource-version": "1510610079687",
+ "model-invariant-id": "356a1cff-71f2-4086-9980-a2927ce11c1c",
+ "model-version-id": "6b93d804-cfc8-4be3-92cc-9336d135859a"
+ },
+ "extra-properties": {
+ "extra-property": [
+ {
+ "property-name": "model-ver.model-version-id",
+ "property-value": "6b93d804-cfc8-4be3-92cc-9336d135859a"
+ },
+ {
+ "property-name": "model-ver.model-name",
+ "property-value": "Vloadbalancer..dnsscaling..module-1"
+ },
+ {
+ "property-name": "model.model-type",
+ "property-value": "resource"
+ },
+ {
+ "property-name": "model.model-invariant-id",
+ "property-value": "356a1cff-71f2-4086-9980-a2927ce11c1c"
+ },
+ {
+ "property-name": "model-ver.model-version",
+ "property-value": "1"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "tenant": {
+ "tenant-id": "41d6d38489bd40b09ea8a6b6b852dcbd",
+ "tenant-name": "Integration-SB-00",
+ "resource-version": "1509587770200"
+ },
+ "extra-properties": {
+
+ },
+ "inventory-response-items": {
+ "inventory-response-item": [
+ {
+ "cloud-region": {
+ "cloud-owner": "CloudOwner",
+ "cloud-region-id": "RegionOne",
+ "cloud-type": "SharedNode",
+ "owner-defined-type": "OwnerType",
+ "cloud-region-version": "v1",
+ "cloud-zone": "CloudZone",
+ "sriov-automation": false,
+ "resource-version": "1509587770092"
+ },
+ "extra-properties": {
+
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
}
{
- "input": {
- "action": "HealthCheck",
- "action-identifiers": {
- "vnf-id": "49414df5-3482-4fd8-9952-c463dff2770b"
- },
- "common-header": {
- "request-id": "afr-request3",
- "originator-id": "AFR",
- "api-ver": "2.15",
- "sub-request-id": "AFR-subrequest",
- "timestamp": "2017-11-06T15:15:18.97Z",
- "flags": {
- "ttl": "10000",
- "force": "TRUE",
- "mode": "EXCLUSIVE"
- }
- },
- "payload": "{\"host-ip-address\":\"131.160.203.125\",\"input.url\":\"131.160.203.125/afr\",\"request-action-type\":\"GET\",\"request-action\":\"AFR\"}"
- }
+ "input": {
+ "action": "HealthCheck",
+ "action-identifiers": {
+ "vnf-id": "49414df5-3482-4fd8-9952-c463dff2770b"
+ },
+ "common-header": {
+ "request-id": "afr-request3",
+ "originator-id": "AFR",
+ "api-ver": "2.15",
+ "sub-request-id": "AFR-subrequest",
+ "timestamp": "2017-11-06T15:15:18.97Z",
+ "flags": {
+ "ttl": "10000",
+ "force": "TRUE",
+ "mode": "EXCLUSIVE"
+ }
+ },
+ "payload": "{\"host-ip-address\":\"131.160.203.125\",\"input.url\":\"131.160.203.125/afr\",\"request-action-type\":\"GET\",\"request-action\":\"AFR\"}"
+ }
}
{
- "address0" : {
- "streetaddress" : "1600 Pennsylvania Avenue",
- "city" : "Washington DC"
- },
- "address1" : {
- "streetaddress" : "Somewhere",
- "city" : "Over the rainbow"
- },
- "address2" : {
- "streetaddress" : "221 B Baker St.",
- "city" : "London"
- },
- "address3" : {
- "streetaddress" : "Wayne Manor",
- "city" : "Gotham City"
- }
+ "address0" : {
+ "streetaddress" : "1600 Pennsylvania Avenue",
+ "city" : "Washington DC"
+ },
+ "address1" : {
+ "streetaddress" : "Somewhere",
+ "city" : "Over the rainbow"
+ },
+ "address2" : {
+ "streetaddress" : "221 B Baker St.",
+ "city" : "London"
+ },
+ "address3" : {
+ "streetaddress" : "Wayne Manor",
+ "city" : "Gotham City"
+ }
}
\ No newline at end of file
{
- "address.0" : {
- "street-address" : "1600 Pennsylvania Avenue",
- "the.city" : "Washington DC"
- },
- "address.1" : {
- "street-address" : "Somewhere",
- "the.city" : "Over the rainbow"
- },
- "address.2" : {
- "street-address" : "221 B Baker St.",
- "the.city" : "London"
- },
- "address.3" : {
- "street-address" : "Wayne Manor",
- "the.city" : "Gotham City"
- }
+ "address.0" : {
+ "street-address" : "1600 Pennsylvania Avenue",
+ "the.city" : "Washington DC"
+ },
+ "address.1" : {
+ "street-address" : "Somewhere",
+ "the.city" : "Over the rainbow"
+ },
+ "address.2" : {
+ "street-address" : "221 B Baker St.",
+ "the.city" : "London"
+ },
+ "address.3" : {
+ "street-address" : "Wayne Manor",
+ "the.city" : "Gotham City"
+ }
}
\ No newline at end of file
{
- "nameSpace" : "com.ericsson.apex.domains.vpn.events",
+ "nameSpace" : "org.onap.policy.apex.domains.vpn.events",
"name" : "VPNTriggerEvent",
"version" : "0.0.1",
"source" : "VPNSLA",
{
- "name": "Alyssa",
- "favourite_number": 256,
- "favourite_colour": null,
- "favourite_group": "U2"
+ "name": "Alyssa",
+ "favourite_number": 256,
+ "favourite_colour": null,
+ "favourite_group": "U2"
}
\ No newline at end of file
{
- "name": "Claire",
- "favourite_number": 123,
- "favourite_colour": null
+ "name": "Claire",
+ "favourite_number": 123,
+ "favourite_colour": null
}
\ No newline at end of file
import java.util.Map;
import org.onap.policy.apex.core.infrastructure.messaging.MessagingException;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageClient;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageListener;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageServer;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessager;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageClient;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageListener;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageServer;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessager;
import org.onap.policy.apex.core.infrastructure.threading.ApplicationThreadFactory;
import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
import org.onap.policy.apex.service.engine.event.ApexEventConsumer;
*
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
-public class ApexWebSocketConsumer implements ApexEventConsumer, WSStringMessageListener, Runnable {
+public class ApexWebSocketConsumer implements ApexEventConsumer, WsStringMessageListener, Runnable {
private static final int WEB_SOCKET_WAIT_SLEEP_TIME = 100;
// Get a reference to the logger
private WEBSOCKETCarrierTechnologyParameters webSocketConsumerProperties;
// The web socket messager, may be WS a server or a client
- private WSStringMessager wsStringMessager;
+ private WsStringMessager wsStringMessager;
// The event receiver that will receive events from this consumer
private ApexEventReceiver eventReceiver;
// Check if this is a server or a client Web Socket
if (webSocketConsumerProperties.isWsClient()) {
// Create a WS client
- wsStringMessager = new WSStringMessageClient(webSocketConsumerProperties.getHost(),
+ wsStringMessager = new WsStringMessageClient(webSocketConsumerProperties.getHost(),
webSocketConsumerProperties.getPort());
} else {
- wsStringMessager = new WSStringMessageServer(webSocketConsumerProperties.getPort());
+ wsStringMessager = new WsStringMessageServer(webSocketConsumerProperties.getPort());
}
// Start reception of event strings on the web socket
import java.util.Map;
import org.onap.policy.apex.core.infrastructure.messaging.MessagingException;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageClient;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageListener;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageServer;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessager;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageClient;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageListener;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageServer;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessager;
import org.onap.policy.apex.service.engine.event.ApexEventException;
import org.onap.policy.apex.service.engine.event.ApexEventProducer;
import org.onap.policy.apex.service.engine.event.PeeredReference;
*
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
-public class ApexWebSocketProducer implements ApexEventProducer, WSStringMessageListener {
+public class ApexWebSocketProducer implements ApexEventProducer, WsStringMessageListener {
// Get a reference to the logger
private static final Logger LOGGER = LoggerFactory.getLogger(ApexWebSocketProducer.class);
private WEBSOCKETCarrierTechnologyParameters webSocketProducerProperties;
// The web socket messager, may be WS a server or a client
- private WSStringMessager wsStringMessager;
+ private WsStringMessager wsStringMessager;
// The name for this producer
private String name = null;
// Check if this is a server or a client Web Socket
if (webSocketProducerProperties.isWsClient()) {
// Create a WS client
- wsStringMessager = new WSStringMessageClient(webSocketProducerProperties.getHost(),
+ wsStringMessager = new WsStringMessageClient(webSocketProducerProperties.getHost(),
webSocketProducerProperties.getPort());
} else {
- wsStringMessager = new WSStringMessageServer(webSocketProducerProperties.getPort());
+ wsStringMessager = new WsStringMessageServer(webSocketProducerProperties.getPort());
}
// Start reception of event strings on the web socket
public static final String PERIODIC_EVENT_VERSION = "0.0.1";
/** The name space of the periodic event. */
- public static final String PERIODIC_EVENT_NAMESPACE = "com.ericsson.apex.service.engine.event";
+ public static final String PERIODIC_EVENT_NAMESPACE = "org.onap.policy.apex.service.engine.event";
/** The source of the periodic event. */
public static final String PERIODIC_EVENT_SOURCE = "internal";
axEvent.getNameSpace(), axEvent.getSource(), axEvent.getTarget());
// Copy the ExecutionID from the EnEvent into the ApexEvent
- apexEvent.setExecutionID(enEvent.getExecutionID());
+ apexEvent.setExecutionID(enEvent.getExecutionId());
// Copy he exception message to the Apex event if it is set
if (enEvent.getExceptionMessage() != null) {
enEvent.putAll(apexEvent);
// copy the ExecutionID from the ApexEvent into the EnEvent
- enEvent.setExecutionID(apexEvent.getExecutionID());
+ enEvent.setExecutionId(apexEvent.getExecutionID());
return enEvent;
}
/*
* (non-Javadoc)
*
- * @see com.ericsson.apex.service.engine.event.ApexEventProducer#init(java.lang.String,
- * com.ericsson.apex.service.parameters.producer.ProducerParameters)
+ * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#init(java.lang.String,
+ * org.onap.policy.apex.service.parameters.producer.ProducerParameters)
*/
@Override
public void init(final String name, final EventHandlerParameters producerParameters) throws ApexEventException {
/*
* (non-Javadoc)
*
- * @see com.ericsson.apex.service.engine.event.ApexEventProducer#getName()
+ * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#getName()
*/
@Override
public String getName() {
* (non-Javadoc)
*
* @see
- * com.ericsson.apex.service.engine.event.ApexEventProducer#getPeeredReference(com.ericsson.apex
+ * org.onap.policy.apex.service.engine.event.ApexEventProducer#getPeeredReference(org.onap.policy.apex
* .service.parameters.eventhandler.EventHandlerPeeredMode)
*/
@Override
* (non-Javadoc)
*
* @see
- * com.ericsson.apex.service.engine.event.ApexEventProducer#setPeeredReference(com.ericsson.apex
+ * org.onap.policy.apex.service.engine.event.ApexEventProducer#setPeeredReference(org.onap.policy.apex
* .service.parameters.eventhandler.EventHandlerPeeredMode,
- * com.ericsson.apex.service.engine.event.PeeredReference)
+ * org.onap.policy.apex.service.engine.event.PeeredReference)
*/
@Override
public void setPeeredReference(final EventHandlerPeeredMode peeredMode, final PeeredReference peeredReference) {}
/*
* (non-Javadoc)
*
- * @see com.ericsson.apex.service.engine.event.ApexEventProducer#sendEvent(long,
+ * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#sendEvent(long,
* java.lang.String, java.lang.Object)
*/
@Override
/*
* (non-Javadoc)
*
- * @see com.ericsson.apex.service.engine.event.ApexEventProducer#stop()
+ * @see org.onap.policy.apex.service.engine.event.ApexEventProducer#stop()
*/
@Override
public void stop() {}
executor.logger.debug(gc.name);
executor.subject.defaultTaskKey.copyTo(executor.selectedTask)
-var returnValue = executor.TRUE;
+var returnValue = executor.isTrue;
executor.outFields.put("Test<STATE_NAME>StateTime", timeNow.getTime());
executor.logger.debug(executor.eo);
-var returnValue = executor.TRUE;
+var returnValue = executor.isTrue;
executor.logger.debug(executor.subject.id);
executor.subject.defaultTaskKey.copyTo(executor.selectedTask);
-var returnValue = executor.TRUE;
+var returnValue = executor.isTrue;
executor.outFields.put("State<STATE_NUMBER>Timestamp", timeNow.getTime());
executor.logger.debug(executor.outFields);
-var returnValue = executor.TRUE;
+var returnValue = executor.isTrue;
executor.logger.debug('ctxt name: ' + executor.getContextAlbum("GlobalContextAlbum").name)
executor.subject.defaultTaskKey.copyTo(executor.selectedTask)
-returnValue = executor.TRUE
+returnValue = executor.isTrue
timeValue = Long(Date().getTime());
executor.outFields["Test<STATE_NAME>StateTime"] = timeValue
executor.logger.debug('outFields: ' + executor.outFields.toString())
-returnValue = executor.TRUE
+returnValue = executor.isTrue
executor.subject.defaultTaskKey.copyTo(executor.selectedTask);
-returnValue = executor.TRUE;
+returnValue = executor.isTrue;
<appender-ref ref="STDOUT" />
</logger>
- <logger name="com.ericsson.apex" level="INFO" additivity="false">
+ <logger name="org.onap.policy.apex" level="INFO" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
</configuration>
import org.onap.policy.apex.apps.uservice.test.adapt.events.EventGenerator;
import org.onap.policy.apex.core.infrastructure.messaging.MessagingException;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageClient;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageListener;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageClient;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageListener;
import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
-public class WebSocketEventProducerClient implements WSStringMessageListener {
+public class WebSocketEventProducerClient implements WsStringMessageListener {
private final String host;
private final int port;
private final int eventCount;
private final long eventInterval;
private long eventsSentCount = 0;
- WSStringMessageClient client;
+ WsStringMessageClient client;
public WebSocketEventProducerClient(final String host, final int port, final int eventCount,
final boolean xmlEvents, final long eventInterval) throws MessagingException {
this.xmlEvents = xmlEvents;
this.eventInterval = eventInterval;
- client = new WSStringMessageClient(host, port);
+ client = new WsStringMessageClient(host, port);
client.start(this);
System.out.println(WebSocketEventProducerClient.class.getCanonicalName() + ": host " + host + ", port " + port
import org.onap.policy.apex.apps.uservice.test.adapt.events.EventGenerator;
import org.onap.policy.apex.core.infrastructure.messaging.MessagingException;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageListener;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageServer;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageListener;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageServer;
import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
-public class WebSocketEventProducerServer implements WSStringMessageListener {
+public class WebSocketEventProducerServer implements WsStringMessageListener {
private final int port;
private final int eventCount;
private final boolean xmlEvents;
private final long eventInterval;
private long eventsSentCount = 0;
- WSStringMessageServer server;
+ WsStringMessageServer server;
public WebSocketEventProducerServer(final int port, final int eventCount, final boolean xmlEvents,
final long eventInterval) throws MessagingException {
this.xmlEvents = xmlEvents;
this.eventInterval = eventInterval;
- server = new WSStringMessageServer(port);
+ server = new WsStringMessageServer(port);
server.start(this);
System.out.println(WebSocketEventProducerServer.class.getCanonicalName() + ": port " + port + ", event count "
package org.onap.policy.apex.apps.uservice.test.adapt.websocket;
import org.onap.policy.apex.core.infrastructure.messaging.MessagingException;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageClient;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageListener;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageClient;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageListener;
-public class WebSocketEventSubscriberClient implements WSStringMessageListener {
+public class WebSocketEventSubscriberClient implements WsStringMessageListener {
private final int port;
private long eventsReceivedCount = 0;
- private final WSStringMessageClient client;
+ private final WsStringMessageClient client;
public WebSocketEventSubscriberClient(final String host, final int port) throws MessagingException {
this.port = port;
- client = new WSStringMessageClient(host, port);
+ client = new WsStringMessageClient(host, port);
client.start(this);
}
package org.onap.policy.apex.apps.uservice.test.adapt.websocket;
import org.onap.policy.apex.core.infrastructure.messaging.MessagingException;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageListener;
-import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WSStringMessageServer;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageListener;
+import org.onap.policy.apex.core.infrastructure.messaging.stringmessaging.WsStringMessageServer;
-public class WebSocketEventSubscriberServer implements WSStringMessageListener {
+public class WebSocketEventSubscriberServer implements WsStringMessageListener {
private final int port;
private long eventsReceivedCount = 0;
- private final WSStringMessageServer server;
+ private final WsStringMessageServer server;
public WebSocketEventSubscriberServer(final int port) throws MessagingException {
this.port = port;
- server = new WSStringMessageServer(port);
+ server = new WsStringMessageServer(port);
server.start(this);
System.out.println(
[source,xml,subs="attributes+"]
----
<dependency>
- <groupId>com.ericsson.apex.apps</groupId>
- <artifactId>apex-apps</artifactId>
+ <groupId>org.onap.policy.apex-pdp.tools</groupId>
+ <artifactId>tools-common</artifactId>
<version>{release-version}</version>
</dependency>
----