summaryrefslogtreecommitdiffstats
path: root/examples/aadm/src
diff options
context:
space:
mode:
authorramverma <ram.krishna.verma@ericsson.com>2018-07-19 18:45:16 +0100
committerramverma <ram.krishna.verma@ericsson.com>2018-07-19 21:37:59 +0100
commit3d02543fc00a46da2da8f682f71b538ca2fd36e5 (patch)
treef31f40279c7d00505b10bf5f7000712ea2e0c879 /examples/aadm/src
parentab64a570730f3645939a33e06487c2477f1314de (diff)
Adding examples module to apex-pdp
Adding examples (MyFirstPolicy, AADM, Adaptive, PCVS) to apex-pdp so that anyone can try out running few sample policies and understand how to create and run policies in apex-pdp. Change-Id: I0dff6d54ef94d8b5bdb63eabcb09e9f64d76fd0c Issue-ID: POLICY-861 Signed-off-by: ramverma <ram.krishna.verma@ericsson.com>
Diffstat (limited to 'examples/aadm/src')
-rw-r--r--examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/ENodeBStatus.java107
-rw-r--r--examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/IMSIStatus.java175
-rw-r--r--examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/IPAddressStatus.java79
-rw-r--r--examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/package-info.java27
-rw-r--r--examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/AADMDomainModelFactory.java703
-rw-r--r--examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/AADMDomainModelSaver.java57
-rw-r--r--examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/package-info.java27
-rw-r--r--examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/package-info.java27
-rw-r--r--examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent.xml108
-rw-r--r--examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent0.json27
-rw-r--r--examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent1.json27
-rw-r--r--examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent2.json27
-rw-r--r--examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent3.json27
-rw-r--r--examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent4.json28
-rw-r--r--examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent5.json27
-rw-r--r--examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent6.json27
-rw-r--r--examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent7.json27
-rw-r--r--examples/aadm/src/main/resources/examples/events/AADM/AADMTestPeridociEvent.json12
-rw-r--r--examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMDoSProvenActTask_TaskLogic.mvel80
-rw-r--r--examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMDoSSuggestionActTask_TaskLogic.mvel106
-rw-r--r--examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMMatchTask_TaskLogic.mvel75
-rw-r--r--examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMNoActTask_TaskLogic.mvel55
-rw-r--r--examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMPolicy_Act_TaskSelectionLogic.mvel67
-rw-r--r--examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/Default_TaskLogic.mvel23
-rw-r--r--examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/Default_TaskSelectionLogic.mvel23
-rw-r--r--examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/PeriodicActTask_TaskLogic.mvel40
-rw-r--r--examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/SAPCActTask_TaskLogic.mvel79
-rw-r--r--examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/SAPCMatchTask_TaskLogic.mvel52
-rw-r--r--examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/VMMEActTask_TaskLogic.mvel44
-rw-r--r--examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/VMMEMatchTask_TaskLogic.mvel47
-rw-r--r--examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMDBWrite.java60
-rw-r--r--examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMModel.java81
-rw-r--r--examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMModelCreator.java56
-rw-r--r--examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMUseCase.java412
-rw-r--r--examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestApexActionListener.java91
-rw-r--r--examples/aadm/src/test/resources/META-INF/persistence.xml69
-rw-r--r--examples/aadm/src/test/resources/logback-test.xml74
37 files changed, 3073 insertions, 0 deletions
diff --git a/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/ENodeBStatus.java b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/ENodeBStatus.java
new file mode 100644
index 000000000..13fbb1eca
--- /dev/null
+++ b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/ENodeBStatus.java
@@ -0,0 +1,107 @@
+/*-
+ * ============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.examples.aadm.concepts;
+
+import java.io.Serializable;
+
+/**
+ * The Class ENodeBStatus holds the status of an eNodeB in the AADM domain.
+ */
+public class ENodeBStatus implements Serializable {
+ private static final long serialVersionUID = 2852523814242234172L;
+
+ private final String eNodeB;
+
+ private long dosCount = 0;
+ private boolean beingProbed = false;
+
+ /**
+ * The Constructor initiates the status of the eNodeB.
+ *
+ * @param eNodeB the e node B
+ */
+ public ENodeBStatus(final String eNodeB) {
+ this.eNodeB = eNodeB;
+ }
+
+ /**
+ * Gets the eNodeB name.
+ *
+ * @return the eNodeB name
+ */
+ public String getENodeB() {
+ return eNodeB;
+ }
+
+ /**
+ * Gets the number of Denial Of Service incidents on the eNodeB.
+ *
+ * @return the number of Denial Of Service incidents on the eNodeB
+ */
+ public long getDOSCount() {
+ return dosCount;
+ }
+
+ /**
+ * Sets the number of Denial Of Service incidents on the eNodeB.
+ *
+ * @param incomingDosCount the number of Denial Of Service incidents on the eNodeB
+ */
+ public void setDOSCount(final long incomingDosCount) {
+ this.dosCount = incomingDosCount;
+ }
+
+ /**
+ * Increment DOS count.
+ *
+ * @return the long
+ */
+ public long incrementDOSCount() {
+ return ++dosCount;
+ }
+
+ /**
+ * Decrement DOS count.
+ *
+ * @return the long
+ */
+ public long decrementDOSCount() {
+ return --dosCount;
+ }
+
+ /**
+ * Gets the being probed.
+ *
+ * @return the being probed
+ */
+ public boolean getBeingProbed() {
+ return beingProbed;
+ }
+
+ /**
+ * Sets the being probed.
+ *
+ * @param beingProbed the being probed
+ */
+ public void setBeingProbed(final boolean beingProbed) {
+ this.beingProbed = beingProbed;
+ }
+}
diff --git a/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/IMSIStatus.java b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/IMSIStatus.java
new file mode 100644
index 000000000..f59e982b0
--- /dev/null
+++ b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/IMSIStatus.java
@@ -0,0 +1,175 @@
+/*-
+ * ============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.examples.aadm.concepts;
+
+import java.io.Serializable;
+
+/**
+ * The Class IMSIStatus holds the status of an IMSI in the AADM domain.
+ */
+public class IMSIStatus implements Serializable {
+ private static final long serialVersionUID = 2852523814242234172L;
+
+ private static final long TIME_NOT_SET = 0;
+
+ private final String imsi;
+
+ private boolean anomalous = false;
+ private long anomalousTime = TIME_NOT_SET;
+ private String eNodeBID;
+ private long blackListedTime = TIME_NOT_SET;
+ private long blockingCount = 0;
+
+ /**
+ * Initiate an IMSI status instance with an IMSI value.
+ *
+ * @param imsi the IMSI value
+ */
+ public IMSIStatus(final String imsi) {
+ this.imsi = imsi;
+ }
+
+ /**
+ * Gets the IMSI value.
+ *
+ * @return the IMSI value
+ */
+ public String getIMSI() {
+ return imsi;
+ }
+
+ /**
+ * Gets the anomalous flag.
+ *
+ * @return the anomalous flag
+ */
+ public boolean getAnomalous() {
+ return anomalous;
+ }
+
+ /**
+ * Sets the anomalous flag.
+ *
+ * @param anomalous the anomalous flag
+ */
+ public void setAnomalous(final boolean anomalous) {
+ this.anomalous = anomalous;
+ }
+
+ /**
+ * Gets the time of the most recent anomolous event.
+ *
+ * @return the time of the most recent anomolous event
+ */
+ public long getAnomolousTime() {
+ return anomalousTime;
+ }
+
+ /**
+ * Sets the time of the most recent anomolous event.
+ *
+ * @param incomingAnomalousTime the time of the most recent anomolous event
+ */
+ public void setAnomolousTime(final long incomingAnomalousTime) {
+ this.anomalousTime = incomingAnomalousTime;
+ }
+
+ /**
+ * Gets the eNodeB ID to which the IMSI is attached.
+ *
+ * @return theeNodeB ID to which the IMSI is attached
+ */
+ public String getENodeBID() {
+ return eNodeBID;
+ }
+
+ /**
+ * Sets the eNodeB ID to which the IMSI is attached.
+ *
+ * @param incomingENodeBID the eNodeB ID to which the IMSI is attached
+ */
+ public void setENodeBID(final String incomingENodeBID) {
+ this.eNodeBID = incomingENodeBID;
+ }
+
+ /**
+ * Checks if the eNodeB ID to which the IMSI is attached is set.
+ *
+ * @return true, if eNodeB ID to which the IMSI is attached is set
+ */
+ public boolean checkSetENodeBID() {
+ return (eNodeBID != null);
+ }
+
+ /**
+ * Gets the time at which the IMSI was blacklisted.
+ *
+ * @return the time at which the IMSI was blacklisted
+ */
+ public long getBlacklistedTime() {
+ return blackListedTime;
+ }
+
+ /**
+ * Sets the time at which the IMSI was blacklisted.
+ *
+ * @param incomingBlackListedTime the time at which the IMSI was blacklisted
+ */
+ public void setBlacklistedTime(final long incomingBlackListedTime) {
+ this.blackListedTime = incomingBlackListedTime;
+ }
+
+ /**
+ * Gets the number of times this IMSI was blocked.
+ *
+ * @return the number of times this IMSI was blocked
+ */
+ public long getBlockingCount() {
+ return blockingCount;
+ }
+
+ /**
+ * Sets the number of times this IMSI was blocked.
+ *
+ * @param blockingCount the number of times this IMSI was blocked
+ */
+ public void setBlockingCount(final long blockingCount) {
+ this.blockingCount = blockingCount;
+ }
+
+ /**
+ * Increment the number of times this IMSI was blocked.
+ *
+ * @return the incremented number of times this IMSI was blocked
+ */
+ public long incrementBlockingCount() {
+ return ++blockingCount;
+ }
+
+ /**
+ * Decrement the number of times this IMSI was blocked.
+ *
+ * @return the decremented number of times this IMSI was blocked
+ */
+ public long decrementBlockingCount() {
+ return --blockingCount;
+ }
+}
diff --git a/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/IPAddressStatus.java b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/IPAddressStatus.java
new file mode 100644
index 000000000..fc3780f17
--- /dev/null
+++ b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/IPAddressStatus.java
@@ -0,0 +1,79 @@
+/*-
+ * ============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.examples.aadm.concepts;
+
+import java.io.Serializable;
+
+/**
+ * The Class IPAddressStatus holds the status of an IP address in the AADM domain.
+ */
+public class IPAddressStatus implements Serializable {
+ private static final long serialVersionUID = -7402022458317593252L;
+
+ private final String ipAddress;
+
+ private String imsi;
+
+ /**
+ * The Constructor sets up the IP address status instance.
+ *
+ * @param ipAddress the ip address
+ */
+ public IPAddressStatus(final String ipAddress) {
+ this.ipAddress = ipAddress;
+ }
+
+ /**
+ * Gets the IP address.
+ *
+ * @return the IP address
+ */
+ public String getIPAddress() {
+ return ipAddress;
+ }
+
+ /**
+ * Gets the IMSI.
+ *
+ * @return the imsi
+ */
+ public String getIMSI() {
+ return imsi;
+ }
+
+ /**
+ * Sets the IMSI.
+ *
+ * @param incomingImsi the imsi
+ */
+ public void setIMSI(final String incomingImsi) {
+ this.imsi = incomingImsi;
+ }
+
+ /**
+ * Check set IMSI.
+ *
+ * @return true, if check set IMSI
+ */
+ public boolean checkSetIMSI() {
+ return (imsi != null);
+ }
+}
diff --git a/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/package-info.java b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/package-info.java
new file mode 100644
index 000000000..68e91457d
--- /dev/null
+++ b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/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=========================================================
+ */
+
+/**
+ * Provides Java types that are used in the AADM domain.
+ *
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ */
+
+package org.onap.policy.apex.examples.aadm.concepts;
diff --git a/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/AADMDomainModelFactory.java b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/AADMDomainModelFactory.java
new file mode 100644
index 000000000..b0cbf0c17
--- /dev/null
+++ b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/AADMDomainModelFactory.java
@@ -0,0 +1,703 @@
+/*-
+ * ============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.examples.aadm.model;
+
+import org.onap.policy.apex.model.basicmodel.concepts.ApexRuntimeException;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation;
+import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey;
+import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbums;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
+import org.onap.policy.apex.model.eventmodel.concepts.AxEvent;
+import org.onap.policy.apex.model.eventmodel.concepts.AxEvents;
+import org.onap.policy.apex.model.eventmodel.concepts.AxField;
+import org.onap.policy.apex.model.policymodel.concepts.AxLogicReader;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicies;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicy;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+import org.onap.policy.apex.model.policymodel.concepts.AxState;
+import org.onap.policy.apex.model.policymodel.concepts.AxStateOutput;
+import org.onap.policy.apex.model.policymodel.concepts.AxStateTaskOutputType;
+import org.onap.policy.apex.model.policymodel.concepts.AxStateTaskReference;
+import org.onap.policy.apex.model.policymodel.concepts.AxTask;
+import org.onap.policy.apex.model.policymodel.concepts.AxTaskLogic;
+import org.onap.policy.apex.model.policymodel.concepts.AxTaskSelectionLogic;
+import org.onap.policy.apex.model.policymodel.concepts.AxTasks;
+import org.onap.policy.apex.model.policymodel.handling.PolicyLogicReader;
+
+/**
+ * The Class AADMDomainModelFactory.
+ */
+public class AADMDomainModelFactory {
+ /**
+ * Gets the AADM policy model.
+ *
+ * @return the AADM policy model
+ */
+ // CHECKSTYLE:OFF: checkstyle
+ public AxPolicyModel getAADMPolicyModel() {
+ // CHECKSTYLE:ON: checkstyle
+ // Data types for event parameters
+ final AxContextSchema imsi = new AxContextSchema(new AxArtifactKey("IMSI", "0.0.1"), "Java", "java.lang.Long");
+ final AxContextSchema ueIPAddress =
+ new AxContextSchema(new AxArtifactKey("UEIPAddress", "0.0.1"), "Java", "java.lang.String");
+ final AxContextSchema nwIPAddress =
+ new AxContextSchema(new AxArtifactKey("NWIPAddress", "0.0.1"), "Java", "java.lang.String");
+ final AxContextSchema dosFlag =
+ new AxContextSchema(new AxArtifactKey("DOSFlag", "0.0.1"), "Java", "java.lang.Boolean");
+ final AxContextSchema roundTripTime =
+ new AxContextSchema(new AxArtifactKey("RoundTripTime", "0.0.1"), "Java", "java.lang.Long");
+ final AxContextSchema applicationName =
+ new AxContextSchema(new AxArtifactKey("ApplicationName", "0.0.1"), "Java", "java.lang.String");
+ final AxContextSchema protocolGroup =
+ new AxContextSchema(new AxArtifactKey("ProtocolGroup", "0.0.1"), "Java", "java.lang.String");
+ final AxContextSchema eNodeBID =
+ new AxContextSchema(new AxArtifactKey("ENodeBID", "0.0.1"), "Java", "java.lang.Long");
+ final AxContextSchema httpHostClass =
+ new AxContextSchema(new AxArtifactKey("HttpHostClass", "0.0.1"), "Java", "java.lang.String");
+ final AxContextSchema tcpOnFlag =
+ new AxContextSchema(new AxArtifactKey("TCPOnFlag", "0.0.1"), "Java", "java.lang.Boolean");
+ final AxContextSchema probeOnFlag =
+ new AxContextSchema(new AxArtifactKey("ProbeOnFlag", "0.0.1"), "Java", "java.lang.Boolean");
+ final AxContextSchema blacklistOnFlag =
+ new AxContextSchema(new AxArtifactKey("BlacklistOnFlag", "0.0.1"), "Java", "java.lang.Boolean");
+ final AxContextSchema averageThroughput =
+ new AxContextSchema(new AxArtifactKey("AverageThroughput", "0.0.1"), "Java", "java.lang.Double");
+ final AxContextSchema serviceRequestCount =
+ new AxContextSchema(new AxArtifactKey("ServiceRequestCount", "0.0.1"), "Java", "java.lang.Integer");
+ final AxContextSchema attchCount =
+ new AxContextSchema(new AxArtifactKey("AttachCount", "0.0.1"), "Java", "java.lang.Integer");
+ final AxContextSchema subscriberCount =
+ new AxContextSchema(new AxArtifactKey("SubscriberCount", "0.0.1"), "Java", "java.lang.Integer");
+ final AxContextSchema averageServiceRequest =
+ new AxContextSchema(new AxArtifactKey("AverageServiceRequest", "0.0.1"), "Java", "java.lang.Double");
+ final AxContextSchema averageAttach =
+ new AxContextSchema(new AxArtifactKey("AverageAttach", "0.0.1"), "Java", "java.lang.Double");
+ final AxContextSchema actionTask =
+ new AxContextSchema(new AxArtifactKey("ActionTask", "0.0.1"), "Java", "java.lang.String");
+ final AxContextSchema version =
+ new AxContextSchema(new AxArtifactKey("Version", "0.0.1"), "Java", "java.lang.String");
+ final AxContextSchema profile =
+ new AxContextSchema(new AxArtifactKey("Profile", "0.0.1"), "Java", "java.lang.String");
+ final AxContextSchema threshold =
+ new AxContextSchema(new AxArtifactKey("Threshold", "0.0.1"), "Java", "java.lang.Long");
+ final AxContextSchema triggerSpec =
+ new AxContextSchema(new AxArtifactKey("TriggerSpec", "0.0.1"), "Java", "java.lang.String");
+ final AxContextSchema periodicEventCount =
+ new AxContextSchema(new AxArtifactKey("PeriodicEventCount", "0.0.1"), "Java", "java.lang.Long");
+ final AxContextSchema periodicDelay =
+ new AxContextSchema(new AxArtifactKey("PeriodicDelay", "0.0.1"), "Java", "java.lang.Long");
+ final AxContextSchema periodicTime =
+ new AxContextSchema(new AxArtifactKey("PeriodicTime", "0.0.1"), "Java", "java.lang.Long");
+
+ final AxContextSchemas aadmContextSchemas = new AxContextSchemas(new AxArtifactKey("AADMDatatypes", "0.0.1"));
+ aadmContextSchemas.getSchemasMap().put(imsi.getKey(), imsi);
+ aadmContextSchemas.getSchemasMap().put(ueIPAddress.getKey(), ueIPAddress);
+ aadmContextSchemas.getSchemasMap().put(nwIPAddress.getKey(), nwIPAddress);
+ aadmContextSchemas.getSchemasMap().put(dosFlag.getKey(), dosFlag);
+ aadmContextSchemas.getSchemasMap().put(roundTripTime.getKey(), roundTripTime);
+ aadmContextSchemas.getSchemasMap().put(applicationName.getKey(), applicationName);
+ aadmContextSchemas.getSchemasMap().put(protocolGroup.getKey(), protocolGroup);
+ aadmContextSchemas.getSchemasMap().put(eNodeBID.getKey(), eNodeBID);
+ aadmContextSchemas.getSchemasMap().put(httpHostClass.getKey(), httpHostClass);
+ aadmContextSchemas.getSchemasMap().put(tcpOnFlag.getKey(), tcpOnFlag);
+ aadmContextSchemas.getSchemasMap().put(probeOnFlag.getKey(), probeOnFlag);
+ aadmContextSchemas.getSchemasMap().put(blacklistOnFlag.getKey(), blacklistOnFlag);
+ aadmContextSchemas.getSchemasMap().put(averageThroughput.getKey(), averageThroughput);
+ aadmContextSchemas.getSchemasMap().put(serviceRequestCount.getKey(), serviceRequestCount);
+ aadmContextSchemas.getSchemasMap().put(attchCount.getKey(), attchCount);
+ aadmContextSchemas.getSchemasMap().put(subscriberCount.getKey(), subscriberCount);
+ aadmContextSchemas.getSchemasMap().put(averageServiceRequest.getKey(), averageServiceRequest);
+ aadmContextSchemas.getSchemasMap().put(averageAttach.getKey(), averageAttach);
+ aadmContextSchemas.getSchemasMap().put(actionTask.getKey(), actionTask);
+ aadmContextSchemas.getSchemasMap().put(version.getKey(), version);
+ aadmContextSchemas.getSchemasMap().put(profile.getKey(), profile);
+ aadmContextSchemas.getSchemasMap().put(threshold.getKey(), threshold);
+ aadmContextSchemas.getSchemasMap().put(triggerSpec.getKey(), triggerSpec);
+ aadmContextSchemas.getSchemasMap().put(periodicEventCount.getKey(), periodicEventCount);
+ aadmContextSchemas.getSchemasMap().put(periodicDelay.getKey(), periodicDelay);
+ aadmContextSchemas.getSchemasMap().put(periodicTime.getKey(), periodicTime);
+
+ final AxEvent aadmEvent =
+ new AxEvent(new AxArtifactKey("AADMEvent", "0.0.1"), "org.onap.policy.apex.examples.aadm.events");
+ aadmEvent.setSource("External");
+ aadmEvent.setTarget("Apex");
+ aadmEvent.getParameterMap().put("IMSI",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "IMSI"), imsi.getKey()));
+ aadmEvent.getParameterMap().put("ENODEB_ID",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "ENODEB_ID"), eNodeBID.getKey()));
+ aadmEvent.getParameterMap().put("IMSI_IP",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "IMSI_IP"), ueIPAddress.getKey()));
+ aadmEvent.getParameterMap().put("NW_IP",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "NW_IP"), nwIPAddress.getKey()));
+ aadmEvent.getParameterMap().put("DoS",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "DoS"), dosFlag.getKey()));
+ aadmEvent.getParameterMap().put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", new AxField(
+ new AxReferenceKey(aadmEvent.getKey(), "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX"), roundTripTime.getKey()));
+ aadmEvent.getParameterMap().put("TCP_UE_SIDE_AVG_THROUGHPUT", new AxField(
+ new AxReferenceKey(aadmEvent.getKey(), "TCP_UE_SIDE_AVG_THROUGHPUT"), averageThroughput.getKey()));
+ aadmEvent.getParameterMap().put("APPLICATION",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "APPLICATION"), applicationName.getKey()));
+ aadmEvent.getParameterMap().put("protocol_group",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "protocol_group"), protocolGroup.getKey()));
+ aadmEvent.getParameterMap().put("http_host_class",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "http_host_class"), httpHostClass.getKey()));
+ aadmEvent.getParameterMap().put("PROBE_ON",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "PROBE_ON"), probeOnFlag.getKey()));
+ aadmEvent.getParameterMap().put("TCP_ON",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "TCP_ON"), tcpOnFlag.getKey()));
+ aadmEvent.getParameterMap().put("SGW_IP_ADDRESS",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "SGW_IP_ADDRESS"), nwIPAddress.getKey()));
+ aadmEvent.getParameterMap().put("UE_IP_ADDRESS",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "UE_IP_ADDRESS"), ueIPAddress.getKey()));
+ aadmEvent.getParameterMap().put("SERVICE_REQUEST_COUNT", new AxField(
+ new AxReferenceKey(aadmEvent.getKey(), "SERVICE_REQUEST_COUNT"), serviceRequestCount.getKey()));
+ aadmEvent.getParameterMap().put("ATTACH_COUNT",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "ATTACH_COUNT"), attchCount.getKey()));
+ aadmEvent.getParameterMap().put("NUM_SUBSCRIBERS",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "NUM_SUBSCRIBERS"), subscriberCount.getKey()));
+ aadmEvent.getParameterMap().put("AVG_SUBSCRIBER_SERVICE_REQUEST",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "AVG_SUBSCRIBER_SERVICE_REQUEST"),
+ averageServiceRequest.getKey()));
+ aadmEvent.getParameterMap().put("AVG_SUBSCRIBER_ATTACH",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "AVG_SUBSCRIBER_ATTACH"), averageAttach.getKey()));
+ aadmEvent.getParameterMap().put("ACTTASK",
+ new AxField(new AxReferenceKey(aadmEvent.getKey(), "ACTTASK"), actionTask.getKey()));
+
+ final AxEvent aadmXStreamActEvent = new AxEvent(new AxArtifactKey("XSTREAM_AADM_ACT_EVENT", "0.0.1"),
+ "org.onap.policy.apex.examples.aadm.events");
+ aadmXStreamActEvent.setSource("Apex");
+ aadmXStreamActEvent.setTarget("External");
+ aadmXStreamActEvent.getParameterMap().put("IMSI",
+ new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "IMSI"), imsi.getKey()));
+ aadmXStreamActEvent.getParameterMap().put("IMSI_IP",
+ new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "IMSI_IP"), ueIPAddress.getKey()));
+ aadmXStreamActEvent.getParameterMap().put("ENODEB_ID",
+ new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "ENODEB_ID"), eNodeBID.getKey()));
+ aadmXStreamActEvent.getParameterMap().put("NW_IP",
+ new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "NW_IP"), nwIPAddress.getKey()));
+ aadmXStreamActEvent.getParameterMap().put("ACTTASK",
+ new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "ACTTASK"), actionTask.getKey()));
+ aadmXStreamActEvent.getParameterMap().put("PROBE_ON",
+ new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "PROBE_ON"), probeOnFlag.getKey()));
+ aadmXStreamActEvent.getParameterMap().put("TCP_ON",
+ new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "TCP_ON"), tcpOnFlag.getKey()));
+ aadmXStreamActEvent.getParameterMap().put("VERSION",
+ new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "VERSION"), version.getKey()));
+ aadmXStreamActEvent.getParameterMap().put("TRIGGER_SPEC",
+ new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "TRIGGER_SPEC"), triggerSpec.getKey()));
+ aadmXStreamActEvent.getParameterMap().put("MAJ_MIN_MAINT_VERSION", new AxField(
+ new AxReferenceKey(aadmXStreamActEvent.getKey(), "MAJ_MIN_MAINT_VERSION"), version.getKey()));
+ aadmXStreamActEvent.getParameterMap().put("BLACKLIST_ON", new AxField(
+ new AxReferenceKey(aadmXStreamActEvent.getKey(), "BLACKLIST_ON"), blacklistOnFlag.getKey()));
+ aadmXStreamActEvent.getParameterMap().put("PROFILE",
+ new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "PROFILE"), profile.getKey()));
+ aadmXStreamActEvent.getParameterMap().put("THRESHOLD",
+ new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "THRESHOLD"), threshold.getKey()));
+
+ final AxEvent vMMEEvent =
+ new AxEvent(new AxArtifactKey("VMMEEvent", "0.0.1"), "org.onap.policy.apex.examples.aadm.events");
+ vMMEEvent.setSource("External");
+ vMMEEvent.setTarget("Apex");
+ vMMEEvent.getParameterMap().put("IMSI",
+ new AxField(new AxReferenceKey(vMMEEvent.getKey(), "IMSI"), imsi.getKey()));
+ vMMEEvent.getParameterMap().put("ENODEB_ID",
+ new AxField(new AxReferenceKey(vMMEEvent.getKey(), "ENODEB_ID"), eNodeBID.getKey()));
+ vMMEEvent.getParameterMap().put("IMSI_IP",
+ new AxField(new AxReferenceKey(vMMEEvent.getKey(), "IMSI_IP"), ueIPAddress.getKey()));
+ vMMEEvent.getParameterMap().put("NW_IP",
+ new AxField(new AxReferenceKey(vMMEEvent.getKey(), "NW_IP"), nwIPAddress.getKey()));
+ vMMEEvent.getParameterMap().put("PROFILE",
+ new AxField(new AxReferenceKey(vMMEEvent.getKey(), "PROFILE"), profile.getKey()));
+ vMMEEvent.getParameterMap().put("THRESHOLD",
+ new AxField(new AxReferenceKey(vMMEEvent.getKey(), "THRESHOLD"), threshold.getKey()));
+
+ final AxEvent sapcEvent =
+ new AxEvent(new AxArtifactKey("SAPCEvent", "0.0.1"), "org.onap.policy.apex.examples.aadm.events");
+ sapcEvent.setSource("External");
+ sapcEvent.setTarget("Apex");
+ sapcEvent.getParameterMap().put("IMSI",
+ new AxField(new AxReferenceKey(sapcEvent.getKey(), "IMSI"), imsi.getKey()));
+ sapcEvent.getParameterMap().put("ENODEB_ID",
+ new AxField(new AxReferenceKey(sapcEvent.getKey(), "ENODEB_ID"), eNodeBID.getKey()));
+ sapcEvent.getParameterMap().put("IMSI_IP",
+ new AxField(new AxReferenceKey(sapcEvent.getKey(), "IMSI_IP"), ueIPAddress.getKey()));
+ sapcEvent.getParameterMap().put("NW_IP",
+ new AxField(new AxReferenceKey(sapcEvent.getKey(), "NW_IP"), nwIPAddress.getKey()));
+ sapcEvent.getParameterMap().put("PROFILE",
+ new AxField(new AxReferenceKey(sapcEvent.getKey(), "PROFILE"), profile.getKey()));
+ sapcEvent.getParameterMap().put("THRESHOLD",
+ new AxField(new AxReferenceKey(sapcEvent.getKey(), "THRESHOLD"), threshold.getKey()));
+ sapcEvent.getParameterMap().put("TCP_ON",
+ new AxField(new AxReferenceKey(sapcEvent.getKey(), "TCP_ON"), tcpOnFlag.getKey()));
+ sapcEvent.getParameterMap().put("PROBE_ON",
+ new AxField(new AxReferenceKey(sapcEvent.getKey(), "PROBE_ON"), probeOnFlag.getKey()));
+ sapcEvent.getParameterMap().put("VERSION",
+ new AxField(new AxReferenceKey(sapcEvent.getKey(), "VERSION"), version.getKey()));
+ sapcEvent.getParameterMap().put("BLACKLIST_ON",
+ new AxField(new AxReferenceKey(sapcEvent.getKey(), "BLACKLIST_ON"), blacklistOnFlag.getKey()));
+
+ final AxEvent sapcBlacklistSubscriberEvent =
+ new AxEvent(new AxArtifactKey("SAPCBlacklistSubscriberEvent", "0.0.1"),
+ "org.onap.policy.apex.examples.aadm.events");
+ sapcBlacklistSubscriberEvent.setSource("Apex");
+ sapcBlacklistSubscriberEvent.setTarget("External");
+ sapcBlacklistSubscriberEvent.getParameterMap().put("IMSI",
+ new AxField(new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "IMSI"), imsi.getKey()));
+ sapcBlacklistSubscriberEvent.getParameterMap().put("PROFILE",
+ new AxField(new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "PROFILE"), profile.getKey()));
+ sapcBlacklistSubscriberEvent.getParameterMap().put("BLACKLIST_ON", new AxField(
+ new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "BLACKLIST_ON"), blacklistOnFlag.getKey()));
+ sapcBlacklistSubscriberEvent.getParameterMap().put("IMSI_IP", new AxField(
+ new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "IMSI_IP"), ueIPAddress.getKey()));
+ sapcBlacklistSubscriberEvent.getParameterMap().put("NW_IP",
+ new AxField(new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "NW_IP"), nwIPAddress.getKey()));
+ sapcBlacklistSubscriberEvent.getParameterMap().put("PROBE_ON", new AxField(
+ new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "PROBE_ON"), probeOnFlag.getKey()));
+ sapcBlacklistSubscriberEvent.getParameterMap().put("TCP_ON",
+ new AxField(new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "TCP_ON"), tcpOnFlag.getKey()));
+
+ final AxEvent periodicEvent =
+ new AxEvent(new AxArtifactKey("PeriodicEvent", "0.0.1"), "org.onap.policy.apex.examples.aadm.events");
+ periodicEvent.setSource("System");
+ periodicEvent.setTarget("Apex");
+ periodicEvent.getParameterMap().put("PERIODIC_EVENT_COUNT", new AxField(
+ new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_EVENT_COUNT"), periodicEventCount.getKey()));
+ periodicEvent.getParameterMap().put("PERIODIC_DELAY",
+ new AxField(new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_DELAY"), periodicDelay.getKey()));
+ periodicEvent.getParameterMap().put("PERIODIC_FIRST_TIME",
+ new AxField(new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_FIRST_TIME"), periodicTime.getKey()));
+ periodicEvent.getParameterMap().put("PERIODIC_CURRENT_TIME", new AxField(
+ new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_CURRENT_TIME"), periodicTime.getKey()));
+ periodicEvent.getParameterMap().put("PERIODIC_LAST_TIME",
+ new AxField(new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_LAST_TIME"), periodicTime.getKey()));
+
+ final AxEvents aadmEvents = new AxEvents(new AxArtifactKey("AADMEvents", "0.0.1"));
+ aadmEvents.getEventMap().put(aadmEvent.getKey(), aadmEvent);
+ aadmEvents.getEventMap().put(aadmXStreamActEvent.getKey(), aadmXStreamActEvent);
+ aadmEvents.getEventMap().put(vMMEEvent.getKey(), vMMEEvent);
+ aadmEvents.getEventMap().put(sapcEvent.getKey(), sapcEvent);
+ aadmEvents.getEventMap().put(sapcBlacklistSubscriberEvent.getKey(), sapcBlacklistSubscriberEvent);
+ aadmEvents.getEventMap().put(periodicEvent.getKey(), periodicEvent);
+
+ // Data types for context
+ final AxContextSchema eNodeBStatus = new AxContextSchema(new AxArtifactKey("ENodeBStatus", "0.0.1"), "Java",
+ "org.onap.policy.apex.examples.aadm.concepts.ENodeBStatus");
+ final AxContextSchema imsiStatus = new AxContextSchema(new AxArtifactKey("IMSIStatus", "0.0.1"), "Java",
+ "org.onap.policy.apex.examples.aadm.concepts.IMSIStatus");
+ final AxContextSchema ipAddressStatus = new AxContextSchema(new AxArtifactKey("IPAddressStatus", "0.0.1"),
+ "Java", "org.onap.policy.apex.examples.aadm.concepts.IPAddressStatus");
+ aadmContextSchemas.getSchemasMap().put(eNodeBStatus.getKey(), eNodeBStatus);
+ aadmContextSchemas.getSchemasMap().put(imsiStatus.getKey(), imsiStatus);
+ aadmContextSchemas.getSchemasMap().put(ipAddressStatus.getKey(), ipAddressStatus);
+
+ // Three context albums for AADM
+ final AxContextAlbum eNodeBStatusAlbum = new AxContextAlbum(new AxArtifactKey("ENodeBStatusAlbum", "0.0.1"),
+ "APPLICATION", true, eNodeBStatus.getKey());
+ final AxContextAlbum imsiStatusAlbum = new AxContextAlbum(new AxArtifactKey("IMSIStatusAlbum", "0.0.1"),
+ "APPLICATION", true, imsiStatus.getKey());
+ final AxContextAlbum ipAddressStatusAlbum = new AxContextAlbum(
+ new AxArtifactKey("IPAddressStatusAlbum", "0.0.1"), "APPLICATION", true, ipAddressStatus.getKey());
+
+ final AxContextAlbums aadmAlbums = new AxContextAlbums(new AxArtifactKey("AADMContext", "0.0.1"));
+ aadmAlbums.getAlbumsMap().put(eNodeBStatusAlbum.getKey(), eNodeBStatusAlbum);
+ aadmAlbums.getAlbumsMap().put(imsiStatusAlbum.getKey(), imsiStatusAlbum);
+ aadmAlbums.getAlbumsMap().put(ipAddressStatusAlbum.getKey(), ipAddressStatusAlbum);
+
+ // Tasks
+ final AxLogicReader logicReader =
+ new PolicyLogicReader().setLogicPackage(this.getClass().getPackage().getName()).setDefaultLogic(null);
+
+ final AxTask aadmMatchTask = new AxTask(new AxArtifactKey("AADMMatchTask", "0.0.1"));
+ aadmMatchTask.duplicateInputFields(aadmEvent.getParameterMap());
+ aadmMatchTask.duplicateOutputFields(aadmEvent.getParameterMap());
+ aadmMatchTask.getContextAlbumReferences().add(eNodeBStatusAlbum.getKey());
+ aadmMatchTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey());
+ aadmMatchTask.getContextAlbumReferences().add(ipAddressStatusAlbum.getKey());
+ aadmMatchTask.setTaskLogic(new AxTaskLogic(aadmMatchTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask aadmEstablishTask = new AxTask(new AxArtifactKey("AADMEstablishTask", "0.0.1"));
+ aadmEstablishTask.duplicateInputFields(aadmEvent.getParameterMap());
+ aadmEstablishTask.duplicateOutputFields(aadmEvent.getParameterMap());
+ logicReader.setDefaultLogic("Default_TaskLogic");
+ aadmEstablishTask.setTaskLogic(new AxTaskLogic(aadmEstablishTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask aadmDecideTask = new AxTask(new AxArtifactKey("AADMDecideTask", "0.0.1"));
+ aadmDecideTask.duplicateInputFields(aadmEvent.getParameterMap());
+ aadmDecideTask.duplicateOutputFields(aadmEvent.getParameterMap());
+ aadmDecideTask.setTaskLogic(new AxTaskLogic(aadmDecideTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ logicReader.setDefaultLogic(null);
+
+ final AxTask aadmDoSSuggestionActTask = new AxTask(new AxArtifactKey("AADMDoSSuggestionActTask", "0.0.1"));
+ aadmDoSSuggestionActTask.duplicateInputFields(aadmEvent.getParameterMap());
+ aadmDoSSuggestionActTask.duplicateOutputFields(aadmXStreamActEvent.getParameterMap());
+ aadmDoSSuggestionActTask.getContextAlbumReferences().add(eNodeBStatusAlbum.getKey());
+ aadmDoSSuggestionActTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey());
+ aadmDoSSuggestionActTask
+ .setTaskLogic(new AxTaskLogic(aadmDoSSuggestionActTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask aadmNoActTask = new AxTask(new AxArtifactKey("AADMNoActTask", "0.0.1"));
+ aadmNoActTask.duplicateInputFields(aadmEvent.getParameterMap());
+ aadmNoActTask.duplicateOutputFields(aadmXStreamActEvent.getParameterMap());
+ aadmNoActTask.setTaskLogic(new AxTaskLogic(aadmNoActTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask aadmDoSProvenActTask = new AxTask(new AxArtifactKey("AADMDoSProvenActTask", "0.0.1"));
+ aadmDoSProvenActTask.duplicateInputFields(aadmEvent.getParameterMap());
+ aadmDoSProvenActTask.duplicateOutputFields(aadmXStreamActEvent.getParameterMap());
+ aadmDoSProvenActTask.getContextAlbumReferences().add(eNodeBStatusAlbum.getKey());
+ aadmDoSProvenActTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey());
+ aadmDoSProvenActTask
+ .setTaskLogic(new AxTaskLogic(aadmDoSProvenActTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask vMMEMatchTask = new AxTask(new AxArtifactKey("VMMEMatchTask", "0.0.1"));
+ vMMEMatchTask.duplicateInputFields(vMMEEvent.getParameterMap());
+ vMMEMatchTask.duplicateOutputFields(vMMEEvent.getParameterMap());
+ vMMEMatchTask.setTaskLogic(new AxTaskLogic(vMMEMatchTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask vMMEEstablishTask = new AxTask(new AxArtifactKey("VMMEEstablishTask", "0.0.1"));
+ vMMEEstablishTask.duplicateInputFields(vMMEEvent.getParameterMap());
+ vMMEEstablishTask.duplicateOutputFields(vMMEEvent.getParameterMap());
+ logicReader.setDefaultLogic("Default_TaskLogic");
+ vMMEEstablishTask.setTaskLogic(new AxTaskLogic(vMMEEstablishTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask vMMEDecideTask = new AxTask(new AxArtifactKey("VMMEDecideTask", "0.0.1"));
+ vMMEDecideTask.duplicateInputFields(vMMEEvent.getParameterMap());
+ vMMEDecideTask.duplicateOutputFields(vMMEEvent.getParameterMap());
+ vMMEDecideTask.setTaskLogic(new AxTaskLogic(vMMEDecideTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask vMMENoActTask = new AxTask(new AxArtifactKey("VMMENoActTask", "0.0.1"));
+ vMMENoActTask.duplicateInputFields(vMMEEvent.getParameterMap());
+ vMMENoActTask.duplicateOutputFields(vMMEEvent.getParameterMap());
+ vMMENoActTask.setTaskLogic(new AxTaskLogic(vMMENoActTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask vMMEActTask = new AxTask(new AxArtifactKey("VMMEActTask", "0.0.1"));
+ vMMEActTask.duplicateInputFields(vMMEEvent.getParameterMap());
+ vMMEActTask.duplicateOutputFields(vMMEEvent.getParameterMap());
+ logicReader.setDefaultLogic(null);
+ vMMEActTask.setTaskLogic(new AxTaskLogic(vMMEActTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask sapcMatchTask = new AxTask(new AxArtifactKey("SAPCMatchTask", "0.0.1"));
+ sapcMatchTask.duplicateInputFields(sapcEvent.getParameterMap());
+ sapcMatchTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap());
+ sapcMatchTask.setTaskLogic(new AxTaskLogic(sapcMatchTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask sapcEstablishTask = new AxTask(new AxArtifactKey("SAPCEstablishTask", "0.0.1"));
+ sapcEstablishTask.duplicateInputFields(sapcEvent.getParameterMap());
+ sapcEstablishTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap());
+ logicReader.setDefaultLogic("Default_TaskLogic");
+ sapcEstablishTask.setTaskLogic(new AxTaskLogic(sapcEstablishTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask sapcDecideTask = new AxTask(new AxArtifactKey("SAPCDecideTask", "0.0.1"));
+ sapcDecideTask.duplicateInputFields(sapcEvent.getParameterMap());
+ sapcDecideTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap());
+ sapcDecideTask.setTaskLogic(new AxTaskLogic(sapcDecideTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask sapcActTask = new AxTask(new AxArtifactKey("SAPCActTask", "0.0.1"));
+ sapcActTask.duplicateInputFields(sapcEvent.getParameterMap());
+ sapcActTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap());
+ sapcActTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey());
+ logicReader.setDefaultLogic(null);
+ sapcActTask.setTaskLogic(new AxTaskLogic(sapcActTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ logicReader.setDefaultLogic("Default_TaskLogic");
+
+ final AxTask periodicMatchTask = new AxTask(new AxArtifactKey("PeriodicMatchTask", "0.0.1"));
+ periodicMatchTask.duplicateInputFields(periodicEvent.getParameterMap());
+ periodicMatchTask.duplicateOutputFields(periodicEvent.getParameterMap());
+ periodicMatchTask.setTaskLogic(new AxTaskLogic(periodicMatchTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask periodicEstablishTask = new AxTask(new AxArtifactKey("PeriodicEstablishTask", "0.0.1"));
+ periodicEstablishTask.duplicateInputFields(periodicEvent.getParameterMap());
+ periodicEstablishTask.duplicateOutputFields(periodicEvent.getParameterMap());
+ periodicEstablishTask
+ .setTaskLogic(new AxTaskLogic(periodicEstablishTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask periodicDecideTask = new AxTask(new AxArtifactKey("PeriodicDecideTask", "0.0.1"));
+ periodicDecideTask.duplicateInputFields(periodicEvent.getParameterMap());
+ periodicDecideTask.duplicateOutputFields(periodicEvent.getParameterMap());
+ periodicDecideTask.setTaskLogic(new AxTaskLogic(periodicDecideTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTask periodicActTask = new AxTask(new AxArtifactKey("PeriodicActTask", "0.0.1"));
+ periodicActTask.duplicateInputFields(periodicEvent.getParameterMap());
+ periodicActTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap());
+ periodicActTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey());
+ logicReader.setDefaultLogic(null);
+ periodicActTask.setTaskLogic(new AxTaskLogic(periodicActTask.getKey(), "TaskLogic", "MVEL", logicReader));
+
+ final AxTasks aadmTasks = new AxTasks(new AxArtifactKey("AADMTasks", "0.0.1"));
+ aadmTasks.getTaskMap().put(aadmMatchTask.getKey(), aadmMatchTask);
+ aadmTasks.getTaskMap().put(aadmEstablishTask.getKey(), aadmEstablishTask);
+ aadmTasks.getTaskMap().put(aadmDecideTask.getKey(), aadmDecideTask);
+ aadmTasks.getTaskMap().put(aadmDoSSuggestionActTask.getKey(), aadmDoSSuggestionActTask);
+ aadmTasks.getTaskMap().put(aadmNoActTask.getKey(), aadmNoActTask);
+ aadmTasks.getTaskMap().put(aadmDoSProvenActTask.getKey(), aadmDoSProvenActTask);
+ aadmTasks.getTaskMap().put(vMMEMatchTask.getKey(), vMMEMatchTask);
+ aadmTasks.getTaskMap().put(vMMEEstablishTask.getKey(), vMMEEstablishTask);
+ aadmTasks.getTaskMap().put(vMMEDecideTask.getKey(), vMMEDecideTask);
+ aadmTasks.getTaskMap().put(vMMENoActTask.getKey(), vMMENoActTask);
+ aadmTasks.getTaskMap().put(vMMEActTask.getKey(), vMMEActTask);
+ aadmTasks.getTaskMap().put(sapcMatchTask.getKey(), sapcMatchTask);
+ aadmTasks.getTaskMap().put(sapcEstablishTask.getKey(), sapcEstablishTask);
+ aadmTasks.getTaskMap().put(sapcDecideTask.getKey(), sapcDecideTask);
+ aadmTasks.getTaskMap().put(sapcActTask.getKey(), sapcActTask);
+ aadmTasks.getTaskMap().put(periodicMatchTask.getKey(), periodicMatchTask);
+ aadmTasks.getTaskMap().put(periodicEstablishTask.getKey(), periodicEstablishTask);
+ aadmTasks.getTaskMap().put(periodicDecideTask.getKey(), periodicDecideTask);
+ aadmTasks.getTaskMap().put(periodicActTask.getKey(), periodicActTask);
+
+ // Policies
+ logicReader.setDefaultLogic(null);
+
+ final AxPolicy aadmPolicy = new AxPolicy(new AxArtifactKey("AADMPolicy", "0.0.1"));
+ aadmPolicy.setTemplate("MEDA");
+
+ final AxState aadmActState = new AxState(new AxReferenceKey(aadmPolicy.getKey(), "Act"));
+ aadmActState.setTrigger(aadmEvent.getKey());
+ final AxStateOutput aadmAct2Out =
+ new AxStateOutput(aadmActState.getKey(), AxReferenceKey.getNullKey(), aadmXStreamActEvent.getKey());
+ aadmActState.getStateOutputs().put(aadmAct2Out.getKey().getLocalName(), aadmAct2Out);
+ aadmActState.getContextAlbumReferences().add(ipAddressStatusAlbum.getKey());
+ aadmActState.getContextAlbumReferences().add(imsiStatusAlbum.getKey());
+ aadmActState.getContextAlbumReferences().add(eNodeBStatusAlbum.getKey());
+ aadmActState.setTaskSelectionLogic(
+ new AxTaskSelectionLogic(aadmActState.getKey(), "TaskSelectionLogic", "MVEL", logicReader));
+ aadmActState.setDefaultTask(aadmNoActTask.getKey());
+ aadmActState.getTaskReferences().put(aadmNoActTask.getKey(), new AxStateTaskReference(aadmActState.getKey(),
+ aadmNoActTask.getKey(), AxStateTaskOutputType.DIRECT, aadmAct2Out.getKey()));
+ aadmActState.getTaskReferences().put(aadmDoSSuggestionActTask.getKey(),
+ new AxStateTaskReference(aadmActState.getKey(), aadmDoSSuggestionActTask.getKey(),
+ AxStateTaskOutputType.DIRECT, aadmAct2Out.getKey()));
+ aadmActState.getTaskReferences().put(aadmDoSProvenActTask.getKey(),
+ new AxStateTaskReference(aadmActState.getKey(), aadmDoSProvenActTask.getKey(),
+ AxStateTaskOutputType.DIRECT, aadmAct2Out.getKey()));
+
+ logicReader.setDefaultLogic("Default_TaskSelectionLogic");
+
+ final AxState aadmDecideState = new AxState(new AxReferenceKey(aadmPolicy.getKey(), "Decide"));
+ aadmDecideState.setTrigger(aadmEvent.getKey());
+ final AxStateOutput aadmDec2Act =
+ new AxStateOutput(aadmDecideState.getKey(), aadmActState.getKey(), aadmEvent.getKey());
+ aadmDecideState.getStateOutputs().put(aadmDec2Act.getKey().getLocalName(), aadmDec2Act);
+ aadmDecideState.setTaskSelectionLogic(
+ new AxTaskSelectionLogic(aadmDecideState.getKey(), "TaskSelectionLogic", "MVEL", logicReader));
+ aadmDecideState.setDefaultTask(aadmDecideTask.getKey());
+ aadmDecideState.getTaskReferences().put(aadmDecideTask.getKey(), new AxStateTaskReference(
+ aadmDecideState.getKey(), aadmDecideTask.getKey(), AxStateTaskOutputType.DIRECT, aadmDec2Act.getKey()));
+
+ final AxState aadmEstablishState = new AxState(new AxReferenceKey(aadmPolicy.getKey(), "Establish"));
+ aadmEstablishState.setTrigger(aadmEvent.getKey());
+ final AxStateOutput aadmEst2Dec =
+ new AxStateOutput(aadmEstablishState.getKey(), aadmDecideState.getKey(), aadmEvent.getKey());
+ aadmEstablishState.getStateOutputs().put(aadmEst2Dec.getKey().getLocalName(), aadmEst2Dec);
+ aadmEstablishState.setTaskSelectionLogic(
+ new AxTaskSelectionLogic(aadmEstablishState.getKey(), "TaskSelectionLogic", "MVEL", logicReader));
+ aadmEstablishState.setDefaultTask(aadmEstablishTask.getKey());
+ aadmEstablishState.getTaskReferences().put(aadmEstablishTask.getKey(),
+ new AxStateTaskReference(aadmEstablishState.getKey(), aadmEstablishTask.getKey(),
+ AxStateTaskOutputType.DIRECT, aadmEst2Dec.getKey()));
+
+ final AxState aadmMatchState = new AxState(new AxReferenceKey(aadmPolicy.getKey(), "Match"));
+ aadmMatchState.setTrigger(aadmEvent.getKey());
+ final AxStateOutput aadmMat2Est =
+ new AxStateOutput(aadmMatchState.getKey(), aadmEstablishState.getKey(), aadmEvent.getKey());
+ aadmMatchState.getStateOutputs().put(aadmMat2Est.getKey().getLocalName(), aadmMat2Est);
+ aadmMatchState.setTaskSelectionLogic(
+ new AxTaskSelectionLogic(aadmMatchState.getKey(), "TaskSelectionLogic", "MVEL", logicReader));
+ aadmMatchState.setDefaultTask(aadmMatchTask.getKey());
+ aadmMatchState.getTaskReferences().put(aadmMatchTask.getKey(), new AxStateTaskReference(aadmMatchState.getKey(),
+ aadmMatchTask.getKey(), AxStateTaskOutputType.DIRECT, aadmMat2Est.getKey()));
+
+ aadmPolicy.setFirstState(aadmMatchState.getKey().getLocalName());
+ aadmPolicy.getStateMap().put(aadmMatchState.getKey().getLocalName(), aadmMatchState);
+ aadmPolicy.getStateMap().put(aadmEstablishState.getKey().getLocalName(), aadmEstablishState);
+ aadmPolicy.getStateMap().put(aadmDecideState.getKey().getLocalName(), aadmDecideState);
+ aadmPolicy.getStateMap().put(aadmActState.getKey().getLocalName(), aadmActState);
+
+ final AxPolicy vMMEPolicy = new AxPolicy(new AxArtifactKey("VMMEPolicy", "0.0.1"));
+ vMMEPolicy.setTemplate("MEDA");
+
+ final AxState vMMEActState = new AxState(new AxReferenceKey(vMMEPolicy.getKey(), "Act"));
+ vMMEActState.setTrigger(vMMEEvent.getKey());
+ final AxStateOutput vMMEAct2Out =
+ new AxStateOutput(vMMEActState.getKey(), AxReferenceKey.getNullKey(), vMMEEvent.getKey());
+ vMMEActState.getStateOutputs().put(vMMEAct2Out.getKey().getLocalName(), vMMEAct2Out);
+ vMMEActState.setDefaultTask(vMMEActTask.getKey());
+ vMMEActState.getTaskReferences().put(vMMEActTask.getKey(), new AxStateTaskReference(vMMEActState.getKey(),
+ vMMEActTask.getKey(), AxStateTaskOutputType.DIRECT, vMMEAct2Out.getKey()));
+ vMMEActState.getTaskReferences().put(vMMENoActTask.getKey(), new AxStateTaskReference(vMMEActState.getKey(),
+ vMMENoActTask.getKey(), AxStateTaskOutputType.DIRECT, vMMEAct2Out.getKey()));
+
+ final AxState vMMEDecideState = new AxState(new AxReferenceKey(vMMEPolicy.getKey(), "Decide"));
+ vMMEDecideState.setTrigger(vMMEEvent.getKey());
+ final AxStateOutput vMMEDec2Act =
+ new AxStateOutput(vMMEDecideState.getKey(), vMMEActState.getKey(), vMMEEvent.getKey());
+ vMMEDecideState.getStateOutputs().put(vMMEDec2Act.getKey().getLocalName(), vMMEDec2Act);
+ vMMEDecideState.setDefaultTask(vMMEDecideTask.getKey());
+ vMMEDecideState.getTaskReferences().put(vMMEDecideTask.getKey(), new AxStateTaskReference(
+ vMMEDecideState.getKey(), vMMEDecideTask.getKey(), AxStateTaskOutputType.DIRECT, vMMEDec2Act.getKey()));
+
+ final AxState vMMEEstablishState = new AxState(new AxReferenceKey(vMMEPolicy.getKey(), "Establish"));
+ vMMEEstablishState.setTrigger(vMMEEvent.getKey());
+ final AxStateOutput vMMEEst2Dec =
+ new AxStateOutput(vMMEEstablishState.getKey(), vMMEDecideState.getKey(), vMMEEvent.getKey());
+ vMMEEstablishState.getStateOutputs().put(vMMEEst2Dec.getKey().getLocalName(), vMMEEst2Dec);
+ vMMEEstablishState.setDefaultTask(vMMEEstablishTask.getKey());
+ vMMEEstablishState.getTaskReferences().put(vMMEEstablishTask.getKey(),
+ new AxStateTaskReference(vMMEEstablishState.getKey(), vMMEEstablishTask.getKey(),
+ AxStateTaskOutputType.DIRECT, vMMEEst2Dec.getKey()));
+
+ final AxState vMMEMatchState = new AxState(new AxReferenceKey(vMMEPolicy.getKey(), "Match"));
+ vMMEMatchState.setTrigger(vMMEEvent.getKey());
+ final AxStateOutput vMMEMat2Est =
+ new AxStateOutput(vMMEMatchState.getKey(), vMMEEstablishState.getKey(), vMMEEvent.getKey());
+ vMMEMatchState.getStateOutputs().put(vMMEMat2Est.getKey().getLocalName(), vMMEMat2Est);
+ vMMEMatchState.setDefaultTask(vMMEMatchTask.getKey());
+ vMMEMatchState.getTaskReferences().put(vMMEMatchTask.getKey(), new AxStateTaskReference(vMMEMatchState.getKey(),
+ vMMEMatchTask.getKey(), AxStateTaskOutputType.DIRECT, vMMEMat2Est.getKey()));
+
+ vMMEPolicy.setFirstState(vMMEMatchState.getKey().getLocalName());
+ vMMEPolicy.getStateMap().put(vMMEMatchState.getKey().getLocalName(), vMMEMatchState);
+ vMMEPolicy.getStateMap().put(vMMEEstablishState.getKey().getLocalName(), vMMEEstablishState);
+ vMMEPolicy.getStateMap().put(vMMEDecideState.getKey().getLocalName(), vMMEDecideState);
+ vMMEPolicy.getStateMap().put(vMMEActState.getKey().getLocalName(), vMMEActState);
+
+ final AxPolicy sapcPolicy = new AxPolicy(new AxArtifactKey("SAPCPolicy", "0.0.1"));
+ sapcPolicy.setTemplate("MEDA");
+
+ final AxState sapcActState = new AxState(new AxReferenceKey(sapcPolicy.getKey(), "Act"));
+ sapcActState.setTrigger(sapcEvent.getKey());
+ final AxStateOutput sapcAct2Out = new AxStateOutput(sapcActState.getKey(), AxReferenceKey.getNullKey(),
+ sapcBlacklistSubscriberEvent.getKey());
+ sapcActState.getStateOutputs().put(sapcAct2Out.getKey().getLocalName(), sapcAct2Out);
+ sapcActState.setDefaultTask(sapcActTask.getKey());
+ sapcActState.getTaskReferences().put(sapcActTask.getKey(), new AxStateTaskReference(sapcActState.getKey(),
+ sapcActTask.getKey(), AxStateTaskOutputType.DIRECT, sapcAct2Out.getKey()));
+
+ final AxState sapcDecideState = new AxState(new AxReferenceKey(sapcPolicy.getKey(), "Decide"));
+ sapcDecideState.setTrigger(sapcEvent.getKey());
+ final AxStateOutput sapcDec2Act =
+ new AxStateOutput(sapcDecideState.getKey(), sapcActState.getKey(), sapcEvent.getKey());
+ sapcDecideState.getStateOutputs().put(sapcDec2Act.getKey().getLocalName(), sapcDec2Act);
+ sapcDecideState.setDefaultTask(sapcDecideTask.getKey());
+ sapcDecideState.getTaskReferences().put(sapcDecideTask.getKey(), new AxStateTaskReference(
+ sapcDecideState.getKey(), sapcDecideTask.getKey(), AxStateTaskOutputType.DIRECT, sapcDec2Act.getKey()));
+
+ final AxState sapcEstablishState = new AxState(new AxReferenceKey(sapcPolicy.getKey(), "Establish"));
+ sapcEstablishState.setTrigger(sapcEvent.getKey());
+ final AxStateOutput sapcEst2Dec =
+ new AxStateOutput(sapcEstablishState.getKey(), sapcDecideState.getKey(), sapcEvent.getKey());
+ sapcEstablishState.getStateOutputs().put(sapcEst2Dec.getKey().getLocalName(), sapcEst2Dec);
+ sapcEstablishState.setDefaultTask(sapcEstablishTask.getKey());
+ sapcEstablishState.getTaskReferences().put(sapcEstablishTask.getKey(),
+ new AxStateTaskReference(sapcEstablishState.getKey(), sapcEstablishTask.getKey(),
+ AxStateTaskOutputType.DIRECT, sapcEst2Dec.getKey()));
+
+ final AxState sapcMatchState = new AxState(new AxReferenceKey(sapcPolicy.getKey(), "Match"));
+ sapcMatchState.setTrigger(aadmXStreamActEvent.getKey());
+ final AxStateOutput sapcMat2Est =
+ new AxStateOutput(sapcMatchState.getKey(), sapcEstablishState.getKey(), sapcEvent.getKey());
+ sapcMatchState.getStateOutputs().put(sapcMat2Est.getKey().getLocalName(), sapcMat2Est);
+ sapcMatchState.setDefaultTask(sapcMatchTask.getKey());
+ sapcMatchState.getTaskReferences().put(sapcMatchTask.getKey(), new AxStateTaskReference(sapcMatchState.getKey(),
+ sapcMatchTask.getKey(), AxStateTaskOutputType.DIRECT, sapcMat2Est.getKey()));
+
+ sapcPolicy.setFirstState(sapcMatchState.getKey().getLocalName());
+ sapcPolicy.getStateMap().put(sapcMatchState.getKey().getLocalName(), sapcMatchState);
+ sapcPolicy.getStateMap().put(sapcEstablishState.getKey().getLocalName(), sapcEstablishState);
+ sapcPolicy.getStateMap().put(sapcDecideState.getKey().getLocalName(), sapcDecideState);
+ sapcPolicy.getStateMap().put(sapcActState.getKey().getLocalName(), sapcActState);
+
+ final AxPolicy periodicPolicy = new AxPolicy(new AxArtifactKey("PeriodicPolicy", "0.0.1"));
+ periodicPolicy.setTemplate("MEDA");
+
+ final AxState periodicActState = new AxState(new AxReferenceKey(periodicPolicy.getKey(), "Act"));
+ periodicActState.setTrigger(periodicEvent.getKey());
+ final AxStateOutput perAct2Out = new AxStateOutput(periodicActState.getKey(), AxReferenceKey.getNullKey(),
+ sapcBlacklistSubscriberEvent.getKey());
+ periodicActState.getStateOutputs().put(perAct2Out.getKey().getLocalName(), perAct2Out);
+ periodicActState.setDefaultTask(periodicActTask.getKey());
+ periodicActState.getTaskReferences().put(periodicActTask.getKey(),
+ new AxStateTaskReference(periodicActState.getKey(), periodicActTask.getKey(),
+ AxStateTaskOutputType.DIRECT, perAct2Out.getKey()));
+
+ final AxState periodicDecideState = new AxState(new AxReferenceKey(periodicPolicy.getKey(), "Decide"));
+ periodicDecideState.setTrigger(periodicEvent.getKey());
+ final AxStateOutput perDec2Act =
+ new AxStateOutput(periodicDecideState.getKey(), periodicActState.getKey(), periodicEvent.getKey());
+ periodicDecideState.getStateOutputs().put(perDec2Act.getKey().getLocalName(), perDec2Act);
+ periodicDecideState.setDefaultTask(periodicDecideTask.getKey());
+ periodicDecideState.getTaskReferences().put(periodicDecideTask.getKey(),
+ new AxStateTaskReference(periodicDecideState.getKey(), periodicDecideTask.getKey(),
+ AxStateTaskOutputType.DIRECT, perDec2Act.getKey()));
+
+ final AxState periodicEstablishState = new AxState(new AxReferenceKey(periodicPolicy.getKey(), "Establish"));
+ periodicEstablishState.setTrigger(periodicEvent.getKey());
+ final AxStateOutput perEst2Dec = new AxStateOutput(periodicEstablishState.getKey(),
+ periodicDecideState.getKey(), periodicEvent.getKey());
+ periodicEstablishState.getStateOutputs().put(perEst2Dec.getKey().getLocalName(), perEst2Dec);
+ periodicEstablishState.setDefaultTask(periodicEstablishTask.getKey());
+ periodicEstablishState.getTaskReferences().put(periodicEstablishTask.getKey(),
+ new AxStateTaskReference(periodicEstablishState.getKey(), periodicEstablishTask.getKey(),
+ AxStateTaskOutputType.DIRECT, perEst2Dec.getKey()));
+
+ final AxState periodicMatchState = new AxState(new AxReferenceKey(periodicPolicy.getKey(), "Match"));
+ periodicMatchState.setTrigger(periodicEvent.getKey());
+ final AxStateOutput perMat2Est =
+ new AxStateOutput(periodicMatchState.getKey(), periodicEstablishState.getKey(), periodicEvent.getKey());
+ periodicMatchState.getStateOutputs().put(perMat2Est.getKey().getLocalName(), perMat2Est);
+ periodicMatchState.setDefaultTask(periodicMatchTask.getKey());
+ periodicMatchState.getTaskReferences().put(periodicMatchTask.getKey(),
+ new AxStateTaskReference(periodicMatchState.getKey(), periodicMatchTask.getKey(),
+ AxStateTaskOutputType.DIRECT, perMat2Est.getKey()));
+
+ periodicPolicy.setFirstState(periodicMatchState.getKey().getLocalName());
+ periodicPolicy.getStateMap().put(periodicMatchState.getKey().getLocalName(), periodicMatchState);
+ periodicPolicy.getStateMap().put(periodicEstablishState.getKey().getLocalName(), periodicEstablishState);
+ periodicPolicy.getStateMap().put(periodicDecideState.getKey().getLocalName(), periodicDecideState);
+ periodicPolicy.getStateMap().put(periodicActState.getKey().getLocalName(), periodicActState);
+
+ final AxPolicies aadmPolicies = new AxPolicies(new AxArtifactKey("AADMPolicies", "0.0.1"));
+ aadmPolicies.getPolicyMap().put(aadmPolicy.getKey(), aadmPolicy);
+ aadmPolicies.getPolicyMap().put(vMMEPolicy.getKey(), vMMEPolicy);
+ aadmPolicies.getPolicyMap().put(sapcPolicy.getKey(), sapcPolicy);
+ aadmPolicies.getPolicyMap().put(periodicPolicy.getKey(), periodicPolicy);
+
+ final AxKeyInformation keyInformation = new AxKeyInformation(new AxArtifactKey("AADMKeyInformation", "0.0.1"));
+ final AxPolicyModel aadmPolicyModel = new AxPolicyModel(new AxArtifactKey("AADMPolicyModel", "0.0.1"));
+ aadmPolicyModel.setPolicies(aadmPolicies);
+ aadmPolicyModel.setEvents(aadmEvents);
+ aadmPolicyModel.setTasks(aadmTasks);
+ aadmPolicyModel.setAlbums(aadmAlbums);
+ aadmPolicyModel.setSchemas(aadmContextSchemas);
+ aadmPolicyModel.setKeyInformation(keyInformation);
+ aadmPolicyModel.getKeyInformation().generateKeyInfo(aadmPolicyModel);
+
+ final AxValidationResult result = aadmPolicyModel.validate(new AxValidationResult());
+ if (!result.getValidationResult().equals(AxValidationResult.ValidationResult.VALID)) {
+ throw new ApexRuntimeException("model " + aadmPolicyModel.getID() + " is not valid" + result);
+ }
+ return aadmPolicyModel;
+ }
+}
diff --git a/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/AADMDomainModelSaver.java b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/AADMDomainModelSaver.java
new file mode 100644
index 000000000..618a9535a
--- /dev/null
+++ b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/AADMDomainModelSaver.java
@@ -0,0 +1,57 @@
+/*-
+ * ============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.examples.aadm.model;
+
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.model.basicmodel.handling.ApexModelSaver;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+
+/**
+ * This class saves sample domain models to disk in XML and JSON format.
+ *
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ */
+public final class AADMDomainModelSaver {
+ /**
+ * Private default constructor to prevent subclassing.
+ */
+ private AADMDomainModelSaver() {}
+
+ /**
+ * Write the AADM model to args[0].
+ *
+ * @param args Not used
+ * @throws ApexException the apex exception
+ */
+ public static void main(final String[] args) throws ApexException {
+ if (args.length != 1) {
+ System.err.println("usage: " + AADMDomainModelSaver.class.getCanonicalName() + " modelDirectory");
+ return;
+ }
+
+ // Save Java model
+ final AxPolicyModel aadmPolicyModel = new AADMDomainModelFactory().getAADMPolicyModel();
+ final ApexModelSaver<AxPolicyModel> aadmModelSaver =
+ new ApexModelSaver<>(AxPolicyModel.class, aadmPolicyModel, args[0]);
+ aadmModelSaver.apexModelWriteJSON();
+ aadmModelSaver.apexModelWriteXML();
+ }
+}
diff --git a/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/package-info.java b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/package-info.java
new file mode 100644
index 000000000..659154d45
--- /dev/null
+++ b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/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=========================================================
+ */
+
+/**
+ * Provides Java generation of the AADM model.
+ *
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ */
+
+package org.onap.policy.apex.examples.aadm.model;
diff --git a/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/package-info.java b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/package-info.java
new file mode 100644
index 000000000..90198c254
--- /dev/null
+++ b/examples/aadm/src/main/java/org/onap/policy/apex/examples/aadm/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=========================================================
+ */
+
+/**
+ * Provides the policy model and supporting Java classes for the AADM domain.
+ *
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ */
+
+package org.onap.policy.apex.examples.aadm;
diff --git a/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent.xml b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent.xml
new file mode 100644
index 000000000..3ce3246d0
--- /dev/null
+++ b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============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=========================================================
+-->
+
+<xmlApexEvent xmlns="http://www.ericsson.com/apexevent">
+ <name>AADMEvent</name>
+ <version>0.0.1</version>
+ <nameSpace>org.onap.policy.apex.examples.aadm.events</nameSpace>
+ <source>CompaA</source>
+ <target>apex</target>
+ <data>
+ <key>IMSI</key>
+ <value>27201872253157</value>
+ </data>
+ <data>
+ <key>ENODEB_ID</key>
+ <value>10000</value>
+ </data>
+ <data>
+ <key>IMSI_IP</key>
+ <value>111.222.333.444</value>
+ </data>
+ <data>
+ <key>NW_IP</key>
+ <value>THIS IS NOT AN IP ADDRESS</value>
+ </data>
+ <data>
+ <key>DoS</key>
+ <value>true</value>
+ </data>
+ <data>
+ <key>PROBE_ON</key>
+ <value>false</value>
+ </data>
+ <data>
+ <key>TCP_ON</key>
+ <value>false</value>
+ </data>
+ <data>
+ <key>SGW_IP_ADDRESS</key>
+ <value>10.0.0.2</value>
+ </data>
+ <data>
+ <key>UE_IP_ADDRESS</key>
+ <value>10.0.0.4</value>
+ </data>
+ <data>
+ <key>NUM_SUBSCRIBERS</key>
+ <value>101</value>
+ </data>
+ <data>
+ <key>ACTTASK</key>
+ <value />
+ </data>
+ <data>
+ <key>APPLICATION</key>
+ <value />
+ </data>
+ <data>
+ <key>ATTACH_COUNT</key>
+ <value>0</value>
+ </data>
+ <data>
+ <key>AVG_SUBSCRIBER_ATTACH</key>
+ <value>0</value>
+ </data>
+ <data>
+ <key>SERVICE_REQUEST_COUNT</key>
+ <value>99</value>
+ </data>
+ <data>
+ <key>AVG_SUBSCRIBER_SERVICE_REQUEST</key>
+ <value>101.0</value>
+ </data>
+ <data>
+ <key>TCP_UE_SIDE_AVG_THROUGHPUT</key>
+ <value>0</value>
+ </data>
+ <data>
+ <key>TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX</key>
+ <value>0</value>
+ </data>
+ <data>
+ <key>http_host_class</key>
+ <value />
+ </data>
+ <data>
+ <key>protocol_group</key>
+ <value />
+ </data>
+</xmlApexEvent>
diff --git a/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent0.json b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent0.json
new file mode 100644
index 000000000..64d34fcf9
--- /dev/null
+++ b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent0.json
@@ -0,0 +1,27 @@
+{
+ "nameSpace": "org.onap.policy.apex.examples.aadm.events",
+ "name": "AADMEvent",
+ "version": "0.0.1",
+ "source": "CompaA",
+ "target": "apex",
+ "IMSI": 123456,
+ "IMSI_IP": "101.111.121.131",
+ "ENODEB_ID": 123,
+ "SERVICE_REQUEST_COUNT": 99,
+ "AVG_SUBSCRIBER_SERVICE_REQUEST": 101.0,
+ "UE_IP_ADDRESS": "101.111.121.131",
+ "NUM_SUBSCRIBERS": 101,
+ "ACTTASK": "",
+ "APPLICATION": "",
+ "ATTACH_COUNT": 0,
+ "AVG_SUBSCRIBER_ATTACH": 0,
+ "DoS": false,
+ "NW_IP": "",
+ "PROBE_ON": false,
+ "SGW_IP_ADDRESS": "",
+ "TCP_ON": false,
+ "TCP_UE_SIDE_AVG_THROUGHPUT": 0,
+ "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0,
+ "http_host_class": "",
+ "protocol_group": ""
+}
diff --git a/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent1.json b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent1.json
new file mode 100644
index 000000000..b525e5f2e
--- /dev/null
+++ b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent1.json
@@ -0,0 +1,27 @@
+{
+ "nameSpace": "org.onap.policy.apex.examples.aadm.events",
+ "name": "AADMEvent",
+ "version": "0.0.1",
+ "source": "CompaA",
+ "target": "apex",
+ "IMSI": 123456,
+ "IMSI_IP": "101.111.121.131",
+ "ENODEB_ID": 123,
+ "SERVICE_REQUEST_COUNT": 101,
+ "AVG_SUBSCRIBER_SERVICE_REQUEST": 99.0,
+ "UE_IP_ADDRESS": "101.111.121.131",
+ "NUM_SUBSCRIBERS": 101,
+ "TCP_UE_SIDE_AVG_THROUGHPUT": 101.0,
+ "ACTTASK": "",
+ "APPLICATION": "",
+ "ATTACH_COUNT": 0,
+ "AVG_SUBSCRIBER_ATTACH": 0,
+ "DoS": false,
+ "NW_IP": "",
+ "PROBE_ON": false,
+ "SGW_IP_ADDRESS": "",
+ "TCP_ON": false,
+ "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0,
+ "http_host_class": "",
+ "protocol_group": ""
+}
diff --git a/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent2.json b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent2.json
new file mode 100644
index 000000000..893a19675
--- /dev/null
+++ b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent2.json
@@ -0,0 +1,27 @@
+{
+ "nameSpace": "org.onap.policy.apex.examples.aadm.events",
+ "name": "AADMEvent",
+ "version": "0.0.1",
+ "source": "CompaA",
+ "target": "apex",
+ "IMSI": 123456,
+ "IMSI_IP": "101.111.121.131",
+ "ENODEB_ID": 123,
+ "SERVICE_REQUEST_COUNT": 99,
+ "AVG_SUBSCRIBER_SERVICE_REQUEST": 101.0,
+ "UE_IP_ADDRESS": "101.111.121.131",
+ "NUM_SUBSCRIBERS": 99,
+ "ACTTASK": "",
+ "APPLICATION": "",
+ "ATTACH_COUNT": 0,
+ "AVG_SUBSCRIBER_ATTACH": 0,
+ "DoS": false,
+ "NW_IP": "",
+ "PROBE_ON": false,
+ "SGW_IP_ADDRESS": "",
+ "TCP_ON": false,
+ "TCP_UE_SIDE_AVG_THROUGHPUT": 0,
+ "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0,
+ "http_host_class": "",
+ "protocol_group": ""
+}
diff --git a/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent3.json b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent3.json
new file mode 100644
index 000000000..dd8e0d549
--- /dev/null
+++ b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent3.json
@@ -0,0 +1,27 @@
+{
+ "nameSpace": "org.onap.policy.apex.examples.aadm.events",
+ "name": "AADMEvent",
+ "version": "0.0.1",
+ "source": "CompaA",
+ "target": "apex",
+ "IMSI": 123456,
+ "IMSI_IP": "101.111.121.131",
+ "ENODEB_ID": 123,
+ "TCP_UE_SIDE_AVG_THROUGHPUT": 101.0,
+ "ACTTASK": "",
+ "APPLICATION": "",
+ "ATTACH_COUNT": 0,
+ "AVG_SUBSCRIBER_ATTACH": 0,
+ "AVG_SUBSCRIBER_SERVICE_REQUEST": 0.0,
+ "DoS": false,
+ "NUM_SUBSCRIBERS": 0,
+ "NW_IP": "",
+ "PROBE_ON": false,
+ "SERVICE_REQUEST_COUNT": 0,
+ "SGW_IP_ADDRESS": "",
+ "TCP_ON": false,
+ "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0,
+ "UE_IP_ADDRESS": "",
+ "http_host_class": "",
+ "protocol_group": ""
+}
diff --git a/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent4.json b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent4.json
new file mode 100644
index 000000000..dca754500
--- /dev/null
+++ b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent4.json
@@ -0,0 +1,28 @@
+{
+ "nameSpace": "org.onap.policy.apex.examples.aadm.events",
+ "name": "AADMEvent",
+ "version": "0.0.1",
+ "source": "CompaA",
+ "target": "apex",
+ "IMSI": 123456,
+ "IMSI_IP": "101.111.121.131",
+ "ENODEB_ID": 123,
+ "SERVICE_REQUEST_COUNT": 99,
+ "AVG_SUBSCRIBER_SERVICE_REQUEST": 101.0,
+ "UE_IP_ADDRESS": "101.111.121.131",
+ "NUM_SUBSCRIBERS": 101,
+ "ACTTASK": "",
+ "APPLICATION": "",
+ "ATTACH_COUNT": 0,
+ "AVG_SUBSCRIBER_ATTACH": 0,
+ "AVG_SUBSCRIBER_SERVICE_REQUEST": 0.0,
+ "DoS": false,
+ "NW_IP": "",
+ "PROBE_ON": false,
+ "SGW_IP_ADDRESS": "",
+ "TCP_ON": false,
+ "TCP_UE_SIDE_AVG_THROUGHPUT": 0,
+ "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0,
+ "http_host_class": "",
+ "protocol_group": ""
+}
diff --git a/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent5.json b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent5.json
new file mode 100644
index 000000000..a7676e12f
--- /dev/null
+++ b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent5.json
@@ -0,0 +1,27 @@
+{
+ "nameSpace": "org.onap.policy.apex.examples.aadm.events",
+ "name": "AADMEvent",
+ "version": "0.0.1",
+ "source": "CompaA",
+ "target": "apex",
+ "IMSI": 123456,
+ "ENODEB_ID": 124,
+ "SERVICE_REQUEST_COUNT": 99,
+ "AVG_SUBSCRIBER_SERVICE_REQUEST": 101.0,
+ "UE_IP_ADDRESS": "101.111.121.131",
+ "NUM_SUBSCRIBERS": 101,
+ "ACTTASK": "",
+ "APPLICATION": "",
+ "ATTACH_COUNT": 0,
+ "AVG_SUBSCRIBER_ATTACH": 0,
+ "DoS": false,
+ "IMSI_IP": "",
+ "NW_IP": "",
+ "PROBE_ON": false,
+ "SGW_IP_ADDRESS": "",
+ "TCP_ON": false,
+ "TCP_UE_SIDE_AVG_THROUGHPUT": 0,
+ "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0,
+ "http_host_class": "",
+ "protocol_group": ""
+}
diff --git a/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent6.json b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent6.json
new file mode 100644
index 000000000..64d34fcf9
--- /dev/null
+++ b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent6.json
@@ -0,0 +1,27 @@
+{
+ "nameSpace": "org.onap.policy.apex.examples.aadm.events",
+ "name": "AADMEvent",
+ "version": "0.0.1",
+ "source": "CompaA",
+ "target": "apex",
+ "IMSI": 123456,
+ "IMSI_IP": "101.111.121.131",
+ "ENODEB_ID": 123,
+ "SERVICE_REQUEST_COUNT": 99,
+ "AVG_SUBSCRIBER_SERVICE_REQUEST": 101.0,
+ "UE_IP_ADDRESS": "101.111.121.131",
+ "NUM_SUBSCRIBERS": 101,
+ "ACTTASK": "",
+ "APPLICATION": "",
+ "ATTACH_COUNT": 0,
+ "AVG_SUBSCRIBER_ATTACH": 0,
+ "DoS": false,
+ "NW_IP": "",
+ "PROBE_ON": false,
+ "SGW_IP_ADDRESS": "",
+ "TCP_ON": false,
+ "TCP_UE_SIDE_AVG_THROUGHPUT": 0,
+ "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0,
+ "http_host_class": "",
+ "protocol_group": ""
+}
diff --git a/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent7.json b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent7.json
new file mode 100644
index 000000000..694b28f2a
--- /dev/null
+++ b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestEvent7.json
@@ -0,0 +1,27 @@
+{
+ "nameSpace": "org.onap.policy.apex.examples.aadm.events",
+ "name": "AADMEvent",
+ "version": "0.0.1",
+ "source": "CompaA",
+ "target": "apex",
+ "IMSI": 123456,
+ "ENODEB_ID": 123,
+ "SERVICE_REQUEST_COUNT": 99,
+ "UE_IP_ADDRESS": "101.111.121.131",
+ "ACTTASK": "",
+ "APPLICATION": "",
+ "ATTACH_COUNT": 0,
+ "AVG_SUBSCRIBER_ATTACH": 0,
+ "AVG_SUBSCRIBER_SERVICE_REQUEST": 0.0,
+ "DoS": false,
+ "IMSI_IP": "",
+ "NUM_SUBSCRIBERS": 0,
+ "NW_IP": "",
+ "PROBE_ON": false,
+ "SGW_IP_ADDRESS": "",
+ "TCP_ON": false,
+ "TCP_UE_SIDE_AVG_THROUGHPUT": 0,
+ "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0,
+ "http_host_class": "",
+ "protocol_group": ""
+}
diff --git a/examples/aadm/src/main/resources/examples/events/AADM/AADMTestPeridociEvent.json b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestPeridociEvent.json
new file mode 100644
index 000000000..6283293c9
--- /dev/null
+++ b/examples/aadm/src/main/resources/examples/events/AADM/AADMTestPeridociEvent.json
@@ -0,0 +1,12 @@
+{
+ "nameSpace": "org.onap.policy.apex.examples.aadm.events",
+ "name": "PeriodicEvent",
+ "version": "0.0.1",
+ "source": "apex",
+ "target": "apex",
+ "PERIODIC_EVENT_COUNT": 100,
+ "PERIODIC_DELAY": 1000,
+ "PERIODIC_FIRST_TIME": 1496828877,
+ "PERIODIC_CURRENT_TIME": 1496828908,
+ "PERIODIC_LAST_TIME": 1496828919
+} \ No newline at end of file
diff --git a/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMDoSProvenActTask_TaskLogic.mvel b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMDoSProvenActTask_TaskLogic.mvel
new file mode 100644
index 000000000..078841792
--- /dev/null
+++ b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMDoSProvenActTask_TaskLogic.mvel
@@ -0,0 +1,80 @@
+/*
+ * ============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=========================================================
+ */
+import org.onap.policy.apex.examples.aadm.concepts.ENodeBStatus;
+import org.onap.policy.apex.examples.aadm.concepts.IMSIStatus;
+
+logger.debug(subject.id + ":" + subject.taskName + " execution logic");
+logger.debug(inFields);
+
+outFields["ACTTASK"] = "act";
+outFields["TRIGGER_SPEC"] = "XSTREAM_AADM_ACT_EVENT";
+outFields["MAJ_MIN_MAINT_VERSION"] = "0.0.1";
+outFields["PROBE_ON"] = true;
+outFields["TCP_ON"] = false;
+outFields["IMSI"] = inFields["IMSI"];
+
+if (inFields["IMSI_IP"] != null) {
+ outFields["IMSI_IP"] = inFields["IMSI_IP"];
+}
+else{
+ outFields["IMSI_IP"] = inFields["UE_IP_ADDRESS"];
+}
+
+if (inFields["NW_IP"] != null) {
+ outFields["NW_IP"] = inFields["NW_IP"];
+}
+else{
+ outFields["NW_IP"] = inFields["SGW_IP_ADDRESS"];
+}
+
+IMSIStatus imsiStatus = getContextAlbum("IMSIStatusAlbum").get((String)inFields["IMSI"]);
+logger.debug(imsiStatus);
+
+ENodeBStatus eNodeBStatus = getContextAlbum("ENodeBStatusAlbum").get(imsiStatus.getENodeBID());
+eNodeBStatus.setBeingProbed(false);
+
+leaveProbingOn = false;
+for (ENodeBStatus enbStatus : getContextAlbum("ENodeBStatusAlbum").values) {
+ if (enbStatus.getBeingProbed()) {
+ leaveProbingOn = true;
+ }
+}
+
+if (!leaveProbingOn) {
+ outFields["PROBE_ON"] = false;
+ outFields["TCP_ON"] = false;
+}
+
+eNodeBStatus.decrementDOSCount();
+logger.debug(eNodeBStatus.getENodeB() + ": dosCount is " + eNodeBStatus.getDOSCount());
+
+imsiStatus.setAnomalous(false);
+
+logger.debug("imsi: " + imsiStatus.getIMSI() + " anamalous " + imsiStatus.getAnomalous());
+
+getContextAlbum("IMSIStatusAlbum") .put(imsiStatus.getIMSI(), imsiStatus);
+getContextAlbum("ENodeBStatusAlbum").put(eNodeBStatus.getENodeB(), eNodeBStatus);
+
+outFields["THRESHOLD"] = 0;
+outFields["PROFILE"] = "";
+outFields["VERSION"] = "0.0.1";
+outFields["BLACKLIST_ON"] = false;
+
+return true;
diff --git a/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMDoSSuggestionActTask_TaskLogic.mvel b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMDoSSuggestionActTask_TaskLogic.mvel
new file mode 100644
index 000000000..d04f9425e
--- /dev/null
+++ b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMDoSSuggestionActTask_TaskLogic.mvel
@@ -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=========================================================
+ */
+import org.onap.policy.apex.examples.aadm.concepts.ENodeBStatus;
+import org.onap.policy.apex.examples.aadm.concepts.IMSIStatus;
+
+logger.debug(subject.id + ":" + subject.taskName + " execution logic");
+logger.debug(inFields);
+
+outFields["ACTTASK"] = "probe";
+outFields["TRIGGER_SPEC"] = "XSTREAM_AADM_ACT_EVENT";
+outFields["MAJ_MIN_MAINT_VERSION"] = "0.0.1";
+outFields["IMSI"] = inFields["IMSI"];
+
+if (inFields["IMSI_IP"] != null) {
+ outFields["IMSI_IP"] = inFields["IMSI_IP"];
+}
+else {
+ outFields["IMSI_IP"] = inFields["UE_IP_ADDRESS"];
+}
+
+if (inFields["NW_IP"] != null) {
+ outFields["NW_IP"] = inFields["NW_IP"];
+}
+else {
+ outFields["NW_IP"] = inFields["SGW_IP_ADDRESS"];
+}
+
+IMSIStatus imsiStatus = getContextAlbum("IMSIStatusAlbum").get((String)inFields["IMSI"]);
+logger.debug(imsiStatus);
+
+ENodeBStatus eNodeBStatus = getContextAlbum("ENodeBStatusAlbum").get(imsiStatus.getENodeBID());
+logger.debug(eNodeBStatus);
+
+if (imsiStatus.getENodeBID() != null && !imsiStatus.getENodeBID().equals(inFields["ENODEB_ID"]) || inFields["AVG_SUBSCRIBER_SERVICE_REQUEST"] == null) {
+ // if user moved enodeB remove him from previous one
+ if (imsiStatus.getENodeBID() != null) {
+ eNodeBStatus.decrementDOSCount();
+ }
+
+ // if user became non anomalous return action
+ if (inFields["AVG_SUBSCRIBER_SERVICE_REQUEST"] == null) {
+ imsiStatus.setAnomalous(false);
+ outFields["ACTTASK"] = "remove_from_probe";
+
+ for (ENodeBStatus enbStatus : getContextAlbum("ENodeBStatusAlbum").values) {
+ if (enbStatus.getBeingProbed()) {
+ outFields["PROBE_ON"] = true;
+ outFields["TCP_ON"] = true;
+ return true;
+ }
+ }
+
+ outFields["PROBE_ON"] = false;
+ outFields["TCP_ON"] = false;
+
+ getContextAlbum("IMSIStatusAlbum").put(imsiStatus.getIMSI(), imsiStatus);
+ getContextAlbum("ENodeBStatusAlbum").put(eNodeBStatus.getENodeB(), eNodeBStatus);
+
+ return true;
+ }
+}
+
+imsiStatus.setAnomalous(true);
+imsiStatus.setAnomolousTime(System.currentTimeMillis());
+imsiStatus.setENodeBID(inFields["ENODEB_ID"]);
+getContextAlbum("IMSIStatusAlbum").put(imsiStatus.getIMSI(), imsiStatus);
+logger.debug(imsiStatus.getENodeBID() + ": enodeb added to imsi ip added " + outFields["IMSI_IP"]);
+
+ENodeBStatus eNodeBStatus = getContextAlbum("ENodeBStatusAlbum").get(imsiStatus.getENodeBID());
+if (eNodeBStatus == null) {
+ eNodeBStatus = new ENodeBStatus(imsiStatus.getENodeBID());
+ getContextAlbum("ENodeBStatusAlbum").put(eNodeBStatus.getENodeB(), eNodeBStatus);
+ logger.debug("new eNodeB added " + getContextAlbum("ENodeBStatusAlbum").get(imsiStatus.getENodeBID()));
+}
+
+eNodeBStatus.incrementDOSCount();
+getContextAlbum("ENodeBStatusAlbum").put(eNodeBStatus.getENodeB(), eNodeBStatus);
+logger.debug(eNodeBStatus.getENodeB() + ": dosCount incremented to " + eNodeBStatus.getDOSCount());
+
+outFields["PROBE_ON"] = true;
+outFields["TCP_ON"] = true;
+outFields["THRESHOLD"] = 0;
+outFields["PROFILE"] = "";
+outFields["VERSION"] = "0.0.1";
+outFields["BLACKLIST_ON"] = false;
+
+logger.debug("out here5");
+
+return true;
diff --git a/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMMatchTask_TaskLogic.mvel b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMMatchTask_TaskLogic.mvel
new file mode 100644
index 000000000..bb38034af
--- /dev/null
+++ b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMMatchTask_TaskLogic.mvel
@@ -0,0 +1,75 @@
+/*
+ * ============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=========================================================
+ */
+import org.onap.policy.apex.examples.aadm.concepts.ENodeBStatus;
+import org.onap.policy.apex.examples.aadm.concepts.IPAddressStatus;
+import org.onap.policy.apex.examples.aadm.concepts.IMSIStatus;
+
+logger.debug(subject.id + ":" + subject.taskName + " execution logic");
+logger.debug(inFields);
+
+ipAddress = inFields["UE_IP_ADDRESS"];
+if (ipAddress == null ) {
+ ipAddress = inFields["IMSI_IP"];
+
+ if (ipAddress == null ) {
+ logger.debug("Incoming event must specify parameter UE_IP_ADDRESS or parameter IMSI_IP");
+ return false;
+ }
+}
+
+imsi = inFields["IMSI"];
+if (imsi == null ) {
+ logger.debug("Incoming event must specify parameter IMSI");
+ return false;
+}
+
+eNodeBID = inFields["ENODEB_ID"];
+if (eNodeBID == null ) {
+ logger.debug("Incoming event must specify parameter ENODEB_ID");
+ return false;
+}
+
+IPAddressStatus ipAddressStatus = getContextAlbum("IPAddressStatusAlbum").get(ipAddress);
+if (ipAddressStatus == null) {
+ ipAddressStatus = new IPAddressStatus(ipAddress);
+ ipAddressStatus.setIMSI(imsi);
+ getContextAlbum("IPAddressStatusAlbum").put(ipAddressStatus.getIPAddress(), ipAddressStatus);
+ logger.debug("added new IP address " + getContextAlbum("IPAddressStatusAlbum").get(ipAddress));
+}
+else {
+ logger.debug("found IP address " + ipAddressStatus);
+}
+
+IMSIStatus imsiStatus = getContextAlbum("IMSIStatusAlbum").get((String)imsi);
+if (imsiStatus == null) {
+ imsiStatus = new IMSIStatus(imsi);
+ imsiStatus.setENodeBID(eNodeBID);
+ getContextAlbum("IMSIStatusAlbum").put(imsiStatus.getIMSI(), imsiStatus);
+ logger.debug("added new IMSI " + imsi + " to IMSI status map")
+}
+
+ENodeBStatus eNodeBStatus = getContextAlbum("ENodeBStatusAlbum").get((String)eNodeBID);
+if (eNodeBStatus == null) {
+ eNodeBStatus = new ENodeBStatus(eNodeBID);
+ getContextAlbum("ENodeBStatusAlbum").put(eNodeBStatus.getENodeB(), eNodeBStatus);
+ logger.debug("added new ENodeB " + eNodeBID + " to ENodeB status map")
+}
+
+return true;
diff --git a/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMNoActTask_TaskLogic.mvel b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMNoActTask_TaskLogic.mvel
new file mode 100644
index 000000000..7107b940b
--- /dev/null
+++ b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMNoActTask_TaskLogic.mvel
@@ -0,0 +1,55 @@
+/*
+ * ============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=========================================================
+ */
+logger.debug(subject.id + ":" + subject.taskName + " execution logic");
+
+outFields["ACTTASK"] = "no";
+outFields["TRIGGER_SPEC"] = "XSTREAM_AADM_ACT_EVENT";
+outFields["MAJ_MIN_MAINT_VERSION"] = "0.0.1";
+
+if (inFields["PROBE_ON"] != null) {
+ outFields["PROBE_ON"] = inFields["PROBE_ON"];
+}
+else{
+ outFields["PROBE_ON"] = false;
+}
+
+if (inFields["TCP_ON"] != null) {
+ outFields["TCP_ON"] = inFields["TCP_ON"];
+}
+else {
+ outFields["TCP_ON"] = false;
+}
+
+outFields["IMSI"] = inFields["IMSI"];
+if (inFields["IMSI_IP"] != null) {
+ outFields["IMSI_IP"] = inFields["IMSI_IP"];
+}
+else {
+ outFields["IMSI_IP"] = inFields["UE_IP_ADDRESS"];
+}
+
+if (inFields["NW_IP"] != null) {
+ outFields["NW_IP"] = inFields["NW_IP"];
+}
+else{
+ outFields["NW_IP"] = inFields["SGW_IP_ADDRESS"];
+}
+
+return true;
diff --git a/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMPolicy_Act_TaskSelectionLogic.mvel b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMPolicy_Act_TaskSelectionLogic.mvel
new file mode 100644
index 000000000..2d0d45bdf
--- /dev/null
+++ b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMPolicy_Act_TaskSelectionLogic.mvel
@@ -0,0 +1,67 @@
+/*
+ * ============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=========================================================
+ */
+import org.onap.policy.apex.examples.aadm.concepts.IMSIStatus;
+import org.onap.policy.apex.examples.aadm.concepts.ENodeBStatus;
+
+logger.debug(subject.id + ":" + subject.stateName + " execution logic");
+logger.debug(inFields);
+
+logger.debug("inFields[SERVICE_REQUEST_COUNT]=" + inFields["SERVICE_REQUEST_COUNT"]);
+
+IMSIStatus imsiStatus = getContextAlbum("IMSIStatusAlbum").get((String)inFields["IMSI"]);
+
+if (imsiStatus.getBlockingCount() > 1) {
+ subject.getTaskKey("AADMNoActTask").copyTo(selectedTask);
+ logger.debug("user blacklisted permanently");
+ return false;
+}
+
+logger.debug("imsi: " + imsiStatus.getIMSI() + " anamalous " + imsiStatus.getAnomalous());
+
+// check if this is second iteration
+if (inFields["TCP_UE_SIDE_AVG_THROUGHPUT"] != null && inFields["TCP_UE_SIDE_AVG_THROUGHPUT"] > 100 && imsiStatus.getAnomalous()) {
+ subject.getTaskKey("AADMDoSProvenActTask").copyTo(selectedTask);
+ logger.debug("inside TCP_UE_SIDE_AVG_THROUGHPUT");
+ return true;
+}
+
+// Get the status of the ENodeB
+ENodeBStatus eNodeBStatus = getContextAlbum("ENodeBStatusAlbum").get((String)inFields["ENODEB_ID"]);
+
+// check if this is first iteration and DoS
+if (inFields["SERVICE_REQUEST_COUNT"] != null &&
+ inFields["AVG_SUBSCRIBER_SERVICE_REQUEST"] != null &&
+ inFields["SERVICE_REQUEST_COUNT"] > inFields["AVG_SUBSCRIBER_SERVICE_REQUEST"] &&
+ eNodeBStatus != null && eNodeBStatus.getDOSCount() > 100 &&
+ inFields["NUM_SUBSCRIBERS"] != null && inFields["NUM_SUBSCRIBERS"] > 100) {
+ logger.debug("inside NUM_SUBSCRIBERS");
+ subject.getTaskKey("AADMDoSProvenActTask").copyTo(selectedTask);
+ return true;
+}
+
+// check if this is first iteration and request probe
+if (inFields["UE_IP_ADDRESS"] != null) {
+ logger.debug("inside UE_IP_ADDRESS");
+ subject.getTaskKey("AADMDoSSuggestionActTask").copyTo(selectedTask);
+ return true;
+}
+
+subject.defaultTaskKey.copyTo(selectedTask);
+return true;
diff --git a/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/Default_TaskLogic.mvel b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/Default_TaskLogic.mvel
new file mode 100644
index 000000000..69146d19c
--- /dev/null
+++ b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/Default_TaskLogic.mvel
@@ -0,0 +1,23 @@
+/*
+ * ============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=========================================================
+ */
+logger.debug(subject.id + ":" + subject.taskName + " execution logic");
+logger.debug(inFields);
+logger.debug(outFields);
+return true;
diff --git a/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/Default_TaskSelectionLogic.mvel b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/Default_TaskSelectionLogic.mvel
new file mode 100644
index 000000000..20fe626cd
--- /dev/null
+++ b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/Default_TaskSelectionLogic.mvel
@@ -0,0 +1,23 @@
+/*
+ * ============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=========================================================
+ */
+logger.debug(subject.id + ":" + subject.stateName);
+subject.defaultTaskKey.copyTo(selectedTask)
+logger.debug(subject.id + ":" + subject.stateName) + ", using default task";
+return true;
diff --git a/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/PeriodicActTask_TaskLogic.mvel b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/PeriodicActTask_TaskLogic.mvel
new file mode 100644
index 000000000..115ac5477
--- /dev/null
+++ b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/PeriodicActTask_TaskLogic.mvel
@@ -0,0 +1,40 @@
+/*
+ * ============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=========================================================
+ */
+import org.onap.policy.apex.examples.aadm.concepts.IMSIStatus;
+
+logger.debug(subject.id + ":" + subject.taskName + " execution logic");
+logger.debug(inFields);
+
+for (IMSIStatus imsiStatus : getContextAlbum("IMSIStatusAlbum").values()) {
+ if ((System.currentTimeMillis() - imsiStatus.getBlacklistedTime()) > 180000) {
+ imsiStatus.setBlacklistedTime(0);
+ getContextAlbum("IMSIStatusAlbum").put(imsiStatus.getIMSI(), imsiStatus);
+ }
+}
+
+outFields["IMSI"] = 0;
+outFields["PROFILE"] = "ServiceA";
+outFields["BLACKLIST_ON"] = false;
+outFields["PROBE_ON"] = false;
+outFields["TCP_ON"] = false;
+outFields["NW_IP"] = "0.0.0.0";
+outFields["IMSI_IP"] = "0.0.0.0";
+
+return true;
diff --git a/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/SAPCActTask_TaskLogic.mvel b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/SAPCActTask_TaskLogic.mvel
new file mode 100644
index 000000000..7ceaa2abe
--- /dev/null
+++ b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/SAPCActTask_TaskLogic.mvel
@@ -0,0 +1,79 @@
+/*
+ * ============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=========================================================
+ */
+import org.onap.policy.apex.examples.aadm.concepts.IMSIStatus;
+
+logger.debug(subject.id + ":" + subject.taskName + " execution logic");
+logger.debug(inFields);
+
+if (inFields["IMSI"] == null) {
+ outFields["IMSI"] = 0;
+}
+else {
+ outFields["IMSI"] = inFields["IMSI"];
+}
+
+if (outFields["IMSI"] == 0 && inFields["IMSI_IP"] != null && inFields["IMSI_IP"].equals("0")) {
+ // no action arrived
+ outFields["IMSI"] = 0;
+ outFields["PROFILE"] = "none";
+ outFields["BLACKLIST_ON"] = false;
+ outFields["PROBE_ON"] = false;
+ return true;
+}
+
+IMSIStatus imsiStatus = getContextAlbum("IMSIStatusAlbum").get((String)inFields["IMSI"]);
+logger.debug(imsiStatus);
+
+if (imsiStatus.getBlockingCount() > 1) {
+ outFields["IMSI"] = 0;
+ outFields["PROFILE"] = "none";
+ outFields["BLACKLIST_ON"] = false;
+ outFields["PROBE_ON"] = false;
+
+ return true;
+}
+
+if (imsiStatus.getBlockingCount() > 0 && imsiStatus.getBlacklistedTime() != 0) {
+ outFields["IMSI"] = 0;
+ outFields["PROFILE"] = "none";
+ outFields["BLACKLIST_ON"] = false;
+ outFields["PROBE_ON"] = false;
+
+ return true;
+}
+
+imsiStatus.incrementBlockingCount();
+imsiStatus.setBlacklistedTime(System.currentTimeMillis());
+
+logger.debug("Bocking count for IMSI: " + imsiStatus.getIMSI() + " is: " + imsiStatus.getBlockingCount());
+getContextAlbum("IMSIStatusAlbum").put(imsiStatus.getIMSI(), imsiStatus);
+
+outFields["PROFILE"] = "ServiceA";
+outFields["BLACKLIST_ON"] = true;
+outFields["PROBE_ON"] = false;
+
+if (imsiStatus.getBlockingCount() > 1) {
+ logger.debug("POLICY SAPCPolicy - blacklisting imsi: " + outFields["IMSI"] + " permanently");
+}
+else {
+ logger.debug("POLICY SAPCPolicy - blacklisting imsi: " + outFields["IMSI"] + " temporary for 120000 ms");
+}
+
+return true;
diff --git a/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/SAPCMatchTask_TaskLogic.mvel b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/SAPCMatchTask_TaskLogic.mvel
new file mode 100644
index 000000000..1de8b190c
--- /dev/null
+++ b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/SAPCMatchTask_TaskLogic.mvel
@@ -0,0 +1,52 @@
+/*
+ * ============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=========================================================
+ */
+logger.debug(subject.id + ":" + subject.taskName + " execution logic");
+logger.debug(inFields);
+
+if (inFields["ACTTASK"] != null && inFields["ACTTASK"].equals("no")) {
+ outFields["IMSI"] = 0;
+ outFields["IMSI_IP"] = "0";
+ return true;
+}
+
+if (inFields["PROBE_ON"] != null) {
+ outFields["PROBE_ON"] = inFields["PROBE_ON"];
+}
+else{
+ outFields["PROBE_ON"] = false;
+}
+
+if (inFields["TCP_ON"] != null) {
+ outFields["TCP_ON"] = inFields["TCP_ON"];
+}
+else{
+ outFields["TCP_ON"] = false;
+}
+
+outFields["IMSI"] = inFields["IMSI"];
+if (inFields["IMSI_IP"] != null) {
+ outFields["IMSI_IP"] = inFields["IMSI_IP"];
+}
+
+if (inFields["NW_IP"] != null) {
+ outFields["NW_IP"] = inFields["NW_IP"];
+}
+
+return true;
diff --git a/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/VMMEActTask_TaskLogic.mvel b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/VMMEActTask_TaskLogic.mvel
new file mode 100644
index 000000000..db1abdfe9
--- /dev/null
+++ b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/VMMEActTask_TaskLogic.mvel
@@ -0,0 +1,44 @@
+/*
+ * ============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=========================================================
+ */
+logger.debug(subject.id + ":" + subject.taskName + " execution logic");
+logger.debug(inFields);
+
+outFields["TRIGGER_SPEC"] = "vMMEThresholdEvent";
+outFields["MAJ_MIN_MAINT_VERSION"] = "0.0.1";
+
+if (outFields["IMSI"] == null) {
+ outFields["IMSI"] = 0;
+}
+
+if (outFields["ENODEB_ID"] == null) {
+ outFields["ENODEB_ID"] = 0;
+}
+
+if (outFields["IMSI_IP"] == null) {
+ outFields["IMSI_IP"] = "";
+}
+
+if (outFields["NW_IP"] == null) {
+ outFields["NW_IP"] = "";
+}
+
+outFields["PROFILE"] = "ServiceA";
+outFields["THRESHOLD"] = 20;
+return true;
diff --git a/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/VMMEMatchTask_TaskLogic.mvel b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/VMMEMatchTask_TaskLogic.mvel
new file mode 100644
index 000000000..33dbd4cd0
--- /dev/null
+++ b/examples/aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/VMMEMatchTask_TaskLogic.mvel
@@ -0,0 +1,47 @@
+/*
+ * ============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=========================================================
+ */
+logger.debug(subject.id + ":" + subject.taskName + " execution logic");
+logger.debug(inFields);
+
+if (inFields["PROBE_ON"] != null) {
+ outFields["PROBE_ON"] = inFields["PROBE_ON"];
+}
+else{
+ outFields["PROBE_ON"] = false;
+}
+
+if (inFields["TCP_ON"] != null) {
+ outFields["TCP_ON"] = inFields["TCP_ON"];
+}
+else{
+ outFields["TCP_ON"] = false;
+}
+
+outFields["IMSI"] = inFields["IMSI"];
+if (inFields["IMSI_IP"] != null) {
+ outFields["IMSI_IP"] = inFields["IMSI_IP"];
+}
+
+if (inFields["NW_IP"] != null) {
+ outFields["NW_IP"] = inFields["NW_IP"];
+}
+outFields["VERSION"] = inFields.getkey().getVersion();
+
+return true;
diff --git a/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMDBWrite.java b/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMDBWrite.java
new file mode 100644
index 000000000..02e6f9179
--- /dev/null
+++ b/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMDBWrite.java
@@ -0,0 +1,60 @@
+/*-
+ * ============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.examples.aadm;
+
+import java.io.File;
+import java.sql.Connection;
+import java.sql.DriverManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.model.basicmodel.dao.DAOParameters;
+import org.onap.policy.apex.model.basicmodel.test.TestApexModel;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+
+public class TestAADMDBWrite {
+ private Connection connection;
+ TestApexModel<AxPolicyModel> testApexModel;
+
+ @Before
+ public void setup() throws Exception {
+ Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
+ connection = DriverManager.getConnection("jdbc:derby:memory:apex_test;create=true");
+
+ testApexModel = new TestApexModel<AxPolicyModel>(AxPolicyModel.class, new TestAADMModelCreator());
+ }
+
+ @After
+ public void teardown() throws Exception {
+ connection.close();
+ new File("derby.log").delete();
+ }
+
+ @Test
+ public void testModelWriteReadJPA() throws Exception {
+ final DAOParameters daoParameters = new DAOParameters();
+ daoParameters.setPluginClass("org.onap.policy.apex.model.basicmodel.dao.impl.DefaultApexDao");
+ daoParameters.setPersistenceUnit("AADMModelTest");
+
+ testApexModel.testApexModelWriteReadJPA(daoParameters);
+ }
+}
diff --git a/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMModel.java b/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMModel.java
new file mode 100644
index 000000000..2c62c4994
--- /dev/null
+++ b/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMModel.java
@@ -0,0 +1,81 @@
+/*-
+ * ============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.examples.aadm;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.sql.Connection;
+import java.sql.DriverManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
+import org.onap.policy.apex.model.basicmodel.dao.DAOParameters;
+import org.onap.policy.apex.model.basicmodel.test.TestApexModel;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+
+public class TestAADMModel {
+ private Connection connection;
+ TestApexModel<AxPolicyModel> testApexModel;
+
+ @Before
+ public void setup() throws Exception {
+ Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
+ connection = DriverManager.getConnection("jdbc:derby:memory:apex_test;create=true");
+
+ testApexModel = new TestApexModel<AxPolicyModel>(AxPolicyModel.class, new TestAADMModelCreator());
+ }
+
+ @After
+ public void teardown() throws Exception {
+ connection.close();
+ new File("derby.log").delete();
+ }
+
+ @Test
+ public void testModelValid() throws Exception {
+ final AxValidationResult result = testApexModel.testApexModelValid();
+ assertTrue(result.toString().equals(VALID_MODEL_STRING));
+ }
+
+ @Test
+ public void testModelWriteReadXML() throws Exception {
+ testApexModel.testApexModelWriteReadXML();
+ }
+
+ @Test
+ public void testModelWriteReadJSON() throws Exception {
+ testApexModel.testApexModelWriteReadJSON();
+ }
+
+ @Test
+ public void testModelWriteReadJPA() throws Exception {
+ final DAOParameters daoParameters = new DAOParameters();
+ daoParameters.setPluginClass("org.onap.policy.apex.model.basicmodel.dao.impl.DefaultApexDao");
+ daoParameters.setPersistenceUnit("AADMModelTest");
+
+ testApexModel.testApexModelWriteReadJPA(daoParameters);
+ }
+
+ private static final String VALID_MODEL_STRING = "***validation of model successful***";
+}
diff --git a/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMModelCreator.java b/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMModelCreator.java
new file mode 100644
index 000000000..9aa2095c7
--- /dev/null
+++ b/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMModelCreator.java
@@ -0,0 +1,56 @@
+/*-
+ * ============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.examples.aadm;
+
+import org.onap.policy.apex.examples.aadm.model.AADMDomainModelFactory;
+import org.onap.policy.apex.model.basicmodel.test.TestApexModelCreator;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+
+/**
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ */
+public class TestAADMModelCreator implements TestApexModelCreator<AxPolicyModel> {
+
+ @Override
+ public AxPolicyModel getModel() {
+ return new AADMDomainModelFactory().getAADMPolicyModel();
+ }
+
+ @Override
+ public AxPolicyModel getMalstructuredModel() {
+ return null;
+ }
+
+ @Override
+ public AxPolicyModel getObservationModel() {
+ return null;
+ }
+
+ @Override
+ public AxPolicyModel getWarningModel() {
+ return getModel();
+ }
+
+ @Override
+ public AxPolicyModel getInvalidModel() {
+ return null;
+ }
+}
diff --git a/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMUseCase.java b/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMUseCase.java
new file mode 100644
index 000000000..58b1800ba
--- /dev/null
+++ b/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMUseCase.java
@@ -0,0 +1,412 @@
+/*-
+ * ============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.examples.aadm;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.context.ContextAlbum;
+import org.onap.policy.apex.core.engine.EngineParameters;
+import org.onap.policy.apex.core.engine.engine.impl.ApexEngineFactory;
+import org.onap.policy.apex.core.engine.engine.impl.ApexEngineImpl;
+import org.onap.policy.apex.core.engine.event.EnEvent;
+import org.onap.policy.apex.examples.aadm.concepts.ENodeBStatus;
+import org.onap.policy.apex.examples.aadm.model.AADMDomainModelFactory;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.eventmodel.concepts.AxEvent;
+import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
+import org.onap.policy.apex.plugins.executor.mvel.MVELExecutorParameters;
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+
+/**
+ * User: Sergey Sachkov Date: 13/10/15
+ */
+public class TestAADMUseCase {
+ private static final XLogger logger = XLoggerFactory.getXLogger(TestAADMUseCase.class);
+
+ /**
+ * Test aadm use case setup.
+ */
+ @Before
+ public void testAADMUseCaseSetup() {}
+
+ /**
+ * Test aadm case.
+ *
+ * @throws ApexException the apex exception
+ * @throws InterruptedException the interrupted exception
+ * @throws IOException Signals that an I/O exception has occurred.
+ */
+ @Test
+ public void testAADMCase() throws ApexException, InterruptedException, IOException {
+ final AxPolicyModel apexPolicyModel = new AADMDomainModelFactory().getAADMPolicyModel();
+ assertNotNull(apexPolicyModel);
+ final AxArtifactKey key = new AxArtifactKey("AADMApexEngine", "0.0.1");
+
+ final EngineParameters parameters = new EngineParameters();
+ parameters.getExecutorParameterMap().put("MVEL", new MVELExecutorParameters());
+
+ final ApexEngineImpl apexEngine = (ApexEngineImpl) new ApexEngineFactory().createApexEngine(key);
+ final TestApexActionListener listener = new TestApexActionListener("Test");
+ apexEngine.addEventListener("listener", listener);
+ apexEngine.updateModel(apexPolicyModel);
+ apexEngine.start();
+
+ final AxEvent axEvent = getTriggerEvent(apexPolicyModel);
+ assertNotNull(axEvent);
+
+ // getting number of connections send it to policy, expecting probe action
+ logger.info("Sending too many connections trigger ");
+ EnEvent event = apexEngine.createEvent(axEvent.getKey());
+ event.put("IMSI", new Long(123456));
+ event.put("IMSI_IP", "101.111.121.131");
+ event.put("ENODEB_ID", new Long(123));
+ event.put("SERVICE_REQUEST_COUNT", 99);
+ event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 101.0);
+ event.put("UE_IP_ADDRESS", "101.111.121.131");
+ event.put("NUM_SUBSCRIBERS", 101);
+ event.put("ACTTASK", "");
+ event.put("APPLICATION", "");
+ event.put("ATTACH_COUNT", 0);
+ event.put("AVG_SUBSCRIBER_ATTACH", 0D);
+ event.put("DoS", false);
+ event.put("NW_IP", "");
+ event.put("PROBE_ON", false);
+ event.put("SGW_IP_ADDRESS", "");
+ event.put("TCP_ON", false);
+ event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 0D);
+ event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L);
+ event.put("http_host_class", "");
+ event.put("protocol_group", "");
+ apexEngine.handleEvent(event);
+ EnEvent result = listener.getResult();
+ assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
+ 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"));
+ assertTrue((boolean) result.get("PROBE_ON"));
+ logger.info("Receiving action event with {} action", result.get("ACTTASK"));
+
+ final ContextAlbum eNodeBStatusAlbum = apexEngine.getInternalContext().get("ENodeBStatusAlbum");
+ final ENodeBStatus eNodeBStatus = (ENodeBStatus) eNodeBStatusAlbum.get("123");
+ eNodeBStatus.setDOSCount(101);
+ eNodeBStatusAlbum.put(eNodeBStatus.getENodeB(), eNodeBStatus);
+
+ logger.info("Sending too many connections trigger ");
+ event = apexEngine.createEvent(axEvent.getKey());
+ event.put("IMSI", new Long(123456));
+ event.put("IMSI_IP", "101.111.121.131");
+ event.put("ENODEB_ID", new Long(123));
+ event.put("SERVICE_REQUEST_COUNT", 101);
+ event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 99.0);
+ event.put("UE_IP_ADDRESS", "101.111.121.131");
+ event.put("NUM_SUBSCRIBERS", 101);
+ event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 101.0);
+ event.put("ACTTASK", "");
+ event.put("APPLICATION", "");
+ event.put("ATTACH_COUNT", 0);
+ event.put("AVG_SUBSCRIBER_ATTACH", 0D);
+ event.put("DoS", false);
+ event.put("NW_IP", "");
+ event.put("PROBE_ON", false);
+ event.put("SGW_IP_ADDRESS", "");
+ event.put("TCP_ON", false);
+ event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L);
+ event.put("http_host_class", "");
+ event.put("protocol_group", "");
+
+ apexEngine.handleEvent(event);
+ result = listener.getResult();
+ assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
+ 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
+ assertTrue(!(boolean) result.get("TCP_ON"));
+ assertTrue(!(boolean) result.get("PROBE_ON"));
+ assertEquals(100, ((ENodeBStatus) eNodeBStatusAlbum.get("123")).getDOSCount());
+ logger.info("Receiving action event with {} action", result.get("ACTTASK"));
+
+ ((ENodeBStatus) eNodeBStatusAlbum.get("123")).setDOSCount(99);
+
+ // getting number of connections send it to policy, expecting probe action
+ logger.info("Sending too many connections trigger ");
+ event = apexEngine.createEvent(axEvent.getKey());
+ event.put("IMSI", new Long(123456));
+ event.put("IMSI_IP", "101.111.121.131");
+ event.put("ENODEB_ID", new Long(123));
+ event.put("SERVICE_REQUEST_COUNT", 99);
+ event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 101.0);
+ event.put("UE_IP_ADDRESS", "101.111.121.131");
+ event.put("NUM_SUBSCRIBERS", 99);
+ event.put("ACTTASK", "");
+ event.put("APPLICATION", "");
+ event.put("ATTACH_COUNT", 0);
+ event.put("AVG_SUBSCRIBER_ATTACH", 0D);
+ event.put("DoS", false);
+ event.put("NW_IP", "");
+ event.put("PROBE_ON", false);
+ event.put("SGW_IP_ADDRESS", "");
+ event.put("TCP_ON", false);
+ event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 0D);
+ event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L);
+ event.put("http_host_class", "");
+ event.put("protocol_group", "");
+
+ apexEngine.handleEvent(event);
+ result = listener.getResult();
+ assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
+ 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"));
+ assertEquals(99, ((ENodeBStatus) eNodeBStatusAlbum.get("123")).getDOSCount());
+
+ ((ENodeBStatus) eNodeBStatusAlbum.get("123")).setDOSCount(99);
+
+ // tcp correlation return positive dos
+ logger.info("Receiving action event with {} action", result.get("ACTTASK"));
+ event = apexEngine.createEvent(axEvent.getKey());
+ event.put("IMSI", new Long(123456));
+ event.put("IMSI_IP", "101.111.121.131");
+ event.put("ENODEB_ID", new Long(123));
+ event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 101.0);
+ event.put("ACTTASK", "");
+ event.put("APPLICATION", "");
+ event.put("ATTACH_COUNT", 0);
+ event.put("AVG_SUBSCRIBER_ATTACH", 0D);
+ event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 0.0);
+ event.put("DoS", false);
+ event.put("NUM_SUBSCRIBERS", 0);
+ event.put("NW_IP", "");
+ event.put("PROBE_ON", false);
+ event.put("SERVICE_REQUEST_COUNT", 0);
+ event.put("SGW_IP_ADDRESS", "");
+ event.put("TCP_ON", false);
+ event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L);
+ event.put("UE_IP_ADDRESS", "");
+ event.put("http_host_class", "");
+ event.put("protocol_group", "");
+
+ apexEngine.handleEvent(event);
+ result = listener.getResult();
+ assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
+ 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"));
+ assertEquals(98, ((ENodeBStatus) eNodeBStatusAlbum.get("123")).getDOSCount());
+ logger.info("Receiving action event with {} action", result.get("ACTTASK"));
+
+ ((ENodeBStatus) eNodeBStatusAlbum.get("123")).setDOSCount(101);
+
+ // user moving enodeB
+ logger.info("Sending too many connections trigger ");
+ event = apexEngine.createEvent(axEvent.getKey());
+ event.put("IMSI", new Long(123456));
+ event.put("IMSI_IP", "101.111.121.131");
+ event.put("ENODEB_ID", new Long(123));
+ event.put("SERVICE_REQUEST_COUNT", 99);
+ event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 101.0);
+ event.put("UE_IP_ADDRESS", "101.111.121.131");
+ event.put("NUM_SUBSCRIBERS", 101);
+ event.put("ACTTASK", "");
+ event.put("APPLICATION", "");
+ event.put("ATTACH_COUNT", 0);
+ event.put("AVG_SUBSCRIBER_ATTACH", 0D);
+ event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 0.0);
+ event.put("DoS", false);
+ event.put("NW_IP", "");
+ event.put("PROBE_ON", false);
+ event.put("SGW_IP_ADDRESS", "");
+ event.put("TCP_ON", false);
+ event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 0D);
+ event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L);
+ event.put("http_host_class", "");
+ event.put("protocol_group", "");
+
+ apexEngine.handleEvent(event);
+ result = listener.getResult();
+ assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
+ 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"));
+ assertEquals(100, ((ENodeBStatus) eNodeBStatusAlbum.get("123")).getDOSCount());
+ logger.info("Receiving action event with {} action", result.get("ACTTASK"));
+
+ logger.info("Sending too many connections trigger ");
+ event = apexEngine.createEvent(axEvent.getKey());
+ event.put("IMSI", new Long(123456));
+ event.put("ENODEB_ID", new Long(124));
+ event.put("SERVICE_REQUEST_COUNT", 99);
+ event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 101.0);
+ event.put("UE_IP_ADDRESS", "101.111.121.131");
+ event.put("NUM_SUBSCRIBERS", 101);
+ event.put("ACTTASK", "");
+ event.put("APPLICATION", "");
+ event.put("ATTACH_COUNT", 0);
+ event.put("AVG_SUBSCRIBER_ATTACH", 0D);
+ event.put("DoS", false);
+ event.put("IMSI_IP", "");
+ event.put("NW_IP", "");
+ event.put("PROBE_ON", false);
+ event.put("SGW_IP_ADDRESS", "");
+ event.put("TCP_ON", false);
+ event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 0D);
+ event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L);
+ event.put("http_host_class", "");
+ event.put("protocol_group", "");
+
+ apexEngine.handleEvent(event);
+ result = listener.getResult();
+ assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
+ 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"));
+ assertEquals(99, ((ENodeBStatus) eNodeBStatusAlbum.get("123")).getDOSCount());
+ assertEquals(1, ((ENodeBStatus) eNodeBStatusAlbum.get("124")).getDOSCount());
+ logger.info("Receiving action event with {} action", result.get("ACTTASK"));
+ // End of user moving enodeB
+
+ ((ENodeBStatus) eNodeBStatusAlbum.get("123")).setDOSCount(101);
+
+ // user becomes non anomalous
+ logger.info("Sending too many connections trigger ");
+ event = apexEngine.createEvent(axEvent.getKey());
+ event.put("IMSI", new Long(123456));
+ event.put("IMSI_IP", "101.111.121.131");
+ event.put("ENODEB_ID", new Long(123));
+ event.put("SERVICE_REQUEST_COUNT", 99);
+ event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 101.0);
+ event.put("UE_IP_ADDRESS", "101.111.121.131");
+ event.put("NUM_SUBSCRIBERS", 101);
+ event.put("ACTTASK", "");
+ event.put("APPLICATION", "");
+ event.put("ATTACH_COUNT", 0);
+ event.put("AVG_SUBSCRIBER_ATTACH", 0D);
+ event.put("DoS", false);
+ event.put("NW_IP", "");
+ event.put("PROBE_ON", false);
+ event.put("SGW_IP_ADDRESS", "");
+ event.put("TCP_ON", false);
+ event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 0D);
+ event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L);
+ event.put("http_host_class", "");
+ event.put("protocol_group", "");
+
+ apexEngine.handleEvent(event);
+ result = listener.getResult();
+ assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
+ 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"));
+ assertEquals(102, ((ENodeBStatus) eNodeBStatusAlbum.get("123")).getDOSCount());
+ logger.info("Receiving action event with {} action", result.get("ACTTASK"));
+
+ logger.info("Sending too many connections trigger ");
+ event = apexEngine.createEvent(axEvent.getKey());
+ event.put("IMSI", new Long(123456));
+ event.put("ENODEB_ID", new Long(123));
+ event.put("SERVICE_REQUEST_COUNT", 99);
+ event.put("UE_IP_ADDRESS", "101.111.121.131");
+ event.put("ACTTASK", "");
+ event.put("APPLICATION", "");
+ event.put("ATTACH_COUNT", 0);
+ event.put("AVG_SUBSCRIBER_ATTACH", 0D);
+ event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 0.0);
+ event.put("DoS", false);
+ event.put("IMSI_IP", "");
+ event.put("NUM_SUBSCRIBERS", 0);
+ event.put("NW_IP", "");
+ event.put("PROBE_ON", false);
+ event.put("SGW_IP_ADDRESS", "");
+ event.put("TCP_ON", false);
+ event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 0D);
+ event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L);
+ event.put("http_host_class", "");
+ event.put("protocol_group", "");
+
+ apexEngine.handleEvent(event);
+ result = listener.getResult();
+ assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT"));
+ 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"));
+ assertEquals(102, ((ENodeBStatus) eNodeBStatusAlbum.get("123")).getDOSCount());
+ logger.info("Receiving action event with {} action", result.get("ACTTASK"));
+ // End of user becomes non anomalous
+ apexEngine.handleEvent(result);
+ result = listener.getResult();
+ assertTrue(result.getName().startsWith("SAPCBlacklistSubscriberEvent"));
+ assertTrue(result.get("PROFILE").equals("ServiceA"));
+ assertTrue(result.get("BLACKLIST_ON").equals(true));
+
+ event = apexEngine.createEvent(new AxArtifactKey("PeriodicEvent", "0.0.1"));
+ event.put("PERIODIC_EVENT_COUNT", (long) 100);
+ event.put("PERIODIC_DELAY", (long) 1000);
+ event.put("PERIODIC_FIRST_TIME", System.currentTimeMillis());
+ event.put("PERIODIC_CURRENT_TIME", System.currentTimeMillis());
+ event.put("PERIODIC_LAST_TIME", System.currentTimeMillis());
+ apexEngine.handleEvent(event);
+ result = listener.getResult();
+ assertTrue(result.getName().startsWith("SAPCBlacklistSubscriberEvent"));
+ 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));
+
+ apexEngine.stop();
+ }
+
+ /**
+ * Test vpn cleardown.
+ */
+ @After
+ public void testAADMCleardown() {}
+
+ /**
+ * Gets the trigger event.
+ *
+ * @param apexModel the apex model
+ * @return the trigger event
+ */
+ private AxEvent getTriggerEvent(final AxPolicyModel apexPolicyModel) {
+ for (final AxEvent axEvent : apexPolicyModel.getEvents().getEventMap().values()) {
+ if (axEvent.getKey().getID().equals("AADMEvent:0.0.1")) {
+ return axEvent;
+ }
+ }
+ return null;
+ }
+}
diff --git a/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestApexActionListener.java b/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestApexActionListener.java
new file mode 100644
index 000000000..ccf4539aa
--- /dev/null
+++ b/examples/aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestApexActionListener.java
@@ -0,0 +1,91 @@
+/*-
+ * ============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.examples.aadm;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.onap.policy.apex.core.engine.engine.EnEventListener;
+import org.onap.policy.apex.core.engine.event.EnEvent;
+import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
+
+/**
+ * The listener interface for receiving testApexAction events. The class that is interested in processing a
+ * testApexAction event implements this interface, and the object created with that class is registered with a component
+ * using the component's <code>addTestApexActionListener</code> method. When the testApexAction event occurs, that
+ * object's appropriate method is invoked.
+ *
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ */
+public class TestApexActionListener implements EnEventListener {
+ List<EnEvent> resultEvents = new ArrayList<EnEvent>();
+
+ private final String id;
+
+ /**
+ * Instantiates a new test apex action listener.
+ *
+ * @param id the id
+ */
+ public TestApexActionListener(final String id) {
+ this.id = id;
+ }
+
+ /**
+ * Gets the result.
+ *
+ * @return the result
+ */
+ public EnEvent getResult() {
+ while (resultEvents.isEmpty()) {
+ ThreadUtilities.sleep(100);
+ }
+ return resultEvents.remove(0);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.onap.policy.apex.core.engine.engine.EnEventListener#onEnEvent(org.onap.policy.apex.core.engine.event.EnEvent)
+ */
+ @Override
+ public void onEnEvent(final EnEvent actionEvent) {
+ try {
+ Thread.sleep(100);
+ } catch (final InterruptedException e) {
+ e.printStackTrace();
+ }
+ if (actionEvent != null) {
+ System.out.println("Action event from engine:" + actionEvent.getName());
+ resultEvents.add(actionEvent);
+ }
+ }
+
+ /**
+ * Gets the id.
+ *
+ * @return the id
+ */
+ public String getId() {
+ return id;
+ }
+}
diff --git a/examples/aadm/src/test/resources/META-INF/persistence.xml b/examples/aadm/src/test/resources/META-INF/persistence.xml
new file mode 100644
index 000000000..eaef96a85
--- /dev/null
+++ b/examples/aadm/src/test/resources/META-INF/persistence.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============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=========================================================
+-->
+
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
+ <persistence-unit name="AADMModelTest" transaction-type="RESOURCE_LOCAL">
+ <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+
+ <class>org.onap.policy.apex.model.basicmodel.dao.converters.CDATAConditioner</class>
+ <class>org.onap.policy.apex.model.basicmodel.dao.converters.UUID2String</class>
+ <class>org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey</class>
+ <class>org.onap.policy.apex.model.basicmodel.concepts.AxConcept</class>
+ <class>org.onap.policy.apex.model.basicmodel.concepts.AxKeyInfo</class>
+ <class>org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation</class>
+ <class>org.onap.policy.apex.model.basicmodel.concepts.AxModel</class>
+ <class>org.onap.policy.apex.model.basicmodel.concepts.TestEntity</class>
+ <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema</class>
+ <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas</class>
+ <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum</class>
+ <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbums</class>
+ <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextModel</class>
+ <class>org.onap.policy.apex.model.eventmodel.concepts.AxField</class>
+ <class>org.onap.policy.apex.model.eventmodel.concepts.AxInputField</class>
+ <class>org.onap.policy.apex.model.eventmodel.concepts.AxOutputField</class>
+ <class>org.onap.policy.apex.model.eventmodel.concepts.AxEvent</class>
+ <class>org.onap.policy.apex.model.eventmodel.concepts.AxEvents</class>
+ <class>org.onap.policy.apex.model.eventmodel.concepts.AxEventModel</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxLogic</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxTaskParameter</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxTaskLogic</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxTask</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxTasks</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxTaskSelectionLogic</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxStateFinalizerLogic</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxStateOutput</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxStateTaskReference</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxState</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxPolicy</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxPolicies</class>
+ <class>org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel</class>
+
+ <properties>
+ <property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:apex_test" />
+ <property name="javax.persistence.target-database" value="Derby" />
+ <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
+
+ <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
+ <property name="eclipselink.ddl-generation.output-mode" value="database" />
+ <property name="eclipselink.logging.level" value="INFO" />
+ </properties>
+ </persistence-unit>
+</persistence>
diff --git a/examples/aadm/src/test/resources/logback-test.xml b/examples/aadm/src/test/resources/logback-test.xml
new file mode 100644
index 000000000..4b9258c40
--- /dev/null
+++ b/examples/aadm/src/test/resources/logback-test.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============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=========================================================
+-->
+
+<configuration>
+
+ <contextName>Apex</contextName>
+ <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
+ <property name="LOG_DIR" value="${java.io.tmpdir}/apex_logging/" />
+
+ <!-- USE FOR STD OUT ONLY -->
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <Pattern>%d %contextName [%t] %level %logger{36} - %msg%n</Pattern>
+ </encoder>
+ </appender>
+
+ <root level="INFO">
+ <appender-ref ref="STDOUT" />
+ </root>
+
+ <logger name="org.infinispan" level="INFO" additivity="false">
+ <appender-ref ref="STDOUT" />
+ </logger>
+
+ <logger name="org.apache.zookeeper.ClientCnxn" level="OFF" additivity="false">
+ <appender-ref ref="STDOUT" />
+ </logger>
+
+ <appender name="FILE" class="ch.qos.logback.core.FileAppender">
+ <file>${LOG_DIR}/apex.log</file>
+ <encoder>
+ <pattern>%d %-5relative [procId=${processId}] [%thread] %-5level
+ %logger{26} - %msg %n %ex{full}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="CTXT_FILE" class="ch.qos.logback.core.FileAppender">
+ <file>${LOG_DIR}/apex_ctxt.log</file>
+ <encoder>
+ <pattern>%d %-5relative [procId=${processId}] [%thread] %-5level
+ %logger{26} - %msg %n %ex{full}</pattern>
+ </encoder>
+ </appender>
+
+ <logger name="org.onap.policy.apex.core.context.impl.monitoring" level="TRACE" additivity="false">
+ <appender-ref ref="CTXT_FILE" />
+ </logger>
+
+ <logger name="org.onap.policy.apex" level="TRACE" additivity="false">
+ <appender-ref ref="STDOUT" />
+ </logger>
+
+ <logger name="org.onap.policy.apex.core.infrastructure" level="INFO" additivity="false">
+ <appender-ref ref="STDOUT" />
+ </logger>
+</configuration>