From f94d7521936e66febee983ee7633aacaaf9d7390 Mon Sep 17 00:00:00 2001 From: "waqas.ikram" Date: Tue, 5 Jun 2018 16:18:01 +0100 Subject: Adding apex plugins/plugins-context modules Change-Id: I36fc295ffbd22661bf8bd091bfb20ebf6dcc7f5e Issue-ID: POLICY-862 Signed-off-by: waqas.ikram --- .../context-distribution-hazelcast/pom.xml | 40 ++++++++ .../hazelcast/HazelcastContextDistributor.java | 106 +++++++++++++++++++++ .../distribution/hazelcast/package-info.java | 27 ++++++ .../main/resources/hazelcast/hazelcast.xml.sample | 55 +++++++++++ 4 files changed, 228 insertions(+) create mode 100644 plugins/plugins-context/context-distribution/context-distribution-hazelcast/pom.xml create mode 100644 plugins/plugins-context/context-distribution/context-distribution-hazelcast/src/main/java/org/onap/policy/apex/plugins/context/distribution/hazelcast/HazelcastContextDistributor.java create mode 100644 plugins/plugins-context/context-distribution/context-distribution-hazelcast/src/main/java/org/onap/policy/apex/plugins/context/distribution/hazelcast/package-info.java create mode 100644 plugins/plugins-context/context-distribution/context-distribution-hazelcast/src/main/resources/hazelcast/hazelcast.xml.sample (limited to 'plugins/plugins-context/context-distribution/context-distribution-hazelcast') diff --git a/plugins/plugins-context/context-distribution/context-distribution-hazelcast/pom.xml b/plugins/plugins-context/context-distribution/context-distribution-hazelcast/pom.xml new file mode 100644 index 000000000..ce80a7a89 --- /dev/null +++ b/plugins/plugins-context/context-distribution/context-distribution-hazelcast/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + org.onap.policy.apex-pdp.plugins.plugins-context.context-distribution + context-distribution + 2.0.0-SNAPSHOT + + + context-distribution-hazelcast + ${project.artifactId} + [${project.parent.artifactId}] Plugin for distribution using Hazelcast + + + + com.hazelcast + hazelcast + ${version.hazelcast} + + + \ No newline at end of file diff --git a/plugins/plugins-context/context-distribution/context-distribution-hazelcast/src/main/java/org/onap/policy/apex/plugins/context/distribution/hazelcast/HazelcastContextDistributor.java b/plugins/plugins-context/context-distribution/context-distribution-hazelcast/src/main/java/org/onap/policy/apex/plugins/context/distribution/hazelcast/HazelcastContextDistributor.java new file mode 100644 index 000000000..2b17b17cf --- /dev/null +++ b/plugins/plugins-context/context-distribution/context-distribution-hazelcast/src/main/java/org/onap/policy/apex/plugins/context/distribution/hazelcast/HazelcastContextDistributor.java @@ -0,0 +1,106 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.plugins.context.distribution.hazelcast; + +import java.util.Map; + +import org.onap.policy.apex.context.ContextException; +import org.onap.policy.apex.context.impl.distribution.AbstractDistributor; +import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; +import org.slf4j.ext.XLogger; +import org.slf4j.ext.XLoggerFactory; + +import com.hazelcast.core.Hazelcast; +import com.hazelcast.core.HazelcastInstance; + +/** + * This context distributor distributes context across threads in multiple JVMs on multiple hosts. + * It uses hazelcast to distribute maps. + * + * @author Liam Fallon (liam.fallon@ericsson.com) + */ +public class HazelcastContextDistributor extends AbstractDistributor { + // Logger for this class + private static final XLogger LOGGER = XLoggerFactory.getXLogger(HazelcastContextDistributor.class); + + // The hazelcast instance for distributing context for this JVM + private static HazelcastInstance hazelcastInstance = null; + + /** + * Create an instance of a Hazelcast Context Distributor. + * + * @throws ContextException On errors creating the context distributor + */ + public HazelcastContextDistributor() throws ContextException { + super(); + LOGGER.entry("HazelcastContextDistributor()"); + + LOGGER.exit("HazelcastContextDistributor()"); + } + + /* + * (non-Javadoc) + * + * @see org.onap.policy.apex.context.impl.distribution.AbstractContextDistributor#init(org.onap. + * policy.apex.model.basicmodel.concepts.AxArtifactKey) + */ + @Override + public void init(final AxArtifactKey key) throws ContextException { + LOGGER.entry("init(" + key + ")"); + + super.init(key); + + // Create the hazelcast instance if it does not already exist + if (hazelcastInstance == null) { + hazelcastInstance = Hazelcast.newHazelcastInstance(); + } + + LOGGER.exit("init(" + key + ")"); + } + + /* + * (non-Javadoc) + * + * @see org.onap.policy.apex.core.context.impl.distribution.AbstractContextDistributor# + * getContextAlbumMap(org.onap.policy.apex.core.model.concepts.AxArtifactKey) + */ + @Override + public Map getContextAlbumMap(final AxArtifactKey contextAlbumKey) { + // Get the map from Hazelcast + LOGGER.info("HazelcastContextDistributor: create album: " + contextAlbumKey.getID()); + return hazelcastInstance.getMap(contextAlbumKey.getID()); + } + + /* + * (non-Javadoc) + * + * @see + * org.onap.policy.apex.core.context.impl.distribution.AbstractContextDistributor#shutdown() + */ + @Override + public void shutdown() { + // Shut down the hazelcast instance + if (hazelcastInstance != null) { + hazelcastInstance.shutdown(); + } + hazelcastInstance = null; + } +} diff --git a/plugins/plugins-context/context-distribution/context-distribution-hazelcast/src/main/java/org/onap/policy/apex/plugins/context/distribution/hazelcast/package-info.java b/plugins/plugins-context/context-distribution/context-distribution-hazelcast/src/main/java/org/onap/policy/apex/plugins/context/distribution/hazelcast/package-info.java new file mode 100644 index 000000000..027aeecde --- /dev/null +++ b/plugins/plugins-context/context-distribution/context-distribution-hazelcast/src/main/java/org/onap/policy/apex/plugins/context/distribution/hazelcast/package-info.java @@ -0,0 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +/** + * Implements the Hazelcast context distributor for distribution + * of Apex context across JVMs. + * + * @author Liam Fallon (liam.fallon@ericsson.com) + */ +package org.onap.policy.apex.plugins.context.distribution.hazelcast; diff --git a/plugins/plugins-context/context-distribution/context-distribution-hazelcast/src/main/resources/hazelcast/hazelcast.xml.sample b/plugins/plugins-context/context-distribution/context-distribution-hazelcast/src/main/resources/hazelcast/hazelcast.xml.sample new file mode 100644 index 000000000..5f6c1b005 --- /dev/null +++ b/plugins/plugins-context/context-distribution/context-distribution-hazelcast/src/main/resources/hazelcast/hazelcast.xml.sample @@ -0,0 +1,55 @@ + + + + + + ApexHazelcastGroup + ApexHazelcastGroupPassword + + + 5706 + + + 224.2.2.10 + 54327 + + + 127.0.0.1 + + + + + 127.0.0.* + + + + true + slf4j + + false + 60 + + + 16 + + -- cgit 1.2.3-korg