aboutsummaryrefslogtreecommitdiffstats
path: root/PolicyEngineAPI/src/main/java/org/onap
diff options
context:
space:
mode:
authorGuo Ruijing <ruijing.guo@intel.com>2017-07-31 08:47:35 +0000
committerPamela Dragosh <pdragosh@research.att.com>2017-07-31 15:51:10 -0400
commit073cc188efe9abb4c010cf674e34e2cf46ef1c52 (patch)
tree155c23fbdf3a838ecb5f4183fc3bb6b09aac41eb /PolicyEngineAPI/src/main/java/org/onap
parent4ca818fdfb9b807562166800a086b413593d6894 (diff)
[POLICY-73] replace openecomp for policy-engine
Change-Id: I54072f6bcd388c0e05562614ee89b4ae7ad67004 Signed-off-by: Guo Ruijing <ruijing.guo@intel.com> Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
Diffstat (limited to 'PolicyEngineAPI/src/main/java/org/onap')
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/AttributeType.java78
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/ConfigRequestParameters.java148
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/DecisionRequestParameters.java104
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/DecisionResponse.java43
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/DeletePolicyCondition.java65
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/DeletePolicyParameters.java114
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryParameters.java82
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryResponse.java41
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryType.java100
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/EventRequestParameters.java89
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/ImportParameters.java175
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/MetricsRequestParameters.java21
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/MetricsResponse.java45
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/NotificationScheme.java61
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyChangeResponse.java44
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyClass.java67
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfig.java123
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigException.java49
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigStatus.java79
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigType.java87
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyDecision.java68
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyDecisionException.java50
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEngine.java602
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEngineException.java49
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEventException.java49
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyException.java29
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyParameters.java557
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyResponse.java77
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyResponseStatus.java85
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyType.java72
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/PushPolicyParameters.java131
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/RuleProvider.java73
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/api/package-info.java36
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/models/APIConfigResponse.java37
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/models/APIDictionaryResponse.java53
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/models/APIPolicyConfigResponse.java91
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientDMAAP.java132
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientEnd.java248
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientUEB.java178
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEnd.java138
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEndDMAAP.java107
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEndUEB.java160
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/MatchStore.java246
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/Matches.java48
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/NotificationUnMarshal.java69
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/StdDecisionResponse.java55
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/StdDictionaryResponse.java73
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/StdMetricsResponse.java78
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyChangeResponse.java47
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyConfig.java168
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyEngine.java1254
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyResponse.java98
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/StdStatus.java235
-rw-r--r--PolicyEngineAPI/src/main/java/org/onap/policy/std/package-info.java27
54 files changed, 7035 insertions, 0 deletions
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/AttributeType.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/AttributeType.java
new file mode 100644
index 000000000..8cfa51212
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/AttributeType.java
@@ -0,0 +1,78 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+
+/**
+ * Enumeration of the Attribute Types that is used as a part of
+ * {@link org.onap.policy.api.PolicyParameters}.
+ *
+ * @version 0.1
+ */
+public enum AttributeType {
+ /**
+ * Indicates Attributes required to Match the Policy.
+ */
+ MATCHING("matching"),
+ /**
+ * Indicates Attributes required to create DRL based Rules.
+ */
+ RULE("rule"),
+ /**
+ * Indicates Attributes required to create MicroService policy.
+ */
+ MICROSERVICE("microService"),
+ /**
+ * Indicates Attributes required to create settings for Decision Policy.
+ */
+ SETTINGS("settings"),
+ /**
+ * Indicates Attributes required to create dictionary fields for creating Dictionary Items
+ */
+ DICTIONARY("dictionary")
+ ;
+
+
+ private String name;
+
+ private AttributeType(String typeName){
+ this.name = typeName;
+ }
+
+ /**
+ * Returns the <code>String</code> format of Type for this <code>AttributeType</code>
+ * @return the <code>String</code> of the Type for this <code>AttributeType</code>
+ */
+ public String toString() {
+ return this.name;
+ }
+
+ @JsonCreator
+ public static AttributeType create (String value) {
+ for(AttributeType type: values()){
+ if(type.toString().equalsIgnoreCase(value)){
+ return type;
+ }
+ }
+ throw new IllegalArgumentException();
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/ConfigRequestParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/ConfigRequestParameters.java
new file mode 100644
index 000000000..cdee9672b
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/ConfigRequestParameters.java
@@ -0,0 +1,148 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * <code>ConfigRequestParameters</code> defines the Config Policy Request Parameters
+ * which retrieve(s) the policy from PDP if the request parameters match with any Config Policy.
+ *
+ * @version 0.1
+ */
+public class ConfigRequestParameters {
+ private String policyName;
+ private String onapComponentName;
+ private String configName;
+ private Map<String,String> configAttributes;
+ private UUID requestID;
+ private Boolean unique = false;
+
+ /**
+ * Sets the PolicyName of the Config policy which needs to be retrieved.
+ *
+ * @param policyName the <code>String</code> format of the PolicyFile Name whose configuration is required.
+ */
+ public void setPolicyName(String policyName){
+ this.policyName = policyName;
+ }
+
+ /**
+ * Sets the ONAP Component Name of the Config policy which needs to be retrieved.
+ *
+ * @param onapComponentName the <code>String</code> format of the onapComponentName whose configuration is required.
+ */
+ public void setOnapName(String onapComponentName){
+ this.onapComponentName = onapComponentName;
+ }
+
+ /**
+ * Sets the Config Name of the Config policy which needs to be retrieved.
+ *
+ * @param configName the <code>String</code> format of the configurationName whose configuration is required.
+ */
+ public void setConfigName(String configName){
+ this.configName = configName;
+ }
+
+ /**
+ * Sets the ConfigAttributes of the Config policy which needs to be retrieved.
+ *
+ * @param configAttributes the <code>Map</code> of <code>String,String</code> format of the configuration attributes which are required.
+ */
+ public void setConfigAttributes(Map<String, String> configAttributes){
+ this.configAttributes = configAttributes;
+ }
+
+ /**
+ * Sets the Request ID of the ONAP request.
+ *
+ * @param requestID unique <code>UUID</code> requestID which will be passed throughout the ONAP components to correlate logging messages.
+ */
+ public void setRequestID(UUID requestID){
+ this.requestID = requestID;
+ }
+
+ /**
+ * Gets the policyName of the Request Parameters.
+ *
+ * @return <code>String</code> format of the policyName.
+ */
+ public String getPolicyName(){
+ return policyName;
+ }
+
+ /**
+ * Gets the ONAP Component Name of the Request Parameters.
+ *
+ * @return <code>String</code> format of the ONAP Component Name.
+ */
+ public String getOnapName(){
+ return onapComponentName;
+ }
+
+ /**
+ * Gets the Config name of the Request Parameters.
+ *
+ * @return <code>String</code> format of the Config Name.
+ */
+ public String getConfigName(){
+ return configName;
+ }
+
+ /**
+ * Gets the Config Attributes of the Request Parameters.
+ *
+ * @return <code>Map</code> of <code>String</code>,<code>String</code> format of the config Attributes.
+ */
+ public Map<String,String> getConfigAttributes(){
+ return configAttributes;
+ }
+
+ /**
+ * Gets the Request ID of the Request Paramters.
+ *
+ * @return <code>UUID</code> format of requestID.
+ */
+ public UUID getRequestID(){
+ return requestID;
+ }
+
+ /**
+ * Makes the results Unique, priority based. If set to True. Default Value is set to False.
+ *
+ * @param unique flag which is either true or false.
+ */
+ public void makeUnique(Boolean unique){
+ this.unique = unique;
+ }
+
+ /**
+ * Gets the Unique flag value from the Config Request Parameters.
+ *
+ * @return unique flag which is either true or false.
+ */
+ public Boolean getUnique(){
+ return this.unique;
+ }
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/DecisionRequestParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DecisionRequestParameters.java
new file mode 100644
index 000000000..27e419fb1
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DecisionRequestParameters.java
@@ -0,0 +1,104 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * <code>DecisionRequestParameters</code> defines the Decision Policy Request Parameters
+ * which retrieve(s) the response from PDP if the request parameters match with any Decision Policy.
+ *
+ * @version 0.1
+ */
+public class DecisionRequestParameters {
+ private String onapComponentName;
+ private Map<String,String> decisionAttributes;
+ private UUID requestID;
+
+ /**
+ * Constructor with no Parameters
+ */
+ public DecisionRequestParameters(){
+ }
+
+ /**
+ * Constructor with Parameters
+ *
+ * @param onapComponentName the <code>String</code> format of the onapComponentName whose Decision is required.
+ * @param decisionAttributes the <code>Map</code> of <code>String,String</code> format of the decisionAttributes that contain the ID and values.
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ */
+ public DecisionRequestParameters(String onapComponentName, Map<String,String> decisionAttributes, UUID requestID){
+ this.onapComponentName = onapComponentName;
+ this.decisionAttributes = decisionAttributes;
+ this.requestID = requestID;
+ }
+
+ /**
+ * Gets the ONAPComponentName of the Decision Request Parameters.
+ *
+ * @return ONAPComponentName the <code>String</code> format of the onapComponentName of the Decision Request Parameters.
+ */
+ public String getONAPComponentName() {
+ return onapComponentName;
+ }
+ /**
+ * Sets the ONAPComponentName of the Decision Request parameters.
+ *
+ * @param onapComponentName the <code>String</code> format of the onapComponentName whose Decision is required.
+ */
+ public void setONAPComponentName(String onapComponentName) {
+ this.onapComponentName = onapComponentName;
+ }
+ /**
+ * Gets the Decision Attributes from Decision Request Parameters.
+ *
+ * @return decisionAttributes the <code>Map</code> of <code>String,String</code> format of the decisionAttributes that contain the ID and values.
+ */
+ public Map<String,String> getDecisionAttributes() {
+ return decisionAttributes;
+ }
+ /**
+ * Sets the Decision Attributes which contain ID and values for obtaining Decision from PDP.
+ *
+ * @param decisionAttributes the <code>Map</code> of <code>String,String</code> format of the decisionAttributes that must contain the ID and values.
+ */
+ public void setDecisionAttributes(Map<String,String> decisionAttributes) {
+ this.decisionAttributes = decisionAttributes;
+ }
+ /**
+ * Gets the request ID of Decision Request Parameters.
+ *
+ * @return the requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ */
+ public UUID getRequestID() {
+ return requestID;
+ }
+ /**
+ * Sets the ReqestID of Decision Request Parameters which will be passed around ONAP requests.
+ *
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ */
+ public void setRequestID(UUID requestID) {
+ this.requestID = requestID;
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/DecisionResponse.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DecisionResponse.java
new file mode 100644
index 000000000..78e80f07b
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DecisionResponse.java
@@ -0,0 +1,43 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+/**
+ * Defines the Object that represents the Policy Decision Response elements.
+ * DecisionResponse communicates the decision and details
+ *
+ * @version 0.1
+ */
+public interface DecisionResponse {
+ /**
+ * Gets the Decision of the Policy, Either a Permit or Deny.
+ *
+ * @return {@link org.onap.policy.api.PolicyDecision} Enumeration.
+ */
+ public PolicyDecision getDecision();
+
+ /**
+ * Gets the details of the result. Would be required in case of Deny.
+ *
+ * @return <code>String</code> format of the details of Deny cause.
+ */
+ public String getDetails();
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/DeletePolicyCondition.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DeletePolicyCondition.java
new file mode 100644
index 000000000..4001d3fa6
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DeletePolicyCondition.java
@@ -0,0 +1,65 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+
+/**
+ * Enumeration of the Policy Delete Condition that is used as a part of
+ * {@link org.onap.policy.api.DeletePolicyParameters}.
+ *
+ * @version 0.1
+ */
+public enum DeletePolicyCondition {
+
+ /**
+ * Indicates a condition to only delete the current version of the policy.
+ */
+ ONE("Current Version"),
+
+ /**
+ * Indicates a condition to delete all versions of the policy.
+ */
+ ALL("All Versions");
+ private String name;
+
+ private DeletePolicyCondition(String name){
+ this.name = name;
+ }
+
+ /**
+ * Returns the <code>String</code> format of delete condition for this Policy
+ * @return the <code>String</code> of the delete condition for this Policy
+ */
+ public String toString(){
+ return this.name;
+ }
+
+ @JsonCreator
+ public static DeletePolicyCondition create (String value) {
+ for(DeletePolicyCondition type: values()){
+ if(type.toString().equals(value) || type.equals(DeletePolicyCondition.valueOf(value))){
+ return type;
+ }
+ }
+ throw new IllegalArgumentException();
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/DeletePolicyParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DeletePolicyParameters.java
new file mode 100644
index 000000000..4f6779291
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DeletePolicyParameters.java
@@ -0,0 +1,114 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import java.util.UUID;
+
+/**
+ * <code>PushPolicyParameters</code> defines the Policy Parameters
+ * which are required to Push a Policy to PDPGroup.
+ *
+ * @version 0.1
+ */
+public class DeletePolicyParameters {
+
+ private String policyName;
+ private String policyType;
+ private String policyComponent;
+ private DeletePolicyCondition deleteCondition;
+ private String pdpGroup;
+ private UUID requestID;
+
+
+ /**
+ * @return the policyName
+ */
+ public String getPolicyName() {
+ return policyName;
+ }
+ /**
+ * @param policyName the policyName to set
+ */
+ public void setPolicyName(String policyName) {
+ this.policyName = policyName;
+ }
+ /**
+ * @return the policyComponent
+ */
+ public String getPolicyComponent() {
+ return policyComponent;
+ }
+ /**
+ * @return the policyType
+ */
+ public String getPolicyType() {
+ return policyType;
+ }
+ /**
+ * @param policyType the policyType to set
+ */
+ public void setPolicyType(String policyType) {
+ this.policyType = policyType;
+ }
+ /**
+ * @param policyComponent the policyComponent to set
+ */
+ public void setPolicyComponent(String policyComponent) {
+ this.policyComponent = policyComponent;
+ }
+ /**
+ * @return the deleteCondition
+ */
+ public DeletePolicyCondition getDeleteCondition() {
+ return deleteCondition;
+ }
+ /**
+ * @param deleteCondition the deleteCondition to set
+ */
+ public void setDeleteCondition(DeletePolicyCondition deleteCondition) {
+ this.deleteCondition = deleteCondition;
+ }
+ /**
+ * @return the requestID
+ */
+ public UUID getRequestID() {
+ return requestID;
+ }
+ /**
+ * @param requestID the requestID to set
+ */
+ public void setRequestID(UUID requestID) {
+ this.requestID = requestID;
+ }
+ /**
+ * @return the pdpGroup
+ */
+ public String getPdpGroup() {
+ return pdpGroup;
+ }
+ /**
+ * @param pdpGroup the pdpGroup to set
+ */
+ public void setPdpGroup(String pdpGroup) {
+ this.pdpGroup = pdpGroup;
+ }
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryParameters.java
new file mode 100644
index 000000000..e4aa5e1a5
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryParameters.java
@@ -0,0 +1,82 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import java.util.UUID;
+
+public class DictionaryParameters {
+
+ private DictionaryType dictionaryType;
+ private String dictionary;
+ private String dictionaryJson;
+ private UUID requestID;
+
+
+ /**
+ * @return the dictionaryType
+ */
+ public DictionaryType getDictionaryType() {
+ return dictionaryType;
+ }
+ /**
+ * @param dictionaryType the dictionaryType to set
+ */
+ public void setDictionaryType(DictionaryType dictionaryType) {
+ this.dictionaryType = dictionaryType;
+ }
+ /**
+ * @return the dictionary
+ */
+ public String getDictionary() {
+ return dictionary;
+ }
+ /**
+ * @param dictionary the dictionary to set
+ */
+ public void setDictionary(String dictionary) {
+ this.dictionary = dictionary;
+ }
+ /**
+ * @return the dictionaryFields
+ */
+ public String getDictionaryJson() {
+ return dictionaryJson;
+ }
+ /**
+ * @param dictionaryFields the dictionaryFields to set
+ */
+ public void setDictionaryJson(String dictionaryJson) {
+ this.dictionaryJson = dictionaryJson;
+ }
+ /**
+ * @return the requestID
+ */
+ public UUID getRequestID() {
+ return requestID;
+ }
+ /**
+ * @param requestID the requestID to set
+ */
+ public void setRequestID(UUID requestID) {
+ this.requestID = requestID;
+ }
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryResponse.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryResponse.java
new file mode 100644
index 000000000..4381e694f
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryResponse.java
@@ -0,0 +1,41 @@
+package org.onap.policy.api;
+
+import java.util.Map;
+
+import javax.json.JsonObject;
+
+public interface DictionaryResponse {
+
+ /**
+ * Gets the <code>String</code> of the DictionaryItemsMessage from <code>DictionaryResponse</code>.
+ *
+ * @return the <code>String</code> which consists of DictionaryItemsMessage from <code>DictionaryResponse</code>
+ */
+ public String getResponseMessage();
+
+ /**
+ * Response code of type <code>Integer</code> which corresponds to the HTTP Response code explaining the response from Policy Engine.
+ *
+ * @return the responseCode in <code>Integer</code> format corresponding to the HTTP response code from Policy Engine.
+ */
+ public int getResponseCode();
+
+
+ /**
+ * Gets the <code>JsonObject</code> of all the Dictionary data retrieved
+ *
+ * @return the <code>JsonObject</code> which consists of Dictionary data which has been retrieved.
+ */
+ public JsonObject getDictionaryJson();
+
+
+ /**
+ * Gets the Key and Value pairs for each Dictionary item retrieved which can be used in the getDictionaryItems call.
+ *
+ * @return <code>Map</code> of <code>String, String</code> which consists of the Key and Value pairs for each Dictionary item retrieved.
+ */
+ public Map<String,String> getDictionaryData();
+
+
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryType.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryType.java
new file mode 100644
index 000000000..5ac6d5ed8
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryType.java
@@ -0,0 +1,100 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+
+public enum DictionaryType{
+ /**
+ * Indicates Common Dictionaries.
+ */
+ Common("Common"),
+ /**
+ * Indicates Action Policy Dictionaries
+ */
+ Action("Action"),
+ /**
+ * Indicates ClosedLoop Policy Dictionaries.
+ */
+ ClosedLoop("ClosedLoop"),
+ /**
+ * Indicates Firewall Config Policy Dictionaries.
+ */
+ Firewall("Firewall"),
+ /**
+ * Indicates Decision Policy Dictionaries.
+ */
+ Decision("Decision"),
+ /**
+ * Indicates BRMS Policy Dictionaries.
+ */
+ BRMS("BRMS"),
+ /**
+ * Indicates DCAE Micro Service Policy Dictionaries.
+ */
+ MicroService("MicroService"),
+ /**
+ * Indicates Descriptive Scope Dictionaries
+ */
+ DescriptiveScope("DescriptiveScope"),
+ /**
+ * Indicates Policy Scope Dictionaries
+ */
+ PolicyScope("PolicyScope"),
+ /**
+ * Indicates Enforcer Dictionaries
+ */
+ Enforcer("Enforcer"),
+ /**
+ * Indicates SafePolicy Dictionaries
+ */
+ SafePolicy("SafePolicy"),
+ /**
+ * Enum support entry to extend dictionary
+ */
+ Extended("Extended"),
+ ;
+
+ private String name;
+
+ private DictionaryType(String typeName){
+ this.name = typeName;
+ }
+
+ /**
+ * Returns the <code>String</code> format of Type for this <code>PolicyClass</code>
+ * @return the <code>String</code> of the Type for this <code>PolicyClass</code>
+ */
+ public String toString() {
+ return this.name;
+ }
+
+ @JsonCreator
+ public static DictionaryType create (String value) {
+ for(DictionaryType type: values()){
+ if(type.toString().equals(value) || type.equals(DictionaryType.valueOf(value))){
+ return type;
+ }
+ }
+ throw new IllegalArgumentException();
+ }
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/EventRequestParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/EventRequestParameters.java
new file mode 100644
index 000000000..6e4bbbd51
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/EventRequestParameters.java
@@ -0,0 +1,89 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * <code>EventRequestParameters</code> defines the Event Policy Request Parameters
+ * which retrieve(s) the response from PDP if the request parameters match with any Action Policy.
+ *
+ * @version 0.1
+ */
+public class EventRequestParameters {
+ private Map<String,String> eventAttributes;
+ private UUID requestID;
+
+ /**
+ * Constructor with no Parameters
+ */
+ public EventRequestParameters(){
+ }
+
+ /**
+ * Constructor with Parameters
+ *
+ * @param eventAttributes the <code>Map</code> of <code>String,String</code> format of the eventAttributes that contains the event ID and values.
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ */
+ public EventRequestParameters(Map<String,String> eventAttributes, UUID requestID){
+ this.eventAttributes = eventAttributes;
+ this.requestID = requestID;
+ }
+
+ /**
+ * Gets the eventAttributes of Event Request Parameters.
+ *
+ * @return eventAttributes the <code>Map</code> of <code>String,String</code> format of the eventAttributes that contains the event ID and values.
+ */
+ public Map<String,String> getEventAttributes() {
+ return eventAttributes;
+ }
+
+ /**
+ * Sets the eventAttributes that contain the eventID and values to the Event Request Parameters.
+ *
+ * @param eventAttributes the <code>Map</code> of <code>String,String</code> format of the eventAttributes that must contain the event ID and values.
+ */
+ public void setEventAttributes(Map<String,String> eventAttributes) {
+ this.eventAttributes = eventAttributes;
+ }
+
+ /**
+ * Gets the ReqestID of Event Request Parameters which will be passed around ONAP requests.
+ *
+ * @return requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ */
+ public UUID getRequestID() {
+ return requestID;
+ }
+
+ /**
+ * Sets the ReqestID of Event Request Parameters which will be passed around ONAP requests.
+ *
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ */
+ public void setRequestID(UUID requestID) {
+ this.requestID = requestID;
+ }
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/ImportParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/ImportParameters.java
new file mode 100644
index 000000000..3914864bf
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/ImportParameters.java
@@ -0,0 +1,175 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import java.util.UUID;
+
+
+/**
+ * <code>ImportParameters</code> defines the Policy Engine Import Parameters
+ * which are required to import a new Policy Service or Value.
+ *
+ * @version 0.1
+ */
+public class ImportParameters {
+ private String serviceName;
+ private String description;
+ private UUID requestID;
+ private String filePath;
+ private String version;
+ private IMPORT_TYPE importType;
+
+ public enum IMPORT_TYPE {
+ MICROSERVICE,
+ BRMSPARAM
+ }
+
+ /**
+ * Sets Import Policy Parameters.
+ *
+ * @param serviceName the <code>String</code> format of the Service Name
+ * @param description the <code>String</code> format of the i Description
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ * @param filePath the <code>List</code> format of the file paths for the service files
+ * @param importType the {@link IMPORT_TYPE} format of the Policy Service List
+ * @param version the <code>String</code> format of the Policy Import Version
+ * A different request ID should be passed for each request.
+ */
+ public void setImportParameters(String serviceName, String description, UUID requestID, String filePath, IMPORT_TYPE importType, String version){
+
+ this.setServiceName(serviceName);
+ this.setDescription(description);
+ this.setRequestID(requestID);
+ this.setFilePath(filePath);
+ this.setServiceType(importType);
+ this.setVersion(version);
+
+ }
+
+ /**
+ * Gets the Policy Service of the Policy Service Import Parameters.
+ *
+ * @return serviceName the <code>String</code> format of the Policy Service Name
+ */
+ public String getServiceName() {
+ return serviceName;
+ }
+
+ /**
+ * Sets the serviceName of the Policy Service Parameters.
+ *
+ * @param serviceName the <code>String</code> format of the Policy Service Name
+ */
+ public void setServiceName(String serviceName) {
+ this.serviceName = serviceName;
+ }
+
+ /**
+ * Gets the Policy Import Description.
+ *
+ * @return description the <code>String</code> format of the Policy Import Description
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * Sets the Description of the new Policy Import Description.
+ *
+ * @param description the <code>String</code> format of the Policy Import Description
+ */
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ /**
+ * Gets the requestID of the Policy Parameters.
+ *
+ * @return unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ */
+ public UUID getRequestID() {
+ return requestID;
+ }
+
+ /**
+ * Sets the requestID of the Policy Parameters.
+ *
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ */
+ public void setRequestID(UUID requestID) {
+ this.requestID = requestID;
+ }
+
+ /**
+ * Gets the List of File Paths of the new import.
+ *
+ * @return filePath the <code>List</code> format of the Policy Import File
+ */
+ public String getFilePath() {
+ return filePath;
+ }
+
+ /**
+ * Sets the policy Import File List of the new Policy Import.
+ *
+ * @param filePath the <code>List</code> format of the Policy Import File
+ */
+ public void setFilePath(String filePath) {
+ this.filePath = filePath;
+ }
+
+ /**
+ * Gets the Service Type of the new policy import.
+ *
+ * @return ImportType {@link IMPORT_TYPE} format of the Policy Service List
+ */
+ public IMPORT_TYPE getServiceType() {
+ return importType;
+ }
+
+ /**
+ * Sets the policy Service Type of the new Policy Service.
+ *
+ * @param enumImportType the <code>enumServiceType</code> format of the Policy Service List
+ */
+ public void setServiceType(IMPORT_TYPE enumImportType) {
+ this.importType = enumImportType;
+ }
+
+ /**
+ *
+ * Gets the Import Version of the new policy import.
+ *
+ * @return version the <code>String</code> format of the Policy Import Version
+ */
+ public String getVersion() {
+ return version;
+ }
+
+ /**
+ * Sets the policy Import Version of the new Policy Import.
+ *
+ * @param version the <code>String</code> format of the Policy Import Version
+ */
+ public void setVersion(String version) {
+ this.version = version;
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/MetricsRequestParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/MetricsRequestParameters.java
new file mode 100644
index 000000000..8820ca31c
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/MetricsRequestParameters.java
@@ -0,0 +1,21 @@
+package org.onap.policy.api;
+
+import java.util.UUID;
+
+public class MetricsRequestParameters {
+ private UUID requestID;
+
+ /**
+ * @return the requestID
+ */
+ public UUID getRequestID() {
+ return requestID;
+ }
+ /**
+ * @param requestID the requestID to set
+ */
+ public void setRequestID(UUID requestID) {
+ this.requestID = requestID;
+ }
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/MetricsResponse.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/MetricsResponse.java
new file mode 100644
index 000000000..dc48caf1f
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/MetricsResponse.java
@@ -0,0 +1,45 @@
+package org.onap.policy.api;
+
+public interface MetricsResponse {
+
+ /**
+ * Gets the <code>String</code> of the metrics message from <code>MetricsResponse</code>.
+ *
+ * @return the <code>String</code> which consists of the metrics message from <code>MetricsResponse</code>
+ */
+ public String getResponseMessage();
+
+ /**
+ * Gets the response code of type <code>Integer</code> which corresponds to the HTTP Response code explaining the response from Policy Engine.
+ *
+ * @return the responseCode in <code>Integer</code> format corresponding to the HTTP response code from Policy Engine.
+ */
+ public int getResponseCode();
+
+
+ /**
+ * Gets the <code>Integer</code> value of the count of policies that reside on the PAP.
+ *
+ * @return the <code>Integer</code> which consists of count of policies that reside on the PAP.
+ */
+ public int getPapMetrics();
+
+
+ /**
+ * Gets the <code>Integer</code> value of the count of policies that reside on the PDP.
+ *
+ * @return the <code>Integer</code> which consists of count of policies that reside on the PDP.
+ */
+ public int getPdpMetrics();
+
+
+ /**
+ * Gets the <code>Integer</code> value of the total count of policies.
+ *
+ * @return the <code>Integer</code> which consists of the total count of policies.
+ */
+ public int getMetricsTotal();
+
+
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/NotificationScheme.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/NotificationScheme.java
new file mode 100644
index 000000000..4df83e5e7
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/NotificationScheme.java
@@ -0,0 +1,61 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+/**
+ * Enumeration of <code>NotificationScheme</code> describes the Notification Scheme that will be used by the PolicyEngine.
+ *
+ * @version 0.1
+ */
+public enum NotificationScheme {
+ /**
+ * Notifications for policyUpdates on policy Configs already retrieved
+ */
+ AUTO_NOTIFICATIONS("auto_notifications"),
+ /**
+ * Subscribing to all notifications from the PDP
+ */
+ AUTO_ALL_NOTIFICATIONS("auto_all_notifications"),
+ /**
+ * Client can poll for updates that receive policyUpdates on policy Configs that have already been retrieved
+ */
+ MANUAL_NOTIFICATIONS("manual_notifications"),
+ /**
+ * Client can poll for updates that receive all notifications from the PDP
+ */
+ MANUAL_ALL_NOTIFICATIONS("manual_all_notifications")
+ ;
+
+ private String name;
+ private NotificationScheme(String name){
+ this.name = name;
+ }
+
+ /**
+ * Returns the <code>String</code> name for this <code>NotificationScheme</code>
+ *
+ * @return the <code>String</code> name for this <code>NotificationScheme</code>
+ */
+ @Override
+ public String toString(){
+ return this.name;
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyChangeResponse.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyChangeResponse.java
new file mode 100644
index 000000000..249cf24a2
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyChangeResponse.java
@@ -0,0 +1,44 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+/**
+ * <code>PolicyChangeResponse</code> defines the Policy Response
+ * which is Contains responseCode corresponding to HTTP response Codes with response Message.
+ *
+ * @version 0.1
+ */
+public interface PolicyChangeResponse {
+
+ /**
+ * Policy Change Response Message in <code>String</code> format from the Policy Engine.
+ *
+ * @return the responseMessage in <code>String</code> format related to Response from Policy Engine.
+ */
+ public String getResponseMessage();
+
+ /**
+ * Response code of type <code>Integer</code> which corresponds to the HTTP Response code explaining the response from Policy Engine.
+ *
+ * @return the responseCode in <code>Integer</code> format corresponding to the HTTP response code from Policy Engine.
+ */
+ public int getResponseCode();
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyClass.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyClass.java
new file mode 100644
index 000000000..5132a44be
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyClass.java
@@ -0,0 +1,67 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+
+/**
+ * Enumeration of the Policy Types that is used as a part of
+ * {@link org.onap.policy.api.PolicyParameters}.
+ *
+ * @version 0.1
+ */
+public enum PolicyClass {
+ /**
+ * Indicates Config based Policy.
+ */
+ Config("Config"),
+ /**
+ * Indicates Action based Policy.
+ */
+ Action("Action"),
+ /**
+ * Indicates Decision based Policy.
+ */
+ Decision("Decision")
+ ;
+ private String name;
+
+ private PolicyClass(String typeName){
+ this.name = typeName;
+ }
+
+ /**
+ * Returns the <code>String</code> format of Type for this <code>PolicyClass</code>
+ * @return the <code>String</code> of the Type for this <code>PolicyClass</code>
+ */
+ public String toString() {
+ return this.name;
+ }
+ @JsonCreator
+ public static PolicyClass create (String value) {
+ for(PolicyClass type: values()){
+ if(type.toString().equals(value) || type.equals(PolicyClass.valueOf(value))){
+ return type;
+ }
+ }
+ throw new IllegalArgumentException();
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfig.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfig.java
new file mode 100644
index 000000000..652fd4da3
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfig.java
@@ -0,0 +1,123 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import java.util.Map;
+import java.util.Properties;
+
+import javax.json.JsonObject;
+
+import org.w3c.dom.Document;
+/**
+ * Defines the objects that represent PolicyEngine config elements. PolicyConfig communicates the PolicyConfigStatus,
+ * PolicyConfigMessage, PolicyType, Properties, JsonObject, String and Document.
+ *
+ * @version 0.7
+ */
+
+public interface PolicyConfig {
+ /**
+ * Gets the {@link org.onap.policy.api.PolicyType} associated with <code>PolicyConfig</code>
+ *
+ * @return the <code>PolicyType</code> associated with this <code>PolicyConfig</code>
+ */
+ public PolicyType getType();
+
+ /**
+ * Gives the <code>Properties</code> response associated with the <code>PolicyConfig</code>
+ *
+ * @return the <code>Properties</code> associated with this <code>PolicyConfig</code>
+ */
+ public Properties toProperties();
+
+ /**
+ * Gives the <code>JsonObject</code> response associated with the <code>PolicyConfig</code>
+ *
+ * @return the <code>JsonObject</code> result associated with <code>PolicyConfig</code>
+ */
+ public JsonObject toJSON();
+
+ /**
+ * Gives the XML <code>Document</code> result associated with <code>PolicyConfig</code>
+ *
+ * @return the <code>Document</code> result associated with <code>PolicyConfig</code>
+ */
+ public Document toXML();
+
+ /**
+ * Gives the Other <code>String</code> response associated with <code>PolicyConfig</code>
+ *
+ * @return the <code>String</code> result associated with <code>PolicyConfig</code>
+ */
+ public String toOther();
+
+ /**
+ * Gets the {@link org.onap.policy.api.PolicyConfigStatus} associated with this <code>PolicyConfig</code>.
+ *
+ * @return the <code>PolicyConfigStatus</code> associated with this <code>PolicyConfig</code>
+ */
+ public PolicyConfigStatus getPolicyConfigStatus();
+
+ /**
+ * Gets the <code>String</code> of the PolicyConfigMessage from <code>PolicyConfig</code>.
+ *
+ * @return the <code>String</code> which consists of PolicyConfigMessage from <code>PolicyConfig</code>
+ */
+ public String getPolicyConfigMessage();
+
+ /**
+ * Gets the <code>String</code> of the PolicyName retrieved.
+ *
+ * @return the <code>String</code> which consists of Policy Name which has been retrieved.
+ */
+ public String getPolicyName();
+
+
+ /**
+ * Gets the <code>String</code> of the PolicyVersion retrieved.
+ *
+ * @return the <code>String</code> which consists of the Policy Version number which has been retrieved.
+ */
+ public String getPolicyVersion();
+
+ /**
+ * Gets the Matching Conditions of the policy retrieved which can be used in the getConfig call.
+ *
+ * @return <code>Map</code> of <code>String, String</code> which consists of the Matching conditions of the Policy retrieved.
+ */
+ public Map<String,String> getMatchingConditions();
+
+ /**
+ * Gets the Response Attributes of the policy retrieved. Which can hold additional information about the policy retrieved.
+ *
+ * @return <code>Map</code> of <code>String, String</code> which consists of the Response Attributes of the Policy retrieved.
+ */
+ public Map<String,String> getResponseAttributes();
+
+ /**
+ * Returns the <code>String</code> version of the <code>PolicyConfig</code> object.
+ *
+ * @return <code>String</code> of the <code>PolicyConfig</code> Object.
+ */
+ @Override
+ public String toString();
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigException.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigException.java
new file mode 100644
index 000000000..b42d8b280
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigException.java
@@ -0,0 +1,49 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+/**
+ * PolicyConfigException extends <code>Exception</code> to implement exceptions thrown by {@link org.onap.policy.api.PolicyEngine}
+ *
+ * @version 0.1
+ */
+public class PolicyConfigException extends Exception{
+ private static final long serialVersionUID = -188355220060684215L;
+
+ public PolicyConfigException() {
+ }
+
+ public PolicyConfigException(String message) {
+ super(message);
+ }
+
+ public PolicyConfigException(Throwable cause){
+ super(cause);
+ }
+
+ public PolicyConfigException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public PolicyConfigException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigStatus.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigStatus.java
new file mode 100644
index 000000000..23291c9b9
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigStatus.java
@@ -0,0 +1,79 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+
+/**
+ * Enumeration of PolicyConfigStatus that can be returned as a part of
+ * {@link org.onap.policy.api.PolicyConfig}.
+ *
+ * @version 0.1
+ */
+public enum PolicyConfigStatus {
+ /**
+ * Indicates that the Configuration has been successfully retrieved.
+ */
+ CONFIG_RETRIEVED("retrieved"),
+ /**
+ * Indicates that there is no Configuration Retrieved from PolicyConfig.
+ */
+ CONFIG_NOT_FOUND("not_found"),
+ ;
+
+ private String name;
+ private PolicyConfigStatus(String name){
+ this.name = name;
+ }
+
+ /**
+ * Get the <code>PolicyConfigStatus</code> based on <code>String</code> representation of <code>PolicyConfig</code>
+ *
+ * @param configStatus the <code>String</code> Configuration Status
+ * @return the <code>PolicyConfigResponse</code> with the name matching <code>CONFIG_RETRIEVED</code> or <code>CONFIG_NOT_FOUND</code>
+ * if no match is found
+ */
+ public static PolicyConfigStatus getStatus(String configStatus) {
+ if(configStatus.equalsIgnoreCase("retrieved")) {
+ return CONFIG_RETRIEVED;
+ }else {
+ return CONFIG_NOT_FOUND;
+ }
+ }
+
+ /**
+ * Returns the <code>String</code> name for this <code>PolicyConfigStatus</code>
+ *
+ * @return the <code>String</code> name for this <code>PolicyConfigStatus</code>
+ */
+ public String toString(){
+ return this.name;
+ }
+ @JsonCreator
+ public static PolicyConfigStatus create (String value) {
+ for(PolicyConfigStatus type: values()){
+ if(type.toString().equals(value) || type.equals(PolicyConfigStatus.valueOf(value))){
+ return type;
+ }
+ }
+ throw new IllegalArgumentException();
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigType.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigType.java
new file mode 100644
index 000000000..77c978da4
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigType.java
@@ -0,0 +1,87 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+
+/**
+ * Enumeration of the Policy Config Types that is used as a part of
+ * {@link org.onap.policy.api.PolicyParameters}.
+ *
+ * @version 0.1
+ */
+public enum PolicyConfigType{
+ /**
+ * Indicates Base Config Policy.
+ */
+ Base("Base"),
+ /**
+ * Indicates ClosedLoop Fault Policy.
+ */
+ ClosedLoop_Fault("Fault"),
+ /**
+ * Indicates ClosedLoop Performance Metrics Policy.
+ */
+ ClosedLoop_PM("PM"),
+ /**
+ * Indicates Firewall Config Policy.
+ */
+ Firewall("FW"),
+ /**
+ * Indicates BRMS based raw DRL Rule Policy.
+ */
+ BRMS_RAW("BRMS_Raw"),
+ /**
+ * Indicates BRMS based Param DRL policy.
+ */
+ BRMS_PARAM("BRMS_Param"),
+ /**
+ * Indicates DCAE Micro Service based Policy.
+ */
+ MicroService("MS"),
+
+ Extended("EXTENDED")
+ ;
+
+ private String name;
+
+ private PolicyConfigType(String name){
+ this.name = name;
+ }
+
+ /**
+ * Returns the <code>String</code> format of Type for this <code>PolicyClass</code>
+ * @return the <code>String</code> of the Type for this <code>PolicyClass</code>
+ */
+ public String toString() {
+ return name;
+ }
+
+ @JsonCreator
+ public static PolicyConfigType create (String value) {
+ for(PolicyConfigType type: values()){
+ if(type.toString().equals(value) || type.equals(PolicyConfigType.valueOf(value))){
+ return type;
+ }
+ }
+ throw new IllegalArgumentException();
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyDecision.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyDecision.java
new file mode 100644
index 000000000..b5fdc1e01
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyDecision.java
@@ -0,0 +1,68 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+
+/**
+ * Enumeration of PolicyDecision that can be returned as a part of
+ * {@link org.onap.policy.api.DecisionResponse} getDecision().
+ *
+ * @version 0.1
+ */
+public enum PolicyDecision {
+ /**
+ * Indicates that the Decision is to Permit.
+ */
+ PERMIT("permit"),
+ /**
+ * Indicates that the Decision is to Deny.
+ */
+ DENY("deny"),
+ /**
+ * Indicates that the Decision process has some issues.
+ */
+ ERROR("error")
+ ;
+
+ private String name;
+ private PolicyDecision(String name){
+ this.name = name;
+ }
+
+ /**
+ * Returns the <code>String</code> name for this <code>PolicyDecision</code>
+ *
+ * @return the <code>String</code> name for this <code>PolicyDecision</code>
+ */
+ public String toString(){
+ return this.name;
+ }
+ @JsonCreator
+ public static PolicyDecision create (String value) {
+ for(PolicyDecision type: values()){
+ if(type.toString().equals(value) || type.equals(PolicyDecision.valueOf(value))){
+ return type;
+ }
+ }
+ throw new IllegalArgumentException();
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyDecisionException.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyDecisionException.java
new file mode 100644
index 000000000..38081de7e
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyDecisionException.java
@@ -0,0 +1,50 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+/**
+ * PolicyDecisionException extends <code>Exception</code> to implement exceptions thrown by {@link org.onap.policy.api.PolicyEngine}
+ *
+ * @version 0.1
+ */
+public class PolicyDecisionException extends Exception {
+
+ private static final long serialVersionUID = -2080072039363261175L;
+
+ public PolicyDecisionException() {
+ }
+
+ public PolicyDecisionException(String message) {
+ super(message);
+ }
+
+ public PolicyDecisionException(Throwable cause){
+ super(cause);
+ }
+
+ public PolicyDecisionException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public PolicyDecisionException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEngine.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEngine.java
new file mode 100644
index 000000000..bfb4f1e4f
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEngine.java
@@ -0,0 +1,602 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.UUID;
+
+import javax.json.JsonObject;
+
+import org.onap.policy.api.NotificationHandler;
+import org.onap.policy.api.PDPNotification;
+import org.onap.policy.std.StdPolicyEngine;
+
+/**
+ * PolicyEngine is the Interface that applications use to make policy queries against a PEPEngine
+ *
+ * @version 2.0
+ */
+public class PolicyEngine{
+ private String propertyFilePath = null;
+ private StdPolicyEngine stdPolicyEngine;
+ private NotificationScheme scheme = null;
+ private NotificationHandler handler = null;
+
+ /**
+ * PolicyEngine Constructor with <code>String</code> format of propertiesFilePathname
+ *
+ * @param propertiesFilePathname the <code>String</code> format of the propertiesFilePathname
+ * @throws PolicyEngineException PolicyEngine Exception
+ */
+ public PolicyEngine(String propertiesFilePathname) throws PolicyEngineException {
+ this.propertyFilePath = propertiesFilePathname ;
+ this.stdPolicyEngine= new StdPolicyEngine(this.propertyFilePath, (String)null);
+ }
+
+ /**
+ * PolicyEngine Constructor with <code>String</code> format of propertiesFilePathname
+ *
+ * @param propertiesFilePathname the <code>String</code> format of the propertiesFilePathname
+ * @param clientKey depicts String format of Password/ Client_Key.
+ * @throws PolicyEngineException PolicyEngine Exception
+ */
+ public PolicyEngine(String propertiesFilePathname, String clientKey) throws PolicyEngineException {
+ this.propertyFilePath = propertiesFilePathname ;
+ this.stdPolicyEngine= new StdPolicyEngine(this.propertyFilePath, clientKey);
+ }
+
+ /**
+ * PolicyEngine Constructor with <code>String</code> format of PropertiesFilePathname and <code>NotificationScheme</code>
+ *
+ * @param propertiesFilePathname the <code>String</code> format of the propertiesFilePathname
+ * @param scheme the <code>NotificationScheme</code> of {@link org.onap.policy.api.NotificationScheme} which defines the Notification Scheme
+ * @throws PolicyEngineException PolicyEngine Exception
+ */
+ public PolicyEngine(String propertiesFilePathname, NotificationScheme scheme) throws PolicyEngineException{
+ this.propertyFilePath = propertiesFilePathname;
+ this.scheme = scheme;
+ this.stdPolicyEngine = new StdPolicyEngine(this.propertyFilePath, this.scheme);
+ }
+
+ /**
+ * PolicyEngine Constructor with <code>String</code> format of PropertiesFilePathname, <code>NotificationScheme</code> and <code>NotificationHandler</code>
+ *
+ * @param propertiesFilePathname the <code>String</code> format of the propertiesFilePathname
+ * @param scheme the <code>NotificationScheme</code> of {@link org.onap.policy.api.NotificationScheme} which defines the Notification Scheme
+ * @param handler the <code>NotificationHandler</code> of {@link org.onap.policy.api.NotificationHandler} which defines what should happen when a notification is received.
+ * @throws PolicyEngineException PolicyEngine Exception
+ */
+ public PolicyEngine(String propertiesFilePathname, NotificationScheme scheme, NotificationHandler handler) throws PolicyEngineException {
+ this.propertyFilePath = propertiesFilePathname ;
+ this.scheme = scheme;
+ this.handler = handler;
+ this.stdPolicyEngine= new StdPolicyEngine(this.propertyFilePath,this.scheme,this.handler);
+ }
+
+ /**
+ * Gets the configuration from the PolicyDecisionPoint(PDP) for the <code>String</code> which represents the Policy File Name
+ *
+ * @param policyName the <code>String</code> format of the PolicyFile Name whose configuration is required.
+ * @return <code>Collection</code> of {@link org.onap.policy.api.PolicyConfig} which has the configuration.
+ * @throws PolicyConfigException PolicyConfig Exception
+ * @deprecated use {@link #getConfig(ConfigRequestParameters configRequestParameters)} Instead.
+ */
+ @Deprecated
+ public Collection<PolicyConfig> getConfigByPolicyName(String policyName) throws PolicyConfigException {
+ return getConfig(setConfigRequestParameters(policyName, null, null, null, null));
+ }
+
+ /**
+ * Gets the configuration from the PolicyDecisionPoint(PDP) for the <code>String</code> which represents the Policy File Name
+ *
+ * @param policyName the <code>String</code> format of the PolicyFile Name whose configuration is required.
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ * A different request ID should be passed for each request.
+ * @return <code>Collection</code> of {@link org.onap.policy.api.PolicyConfig} which has the configuration.
+ * @throws PolicyConfigException PolicyConfig Exception
+ * @deprecated use {@link #getConfig(ConfigRequestParameters configRequestParameters)} Instead.
+ */
+ @Deprecated
+ public Collection<PolicyConfig> getConfigByPolicyName(String policyName, UUID requestID) throws PolicyConfigException {
+ return getConfig(setConfigRequestParameters(policyName, null, null, null, requestID));
+ }
+
+ /**
+ * Gets the configuration from the PolicyDecisionPoint(PDP) for the <code>String</code> which represents the onapComponentName
+ *
+ * @param onapComponentName the <code>String</code> format of the onapComponentName whose configuration is required.
+ * @return <code>Collection</code> of {@link org.onap.policy.api.PolicyConfig} which has the configuration.
+ * @throws PolicyConfigException PolicyConfig Exception
+ * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead.
+ */
+ @Deprecated
+ public Collection<PolicyConfig> getConfig(String onapComponentName) throws PolicyConfigException {
+ return getConfig(setConfigRequestParameters(null, onapComponentName, null, null, null));
+ }
+
+ /**
+ * Gets the configuration from the PolicyDecisionPoint(PDP) for the <code>String</code> which represents the onapComponentName
+ *
+ * @param onapComponentName the <code>String</code> format of the onapComponentName whose configuration is required.
+ * @return <code>Collection</code> of {@link org.onap.policy.api.PolicyConfig} which has the configuration.
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ * A different request ID should be passed for each request.
+ * @throws PolicyConfigException PolicyConfig Exception
+ * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead.
+ */
+ @Deprecated
+ public Collection<PolicyConfig> getConfig(String onapComponentName, UUID requestID) throws PolicyConfigException {
+ return getConfig(setConfigRequestParameters(null, onapComponentName, null, null, requestID));
+ }
+
+ /**
+ * Requests the configuration of the <code>String</code> which represents the onapComponentName and <code>String</code>
+ * which represents the configName and returns the configuration if different Configurations exist for the
+ * particular onapComponentName.
+ *
+ * @param onapComponentName the <code>String</code> format of the onapComponentName whose configuration is required.
+ * @param configName the <code>String</code> format of the configurationName whose configuration is required.
+ * @return <code>Collection</code> of {@link org.onap.policy.api.PolicyConfig} which has the configuration.
+ * @throws PolicyConfigException PolicyConfig Exception
+ * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead.
+ */
+ @Deprecated
+ public Collection<PolicyConfig> getConfig(String onapComponentName, String configName) throws PolicyConfigException {
+ return getConfig(setConfigRequestParameters(null, onapComponentName, configName, null, null));
+ }
+
+ /**
+ * Requests the configuration of the <code>String</code> which represents the onapComponentName and <code>String</code>
+ * which represents the configName and returns the configuration if different Configurations exist for the
+ * particular onapComponentName.
+ *
+ * @param onapComponentName the <code>String</code> format of the onapComponentName whose configuration is required.
+ * @param configName the <code>String</code> format of the configurationName whose configuration is required.
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ * A different request ID should be passed for each request.
+ * @return <code>Collection</code> of {@link org.onap.policy.api.PolicyConfig} which has the configuration.
+ * @throws PolicyConfigException PolicyConfig Exception
+ * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead.
+ */
+ @Deprecated
+ public Collection<PolicyConfig> getConfig(String onapComponentName, String configName, UUID requestID) throws PolicyConfigException {
+ return getConfig(setConfigRequestParameters(null, onapComponentName, configName, null, requestID));
+ }
+
+ /**
+ * Requests the configuration of the <code>String</code> which represents the onapComponentName, <code>String</code>
+ * which represents the configName and <code>Map</code> of <code>String,String</code> which has the configAttribute and returns the specific
+ * configuration related to the configAttributes mentioned.
+ *
+ * @param onapComponentName the <code>String</code> format of the onapComponentName whose configuration is required.
+ * @param configName the <code>String</code> format of the configurationName whose configuration is required.
+ * @param configAttributes the <code>Map</code> of <code>String,String</code> format of the configuration attributes which are required.
+ * @return <code>Collection</code> of {@link org.onap.policy.api.PolicyConfig} which has the configuration.
+ * @throws PolicyConfigException PolicyConfig Exception
+ * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead.
+ */
+ @Deprecated
+ public Collection<PolicyConfig> getConfig(String onapComponentName, String configName, Map<String, String> configAttributes) throws PolicyConfigException{
+ return getConfig(setConfigRequestParameters(null, onapComponentName, configName, configAttributes, null));
+ }
+
+ /**
+ * Requests the configuration of the <code>String</code> which represents the onapComponentName, <code>String</code>
+ * which represents the configName and <code>Map</code> of <code>String,String</code> which has the configAttribute and returns the specific
+ * configuration related to the configAttributes mentioned.
+ *
+ * @param onapComponentName the <code>String</code> format of the onapComponentName whose configuration is required.
+ * @param configName the <code>String</code> format of the configurationName whose configuration is required.
+ * @param configAttributes the <code>Map</code> of <code>String,String</code> format of the configuration attributes which are required.
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ * A different request ID should be passed for each request.
+ * @return <code>Collection</code> of {@link org.onap.policy.api.PolicyConfig} which has the configuration.
+ * @throws PolicyConfigException PolicyConfig Exception
+ * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead.
+ */
+ @Deprecated
+ public Collection<PolicyConfig> getConfig(String onapComponentName, String configName, Map<String, String> configAttributes, UUID requestID) throws PolicyConfigException{
+ return getConfig(setConfigRequestParameters(null, onapComponentName, configName, configAttributes, requestID));
+ }
+
+ /**
+ * Requests the configuration of the <code>ConfigRequestParameters</code> which represents the Config policy request parameters
+ * and returns the specific configuration related to the matching parameters.
+ *
+ * @param configRequestParameters {@link org.onap.policy.api.ConfigRequestParameters} which represents the Config policy request parameters.
+ * @return <code>Collection</code> of {@link org.onap.policy.api.PolicyConfig} which has the configuration.
+ * @throws PolicyConfigException PolicyConfig Exception
+ */
+ public Collection<PolicyConfig> getConfig(ConfigRequestParameters configRequestParameters) throws PolicyConfigException{
+ return stdPolicyEngine.getConfig(configRequestParameters);
+ }
+
+ /**
+ * Requests the list of policies based on the <code>ConfigRequestParameters</code> which represents the policy request parameters
+ * and returns the list of policies filtered by the parameters.
+ *
+ * @param configRequestParameters {@link org.onap.policy.api.ConfigRequestParameters} which represents the List Policy request parameters.
+ * @return <code>Collection</code> of <code>String</code> which returns the list of policies.
+ * @throws PolicyConfigException PolicyConfig Exception
+ */
+ public Collection<String> listConfig(ConfigRequestParameters listPolicyRequestParameters) throws PolicyConfigException{
+ return stdPolicyEngine.listConfig(listPolicyRequestParameters);
+ }
+
+
+ /**
+ * Sends the Events specified to the PEP and returns back the PolicyResponse.
+ *
+ * @param eventAttributes the <code>Map</code> of <code>String,String</code> format of the eventAttributes that must contain the event ID and values.
+ * @return <code>Collection</code> of {@link org.onap.policy.api.PolicyResponse} which has the Response.
+ * @throws PolicyEventException PolicyEvent Exception
+ * @deprecated use {@link #sendEvent(EventRequestParameters)} Instead.
+ */
+ @Deprecated
+ public Collection<PolicyResponse> sendEvent(Map<String, String> eventAttributes) throws PolicyEventException {
+ return stdPolicyEngine.sendEvent(eventAttributes, (UUID) null);
+ }
+
+ /**
+ * Sends the Events specified to the PEP and returns back the PolicyResponse.
+ *
+ * @param eventAttributes the <code>Map</code> of <code>String,String</code> format of the eventAttributes that must contain the event ID and values.
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ * A different request ID should be passed for each request.
+ * @return <code>Collection</code> of {@link org.onap.policy.api.PolicyResponse} which has the Response.
+ * @throws PolicyEventException PolicyEvent Exception
+ * @deprecated use {@link #sendEvent(EventRequestParameters)} Instead.
+ */
+ @Deprecated
+ public Collection<PolicyResponse> sendEvent(Map<String, String> eventAttributes, UUID requestID) throws PolicyEventException {
+ return stdPolicyEngine.sendEvent(eventAttributes, requestID);
+ }
+
+ /**
+ * Sends the Events specified to the PEP and returns back the PolicyResponse.
+ *
+ * @param eventRequestParameters {@link org.onap.policy.api.EventRequestParameters} which represents the Event Request Parameters.
+ * @return <code>Collection</code> of {@link org.onap.policy.api.PolicyResponse} which has the Response.
+ * @throws PolicyEventException PolicyEvent Exception
+ */
+ public Collection<PolicyResponse> sendEvent(EventRequestParameters eventRequestParameters) throws PolicyEventException {
+ return stdPolicyEngine.sendEvent(eventRequestParameters);
+ }
+
+ /**
+ * Sends the decision Attributes specified to the PEP and returns back the PolicyDecision.
+ *
+ * @param onapComponentName the <code>String</code> format of the onapComponentName whose Decision is required.
+ * @param decisionAttributes the <code>Map</code> of <code>String,String</code> format of the decisionAttributes that must contain the ID and values.
+ * @return {@link org.onap.policy.api.DecisionResponse} which has the Decision.
+ * @throws PolicyDecisionException PolicyDecision Exception
+ * @deprecated use {@link #getDecision(DecisionRequestParameters)} Instead.
+ */
+ @Deprecated
+ public DecisionResponse getDecision(String onapComponentName, Map<String,String> decisionAttributes) throws PolicyDecisionException {
+ return stdPolicyEngine.getDecision(onapComponentName, decisionAttributes, null);
+ }
+
+ /**
+ * Sends the decision Attributes specified to the PEP and returns back the PolicyDecision.
+ *
+ * @param onapComponentName the <code>String</code> format of the onapComponentName whose Decision is required.
+ * @param decisionAttributes the <code>Map</code> of <code>String,String</code> format of the decisionAttributes that must contain the ID and values.
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ * A different request ID should be passed for each request.
+ * @return {@link org.onap.policy.api.DecisionResponse} which has the Decision.
+ * @throws PolicyDecisionException PolicyDecision Exception
+ * @deprecated use {@link #getDecision(DecisionRequestParameters)} Instead.
+ */
+ @Deprecated
+ public DecisionResponse getDecision(String onapComponentName, Map<String,String> decisionAttributes, UUID requestID) throws PolicyDecisionException {
+ return stdPolicyEngine.getDecision(onapComponentName, decisionAttributes, requestID);
+ }
+
+ /**
+ * Sends the decision Attributes specified to the PEP and returns back the PolicyDecision.
+ *
+ * @param decisionRequestParameters {@link org.onap.policy.api.DecisionRequestParameters} which represents the Decision Request Parameters.
+ * @return {@link org.onap.policy.api.DecisionResponse} which has the Decision.
+ * @throws PolicyDecisionException PolicyDecision Exception
+ */
+ public DecisionResponse getDecision(DecisionRequestParameters decisionRequestParameters) throws PolicyDecisionException {
+ return stdPolicyEngine.getDecision(decisionRequestParameters);
+ }
+
+ /**
+ * Retrieves the count of policies on the PAP, PDP, and Policy Engine as a whole
+ *
+ * @param parameters {@link org.onap.policy.api.MetricsRequestParameters} which represents the Parameters required to get the Policy Metrics
+ * @return {@link org.onap.policy.api.MetricsResponse} which consists of the response related to getMetrics Request.
+ * @throws PolicyException PolicyException related to the operation
+ *
+ * */
+ public MetricsResponse getMetrics(MetricsRequestParameters parameters) throws PolicyException {
+ return stdPolicyEngine.getMetrics(parameters);
+ }
+
+ /**
+ * Creates a Config Policy based on given arguments
+ * @param policyName the <code>String</code> format of the Policy Name
+ * @param policyDescription the <code>String</code> format of the Policy Description
+ * @param onapName the <code>String</code> format of the ONAP Name
+ * @param configName the <code>String</code> format of the Config Name
+ * @param configAttributes the <code>List</code> the <code>Map</code> Attributes that must contain the key and value.
+ * @param configType the <code>String</code> format of the Config Type
+ * @param body the <code>String</code> format of the Policy Body
+ * @param policyScope the <code>String</code> value of the sub scope directory where the policy will be created and stored
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ * A different request ID should be passed for each request.
+ * @param riskLevel the <code>String</code> value of risk Level.
+ * @param riskType the <code>String</code> value of risk Type.
+ * @param guard the <code>String</code> value of guard.
+ * @param ttlDate the <code>String</code> value of time to live Date.
+ * @throws PolicyException PolicyException related to the operation.
+ * @return <code>String</code> format of response
+ * @deprecated use {@link #createPolicy(PolicyParameters)} Instead.
+ */
+ @Deprecated
+ public String createConfigPolicy(String policyName, String policyDescription, String onapName, String configName,
+ Map<String, String> configAttributes, String configType, String body, String policyScope, UUID requestID,
+ String riskLevel, String riskType, String guard, String ttlDate) throws PolicyException {
+ return stdPolicyEngine.createUpdateConfigPolicy(policyName, policyDescription, onapName, configName,
+ configAttributes, configType, body, policyScope, requestID,
+ riskLevel, riskType, guard, ttlDate, false);
+ }
+
+ /**
+ * Creates a Config Policy based on given arguments
+ * @param policyName the <code>String</code> format of the Policy Name
+ * @param policyDescription the <code>String</code> format of the Policy Description
+ * @param onapName the <code>String</code> format of the ONAP Name
+ * @param configName the <code>String</code> format of the Config Name
+ * @param configAttributes the <code>List</code> the <code>Map</code> Attributes that must contain the key and value.
+ * @param configType the <code>String</code> format of the Config Type
+ * @param body the <code>String</code> format of the Policy Body
+ * @param policyScope the <code>String</code> value of the sub scope directory where the policy will be created and stored
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ * A different request ID should be passed for each request.
+ * @param riskLevel the <code>String</code> value of risk Level.
+ * @param riskType the <code>String</code> value of risk Type.
+ * @param guard the <code>String</code> value of guard.
+ * @param ttlDate the <code>String</code> value of time to live Date.
+ * @throws PolicyException PolicyException related to the operation.
+ * @return <code>String</code> format of response
+ * @deprecated use {@link #updatePolicy(PolicyParameters)} Instead.
+ */
+ @Deprecated
+ public String updateConfigPolicy(String policyName, String policyDescription, String onapName, String configName,
+ Map<String, String> configAttributes, String configType, String body, String policyScope, UUID requestID,
+ String riskLevel, String riskType, String guard, String ttlDate) throws PolicyException {
+ return stdPolicyEngine.createUpdateConfigPolicy(policyName, policyDescription, onapName, configName,
+ configAttributes, configType, body, policyScope, requestID,riskLevel, riskType, guard, ttlDate, true);
+ }
+
+ /**
+ * Creates a Config Firewall Policy based on given arguments
+ * @param policyName the <code>String</code> format of the Policy Name
+ * @param firewallJson the <code>JsonObject</code> representation of the Firewall Rules List
+ * @param policyScope the <code>String</code> value of the sub scope directory where the policy will be created and stored
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ * A different request ID should be passed for each request.
+ * @param riskLevel the <code>String</code> value of risk Level.
+ * @param riskType the <code>String</code> value of risk Type.
+ * @param guard the <code>String</code> value of guard.
+ * @param ttlDate the <code>String</code> value of time to live Date.
+ * @throws PolicyException PolicyException related to the operation.
+ * @return <code>String</code> format of response.
+ * @deprecated use {@link #createPolicy(PolicyParameters)} Instead.
+ */
+ @Deprecated
+ public String createConfigFirewallPolicy(String policyName, JsonObject firewallJson, String policyScope, UUID requestID,
+ String riskLevel, String riskType, String guard, String ttlDate) throws PolicyException {
+ return stdPolicyEngine.createUpdateConfigFirewallPolicy(policyName, firewallJson, policyScope, requestID,riskLevel,
+ riskType, guard, ttlDate, false);
+ }
+
+ /**
+ * Updates a Config Firewall Policy based on given arguments
+ * @param policyName the <code>String</code> format of the Policy Name
+ * @param firewallJson the <code>JsonObject</code> representation of the Firewall Rules List
+ * @param policyScope the <code>String</code> value of the sub scope directory where the policy will be created and stored
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ * A different request ID should be passed for each request.
+ * @param riskLevel the <code>String</code> value of risk Level.
+ * @param riskType the <code>String</code> value of risk Type.
+ * @param guard the <code>String</code> value of guard.
+ * @param ttlDate the <code>String</code> value of time to live Date.
+ * @throws PolicyException PolicyException related to the operation.
+ * @return <code>String</code> format of response.
+ * @deprecated use {@link #updatePolicy(PolicyParameters)} Instead.
+ */
+ @Deprecated
+ public String updateConfigFirewallPolicy(String policyName, JsonObject firewallJson, String policyScope, UUID requestID,
+ String riskLevel, String riskType, String guard, String ttlDate) throws PolicyException {
+ return stdPolicyEngine.createUpdateConfigFirewallPolicy(policyName, firewallJson, policyScope, requestID,riskLevel, riskType, guard, ttlDate, true);
+ }
+
+ /**
+ * Retrieves Dictionary Items for a specified dictionary
+ *
+ * @param parameters {@link org.onap.policy.api.DictionaryParameters} which represents the Dictionary Parameters required to create a Dictionary Item.
+ * @return {@link org.onap.policy.api.DictionaryResponse} which consists of the response related to create dictionary item Request.
+ * @throws PolicyException PolicyException related to the operation
+ *
+ * */
+ public DictionaryResponse getDictionaryItem(DictionaryParameters parameters) throws PolicyException {
+ return stdPolicyEngine.getDictionaryItem(parameters);
+ }
+
+ /**
+ * Creates a Dictionary Item based on given Dictionary Parameters
+ *
+ * @param parameters {@link org.onap.policy.api.DictionaryParameters} which represents the Dictionary Parameters required to create a Dictionary Item.
+ * @return {@link org.onap.policy.api.PolicyChangeResponse} which consists of the response related to create dictionary item Request.
+ * @throws PolicyException PolicyException related to the operation.
+ */
+ public PolicyChangeResponse createDictionaryItem(DictionaryParameters parameters) throws PolicyException {
+ return stdPolicyEngine.createDictionaryItem(parameters);
+ }
+
+ /**
+ * Updates a Dictionary Item based on given Dictionary Parameters
+ *
+ * @param parameters {@link org.onap.policy.api.DictionaryParameters} which represents the Dictionary Parameters required to update a Dictionary Item.
+ * @return {@link org.onap.policy.api.PolicyChangeResponse} which consists of the response related to update dictionary item Request.
+ * @throws PolicyException PolicyException related to the operation.
+ */
+ public PolicyChangeResponse updateDictionaryItem(DictionaryParameters parameters) throws PolicyException {
+ return stdPolicyEngine.updateDictionaryItem(parameters);
+ }
+
+ /**
+ * Creates a Policy based on given Policy Parameters.
+ *
+ * @param policyParameters {@link org.onap.policy.api.PolicyParameters} which represents the Policy Parameters required to create a Policy.
+ * @return {@link org.onap.policy.api.PolicyChangeResponse} which consists of the response related to create policy Request.
+ * @throws PolicyException PolicyException related to the operation.
+ */
+ public PolicyChangeResponse createPolicy(PolicyParameters policyParameters) throws PolicyException {
+ return stdPolicyEngine.createPolicy(policyParameters);
+ }
+
+ /**
+ * Update Policy based on given Policy Parameters.
+ *
+ * @param policyParameters {@link org.onap.policy.api.PolicyParameters} which represents the Policy Parameters required to update a Policy.
+ * @return {@link org.onap.policy.api.PolicyChangeResponse} which consists of the response related to create policy Request.
+ * @throws PolicyException PolicyException related to the operation.
+ */
+ public PolicyChangeResponse updatePolicy(PolicyParameters policyParameters) throws PolicyException {
+ return stdPolicyEngine.updatePolicy(policyParameters);
+ }
+
+ /**
+ * Pushes the specified policy to the PDP Group. If no PDP group is selected default is used.
+ *
+ * @param policyScope the <code>String</code> value of the sub scope directory where the policy is located
+ * @param policyName the <code>String</code> format of the Policy Name being pushed.
+ * @param policyType the <code>String</code> format of the Policy Type which is being pushed.
+ * @param pdpGroup the <code>String</code> format of the PDP Group name to which the policy needs to be pushed to.
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ * @return <code>String</code> format of the response related to the push Policy Request.
+ * @throws PolicyException PolicyException related to the operation.
+ * @deprecated use {@link #pushPolicy(PushPolicyParameters)} instead.
+ */
+ @Deprecated
+ public String pushPolicy(String policyScope, String policyName, String policyType, String pdpGroup, UUID requestID) throws PolicyException {
+ return stdPolicyEngine.pushPolicy(policyScope, policyName, policyType, pdpGroup, requestID);
+ }
+
+ /**
+ * Pushes the specified policy to the PDP Group. If no PDP group is selected default is used.
+ *
+ * @param pushPolicyParameters {@link org.onap.policy.api.PushPolicyParameters} which represents the Push Policy parameters required to push a policy.
+ * @return {@link org.onap.policy.api.PolicyChangeResponse} which consists of the response related to the push Policy Request.
+ * @throws PolicyException PolicyException related to the operation.
+ */
+ public PolicyChangeResponse pushPolicy(PushPolicyParameters pushPolicyParameters) throws PolicyException {
+ return stdPolicyEngine.pushPolicy(pushPolicyParameters);
+ }
+
+ /**
+ * Deletes the specified policy from the PAP or PDP.
+ *
+ * @param deletePolicyParameters {@link org.onap.policy.api.DeletePolicyParameters} which represents the Delete Policy parameters to delete a policy.
+ * @return {@link org.onap.policy.api.PolicyChangeResponse} which consists of the response related to the Delete Policy Request.
+ * @throws PolicyException PolicyException related to the operation.
+ */
+ public PolicyChangeResponse deletePolicy(DeletePolicyParameters deletePolicyParameters) throws PolicyException {
+ return stdPolicyEngine.deletePolicy(deletePolicyParameters);
+ }
+
+ /**
+ * Creates a new Policy Service based on given Service Parameters.
+ *
+ * @param importParameters {@link org.onap.policy.api.ImportParameters} which represents the Service Parameters required to create a Policy Service.
+ * @return {@link org.onap.policy.api.PolicyChangeResponse} which consists of the response related to create import Service.
+ * @throws PolicyException PolicyException related to the operation.
+ */
+ public PolicyChangeResponse policyEngineImport(ImportParameters importParameters) throws PolicyException {
+ return stdPolicyEngine.policyEngineImport(importParameters);
+ }
+
+ /**
+ * <code>setNotification</code> allows changes to the Notification Scheme and Notification Handler
+ *
+ * @param scheme the <code>NotificationScheme</code> of {@link org.onap.policy.api.NotificationScheme} which defines the Notification Scheme
+ * @param handler the <code>NotificationHandler</code> of {@link org.onap.policy.api.NotificationHandler} which defines what should happen when a notification is received.
+ */
+ public void setNotification(NotificationScheme scheme, NotificationHandler handler) {
+ this.scheme = scheme;
+ this.handler = handler;
+ stdPolicyEngine.notification(this.scheme,this.handler);
+ }
+
+ /**
+ * <code>clearNotification</code> shutsDown the Notification Service if the Auto Scehme Notification service is running.
+ */
+ public void clearNotification(){
+ stdPolicyEngine.stopNotification();
+ }
+
+ /**
+ * <code>setNotification</code> allows changes to the Notification Scheme
+ *
+ * @param scheme the <code>NotificationScheme</code> of {@link org.onap.policy.api.NotificationScheme} which defines the Notification Scheme
+ */
+ public void setScheme(NotificationScheme scheme){
+ this.scheme = scheme;
+ stdPolicyEngine.setScheme(this.scheme);
+ }
+
+ /**
+ * Gets the <code>PDPNotification</code> if there is one exists. This is used for Polling Patterns.
+ *
+ * @return <code>PDPNotification</code> of {@link org.onap.policy.api.PDPNotification} which has the Notification.
+ */
+ public PDPNotification getNotification() {
+ return stdPolicyEngine.getNotification();
+ }
+
+ /**
+ * setClientKey allows the client to use their own implementation logic for Password Protection
+ * and will be used to set the clear text password, this will be used while making Requests.
+ *
+ * @param clientKey depicts String format of Password/ Client_Key.
+ */
+ public void setClientKey(String clientKey){
+ stdPolicyEngine.setClientKey(clientKey);
+ }
+
+ // Internal Setter Method to help build configRequestParameters.
+ private ConfigRequestParameters setConfigRequestParameters(String policyName, String onapComponentName, String configName, Map<String, String> configAttributes, UUID requestID){
+ ConfigRequestParameters configRequestParameters = new ConfigRequestParameters();
+ configRequestParameters.setPolicyName(policyName);
+ configRequestParameters.setOnapName(onapComponentName);
+ configRequestParameters.setConfigName(configName);
+ configRequestParameters.setConfigAttributes(configAttributes);
+ configRequestParameters.setRequestID(requestID);
+ return configRequestParameters;
+ }
+} \ No newline at end of file
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEngineException.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEngineException.java
new file mode 100644
index 000000000..6529a159e
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEngineException.java
@@ -0,0 +1,49 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+/**
+ * PolicyEngineException extends <code>Exception</code> to implement exceptions thrown by {@link org.onap.policy.api.PolicyEngine}
+ *
+ * @version 0.1
+ */
+public class PolicyEngineException extends Exception{
+ private static final long serialVersionUID = 4945973094200118969L;
+
+ public PolicyEngineException() {
+ }
+
+ public PolicyEngineException(String message) {
+ super(message);
+ }
+
+ public PolicyEngineException(Throwable cause){
+ super(cause);
+ }
+
+ public PolicyEngineException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public PolicyEngineException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEventException.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEventException.java
new file mode 100644
index 000000000..335c4905b
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEventException.java
@@ -0,0 +1,49 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+/**
+ * PolicyEventException extends <code>Exception</code> to implement exceptions thrown by {@link org.onap.policy.api.PolicyEngine}
+ *
+ * @version 0.1
+ */
+public class PolicyEventException extends Exception {
+ private static final long serialVersionUID = -1477625011320634608L;
+
+ public PolicyEventException() {
+ }
+
+ public PolicyEventException(String message) {
+ super(message);
+ }
+
+ public PolicyEventException(Throwable cause){
+ super(cause);
+ }
+
+ public PolicyEventException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public PolicyEventException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyException.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyException.java
new file mode 100644
index 000000000..e61560146
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyException.java
@@ -0,0 +1,29 @@
+package org.onap.policy.api;
+
+/**
+ * PolicyException extends <code>Exception</code> to implement exceptions thrown by {@link org.onap.policy.api.PolicyEngine}
+ *
+ * @version 0.1
+ */
+public class PolicyException extends Exception {
+ private static final long serialVersionUID = -5006203722296799708L;
+
+ public PolicyException() {
+ }
+
+ public PolicyException(String message) {
+ super(message);
+ }
+
+ public PolicyException(Throwable cause){
+ super(cause);
+ }
+
+ public PolicyException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public PolicyException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyParameters.java
new file mode 100644
index 000000000..0d76d8f13
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyParameters.java
@@ -0,0 +1,557 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * <code>PolicyParameters</code> defines the Policy Parameters
+ * which are required to Create/Update a Policy.
+ *
+ * @version 0.1
+ */
+public class PolicyParameters {
+ private PolicyClass policyClass;
+ private PolicyConfigType policyConfigType;
+ private String policyName;
+ private String policyDescription;
+ private String onapName;
+ private String configName;
+ private Map<AttributeType, Map<String,String>> attributes;
+ private String configBody;
+ private PolicyType configBodyType;
+ private String actionPerformer;
+ private String actionAttribute;
+ private UUID requestID;
+ private List<String> dynamicRuleAlgorithmLabels;
+ private List<String> dynamicRuleAlgorithmFunctions;
+ private List<String> dynamicRuleAlgorithmField1;
+ private List<String> dynamicRuleAlgorithmField2;
+ private String priority;
+ private RuleProvider ruleProvider;
+ private String controllerName;
+ private ArrayList<String> dependencyNames;
+ private Date TTLDate;
+ private boolean guard = false;
+ private String riskLevel = "5";
+ private String riskType = "default";
+ private String extendedOption;
+
+ /**
+ * Sets Config Policy Parameters.
+ *
+ * @param policyConfigType the {@link org.onap.policy.api.PolicyConfigType} Enum format of the Config Type
+ * @param policyName the <code>String</code> format of the Policy Name
+ * @param policyDescription the <code>String</code> format of the Policy Description
+ * @param onapName the <code>String</code> format of the ONAP Name
+ * @param configName the <code>String</code> format of the Config Name
+ * @param attributes the <code>Map</code> Attributes that must contain the AttributeType and Map of key,value pairs corresponding to it.
+ * @param configBodyType the {@link org.onap.policy.api.PolicyType} Enum format of the config Body Type.
+ * @param configBody the <code>String</code> format of the Policy Body
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ * A different request ID should be passed for each request.
+ */
+ public void setConfigPolicyParameters(PolicyConfigType policyConfigType, String policyName, String policyDescription, String onapName, String configName,
+ Map<AttributeType, Map<String, String>> attributes, PolicyType configBodyType, String configBody, UUID requestID){
+ this.setPolicyConfigType(policyConfigType);
+ this.setPolicyName(policyName);
+ this.setPolicyDescription(policyDescription);
+ this.setOnapName(onapName);
+ this.setConfigName(configName);
+ this.setAttributes(attributes);
+ this.setConfigBody(configBody);
+ this.setConfigBodyType(configBodyType);
+ this.setRequestID(requestID);
+ }
+
+ /**
+ * Sets config Firewall Policy Parameters.
+ *
+ * @param policyName the <code>String</code> format of the Policy Name
+ * @param firewallJson the <code>String</code> representation of the Firewall Rules List
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ * A different request ID should be passed for each request.
+ */
+ public void setConfigFirewallPolicyParameters(String policyName, String firewallJson, UUID requestID){
+ this.setPolicyConfigType(PolicyConfigType.Firewall);
+ this.setPolicyName(policyName);
+ this.setConfigBody(firewallJson);
+ this.setConfigBodyType(PolicyType.JSON);
+ this.setRequestID(requestID);
+ }
+
+ /**
+ * Gets the PolicyName of the Policy Parameters.
+ *
+ * @return policyName the <code>String</code> format of the Policy Name
+ */
+ public String getPolicyName() {
+ return policyName;
+ }
+
+ /**
+ * Sets the policyName of the Policy Parameters.
+ *
+ * @param policyName the <code>String</code> format of the Policy Name
+ */
+ public void setPolicyName(String policyName) {
+ this.policyName = policyName;
+ }
+
+ /**
+ * Gets the policy Description.
+ *
+ * @return the <code>String</code> format of the Policy Description
+ */
+ public String getPolicyDescription() {
+ return policyDescription;
+ }
+
+ /**
+ * Sets the policy Description of the Policy Description.
+ *
+ * @param policyDescription the <code>String</code> format of the Policy Description
+ */
+ public void setPolicyDescription(String policyDescription) {
+ this.policyDescription = policyDescription;
+ }
+
+ /**
+ * Gets the ONAP Name value of the Policy Paramters.
+ *
+ * @return <code>String</code> format of the ONAP Name
+ */
+ public String getOnapName() {
+ return onapName;
+ }
+
+ /**
+ * Sets the ONAP Name field of the Policy Parameters.
+ *
+ * @param onapName the <code>String</code> format of the ONAP Name
+ */
+ public void setOnapName(String onapName) {
+ this.onapName = onapName;
+ }
+
+ /**
+ * Gets the Config Name value of the Policy Parameters.
+ *
+ * @return <code>String</code> format of the Config Name
+ */
+ public String getConfigName() {
+ return configName;
+ }
+
+ /**
+ * Sets the Config Name field of the Policy Parameters.
+ *
+ * @param configName the <code>String</code> format of the Config Name
+ */
+ public void setConfigName(String configName) {
+ this.configName = configName;
+ }
+
+ /**
+ * Gets the Attributes of the policy Parameters.
+ *
+ * @return <code>List</code> the <code>Map</code> Attributes that must contain the AttributeType and Map of key,value pairs corresponding to it.
+ */
+ public Map<AttributeType, Map<String, String>> getAttributes() {
+ return attributes;
+ }
+
+ /**
+ * Sets the Attributes of the Policy Parameters.
+ *
+ * @param attributes the <code>Map</code> Attributes that must contain the AttributeType and Map of key,value pairs corresponding to it.
+ */
+ public void setAttributes(Map<AttributeType, Map<String, String>> attributes) {
+ this.attributes = attributes;
+ }
+
+ /**
+ * Gets the Policy Config Type value the Policy parameters.
+ *
+ * @return {@link org.onap.policy.api.PolicyConfigType} Enum of the Config Type
+ */
+ public PolicyConfigType getPolicyConfigType() {
+ return policyConfigType;
+ }
+
+ /**
+ * Sets the Policy Config Type field of the policy Parameters.
+ *
+ * @param policyConfigType the {@link org.onap.policy.api.PolicyConfigType} Enum format of the Config Type
+ */
+ public void setPolicyConfigType(PolicyConfigType policyConfigType) {
+ if(policyConfigType!=null){
+ setPolicyClass(PolicyClass.Config);
+ }
+ this.policyConfigType = policyConfigType;
+ }
+
+ /**
+ * Gets the configBody value of the Policy Parameters.
+ *
+ * @return the <code>String</code> format of the Policy Body
+ */
+ public String getConfigBody() {
+ return configBody;
+ }
+
+ /**
+ * Sets the configBody field of the Policy Parameters.
+ *
+ * @param configBody the <code>String</code> format of the Policy Body
+ */
+ public void setConfigBody(String configBody) {
+ this.configBody = configBody;
+ }
+
+ /**
+ * Gets the config Body Type value of the Policy Parameters.
+ *
+ * @return the <code>PolicyType</code> representation of the configBodyType
+ */
+ public PolicyType getConfigBodyType() {
+ return configBodyType;
+ }
+
+ /**
+ * Sets the configBodyType field of the Policy Parameters.
+ *
+ * @param configBodyType the <code>PolicyType</code> representation of the config BodyType
+ */
+ public void setConfigBodyType(PolicyType configBodyType) {
+ this.configBodyType = configBodyType;
+ }
+
+ /**
+ * Gets the requestID of the Policy Parameters.
+ *
+ * @return unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ */
+ public UUID getRequestID() {
+ return requestID;
+ }
+
+ /**
+ * Sets the requestID of the Policy Parameters.
+ *
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ */
+ public void setRequestID(UUID requestID) {
+ this.requestID = requestID;
+ }
+
+ /**
+ * Gets the Policy Class of the Policy Parameters.
+ *
+ * @return {@link org.onap.policy.api.PolicyClass} of the Policy Parameters.
+ */
+ public PolicyClass getPolicyClass() {
+ return policyClass;
+ }
+
+ /**
+ * Sets the Policy Class of the Policy Parameters.
+ *
+ * @param policyClass the Enum {@link org.onap.policy.api.PolicyClass} to set Policy Class Type of Policy parameters.
+ */
+ public void setPolicyClass(PolicyClass policyClass) {
+ this.policyClass = policyClass;
+ }
+
+ /**
+ * Gets the Action Performer value of the Policy Parameters for Action Policies.
+ *
+ * @return the <code>String</code> value of the Action Performer for Action Policies
+ */
+ public String getActionPerformer() {
+ return actionPerformer;
+ }
+
+ /**
+ * Sets the Action Performer value of the Policy Parameters for Action Policies.
+ *
+ * @param actionPerformer the <code>String</code> format of the Action Performer
+ */
+ public void setActionPerformer(String actionPerformer) {
+ this.actionPerformer = actionPerformer;
+ }
+
+ /**
+ * Gets the Action Attribute value of the Policy Parameters for Action Policies.
+ *
+ * @return the <code>String</code> value of the Action Attribute for Action Policies
+ */
+ public String getActionAttribute() {
+ return actionAttribute;
+ }
+
+ /**
+ * Sets the Action Attribute value of the Policy Parameters for Action Policies.
+ *
+ * @param actionAttribute the <code>String</code> format of the Action Attribute
+ */
+ public void setActionAttribute(String actionAttribute) {
+ this.actionAttribute = actionAttribute;
+ }
+
+ /**
+ * Gets the Dynamic Rule Algorithm Label of the policy Parameters. Used in conjunction with the Label, Field1,
+ * Function, and Field2 to complete the complex and simple Rule Algorithms
+ *
+ * @return <code>List</code> the Dynamic Rule Algorithm Label that must contain the Labels in order
+ */
+ public List<String> getDynamicRuleAlgorithmLabels() {
+ return dynamicRuleAlgorithmLabels;
+ }
+
+ /**
+ * Sets the Dynamic Rule Algorithm Labels used in conjunction with the Label, Field1,
+ * Function, and Field2 to complete the complex and simple Rule Algorithms
+ *
+ * @param dynamicRuleAlgorithmLabels the <code>List</code> dynamicRuleAlgoritmLabels in order
+ */
+ public void setDynamicRuleAlgorithmLabels(
+ List<String> dynamicRuleAlgorithmLabels) {
+ this.dynamicRuleAlgorithmLabels = dynamicRuleAlgorithmLabels;
+ }
+
+ /**
+ * Gets the Dynamic Rule Algorithm Function of the policy Parameters. Used in conjunction with the Label, Field1,
+ * FunctionDef, and Field2 to complete the complex and simple Rule Algorithms
+ *
+ * @return <code>List</code> the Dynamic Rule Algorithm Functions that must contain the values in order
+ */
+ public List<String> getDynamicRuleAlgorithmFunctions() {
+ return dynamicRuleAlgorithmFunctions;
+ }
+
+ /**
+ * Sets the Dynamic Rule Algorithm Functions used in conjunction with the Label, Field1,
+ * Function, and Field2 to complete the complex and simple Rule Algorithms
+ *
+ * @param dynamicRuleAlgorithmFunctions the <code>List</code> dynamicRuleAlgorithmFunctions in order
+ */
+ public void setDynamicRuleAlgorithmFunctions(List<String> dynamicRuleAlgorithmFunctions) {
+ this.dynamicRuleAlgorithmFunctions = dynamicRuleAlgorithmFunctions;
+ }
+
+ /**
+ * Gets the Dynamic Rule Algorithm Field1 of the policy Parameters. Used in conjunction with the Label, Field1,
+ * Function, and Field2 to complete the complex and simple Rule Algorithms
+ *
+ * @return <code>List</code> the Dynamic Rule Algorithm Field1 that must contain the Field1 values in order
+ */
+ public List<String> getDynamicRuleAlgorithmField1() {
+ return dynamicRuleAlgorithmField1;
+ }
+
+ /**
+ * Sets the Dynamic Rule Algorithm Field1 used in conjunction with the Label, Field1,
+ * Function, and Field2 to complete the complex and simple Rule Algorithms
+ *
+ * @param dynamicRuleAlgorithmField1 the <code>List</code> dynamicRuleAlgorithmField1 in order
+ */
+ public void setDynamicRuleAlgorithmField1(
+ List<String> dynamicRuleAlgorithmField1) {
+ this.dynamicRuleAlgorithmField1 = dynamicRuleAlgorithmField1;
+ }
+
+ /**
+ * Gets the Dynamic Rule Algorithm Field2 of the policy Parameters. Used in conjunction with the Label, Field1,
+ * Operator, and Field2 to complete the complex and simple Rule Algorithms
+ *
+ * @return <code>List</code> the Dynamic Rule Algorithm Field2 that must contain the Field2 values in order
+ */
+ public List<String> getDynamicRuleAlgorithmField2() {
+ return dynamicRuleAlgorithmField2;
+ }
+
+ /**
+ * Sets the Dynamic Rule Algorithm Field2 used in conjunction with the Label, Field1,
+ * Function, and Field2 to complete the complex and simple Rule Algorithms
+ *
+ * @param dynamicRuleAlgorithmField2 the <code>List</code> dynamicRuleAlgorithmField2 in order
+ */
+ public void setDynamicRuleAlgorithmField2(
+ List<String> dynamicRuleAlgorithmField2) {
+ this.dynamicRuleAlgorithmField2 = dynamicRuleAlgorithmField2;
+ }
+
+ /**
+ * Gets the Priority of the Policy Parameters.
+ *
+ * @return priority the <code>String</code> format of the Micro Services priority
+ */
+ public String getPriority() {
+ return priority;
+ }
+
+ /**
+ * Sets the Priority of the Policy Parameters.
+ *
+ * @param priority the <code>String</code> format of the Micro Services priority
+ */
+ public void setPriority(String priority) {
+ this.priority = priority;
+ }
+
+ public RuleProvider getRuleProvider() {
+ return ruleProvider;
+ }
+
+ public void setRuleProvider(RuleProvider ruleProvider) {
+ this.ruleProvider = ruleProvider;
+ }
+ /**
+ * Sets the Guard field of the Policy Parameters.
+ *
+ * @param guard the <code>Boolean</code> format of the guard value
+ */
+ public void setGuard(boolean guard){
+ this.guard = guard;
+ }
+
+ /**
+ * Gets the guard value of the Policy Parameters for Action Policies.
+ *
+ * @return the <code>boolean</code> value of the Guard for Config Policies
+ */
+ public boolean getGuard(){
+ return guard;
+ }
+
+ /**
+ * Sets the riskType field of the Policy Parameters.
+ *
+ * @param riskType the <code>String</code> format of the riskType value
+ */
+ public void setRiskType(String riskType){
+ this.riskType = riskType;
+ }
+
+ /**
+ * Gets the riskType value of the Policy Parameters for Config Policies.
+ *
+ * @return the <code>String</code> value of the riskType for Config Policies
+ */
+ public String getRiskType(){
+ return riskType;
+ }
+
+ /**
+ * Sets the riskLevel field of the Policy Parameters.
+ *
+ * @param riskLevel the <code>String</code> format of the riskType value
+ */
+ public void setRiskLevel(String riskLevel){
+ this.riskLevel = riskLevel;
+ }
+
+ /**
+ * Gets the riskLevel value of the Policy Parameters for Config Policies.
+ *
+ * @return the <code>String</code> value of the riskLevel for Config Policies
+ */
+ public String getRiskLevel(){
+ return riskLevel;
+ }
+
+ /**
+ * Sets the TTLDate field of the Policy Parameters.
+ *
+ * @param TTLDate the <code>Date</code> format of the TTLDate value
+ */
+ public void setTtlDate(Date TTLDate){
+ this.TTLDate = TTLDate;
+ }
+
+ /**
+ * Gets the TTLDate value of the Policy Parameters for Config Policies.
+ *
+ * @return the <code>Date</code> value of the TTLDate for Config Policies
+ */
+ public Date getTtlDate(){
+ return TTLDate;
+ }
+
+ /**
+ * Gets the Controller Name for your policy.
+ *
+ * @return String format of the controller Name.
+ */
+ public String getControllerName() {
+ return controllerName;
+ }
+
+ /**
+ * Sets Controller Name for your policy.
+ *
+ * @param controllerName to identify the controller information for your policy.
+ */
+ public void setControllerName(String controllerName) {
+ this.controllerName = controllerName;
+ }
+
+ /**
+ * Gets Dependency Names for your policy.
+ *
+ * @return ArrayList of String(s) format of dependency names.
+ */
+ public ArrayList<String> getDependencyNames() {
+ return dependencyNames;
+ }
+
+ /**
+ * Sets Dependency that your policy is dependent on.
+ *
+ * @param dependencyNames ArrayList of String(s).
+ */
+ public void setDependencyNames(ArrayList<String> dependencyNames) {
+ this.dependencyNames = dependencyNames;
+ }
+
+ public String getExtendedOption() {
+ return extendedOption;
+ }
+
+ public void setExtendedOption(String extendedOption) {
+ this.extendedOption = extendedOption;
+ }
+
+ public String toString() {
+ return "PolicyParameters [ policyName=" + policyName + ", policyDescription=" + policyDescription + ", onapName="+ onapName
+ + ", configName=" + configName + ", attributes=" + attributes + ", configBody=" + configBody
+ + ",dynamicRuleAlgorithmLabels=" + dynamicRuleAlgorithmLabels + ",dynamicRuleAlgorithmFunctions=" + dynamicRuleAlgorithmFunctions
+ + ",dynamicRuleAlgorithmField1=" + dynamicRuleAlgorithmField1 + ",dynamicRuleAlgorithmField2=" + dynamicRuleAlgorithmField2
+ + ", actionPerformer=" + actionPerformer + ", actionAttribute=" + actionAttribute + ", priority=" + priority
+ + ", ruleProvider= " + ruleProvider + ", riskLevel= " + riskLevel + ", riskType= " + riskType + ", extendedOption= " + extendedOption
+ + "]";
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyResponse.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyResponse.java
new file mode 100644
index 000000000..ae29585de
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyResponse.java
@@ -0,0 +1,77 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+
+package org.onap.policy.api;
+
+import java.util.Map;
+
+/**
+ * Defines the objects that represent PolicyEngine Response elements. PolicyResponse communicates the PolicyResponseStatus,
+ * PolicyResponseMessage, ActionAdvised, ActionTaken and RequestAttributes.
+ *
+ * @version 0.3
+ */
+public interface PolicyResponse {
+ /**
+ * Gets the {@link org.onap.policy.api.PolicyResponseStatus} associated with this <code>PolicyResponse</code>.
+ *
+ * @return the <code>PolicyResponseStatus</code> associated with this <code>PolicyResponse</code>
+ */
+ public PolicyResponseStatus getPolicyResponseStatus();
+
+ /**
+ * Gets the <code>Map</code> of <code>String,String</code> which consists of ActionAdvised in this <code>PolicyResponse</code>.
+ * If there is no ActionAdvised this method must return an empty <code>Map</code>.
+ *
+ * @return the <code>Map</code> of <code>String,String</code> which consists of AdviceAttributes in <code>PolicyResponse</code>
+ */
+ public Map<String,String> getActionAdvised();
+
+ /**
+ * Gets the <code>Map</code> of <code>String,String</code> which consists of ActionTaken in this <code>PolicyResponse</code>.
+ * If there are no ActionTaken this method must return an empty <code>Map</code>.
+ *
+ * @return the <code>Map</code> of <code>String,String</code> which consists of ActionTaken in <code>PolicyResponse</code>
+ */
+ public Map<String,String> getActionTaken();
+
+ /**
+ * Gets the <code>Map</code> of <code>String,String</code> which consists of RequestAttributes in this <code>PolicyResponse</code>.
+ *
+ * @return the <code>Map</code> of <code>String,String</code> which consists of RequestAttributes from <code>PolicyResponse</code>
+ */
+ public Map<String,String> getRequestAttributes();
+
+ /**
+ * Gets the <code>String</code> of the PolicyResponseMessage from <code>PolicyResponse</code>
+ *
+ * @return the <code>String</code> which consists of PolicyResponseMessage from <code>PolicyResponse</code>
+ */
+ public String getPolicyResponseMessage();
+
+ /**
+ * Returns the <code>String</code> version of the <code>PolicyResponse</code> object.
+ *
+ * @return <code>String</code> of the <code>PolicyResponse</code> Object.
+ */
+ @Override
+ public String toString();
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyResponseStatus.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyResponseStatus.java
new file mode 100644
index 000000000..4368b646d
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyResponseStatus.java
@@ -0,0 +1,85 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+
+/**
+ * Enumeration of PolicyResponseStatus that can be returned as a part of
+ * {@link org.onap.policy.api.PolicyResponse}.
+ *
+ * @version 0.2
+ */
+public enum PolicyResponseStatus {
+ /**
+ * Indicates there is no action required.
+ */
+ NO_ACTION_REQUIRED("no_action"),
+ /**
+ * Indicates that an action has been advised.
+ */
+ ACTION_ADVISED("action_advised"),
+ /**
+ * Indicates that an action has been taken.
+ */
+ ACTION_TAKEN("action_taken")
+ ;
+
+ private String name;
+ private PolicyResponseStatus(String name){
+ this.name = name;
+ }
+
+ /**
+ * Get the <code>PolicyResponseStatus</code> based on <code>String</code> representation of <code>PolicyResponse</code>
+ *
+ * @param responseStatus the <code>String</code> Response Status
+ * @return the <code>PolicyResponseStatus</code> with the name matching <code>ACTION_ADVISED</code> or <code>ACTION_TAKEN</code> or <code>NO_ACTION_REQUIRED</code>
+ */
+ public static PolicyResponseStatus getStatus(String responseStatus) {
+ if(responseStatus.equalsIgnoreCase("action_advised")) {
+ return ACTION_ADVISED;
+ }else if(responseStatus.equalsIgnoreCase("action_taken")) {
+ return ACTION_TAKEN;
+ }else {
+ return NO_ACTION_REQUIRED;
+ }
+ }
+
+ /**
+ * Returns the <code>String</code> name for this <code>PolicyResponseStatus</code>
+ *
+ * @return the <code>String</code> name for this <code>PolicyResponseStatus</code>
+ */
+ public String toString(){
+ return this.name;
+ }
+
+ @JsonCreator
+ public static PolicyResponseStatus create (String value) {
+ for(PolicyResponseStatus type: values()){
+ if(type.toString().equals(value) || type.equals(PolicyResponseStatus.valueOf(value))){
+ return type;
+ }
+ }
+ throw new IllegalArgumentException();
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyType.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyType.java
new file mode 100644
index 000000000..f026596e9
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyType.java
@@ -0,0 +1,72 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+
+/**
+ * Enumeration of the Policy Return Types that can be returned as part of a
+ * {@link org.onap.policy.api.PolicyConfig}.
+ *
+ * @version 0.2
+ */
+public enum PolicyType {
+ /**
+ * Indicates the response is Properties type
+ */
+ PROPERTIES("Properties"),
+ /**
+ * Indicates the response is JSON type
+ */
+ JSON("json"),
+ /**
+ * Indicates the response is XML type
+ */
+ XML("xml"),
+ /**
+ * Indicates the response is Other type
+ */
+ OTHER("other")
+ ;
+
+ private String name;
+
+ private PolicyType(String typeName) {
+ this.name = typeName;
+ }
+
+ /**
+ * Returns the <code>String</code> format of Type for this <code>PolicyType</code>
+ * @return the <code>String</code> of the Type for this <code>PolicyType</code>
+ */
+ public String toString() {
+ return this.name;
+ }
+ @JsonCreator
+ public static PolicyType create (String value) {
+ for(PolicyType type: values()){
+ if(type.toString().equalsIgnoreCase(value)){
+ return type;
+ }
+ }
+ throw new IllegalArgumentException();
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/PushPolicyParameters.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PushPolicyParameters.java
new file mode 100644
index 000000000..211be7e65
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/PushPolicyParameters.java
@@ -0,0 +1,131 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import java.util.UUID;
+
+/**
+ * <code>PushPolicyParameters</code> defines the Policy Parameters
+ * which are required to Push a Policy to PDPGroup.
+ *
+ * @version 0.1
+ */
+public class PushPolicyParameters {
+ private String policyName;
+ private String policyType;
+ private String pdpGroup;
+ private UUID requestID;
+
+ /**
+ * Constructor with no Parameters.
+ */
+ public PushPolicyParameters(){
+ }
+
+ /**
+ * Constructor with Parameters.
+ *
+ * @param policyName the <code>String</code> format of the Policy Name
+ * @param policyType the <code>String</code> format of the Policy Type
+ * @param pdpGroup the <code>String</code> format of the PDPGroup
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ */
+ public PushPolicyParameters(String policyName, String policyType, String pdpGroup, UUID requestID){
+ this.policyName = policyName;
+ this.policyType = policyType;
+ this.pdpGroup = pdpGroup;
+ this.requestID = requestID;
+ }
+
+ /**
+ * Gets the PolicyName of the Push Policy Parameters.
+ *
+ * @return policyName the <code>String</code> format of the Policy Name
+ */
+ public String getPolicyName() {
+ return policyName;
+ }
+
+ /**
+ * Sets the policyName of the Push Policy Parameters.
+ *
+ * @param policyName the <code>String</code> format of the Policy Name
+ */
+ public void setPolicyName(String policyName) {
+ this.policyName = policyName;
+ }
+
+ /**
+ * Gets the PolicyType of the Push Policy Parameters.
+ *
+ * @return policyType the <code>String</code> format of the Policy Type
+ */
+ public String getPolicyType() {
+ return policyType;
+ }
+
+ /**
+ * Sets the policyType of the Push Policy Parameters.
+ *
+ * @param policyType the <code>String</code> format of the Policy Type
+ */
+ public void setPolicyType(String policyType) {
+ this.policyType = policyType;
+ }
+
+ /**
+ * Gets the PDPGroup of the Push Policy Parameters.
+ *
+ * @return pdpGroup the <code>String</code> format of the PDPGroup
+ */
+ public String getPdpGroup() {
+ return pdpGroup;
+ }
+
+ /**
+ * Sets the PDPGroup of the Push Policy Parameters.
+ *
+ * @param pdpGroup the <code>String</code> format of the PDPGroup
+ */
+ public void setPdpGroup(String pdpGroup) {
+ this.pdpGroup = pdpGroup;
+ }
+
+ /**
+ * Gets the requestID of the Push Policy Parameters.
+ *
+ * @return unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ */
+ public UUID getRequestID() {
+ return requestID;
+ }
+
+ /**
+ * Sets the requestID of the Push Policy Parameters.
+ *
+ * @param requestID unique request ID which will be passed throughout the ONAP components to correlate logging messages.
+ */
+ public void setRequestID(UUID requestID) {
+ this.requestID = requestID;
+ }
+
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/RuleProvider.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/RuleProvider.java
new file mode 100644
index 000000000..c34e05e89
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/RuleProvider.java
@@ -0,0 +1,73 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.api;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+
+/**
+ * Enumeration of the Attribute Types that is used as a part of
+ * {@link org.onap.policy.api.PolicyParameters}.
+ *
+ * @version 0.1
+ */
+public enum RuleProvider {
+ /**
+ * Indicates User will be defining the Rule information.
+ */
+ CUSTOM("Custom"),
+ /**
+ * Indicates AAF will be providing the Rule information.
+ */
+ AAF("AAF"),
+ /**
+ * Indicates Guard YAML will be providing the Rule information.
+ */
+ GUARD_YAML("GUARD_YAML"),
+ /**
+ * Indicates Guard BLACKLIST YAML
+ */
+ GUARD_BL_YAML("GUARD_BL_YAML")
+ ;
+
+ private String name;
+
+ private RuleProvider(String typeName){
+ this.name = typeName;
+ }
+
+ /**
+ * Returns the <code>String</code> format of Type for this <code>AttributeType</code>
+ * @return the <code>String</code> of the Type for this <code>AttributeType</code>
+ */
+ public String toString() {
+ return this.name;
+ }
+
+ @JsonCreator
+ public static RuleProvider create (String value) {
+ for(RuleProvider type: values()){
+ if(type.toString().equals(value) || type.equals(RuleProvider.valueOf(value))){
+ return type;
+ }
+ }
+ throw new IllegalArgumentException();
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/api/package-info.java b/PolicyEngineAPI/src/main/java/org/onap/policy/api/package-info.java
new file mode 100644
index 000000000..07875bc4c
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/api/package-info.java
@@ -0,0 +1,36 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+
+package org.onap.policy.api;
+
+/**
+ * org.onap.policy.api contains the API for the PolicyEngine ProtoType
+ *
+ * @version 0.9
+ *
+ * Changes:
+ * Addition of Notifications methods to the Client API.
+ * Combining Multiple results. and Minor changes to retrieve all policies.
+ * Retrieve config policy using policyFile Name and the matching conditions of the policy in the results.
+ * Addition of Decision policy call
+ *
+ *
+ */
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/models/APIConfigResponse.java b/PolicyEngineAPI/src/main/java/org/onap/policy/models/APIConfigResponse.java
new file mode 100644
index 000000000..a83f743e8
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/models/APIConfigResponse.java
@@ -0,0 +1,37 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.policy.models;
+
+import java.util.Map;
+
+import org.onap.policy.api.PolicyConfigStatus;
+import org.onap.policy.api.PolicyType;
+
+public interface APIConfigResponse {
+ public String getPolicyConfigMessage();
+ public PolicyConfigStatus getPolicyConfigStatus();
+ public PolicyType getType(); // PolicyType
+ public String getConfig();
+ public String getPolicyName();
+ public String getPolicyVersion();
+ public Map<String,String> getMatchingConditions();
+ public Map<String,String> getResponseAttributes();
+ public Map<String,String> getProperty();
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/models/APIDictionaryResponse.java b/PolicyEngineAPI/src/main/java/org/onap/policy/models/APIDictionaryResponse.java
new file mode 100644
index 000000000..050f36bf4
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/models/APIDictionaryResponse.java
@@ -0,0 +1,53 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.policy.models;
+
+public class APIDictionaryResponse {
+ private Object dictionaryData;
+ private Object dictionaryJson;
+ private int responseCode;
+ private String responseMessage;
+ public Object getDictionaryData() {
+ return dictionaryData;
+ }
+ public void setDictionaryData(Object dictionaryData) {
+ this.dictionaryData = dictionaryData;
+ }
+ public Object getDictionaryJson() {
+ return dictionaryJson;
+ }
+ public void setDictionaryJson(Object dictionaryJson) {
+ this.dictionaryJson = dictionaryJson;
+ }
+ public int getResponseCode() {
+ return responseCode;
+ }
+ public void setResponseCode(int responseCode) {
+ this.responseCode = responseCode;
+ }
+ public String getResponseMessage() {
+ return responseMessage;
+ }
+ public void setResponseMessage(String responseMessage) {
+ this.responseMessage = responseMessage;
+ }
+
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/models/APIPolicyConfigResponse.java b/PolicyEngineAPI/src/main/java/org/onap/policy/models/APIPolicyConfigResponse.java
new file mode 100644
index 000000000..7efee00b8
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/models/APIPolicyConfigResponse.java
@@ -0,0 +1,91 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.policy.models;
+
+import java.util.Map;
+
+import org.onap.policy.api.PolicyConfigStatus;
+import org.onap.policy.api.PolicyType;
+
+public class APIPolicyConfigResponse implements APIConfigResponse {
+ private String policyConfigMessage;
+ private PolicyConfigStatus policyConfigStatus;
+ private PolicyType type;
+ private String config;
+ private String policyName;
+ private String policyVersion;
+ private Map<String, String> matchingConditions;
+ private Map<String, String> responseAttributes;
+ private Map<String, String> property;
+ public String getConfig() {
+ return config;
+ }
+ public void setConfig(String config) {
+ this.config = config;
+ }
+ public PolicyType getType() {
+ return type;
+ }
+ public void setType(PolicyType type) {
+ this.type = type;
+ }
+ public PolicyConfigStatus getPolicyConfigStatus() {
+ return policyConfigStatus;
+ }
+ public void setPolicyConfigStatus(PolicyConfigStatus policyConfigStatus) {
+ this.policyConfigStatus = policyConfigStatus;
+ }
+ public String getPolicyConfigMessage() {
+ return policyConfigMessage;
+ }
+ public void setPolicyConfigMessage(String policyConfigMessage) {
+ this.policyConfigMessage = policyConfigMessage;
+ }
+ public Map<String, String> getProperty() {
+ return property;
+ }
+ public void setProperty(Map<String, String> property) {
+ this.property = property;
+ }
+ public String getPolicyName(){
+ return policyName;
+ }
+ public void setPolicyName(String policyName){
+ this.policyName = policyName;
+ }
+ public String getPolicyVersion(){
+ return policyVersion;
+ }
+ public void setPolicyVersion(String policyVersion){
+ this.policyVersion = policyVersion;
+ }
+ public Map<String, String> getMatchingConditions(){
+ return matchingConditions;
+ }
+ public void setMatchingConditions(Map<String, String> matchingConditions){
+ this.matchingConditions = matchingConditions;
+ }
+ public void setResponseAttributes(Map<String,String> responseAttributes){
+ this.responseAttributes = responseAttributes;
+ }
+ public Map<String,String> getResponseAttributes(){
+ return responseAttributes;
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientDMAAP.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientDMAAP.java
new file mode 100644
index 000000000..3699bfcfb
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientDMAAP.java
@@ -0,0 +1,132 @@
+package org.onap.policy.std;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.onap.policy.api.NotificationHandler;
+import org.onap.policy.api.NotificationScheme;
+import org.onap.policy.api.NotificationType;
+import org.onap.policy.api.PDPNotification;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.utils.BusConsumer;
+import org.onap.policy.xacml.api.XACMLErrorConstants;
+
+public class AutoClientDMAAP implements Runnable {
+ private static StdPDPNotification notification = null;
+ private static NotificationScheme scheme = null;
+ private static NotificationHandler handler = null;
+ private static String topic = null;
+ private static boolean status = false;
+ private static Logger logger = FlexLogger.getLogger(AutoClientDMAAP.class.getName());
+ private static String notficatioinType = null;
+ private static BusConsumer dmaapConsumer = null;
+ private static List<String> dmaapList = null;
+ private static String aafLogin = null;
+ private static String aafPassword = null;
+ public volatile boolean isRunning = false;
+
+
+ public AutoClientDMAAP(List<String> dmaapList, String topic, String aafLogin, String aafPassword) {
+ AutoClientDMAAP.topic = topic;
+ AutoClientDMAAP.dmaapList = dmaapList;
+ AutoClientDMAAP.aafLogin = aafLogin;
+ AutoClientDMAAP.aafPassword = aafPassword;
+ }
+
+ public void setAuto(NotificationScheme scheme,
+ NotificationHandler handler) {
+ AutoClientDMAAP.scheme = scheme;
+ AutoClientDMAAP.handler = handler;
+ }
+
+ public static void setScheme(NotificationScheme scheme) {
+ AutoClientDMAAP.scheme = scheme;
+ }
+
+ public static boolean getStatus(){
+ return AutoClientDMAAP.status;
+ }
+
+ public static String getTopic() {
+ return AutoClientDMAAP.topic;
+ }
+
+ public static String getNotficationType(){
+ return AutoClientDMAAP.notficatioinType;
+ }
+
+ public synchronized boolean isRunning() {
+ return this.isRunning;
+ }
+
+ public synchronized void terminate() {
+ this.isRunning = false;
+ }
+
+ @Override
+ public void run() {
+ synchronized(this) {
+ this.isRunning = true;
+ }
+ String group = UUID.randomUUID ().toString ();
+ String id = "0";
+
+ // Stop and Start needs to be done.
+ if (scheme != null && handler!=null) {
+ if (scheme.equals(NotificationScheme.AUTO_ALL_NOTIFICATIONS) || scheme.equals(NotificationScheme.AUTO_NOTIFICATIONS)) {
+
+ // create a loop to listen for messages from DMaaP server
+ try {
+ dmaapConsumer = new BusConsumer.DmaapConsumerWrapper(dmaapList, topic, aafLogin, aafPassword, group, id, 15*1000, 1000 );
+ } catch (Exception e) {
+ logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Unable to create DMaaP Consumer: ", e);
+ }
+
+ while (this.isRunning() )
+ {
+ try {
+ for ( String msg : dmaapConsumer.fetch () )
+ {
+ logger.debug("Auto Notification Recieved Message " + msg + " from DMAAP server : " + dmaapList.toString());
+ notification = NotificationUnMarshal.notificationJSON(msg);
+ callHandler();
+ }
+ } catch (Exception e) {
+ logger.debug("Error in processing DMAAP message");
+ }
+
+ }
+ logger.debug("Stopping DMAAP Consumer loop will no longer fetch messages from the servers");
+ }
+ }
+ }
+
+ private static void callHandler() {
+ if (handler != null && scheme != null) {
+ if (scheme.equals(NotificationScheme.AUTO_ALL_NOTIFICATIONS)) {
+ boolean removed = false, updated = false;
+ if (notification.getRemovedPolicies() != null && !notification.getRemovedPolicies().isEmpty()) {
+ removed = true;
+ }
+ if (notification.getLoadedPolicies() != null && !notification.getLoadedPolicies().isEmpty()) {
+ updated = true;
+ }
+ if (removed && updated) {
+ notification.setNotificationType(NotificationType.BOTH);
+ } else if (removed) {
+ notification.setNotificationType(NotificationType.REMOVE);
+ } else if (updated) {
+ notification.setNotificationType(NotificationType.UPDATE);
+ }
+ handler.notificationReceived(notification);
+ } else if (scheme.equals(NotificationScheme.AUTO_NOTIFICATIONS)) {
+ PDPNotification newNotification = MatchStore.checkMatch(notification);
+ if (newNotification.getNotificationType() != null) {
+ handler.notificationReceived(newNotification);
+ }
+ }
+ }
+ }
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientEnd.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientEnd.java
new file mode 100644
index 000000000..976b57058
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientEnd.java
@@ -0,0 +1,248 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.std;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.websocket.ClientEndpoint;
+import javax.websocket.DeploymentException;
+import javax.websocket.OnClose;
+import javax.websocket.OnError;
+import javax.websocket.OnMessage;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+
+//import org.apache.log4j.Logger;
+import org.glassfish.tyrus.client.ClientManager;
+import org.onap.policy.api.NotificationHandler;
+import org.onap.policy.api.NotificationScheme;
+import org.onap.policy.api.NotificationType;
+import org.onap.policy.api.PDPNotification;
+import org.onap.policy.std.NotificationStore;
+import org.onap.policy.std.StdPDPNotification;
+
+import org.onap.policy.xacml.api.XACMLErrorConstants;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import org.onap.policy.common.logging.flexlogger.*;
+
+@ClientEndpoint
+public class AutoClientEnd {
+ private static StdPDPNotification notification = null;
+ private static StdPDPNotification oldNotification = null;
+ private static ClientManager client = null;
+ private static NotificationScheme scheme = null;
+ private static NotificationHandler handler = null;
+ private static String url = null;
+ private static Session session = null;
+ private static boolean status = false;
+ private static boolean stop = false;
+ private static boolean message = false;
+ private static boolean error = false;
+ private static Logger logger = FlexLogger.getLogger(AutoClientEnd.class.getName());
+
+ public static void setAuto(NotificationScheme scheme,
+ NotificationHandler handler) {
+ AutoClientEnd.scheme = scheme;
+ AutoClientEnd.handler = handler;
+ }
+
+ public static void setScheme(NotificationScheme scheme) {
+ AutoClientEnd.scheme = scheme;
+ }
+
+ public static boolean getStatus(){
+ return AutoClientEnd.status;
+ }
+
+ public static String getURL() {
+ return AutoClientEnd.url;
+ }
+
+ public static void start(String url) {
+ AutoClientEnd.url = url;
+ // Stop and Start needs to be done.
+ if (scheme != null && handler!=null) {
+ if (scheme.equals(NotificationScheme.AUTO_ALL_NOTIFICATIONS) || scheme.equals(NotificationScheme.AUTO_NOTIFICATIONS)) {
+ if (AutoClientEnd.client == null) {
+ client = ClientManager.createClient();
+ if(url.contains("https")){
+ url = url.replaceAll("https", "wss");
+ }else {
+ url = url.replaceAll("http", "ws");
+ }
+ try {
+ logger.info("Starting Auto Notification with the PDP server : " + url);
+ client.connectToServer(AutoClientEnd.class, new URI(url + "notifications"));
+ status = true;
+ if(error){
+ // The URL's will be in Sync according to design Spec.
+ ManualClientEnd.start(AutoClientEnd.url);
+ StdPDPNotification notification = NotificationStore.getDeltaNotification((StdPDPNotification)ManualClientEnd.result(NotificationScheme.MANUAL_ALL_NOTIFICATIONS));
+ if(notification.getNotificationType()!=null){
+ if(oldNotification!=notification){
+ oldNotification= notification;
+ AutoClientEnd.notification = notification;
+ callHandler();
+ }
+ }
+ error = false;
+ }
+ //
+ } catch (DeploymentException | IOException | URISyntaxException e) {
+ logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e);
+ client = null;
+ status = false;
+ changeURL();
+ }
+ }
+ }
+ }
+ }
+
+ private static void changeURL(){
+ // Change the PDP if it is not Up.
+ StdPolicyEngine.rotatePDPList();
+ start(StdPolicyEngine.getPDPURL());
+ }
+
+ public static void stop() {
+ if (client != null) {
+ client.shutdown();
+ if(session!=null){
+ try {
+ stop = true;
+ logger.info("\n Closing Auto Notification WebSocket Connection.. ");
+ session.close();
+ session = null;
+ } catch (IOException e) {
+ //
+ }
+ }
+ client = null;
+ status = false;
+ stop = false;
+ }
+ }
+
+ private static void callHandler() {
+ if (handler != null && scheme != null) {
+ if (scheme.equals(NotificationScheme.AUTO_ALL_NOTIFICATIONS)) {
+ boolean removed = false, updated = false;
+ if (notification.getRemovedPolicies() != null && !notification.getRemovedPolicies().isEmpty()) {
+ removed = true;
+ }
+ if (notification.getLoadedPolicies() != null && !notification.getLoadedPolicies().isEmpty()) {
+ updated = true;
+ }
+ if (removed && updated) {
+ notification.setNotificationType(NotificationType.BOTH);
+ } else if (removed) {
+ notification.setNotificationType(NotificationType.REMOVE);
+ } else if (updated) {
+ notification.setNotificationType(NotificationType.UPDATE);
+ }
+ try{
+ handler.notificationReceived(notification);
+ }catch (Exception e){
+ logger.error("Error in Clients Handler Object : ", e);
+ }
+ } else if (scheme.equals(NotificationScheme.AUTO_NOTIFICATIONS)) {
+ PDPNotification newNotification = MatchStore.checkMatch(notification);
+ if (newNotification.getNotificationType() != null) {
+ try{
+ handler.notificationReceived(newNotification);
+ }catch (Exception e){
+ logger.error("Error in Clients Handler Object : ", e);
+ }
+ }
+ }
+ }
+ }
+
+ // WebSockets Code..
+ @OnOpen
+ public void onOpen(Session session) throws IOException {
+ // session.getBasicRemote().sendText("Connected to Client with Session: "
+ // + session.getId());
+ logger.debug("Auto Notification Session Started... " + session.getId());
+ if(AutoClientEnd.session == null){
+ AutoClientEnd.session = session;
+ }
+ }
+
+ @OnError
+ public void onError(Session session, Throwable e) {
+ // trying to Restart by self.
+ logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Session Error.. "+ session.getId() + "\n Error is : " + e );
+ // logger.error("Exception Occured"+e);
+ stop();
+ if (url != null) {
+ client = null;
+ status = false;
+ error= true;
+ start(url);
+ }
+ }
+
+ @OnClose
+ public void onClose(Session session) {
+ logger.info("Session ended with "+ session.getId());
+ if(!stop && !message){
+ // This Block of code is executed if there is any Network Failure or if the Notification is Down.
+ logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Disconnected from Notification Server");
+ client = null;
+ status = false;
+ AutoClientEnd.session=null;
+ // Try to connect Back to available PDP.
+ error = true;
+ start(url);
+ }
+ AutoClientEnd.message=false;
+ }
+
+ @OnMessage
+ public void onMessage(String message, Session session) throws JsonParseException, JsonMappingException, IOException {
+ AutoClientEnd.message = true;
+ logger.debug("Auto Notification Recieved Message " + message + " Session info is : " + session.getId());
+ try {
+ notification = NotificationUnMarshal.notificationJSON(message);
+ } catch (Exception e) {
+ logger.error("PE500 " + e);
+ }
+ if(AutoClientEnd.session == session){
+ try{
+ NotificationStore.recordNotification(notification);
+ }catch(Exception e){
+ logger.error(e);
+ }
+ if(oldNotification!=notification){
+ oldNotification= notification;
+ callHandler();
+ }
+ }else{
+ session.close();
+ }
+ AutoClientEnd.message = false;
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientUEB.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientUEB.java
new file mode 100644
index 000000000..37413f416
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientUEB.java
@@ -0,0 +1,178 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.std;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+import java.util.UUID;
+
+import org.onap.policy.api.NotificationHandler;
+import org.onap.policy.api.NotificationScheme;
+import org.onap.policy.api.NotificationType;
+import org.onap.policy.api.PDPNotification;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.xacml.api.XACMLErrorConstants;
+
+import com.att.nsa.cambria.client.CambriaClientBuilders;
+import com.att.nsa.cambria.client.CambriaClientBuilders.ConsumerBuilder;
+import com.att.nsa.cambria.client.CambriaConsumer;
+/**
+ * Create a UEB Consumer to receive policy update notification.
+ *
+ *
+ *
+ */
+public class AutoClientUEB implements Runnable {
+ private static StdPDPNotification notification = null;
+ private static NotificationScheme scheme = null;
+ private static NotificationHandler handler = null;
+ private static String topic = null;
+ private static String url = null;
+ private static boolean status = false;
+ private static Logger logger = FlexLogger.getLogger(AutoClientUEB.class.getName());
+ private static String notficatioinType = null;
+ private static CambriaConsumer CConsumer = null;
+ private static String apiKey = null;
+ private static String apiSecret = null;
+ private static List<String> uebURLList = null;
+ public volatile boolean isRunning = false;
+
+
+ public AutoClientUEB(String url, List<String> uebURLList, String apiKey, String apiSecret) {
+ AutoClientUEB.url = url;
+ AutoClientUEB.uebURLList = uebURLList;
+ AutoClientUEB.apiKey = apiKey;
+ AutoClientUEB.apiKey = apiKey;
+ }
+
+ public void setAuto(NotificationScheme scheme,
+ NotificationHandler handler) {
+ AutoClientUEB.scheme = scheme;
+ AutoClientUEB.handler = handler;
+ }
+
+ public static void setScheme(NotificationScheme scheme) {
+ AutoClientUEB.scheme = scheme;
+ }
+
+ public static boolean getStatus(){
+ return AutoClientUEB.status;
+ }
+
+ public static String getURL() {
+ return AutoClientUEB.url;
+ }
+
+ public static String getNotficationType(){
+ return AutoClientUEB.notficatioinType;
+ }
+
+ public synchronized boolean isRunning() {
+ return this.isRunning;
+ }
+
+ public synchronized void terminate() {
+ this.isRunning = false;
+ }
+
+ @Override
+ public void run() {
+ synchronized(this) {
+ this.isRunning = true;
+ }
+ String group = UUID.randomUUID ().toString ();
+ String id = "0";
+ //String topic = null;
+ // Stop and Start needs to be done.
+ if (scheme != null && handler!=null) {
+ if (scheme.equals(NotificationScheme.AUTO_ALL_NOTIFICATIONS) || scheme.equals(NotificationScheme.AUTO_NOTIFICATIONS)) {
+ URL aURL;
+ try {
+ aURL = new URL(AutoClientUEB.topic);
+ topic = aURL.getHost() + aURL.getPort();
+ } catch (MalformedURLException e) {
+ topic = AutoClientUEB.url.replace("[:/]", "");
+ }
+
+ try {
+ //CConsumer = CambriaClientFactory.createConsumer ( null, uebURLList, topic, group, id, 15*1000, 1000 );
+ ConsumerBuilder builder = new CambriaClientBuilders.ConsumerBuilder();
+ builder.knownAs(group, id)
+ .usingHosts(uebURLList)
+ .onTopic(topic)
+ .waitAtServer(15*1000)
+ .receivingAtMost(1000)
+ .authenticatedBy(apiKey, apiSecret);
+
+ CConsumer = builder.build();
+
+ } catch (Exception e1) {
+ logger.error("Exception Occured" + e1);
+ }
+ while (this.isRunning() )
+ {
+ try {
+ for ( String msg : CConsumer.fetch () )
+ {
+ logger.debug("Auto Notification Recieved Message " + msg + " from UEB cluster : " + uebURLList.toString());
+ notification = NotificationUnMarshal.notificationJSON(msg);
+ callHandler();
+ }
+ } catch (Exception e) {
+ logger.debug(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Error in processing UEB message" + e.getMessage());
+ }
+
+ }
+ logger.debug("Stopping UEB Consumer loop will not logger fetch messages from the cluster");
+ }
+ }
+ }
+
+ private static void callHandler() {
+ if (handler != null && scheme != null) {
+ if (scheme.equals(NotificationScheme.AUTO_ALL_NOTIFICATIONS)) {
+ boolean removed = false, updated = false;
+ if (notification.getRemovedPolicies() != null && !notification.getRemovedPolicies().isEmpty()) {
+ removed = true;
+ }
+ if (notification.getLoadedPolicies() != null && !notification.getLoadedPolicies().isEmpty()) {
+ updated = true;
+ }
+ if (removed && updated) {
+ notification.setNotificationType(NotificationType.BOTH);
+ } else if (removed) {
+ notification.setNotificationType(NotificationType.REMOVE);
+ } else if (updated) {
+ notification.setNotificationType(NotificationType.UPDATE);
+ }
+ handler.notificationReceived(notification);
+ } else if (scheme.equals(NotificationScheme.AUTO_NOTIFICATIONS)) {
+ PDPNotification newNotification = MatchStore.checkMatch(notification);
+ if (newNotification.getNotificationType() != null) {
+ handler.notificationReceived(newNotification);
+ }
+ }
+ }
+ }
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEnd.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEnd.java
new file mode 100644
index 000000000..7e4ba07e8
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEnd.java
@@ -0,0 +1,138 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.std;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.concurrent.CountDownLatch;
+
+import javax.websocket.ClientEndpoint;
+import javax.websocket.DeploymentException;
+import javax.websocket.OnClose;
+import javax.websocket.OnError;
+import javax.websocket.OnMessage;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+
+//import org.apache.log4j.Logger;
+import org.glassfish.tyrus.client.ClientManager;
+import org.onap.policy.api.NotificationScheme;
+import org.onap.policy.api.NotificationType;
+import org.onap.policy.api.PDPNotification;
+import org.onap.policy.std.StdPDPNotification;
+
+import org.onap.policy.xacml.api.XACMLErrorConstants;
+
+import org.onap.policy.common.logging.flexlogger.*;
+
+@ClientEndpoint
+public class ManualClientEnd {
+ private static CountDownLatch latch;
+ private static StdPDPNotification notification = null;
+ private static String resultJson = null;
+ private static Logger logger = FlexLogger.getLogger(ManualClientEnd.class.getName());
+
+ public static void start(String url) {
+ latch = new CountDownLatch(1);
+ ClientManager client = ClientManager.createClient();
+ if(url.contains("https")){
+ url = url.replaceAll("https", "wss");
+ }else {
+ url = url.replaceAll("http", "ws");
+ }
+ try {
+ client.connectToServer(ManualClientEnd.class, new URI(url+"notifications"));
+ latch.await();
+ } catch (DeploymentException | URISyntaxException | InterruptedException e) {
+ logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e);
+ } catch (IOException e) {
+ logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e);
+ }
+ }
+
+ public static PDPNotification result(NotificationScheme scheme) {
+ if (resultJson == null || notification == null) {
+ logger.debug("No Result" );
+ return null;
+ } else {
+ if(scheme.equals(NotificationScheme.MANUAL_ALL_NOTIFICATIONS)) {
+ boolean removed = false, updated = false;
+ if(notification.getRemovedPolicies()!=null && !notification.getRemovedPolicies().isEmpty()){
+ removed = true;
+ }
+ if(notification.getLoadedPolicies()!=null && !notification.getLoadedPolicies().isEmpty()){
+ updated = true;
+ }
+ if(removed && updated) {
+ notification.setNotificationType(NotificationType.BOTH);
+ }else if(removed){
+ notification.setNotificationType(NotificationType.REMOVE);
+ }else if(updated){
+ notification.setNotificationType(NotificationType.UPDATE);
+ }
+ return notification;
+ }else if(scheme.equals(NotificationScheme.MANUAL_NOTIFICATIONS)) {
+ return MatchStore.checkMatch(notification);
+ }else {
+ return null;
+ }
+ }
+ }
+
+ // WebSockets Code..
+ @OnOpen
+ public void onOpen(Session session) throws IOException {
+ logger.info("Session Started with : " + session.getId());
+ session.getBasicRemote().sendText("Manual");
+ }
+
+ @OnError
+ public void onError(Session session, Throwable e) {
+ logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error in: "+ session.getId());
+ latch.countDown();
+ }
+
+ @OnClose
+ public void onClose(Session session) {
+ logger.info("Session ended with "+ session.getId());
+ latch.countDown();
+ }
+
+ @OnMessage
+ public void onMessage(String message, Session session){
+ logger.debug(" Manual Notification Recieved Message : " + message +" Session info is : "+ session.getId());
+ resultJson = message;
+ try {
+ notification = NotificationUnMarshal.notificationJSON(message);
+ } catch (Exception e) {
+ logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e);
+ latch.countDown();
+ }
+ try {
+ session.close();
+ } catch (IOException e) {
+ logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
+ latch.countDown();
+ } // For Manual Client..
+ latch.countDown();
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEndDMAAP.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEndDMAAP.java
new file mode 100644
index 000000000..72ad7ce4a
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEndDMAAP.java
@@ -0,0 +1,107 @@
+package org.onap.policy.std;
+
+import java.util.List;
+
+import org.json.JSONObject;
+import org.onap.policy.api.NotificationScheme;
+import org.onap.policy.api.NotificationType;
+import org.onap.policy.api.PDPNotification;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.utils.BusConsumer;
+import org.onap.policy.utils.BusPublisher;
+import org.onap.policy.xacml.api.XACMLErrorConstants;
+
+public class ManualClientEndDMAAP {
+ private static StdPDPNotification notification = null;
+ private static String resultJson = null;
+ private static Logger logger = FlexLogger.getLogger(ManualClientEndDMAAP.class.getName());
+ private static BusConsumer dmaapConsumer = null;
+ private static String uniquID = null;
+ private static String topic = null;
+
+
+ public static PDPNotification result(NotificationScheme scheme) {
+ if (resultJson == null || notification == null) {
+ logger.debug("No Result" );
+ return null;
+ } else {
+ if(scheme.equals(NotificationScheme.MANUAL_ALL_NOTIFICATIONS)) {
+ boolean removed = false, updated = false;
+ if(notification.getRemovedPolicies()!=null && !notification.getRemovedPolicies().isEmpty()){
+ removed = true;
+ }
+ if(notification.getLoadedPolicies()!=null && !notification.getLoadedPolicies().isEmpty()){
+ updated = true;
+ }
+ if(removed && updated) {
+ notification.setNotificationType(NotificationType.BOTH);
+ }else if(removed){
+ notification.setNotificationType(NotificationType.REMOVE);
+ }else if(updated){
+ notification.setNotificationType(NotificationType.UPDATE);
+ }
+ return notification;
+ }else if(scheme.equals(NotificationScheme.MANUAL_NOTIFICATIONS)) {
+ return MatchStore.checkMatch(notification);
+ }else {
+ return null;
+ }
+ }
+ }
+
+ private static void publishMessage(String pubTopic, String uniqueID, List<String> dmaapList, String aafLogin, String aafPassword) {
+ BusPublisher pub = null;
+ try {
+ pub = new BusPublisher.DmaapPublisherWrapper(dmaapList, topic, aafLogin, aafPassword);
+ final JSONObject msg1 = new JSONObject ();
+ msg1.put ( "JSON", "DMaaP Update Request UID=" + uniqueID);
+ pub.send ( "MyPartitionKey", msg1.toString () );
+ } catch (Exception e) {
+ logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Unable to create DMaaP Publisher: ", e);
+ }
+ if(pub != null){
+ pub.close ();
+ }
+ }
+
+ //NOTE: should be able to remove this for DMAAP since we will not be creating topics dynamically
+ public static void createTopic (String topic, String uniquID, List<String> dmaapList, String aafLogin, String aafPassword){
+ ManualClientEndDMAAP.topic = topic;
+ publishMessage(topic, uniquID, dmaapList, aafLogin, aafPassword);
+ }
+
+
+ public static void start(List<String> dmaapList, String topic, String aafLogin, String aafPassword, String uniqueID) {
+
+ ManualClientEndDMAAP.uniquID = uniqueID;
+ ManualClientEndDMAAP.topic = topic;
+
+ String id = "0";
+
+ try {
+ dmaapConsumer = new BusConsumer.DmaapConsumerWrapper(dmaapList, topic, aafLogin, aafPassword, "clientGroup", id, 15*1000, 1000);
+ } catch (Exception e) {
+ logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Unable to create DMaaP Consumer: ", e);
+ }
+
+ int count = 1;
+ while (count < 4) {
+ publishMessage(topic, uniquID, dmaapList, aafLogin, aafPassword);
+ try {
+ for ( String msg : dmaapConsumer.fetch () )
+ {
+ logger.debug("Manual Notification Recieved Message " + msg + " from DMaaP server : " + dmaapList.toString());
+ resultJson = msg;
+ if (!msg.contains("DMaaP Update")){
+ notification = NotificationUnMarshal.notificationJSON(msg);
+ count = 4;
+ }
+ }
+ }catch (Exception e) {
+ logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Unable to fetch messages from DMaaP servers: ", e);
+ }
+ count++;
+ }
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEndUEB.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEndUEB.java
new file mode 100644
index 000000000..dcd86eb1f
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEndUEB.java
@@ -0,0 +1,160 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.std;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+
+import org.json.JSONObject;
+import org.onap.policy.api.NotificationScheme;
+import org.onap.policy.api.NotificationType;
+import org.onap.policy.api.PDPNotification;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+
+import com.att.nsa.cambria.client.CambriaClientFactory;
+import com.att.nsa.cambria.client.CambriaConsumer;
+import com.att.nsa.cambria.client.CambriaPublisher;
+
+
+@SuppressWarnings("deprecation")
+public class ManualClientEndUEB {
+ private static StdPDPNotification notification = null;
+ private static String resultJson = null;
+ private static Logger logger = FlexLogger.getLogger(ManualClientEndUEB.class.getName());
+ private static CambriaConsumer CConsumer = null;
+ @SuppressWarnings("unused")
+ private static List<String> uebURLList = null;
+ @SuppressWarnings("unused")
+ private static boolean messageNotReceived = false;
+ @SuppressWarnings("unused")
+ private static String url = null;
+ private static String uniquID = null;
+ private static String topic = null;
+
+
+ public static PDPNotification result(NotificationScheme scheme) {
+ if (resultJson == null || notification == null) {
+ logger.debug("No Result" );
+ return null;
+ } else {
+ if(scheme.equals(NotificationScheme.MANUAL_ALL_NOTIFICATIONS)) {
+ boolean removed = false, updated = false;
+ if(notification.getRemovedPolicies()!=null && !notification.getRemovedPolicies().isEmpty()){
+ removed = true;
+ }
+ if(notification.getLoadedPolicies()!=null && !notification.getLoadedPolicies().isEmpty()){
+ updated = true;
+ }
+ if(removed && updated) {
+ notification.setNotificationType(NotificationType.BOTH);
+ }else if(removed){
+ notification.setNotificationType(NotificationType.REMOVE);
+ }else if(updated){
+ notification.setNotificationType(NotificationType.UPDATE);
+ }
+ return notification;
+ }else if(scheme.equals(NotificationScheme.MANUAL_NOTIFICATIONS)) {
+ return MatchStore.checkMatch(notification);
+ }else {
+ return null;
+ }
+ }
+ }
+
+ private static void publishMessage(String pubTopic, String uniqueID , List<String> uebURLList) {
+
+ String UEBlist = uebURLList.toString();
+ UEBlist = UEBlist.substring(1,UEBlist.length()-1);
+ CambriaPublisher pub = null;
+ try {
+ pub = CambriaClientFactory.createSimplePublisher(null, UEBlist, pubTopic);
+ } catch (Exception e1) {
+ logger.error("Exception Occured"+e1);
+ }
+ final JSONObject msg1 = new JSONObject ();
+
+ msg1.put ( "JSON", "UEB Update Ruest UID=" + uniqueID);
+ if(pub != null){
+ try {
+ pub.send ( "MyPartitionKey", msg1.toString () );
+ pub.close ();
+ } catch (IOException e) {
+ logger.error("Exception Occured"+e);
+ }
+ }
+ }
+
+ public static void createTopic (String url, String uniquID, List<String> uebURLList){
+ URL aURL;
+ try {
+ aURL = new URL(url);
+ topic = aURL.getHost() + aURL.getPort();
+ } catch (MalformedURLException e) {
+ topic = url.replace("[:/]", "");
+ }
+
+ publishMessage(topic+ uniquID , uniquID, uebURLList);
+
+ }
+ public static void start(String url, List<String> uebURLList,
+ String uniqueID) {
+ ManualClientEndUEB.uebURLList = uebURLList;
+ ManualClientEndUEB.url = url;
+ ManualClientEndUEB.uniquID = uniqueID;
+ URL aURL;
+ try {
+ aURL = new URL(url);
+ ManualClientEndUEB.topic = aURL.getHost() + aURL.getPort();
+ } catch (MalformedURLException e) {
+ ManualClientEndUEB.topic = url.replace("[:/]", "");
+ }
+ String id = "0";
+ try {
+ CConsumer = CambriaClientFactory.createConsumer ( null, uebURLList, topic + uniquID, "clientGroup", id, 15*1000, 1000 );
+ } catch (Exception e1) {
+ logger.error("Exception Occured"+e1);
+ }
+ int count = 1;
+ while (count < 4) {
+ publishMessage(topic + "UpdateRequest", uniquID, uebURLList);
+ try {
+ for ( String msg : CConsumer.fetch () )
+ {
+
+ logger.debug("Manual Notification Recieved Message " + msg + " from UEB cluster : " + uebURLList.toString());
+ resultJson = msg;
+ if (!msg.contains("UEB Update")){
+// System.out.println("Manual Notification Recieved Message " + msg + " from UEB cluster : " + uebURLList.toString());
+ notification = NotificationUnMarshal.notificationJSON(msg);
+ count = 4;
+ }
+ }
+ }catch (Exception e) {
+
+ }
+ count++;
+ }
+ }
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/MatchStore.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/MatchStore.java
new file mode 100644
index 000000000..a243c1fc1
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/MatchStore.java
@@ -0,0 +1,246 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.std;
+
+import java.util.Collection;
+import java.util.HashSet;
+
+import org.onap.policy.api.LoadedPolicy;
+import org.onap.policy.api.NotificationType;
+import org.onap.policy.api.PDPNotification;
+import org.onap.policy.api.RemovedPolicy;
+import org.onap.policy.std.StdLoadedPolicy;
+import org.onap.policy.std.StdPDPNotification;
+import org.onap.policy.std.StdRemovedPolicy;
+
+import org.onap.policy.common.logging.flexlogger.*;
+
+public class MatchStore {
+ private static HashSet<Matches> matchStore = new HashSet<>();
+ private static Logger logger = FlexLogger.getLogger(MatchStore.class.getName());
+
+ public static HashSet<Matches> getMatchStore() {
+ return matchStore;
+ }
+
+ public static void storeMatch(Matches newMatch){
+ // Initialization..
+ if(newMatch!=null){
+ if(matchStore.isEmpty()){
+ matchStore.add(newMatch);
+ }else{
+ // Check if it is a new Match
+ Boolean match = false;
+ for(Matches oldMatch: matchStore){
+ // Compare ONAPName
+ if(oldMatch.getOnapName().equals(newMatch.getOnapName())){
+ // Compare ConfigName if it exists.
+ if(newMatch.getConfigName()!=null && oldMatch.getConfigName()!=null){
+ if(oldMatch.getConfigName().equals(newMatch.getConfigName())){
+ // Compare the Config Attributes if they exist.
+ if(newMatch.getConfigAttributes()!= null && oldMatch.getConfigAttributes()!=null) {
+ //Simple thing would be comparing their size.
+ if(newMatch.getConfigAttributes().size()==oldMatch.getConfigAttributes().size()){
+ // Now need to compare each of them..
+ int count= 0;
+ for(String oldkey: oldMatch.getConfigAttributes().keySet()){
+ boolean check = false;
+ for(String newKey: newMatch.getConfigAttributes().keySet()){
+ if(oldkey.equals(newKey)){
+ if(oldMatch.getConfigAttributes().get(oldkey).equals(newMatch.getConfigAttributes().get(newKey))){
+ check = true;
+ }
+ }
+ }
+ if(check){
+ count++;
+ }else{
+ break;
+ }
+ }
+ if(count==oldMatch.getConfigAttributes().size()){
+ match = true;
+ break;
+ }
+ }
+ }else if(newMatch.getConfigAttributes()== null && oldMatch.getConfigAttributes()==null){
+ match = true;
+ break;
+ }
+ }
+ }else if(newMatch.getConfigName()==null && oldMatch.getConfigName()==null){
+ match = true;
+ break;
+ }
+ }
+
+ }
+ // IF not a match then add it to the MatchStore
+ if(match==false){
+ matchStore.add(newMatch);
+ }
+ }
+ }
+ }
+
+ //Logic changes for Requested Policies notifications..
+ public static PDPNotification checkMatch(PDPNotification oldNotification) {
+ boolean removed = false, updated = false;
+ if(oldNotification==null){
+ return null;
+ }
+ StdPDPNotification newNotification = new StdPDPNotification();
+ if(matchStore.isEmpty()) {
+ logger.debug("No Success Config Calls made yet.. ");
+ System.out.println("No success Config calls made yet. ");
+ return null;
+ }
+ if(oldNotification.getRemovedPolicies()!=null && !oldNotification.getRemovedPolicies().isEmpty()){
+ // send all removed policies to client.
+ Collection<StdRemovedPolicy> removedPolicies = new HashSet<>();
+ StdRemovedPolicy newRemovedPolicy;
+ for(RemovedPolicy removedPolicy: oldNotification.getRemovedPolicies()){
+ newRemovedPolicy = new StdRemovedPolicy();
+ newRemovedPolicy.setPolicyName(removedPolicy.getPolicyName());
+ newRemovedPolicy.setVersionNo(removedPolicy.getVersionNo());
+ removedPolicies.add(newRemovedPolicy);
+ }
+ newNotification.setRemovedPolicies(removedPolicies);
+ removed = true;
+ }
+ if(oldNotification.getLoadedPolicies()!=null && !oldNotification.getLoadedPolicies().isEmpty()){
+ Collection<StdLoadedPolicy> updatedPolicies = new HashSet<>();
+ StdLoadedPolicy newUpdatedPolicy;
+ for(LoadedPolicy updatedPolicy: oldNotification.getLoadedPolicies()){
+ // if it is config policies check their matches..
+ if(updatedPolicy.getMatches()!=null && !updatedPolicy.getMatches().isEmpty()){
+ boolean matched = false;
+ for(Matches match : matchStore){
+ matched = false;
+ // Again Better way would be comparing sizes first.
+ // Matches are different need to check if has configAttributes
+ if(match.getConfigAttributes()!=null && !match.getConfigAttributes().isEmpty()){
+ // adding onap and config to config-attributes.
+ int compValues = match.getConfigAttributes().size() + 2;
+ if(updatedPolicy.getMatches().size()== compValues){
+ // Comparing both the values..
+ boolean matchAttributes = false;
+ for(String newKey: updatedPolicy.getMatches().keySet()){
+ if(newKey.equals("ONAPName")){
+ if(updatedPolicy.getMatches().get(newKey).equals(match.getOnapName())){
+ matchAttributes = true;
+ }else {
+ matchAttributes = false;
+ break;
+ }
+ }else if(newKey.equals("ConfigName")) {
+ if(updatedPolicy.getMatches().get(newKey).equals(match.getConfigName())){
+ matchAttributes = true;
+ }else{
+ matchAttributes = false;
+ break;
+ }
+ }else {
+ if(match.getConfigAttributes().containsKey(newKey)){
+ if(updatedPolicy.getMatches().get(newKey).equals(match.getConfigAttributes().get(newKey))){
+ matchAttributes = true;
+ }else{
+ matchAttributes = false;
+ break;
+ }
+ }else{
+ matchAttributes = false;
+ break;
+ }
+ }
+ }
+ if(matchAttributes){
+ // Match..
+ matched = true;
+ }else{
+ break;
+ }
+ }else {
+ break;
+ }
+ }else if(match.getConfigName()!=null){
+ // If there are no config Attributes then check if it has Config Name
+ if(updatedPolicy.getMatches().size()== 2){
+ if(updatedPolicy.getMatches().get("ONAPName").equals(match.getOnapName())){
+ if(updatedPolicy.getMatches().get("ConfigName").equals(match.getConfigName())){
+ // Match..
+ matched = true;
+ }else{
+ break;
+ }
+ }else {
+ break;
+ }
+ }else{
+ break;
+ }
+ }else {
+ // If non exist then assuming the ONAP Name to be there.
+ if(updatedPolicy.getMatches().size()== 1){
+ if(updatedPolicy.getMatches().get("ONAPName").equals(match.getOnapName())){
+ // Match..
+ matched = true;
+ }else {
+ break;
+ }
+ }else{
+ break;
+ }
+ }
+ // Add logic to add the policy.
+ if(matched){
+ newUpdatedPolicy = new StdLoadedPolicy();
+ newUpdatedPolicy.setPolicyName(updatedPolicy.getPolicyName());
+ newUpdatedPolicy.setVersionNo(updatedPolicy.getVersionNo());
+ newUpdatedPolicy.setMatches(updatedPolicy.getMatches());
+ updatedPolicies.add(newUpdatedPolicy);
+ updated = true;
+ }
+ }
+
+ }else {
+ //send all non config notifications to client.
+ newUpdatedPolicy = new StdLoadedPolicy();
+ newUpdatedPolicy.setPolicyName(updatedPolicy.getPolicyName());
+ newUpdatedPolicy.setVersionNo(updatedPolicy.getVersionNo());
+ updatedPolicies.add(newUpdatedPolicy);
+ updated = true;
+ }
+ }
+ newNotification.setLoadedPolicies(updatedPolicies);
+ }
+ // Need to set the type of Update..
+ if(removed && updated) {
+ newNotification.setNotificationType(NotificationType.BOTH);
+ }else if(removed){
+ newNotification.setNotificationType(NotificationType.REMOVE);
+ }else if(updated){
+ newNotification.setNotificationType(NotificationType.UPDATE);
+ }
+ return newNotification;
+ }
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/Matches.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/Matches.java
new file mode 100644
index 000000000..eb382a63d
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/Matches.java
@@ -0,0 +1,48 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.std;
+
+import java.util.Map;
+
+public class Matches {
+ private String onapName = null;
+ private String configName = null;
+ private Map<String,String> configAttributes = null;
+ public String getOnapName() {
+ return onapName;
+ }
+ public void setOnapName(String onapName) {
+ this.onapName = onapName;
+ }
+ public String getConfigName() {
+ return configName;
+ }
+ public void setConfigName(String configName) {
+ this.configName = configName;
+ }
+ public Map<String,String> getConfigAttributes() {
+ return configAttributes;
+ }
+ public void setConfigAttributes(Map<String,String> configAttributes) {
+ this.configAttributes = configAttributes;
+ }
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/NotificationUnMarshal.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/NotificationUnMarshal.java
new file mode 100644
index 000000000..2ec174c84
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/NotificationUnMarshal.java
@@ -0,0 +1,69 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.std;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.onap.policy.api.LoadedPolicy;
+import org.onap.policy.api.RemovedPolicy;
+import org.onap.policy.api.UpdateType;
+import org.onap.policy.std.StdLoadedPolicy;
+import org.onap.policy.std.StdPDPNotification;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class NotificationUnMarshal {
+ private static StdPDPNotification notification;
+
+ public static StdPDPNotification notificationJSON(String json) throws Exception{
+ ObjectMapper mapper = new ObjectMapper();
+ notification = mapper.readValue(json, StdPDPNotification.class);
+ if(notification!=null){
+ if(notification.getLoadedPolicies()!=null){
+ Collection<StdLoadedPolicy> stdLoadedPolicies = new ArrayList<>();
+ for(LoadedPolicy loadedPolicy: notification.getLoadedPolicies()){
+ StdLoadedPolicy stdLoadedPolicy = (StdLoadedPolicy) loadedPolicy;
+ if(notification.getRemovedPolicies()!=null){
+ Boolean updated = false;
+ for(RemovedPolicy removedPolicy: notification.getRemovedPolicies()){
+ String regex = ".(\\d)*.xml";
+ if(removedPolicy.getPolicyName().replaceAll(regex, "").equals(stdLoadedPolicy.getPolicyName().replaceAll(regex, ""))){
+ updated = true;
+ break;
+ }
+ }
+ if(updated){
+ stdLoadedPolicy.setUpdateType(UpdateType.UPDATE);
+ }else{
+ stdLoadedPolicy.setUpdateType(UpdateType.NEW);
+ }
+ }else{
+ stdLoadedPolicy.setUpdateType(UpdateType.NEW);
+ }
+ stdLoadedPolicies.add(stdLoadedPolicy);
+ }
+ notification.setLoadedPolicies(stdLoadedPolicies);
+ }
+ }
+ return notification;
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdDecisionResponse.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdDecisionResponse.java
new file mode 100644
index 000000000..ee3f18e9f
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdDecisionResponse.java
@@ -0,0 +1,55 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+
+package org.onap.policy.std;
+
+import org.onap.policy.api.DecisionResponse;
+import org.onap.policy.api.PolicyDecision;
+
+/**
+ * Decision Response Implementation Class.
+ *
+ * @version 0.1
+ */
+public class StdDecisionResponse implements DecisionResponse {
+
+ private PolicyDecision decision = PolicyDecision.DENY;
+ private String details;
+
+ @Override
+ public PolicyDecision getDecision() {
+ return decision;
+ }
+
+ @Override
+ public String getDetails() {
+ return details;
+ }
+
+ public void setDecision(PolicyDecision decision){
+ this.decision = decision;
+ }
+
+ public void setDetails(String details) {
+ this.details = details;
+ }
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdDictionaryResponse.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdDictionaryResponse.java
new file mode 100644
index 000000000..9e0f93d23
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdDictionaryResponse.java
@@ -0,0 +1,73 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.std;
+
+import java.util.Map;
+
+import javax.json.JsonObject;
+
+import org.onap.policy.api.DictionaryResponse;
+
+public class StdDictionaryResponse implements DictionaryResponse {
+ private String dictionaryMessage;
+ private JsonObject dictionaryJson;
+ private Map<String,String> dictionaryData;
+ private int responseCode;
+
+ @Override
+ public String getResponseMessage() {
+ return dictionaryMessage;
+ }
+
+ @Override
+ public JsonObject getDictionaryJson() {
+ return dictionaryJson;
+ }
+
+ @Override
+ public Map<String, String> getDictionaryData() {
+ return dictionaryData;
+ }
+
+ @Override
+ public int getResponseCode() {
+ return responseCode;
+ }
+
+ public void setResponseMessage(String dictionaryMessage) {
+ this.dictionaryMessage = dictionaryMessage;
+ }
+
+ public void setDictionaryJson(JsonObject dictionaryJson) {
+ this.dictionaryJson = dictionaryJson;
+ }
+
+ public void setDictionaryData(Map<String, String> dictionaryData) {
+ this.dictionaryData = dictionaryData;
+ }
+
+ public void setResponseCode(int responseCode) {
+ this.responseCode = responseCode;
+ }
+
+
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdMetricsResponse.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdMetricsResponse.java
new file mode 100644
index 000000000..539863d60
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdMetricsResponse.java
@@ -0,0 +1,78 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.std;
+
+import org.onap.policy.api.MetricsResponse;
+
+public class StdMetricsResponse implements MetricsResponse {
+ private String responseMessage;
+ private int pdpMetrics;
+ private int papMetrics;
+ private int metricsTotal;
+ private int responseCode;
+
+ @Override
+ public String getResponseMessage() {
+ return responseMessage;
+ }
+
+ @Override
+ public int getResponseCode() {
+ return responseCode;
+ }
+
+ @Override
+ public int getPapMetrics() {
+ return papMetrics;
+ }
+
+ @Override
+ public int getPdpMetrics() {
+ return pdpMetrics;
+ }
+
+ @Override
+ public int getMetricsTotal() {
+ metricsTotal = papMetrics + pdpMetrics;
+ return metricsTotal;
+ }
+
+ public void setResponseMessage(String responseMessage) {
+ this.responseMessage = responseMessage;
+ }
+
+ public void setPdpMetrics(int pdpMetrics) {
+ this.pdpMetrics = pdpMetrics;
+ }
+
+ public void setPapMetrics(int papMetrics) {
+ this.papMetrics = papMetrics;
+ }
+
+ public void setMetricsTotal(int metricsTotal) {
+ this.metricsTotal = metricsTotal;
+ }
+
+ public void setResponseCode(int responseCode) {
+ this.responseCode = responseCode;
+ }
+
+} \ No newline at end of file
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyChangeResponse.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyChangeResponse.java
new file mode 100644
index 000000000..240a53c3d
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyChangeResponse.java
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.std;
+
+import org.onap.policy.api.PolicyChangeResponse;
+
+public class StdPolicyChangeResponse implements PolicyChangeResponse{
+ private String responseMessage = null;
+ private int responseCode;
+
+ @Override
+ public String getResponseMessage() {
+ return responseMessage;
+ }
+
+ @Override
+ public int getResponseCode() {
+ return responseCode;
+ }
+
+ public void setResponseMessage(String responseMessage){
+ this.responseMessage = responseMessage;
+ }
+
+ public void setResponseCode(int responseCode){
+ this.responseCode = responseCode;
+ }
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyConfig.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyConfig.java
new file mode 100644
index 000000000..8a9b0a0b4
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyConfig.java
@@ -0,0 +1,168 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+
+package org.onap.policy.std;
+
+import java.util.Map;
+import java.util.Properties;
+
+import javax.json.JsonObject;
+
+import org.onap.policy.api.PolicyConfig;
+import org.onap.policy.api.PolicyConfigStatus;
+import org.onap.policy.api.PolicyType;
+import org.w3c.dom.Document;
+
+/**
+ * PolicyConfig Implementation.
+ *
+ * @version 0.3
+ *
+ */
+
+public class StdPolicyConfig implements PolicyConfig{
+ private PolicyType policyType;
+ private Properties properties;
+ private JsonObject jsonObject;
+ private Document document;
+ private String other;
+ private PolicyConfigStatus policyConfigStatus;
+ private String configStatus;
+ private String policyName;
+ private String policyVersion;
+ private Map<String,String> matchingConditions;
+ private Map<String,String> responseAttributes;
+
+ @Override
+ public PolicyType getType() {
+ return policyType;
+ }
+
+ @Override
+ public Properties toProperties() {
+ return properties;
+ }
+
+ @Override
+ public JsonObject toJSON() {
+ return jsonObject;
+ }
+
+ @Override
+ public Document toXML() {
+ return document;
+ }
+
+ @Override
+ public String toOther() {
+ return other;
+ }
+
+ @Override
+ public PolicyConfigStatus getPolicyConfigStatus() {
+ return policyConfigStatus;
+ }
+
+ @Override
+ public String getPolicyConfigMessage() {
+ return configStatus;
+ }
+
+ @Override
+ public String getPolicyName() {
+ if(policyName!=null && policyName.contains(".xml")){
+ return (policyName.substring(0, policyName.substring(0, policyName.lastIndexOf(".")).lastIndexOf(".")));
+ }
+ return policyName;
+ }
+
+ @Override
+ public String getPolicyVersion() {
+ return policyVersion;
+ }
+
+ @Override
+ public Map<String,String> getMatchingConditions(){
+ return matchingConditions;
+ }
+
+ @Override
+ public Map<String,String> getResponseAttributes(){
+ return responseAttributes;
+ }
+
+ public void setPolicyType(PolicyType policyType) {
+ this.policyType = policyType;
+ }
+
+ public void setPolicyName(String policyName) {
+ this.policyName = policyName;
+ }
+
+ public void setPolicyVersion(String policyVersion) {
+ this.policyVersion = policyVersion;
+ }
+
+ public void setProperties(Properties properties) {
+ this.properties = properties;
+ }
+
+ public void setJsonObject(JsonObject jsonObject) {
+ this.jsonObject = jsonObject;
+ }
+
+ public void setDocument(Document document) {
+ this.document = document;
+ }
+
+ public void setOther(String other) {
+ this.other = other;
+ }
+
+ public void setConfigStatus(String configStatus) {
+ this.configStatus = configStatus;
+ }
+
+ public void setPolicyConfigStatus(PolicyConfigStatus policyConfigStatus) {
+ this.policyConfigStatus = policyConfigStatus;
+ }
+
+ public void setConfigStatus(String configStatus, PolicyConfigStatus policyConfigStatus) {
+ this.configStatus = configStatus;
+ this.policyConfigStatus = policyConfigStatus;
+ }
+
+ public void setMatchingConditions(Map<String,String> matchingConditions){
+ this.matchingConditions = matchingConditions;
+ }
+
+ public void setResponseAttributes(Map<String,String> responseAttributes){
+ this.responseAttributes = responseAttributes;
+ }
+
+ @Override
+ public String toString() {
+ return "PolicyConfig [ policyConfigStatus=" + policyConfigStatus + ", policyConfigMessage=" + configStatus + ", policyName=" + policyName +
+ ""
+ + "]";
+ }
+
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyEngine.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyEngine.java
new file mode 100644
index 000000000..608bb8de0
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyEngine.java
@@ -0,0 +1,1254 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+
+package org.onap.policy.std;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Base64;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.UUID;
+
+import javax.json.Json;
+import javax.json.JsonObject;
+import javax.json.JsonReader;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.onap.policy.api.AttributeType;
+import org.onap.policy.api.ConfigRequestParameters;
+import org.onap.policy.api.DecisionRequestParameters;
+import org.onap.policy.api.DecisionResponse;
+import org.onap.policy.api.DeletePolicyParameters;
+import org.onap.policy.api.DictionaryParameters;
+import org.onap.policy.api.DictionaryResponse;
+import org.onap.policy.api.EventRequestParameters;
+import org.onap.policy.api.ImportParameters;
+import org.onap.policy.api.MetricsRequestParameters;
+import org.onap.policy.api.MetricsResponse;
+import org.onap.policy.api.NotificationHandler;
+import org.onap.policy.api.NotificationScheme;
+import org.onap.policy.api.PDPNotification;
+import org.onap.policy.api.PolicyChangeResponse;
+import org.onap.policy.api.PolicyClass;
+import org.onap.policy.api.PolicyConfig;
+import org.onap.policy.api.PolicyConfigException;
+import org.onap.policy.api.PolicyConfigType;
+import org.onap.policy.api.PolicyDecisionException;
+import org.onap.policy.api.PolicyEngineException;
+import org.onap.policy.api.PolicyEventException;
+import org.onap.policy.api.PolicyException;
+import org.onap.policy.api.PolicyParameters;
+import org.onap.policy.api.PolicyResponse;
+import org.onap.policy.api.PolicyType;
+import org.onap.policy.api.PushPolicyParameters;
+import org.onap.policy.common.logging.flexlogger.FlexLogger;
+import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.models.APIDictionaryResponse;
+import org.onap.policy.models.APIPolicyConfigResponse;
+import org.onap.policy.utils.AAFEnvironment;
+import org.onap.policy.utils.PolicyUtils;
+import org.onap.policy.xacml.api.XACMLErrorConstants;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.web.client.HttpClientErrorException;
+import org.springframework.web.client.RestTemplate;
+import org.xml.sax.InputSource;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+/**
+ * PolicyEngine Implementation class
+ *
+ * @version 1.0
+ */
+public class StdPolicyEngine {
+ private static final String ERROR_AUTH_GET_PERM = "You are not allowed to Make this Request. Please contact PolicyAdmin to give access to: ";
+ private static final String DEFAULT_NOTIFICATION = "websocket";
+
+ private String propertyFilePath = null;
+ private String clientEncoding = null;
+ private String contentType = null;
+ private static List<String> pdps = null;
+ private static String environment= null;
+ private static String userName = null;
+ private static String pass = null;
+ private static List<String> encoding = null;
+ private static boolean junit = false;
+ private List<String> pdpDefault = null;
+ private List<String> typeDefault = null;
+ private List<String> notificationType = new ArrayList<String>();
+ private List<String> notificationURLList = new ArrayList<String>();
+ private NotificationScheme scheme = null;
+ private NotificationHandler handler = null;
+ private AutoClientUEB uebClientThread = null;
+ private Thread registerUEBThread = null;
+ private boolean uebThread = false;
+ private AutoClientDMAAP dmaapClientThread = null;
+ private Thread registerDMAAPThread = null;
+ private boolean dmaapThread = false;
+ private String topic = null;
+ private String apiKey = null;
+ private String apiSecret = null;
+
+ private static final String UNIQUEID = UUID.randomUUID ().toString ();
+ private static final Logger LOGGER = FlexLogger.getLogger(StdPolicyConfig.class.getName());
+
+ /*
+ * Taking the Property file even if it null.
+ */
+ public StdPolicyEngine(String propertyFilePath, String clientKey) throws PolicyEngineException {
+ setProperty(propertyFilePath, clientKey);
+ }
+
+ /*
+ * Taking the Notification Constructor.
+ */
+ public StdPolicyEngine(String propertyFilePath,
+ NotificationScheme scheme,
+ NotificationHandler handler) throws PolicyEngineException {
+ setProperty(propertyFilePath, null);
+ this.scheme = scheme;
+ this.handler = handler;
+ if ((!"ueb".equals(notificationType.get(0)))||(!"dmaap".equals(notificationType.get(0)))){
+ AutoClientEnd.setAuto(scheme, handler);
+ }
+ notification(scheme, handler);
+ }
+
+ /*
+ * Taking the Notification Constructor.
+ */
+ public StdPolicyEngine(String propertyFilePath, NotificationScheme scheme) throws PolicyEngineException {
+ setProperty(propertyFilePath, null);
+ this.scheme = scheme;
+ setScheme(scheme);
+ }
+
+ /*
+ * sendEvent API Implementation
+ */
+ public Collection<PolicyResponse> sendEvent(Map<String, String> eventAttributes, UUID requestID) throws PolicyEventException {
+ return sendEventImpl(eventAttributes, requestID);
+ }
+
+ /*
+ * sendEvent API Implementation for eventRequestParameters
+ */
+ public Collection<PolicyResponse> sendEvent(EventRequestParameters eventRequestParameters) throws PolicyEventException{
+ if(eventRequestParameters==null){
+ String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No event Request Parameters Given. ";
+ LOGGER.error(message);
+ throw new PolicyEventException(message);
+ }
+ return sendEventImpl(eventRequestParameters.getEventAttributes(), eventRequestParameters.getRequestID());
+ }
+
+ /*
+ * getConfig using configRequestParameters Implementation
+ */
+ public Collection<PolicyConfig> getConfig(ConfigRequestParameters configRequestParameters) throws PolicyConfigException{
+ return getConfigImpl(configRequestParameters);
+ }
+
+ /*
+ * listPolicies using configRequestParameters Implementation
+ */
+ public Collection<String> listConfig(ConfigRequestParameters listPolicyRequestParameters) throws PolicyConfigException{
+ return listConfigImpl(listPolicyRequestParameters);
+ }
+
+ /*
+ * getDecision using the decision Attributes.
+ */
+ public DecisionResponse getDecision(String onapComponentName, Map<String, String> decisionAttributes, UUID requestID) throws PolicyDecisionException {
+ return getDecisionImpl(onapComponentName, decisionAttributes, requestID);
+ }
+
+ /*
+ * getDecision Using decisionRequestParameters.
+ */
+ public DecisionResponse getDecision(DecisionRequestParameters decisionRequestParameters) throws PolicyDecisionException{
+ if(decisionRequestParameters==null){
+ String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Decision Request Parameters Given. ";
+ LOGGER.error(message);
+ throw new PolicyDecisionException(message);
+ }
+ return getDecisionImpl(decisionRequestParameters.getONAPComponentName(), decisionRequestParameters.getDecisionAttributes(), decisionRequestParameters.getRequestID());
+ }
+
+ /*
+ * getMetrics using metricsRequestParameters
+ */
+ public MetricsResponse getMetrics(MetricsRequestParameters parameters) throws PolicyException{
+ return getMetricsImpl(parameters);
+ }
+
+ public MetricsResponse getMetricsImpl(MetricsRequestParameters parameters) throws PolicyException{
+ StdMetricsResponse response = new StdMetricsResponse();
+ String resource = "getMetrics";
+ String body = new String();
+
+ // Create the Request
+ try {
+ if (parameters!=null) {
+ body = PolicyUtils.objectToJsonString(parameters);
+ }
+ } catch (JsonProcessingException e) {
+ String message = XACMLErrorConstants.ERROR_SCHEMA_INVALID + e;
+ LOGGER.error(message);
+ throw new PolicyException(message, e);
+ }
+ // Get Response.
+ try {
+ ResponseEntity<String> result = callNewPDP(resource, HttpMethod.GET, body, String.class);
+ // Process response
+ response.setResponseMessage(result.getBody());
+ response.setResponseCode(result.getStatusCode().value());
+ } catch (PolicyException exception) {
+ if(exception.getCause()!=null && exception.getCause() instanceof HttpClientErrorException){
+ LOGGER.error(exception);
+ HttpClientErrorException ex = (HttpClientErrorException) exception.getCause();
+ response.setResponseCode(ex.getRawStatusCode());
+ response.setResponseMessage(exception.getMessage());
+ return response;
+ }else{
+ String message = XACMLErrorConstants.ERROR_SYSTEM_ERROR+ "Error while processing results. please check logs.";
+ LOGGER.error(message, exception);
+ throw new PolicyException(message, exception);
+ }
+ }
+ return response;
+ }
+
+ /*
+ * PushPolicy using pushPolicyParameters.
+ */
+ public PolicyChangeResponse pushPolicy(PushPolicyParameters pushPolicyParameters) throws PolicyException{
+ return pushPolicyImpl(pushPolicyParameters);
+ }
+
+ public PolicyChangeResponse pushPolicyImpl(PushPolicyParameters pushPolicyParameters) throws PolicyException{
+ StdPolicyChangeResponse response = new StdPolicyChangeResponse();
+ String resource= "pushPolicy";
+ String body = new String();
+ // Create Request.
+ try {
+ body = PolicyUtils.objectToJsonString(pushPolicyParameters);
+ } catch (JsonProcessingException e) {
+ String message = XACMLErrorConstants.ERROR_SCHEMA_INVALID + e;
+ LOGGER.error(message);
+ throw new PolicyException(message, e);
+ }
+ // Get Response.
+ try {
+ ResponseEntity<String> result = callNewPDP(resource, HttpMethod.PUT, body, String.class);
+ // Process response
+ response.setResponseMessage(result.getBody());
+ response.setResponseCode(result.getStatusCode().value());
+ } catch (PolicyException exception) {
+ return processException(exception);
+ }
+ return response;
+ }
+
+ /*
+ * Delete a Policy using deletePolicyParameters
+ */
+ public PolicyChangeResponse deletePolicy(DeletePolicyParameters parameters) throws PolicyException {
+ return deletePolicyImpl(parameters);
+ }
+
+ public PolicyChangeResponse deletePolicyImpl(DeletePolicyParameters parameters) throws PolicyException {
+ StdPolicyChangeResponse response = new StdPolicyChangeResponse();
+ String resource= "deletePolicy";
+ String body = new String();
+ // Create Request.
+ try {
+ body = PolicyUtils.objectToJsonString(parameters);
+ } catch (JsonProcessingException e) {
+ String message = XACMLErrorConstants.ERROR_SCHEMA_INVALID + e;
+ LOGGER.error(message);
+ throw new PolicyException(message, e);
+ }
+ // Get Response.
+ try {
+ ResponseEntity<String> result = callNewPDP(resource, HttpMethod.DELETE, body, String.class);
+ // Process response
+ response.setResponseMessage(result.getBody());
+ response.setResponseCode(result.getStatusCode().value());
+ } catch (PolicyException exception) {
+ return processException(exception);
+ }
+ return response;
+ }
+
+ /*
+ * getDictionaryItem Using dictionaryParameters
+ */
+ public DictionaryResponse getDictionaryItem(DictionaryParameters parameters) throws PolicyException {
+ return getDictionaryItemImpl(parameters);
+ }
+
+ public DictionaryResponse getDictionaryItemImpl(DictionaryParameters parameters) throws PolicyException{
+ StdDictionaryResponse response = new StdDictionaryResponse();
+ String resource="getDictionaryItems";
+ String body = "{}";
+ // Create Request.
+ try {
+ body = PolicyUtils.objectToJsonString(parameters);
+ } catch (JsonProcessingException e) {
+ String message = XACMLErrorConstants.ERROR_SCHEMA_INVALID + e;
+ LOGGER.error(message);
+ throw new PolicyException(message, e);
+ }
+ // Get Response.
+ try {
+ ResponseEntity<APIDictionaryResponse> result = callNewPDP(resource, HttpMethod.POST, body, APIDictionaryResponse.class);
+ // Process response
+ response = dictionaryResult(result.getBody());
+ } catch (Exception exception) {
+ if(exception.getCause().getMessage().contains("401")){
+ String message = XACMLErrorConstants.ERROR_PERMISSIONS + ERROR_AUTH_GET_PERM + resource;
+ LOGGER.error(message);
+ response.setResponseMessage(message);
+ response.setResponseCode(401);
+ return response;
+ }if(exception.getCause().getMessage().contains("400")){
+ String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid Data is given.";
+ response.setResponseMessage(message);
+ response.setResponseCode(400);
+ return response;
+ }
+ String message = XACMLErrorConstants.ERROR_PERMISSIONS+ "Unable to get valid Response from PDP(s) " + pdps;
+ LOGGER.error(message, exception);
+ response.setResponseMessage(message);
+ response.setResponseCode(500);
+ return response;
+ }
+ return response;
+ }
+
+ @SuppressWarnings("unchecked")
+ private StdDictionaryResponse dictionaryResult(APIDictionaryResponse body) {
+ StdDictionaryResponse response = new StdDictionaryResponse();
+ response.setResponseCode(body.getResponseCode());
+ response.setResponseMessage(body.getResponseMessage());
+ response.setDictionaryData((Map<String, String>) body.getDictionaryData());
+ if(body.getDictionaryJson()!=null){
+ Gson objGson = new GsonBuilder().create();
+ String mapToJson = objGson.toJson(body.getDictionaryJson());
+ JsonReader jsonReader = Json.createReader(new StringReader(mapToJson));
+ JsonObject object = jsonReader.readObject();
+ jsonReader.close();
+ response.setDictionaryJson(object);
+ }
+ return response;
+ }
+
+ /*
+ * createDictinaryItem Using dictionaryParameters.
+ */
+ public PolicyChangeResponse createDictionaryItem(DictionaryParameters parameters) throws PolicyException{
+ return createUpdateDictionaryItemImpl(parameters, false);
+ }
+
+ /*
+ * updateDictinaryItem Using dictionaryParameters.
+ */
+ public PolicyChangeResponse updateDictionaryItem(DictionaryParameters parameters) throws PolicyException{
+ return createUpdateDictionaryItemImpl(parameters, true);
+ }
+
+ public PolicyChangeResponse createUpdateDictionaryItemImpl(DictionaryParameters parameters, boolean updateFlag) throws PolicyException{
+ StdPolicyChangeResponse response = new StdPolicyChangeResponse();
+ String resource = "createDictionaryItem";
+ if(updateFlag){
+ resource = "updateDictionaryItem";
+ }
+ String body = new String();
+ // Create Request.
+ try {
+ body = PolicyUtils.objectToJsonString(parameters);
+ } catch (JsonProcessingException e) {
+ String message = XACMLErrorConstants.ERROR_SCHEMA_INVALID + e;
+ LOGGER.error(message);
+ throw new PolicyException(message, e);
+ }
+ // Get Response.
+ try {
+ ResponseEntity<String> result = callNewPDP(resource, HttpMethod.PUT, body, String.class);
+ // Process response
+ response.setResponseMessage(result.getBody());
+ response.setResponseCode(result.getStatusCode().value());
+ } catch (PolicyException exception) {
+ return processException(exception);
+ }
+ return response;
+ }
+
+ /*
+ * PolicyEngine Import
+ */
+ public PolicyChangeResponse policyEngineImport(ImportParameters importParameters) throws PolicyException {
+ return policyEngineImportImpl(importParameters);
+ }
+
+ public PolicyChangeResponse policyEngineImportImpl(ImportParameters importParameters) throws PolicyException {
+ StdPolicyChangeResponse response = new StdPolicyChangeResponse();
+ String resource= "policyEngineImport";
+ LinkedMultiValueMap<String, Object> parameters = new LinkedMultiValueMap<String, Object>();
+ // Create Request.
+ try {
+ String body = PolicyUtils.objectToJsonString(importParameters);
+ parameters.set("importParametersJson", body);
+ parameters.set("file", new FileSystemResource(importParameters.getFilePath()));
+ } catch (Exception e) {
+ String message = XACMLErrorConstants.ERROR_SCHEMA_INVALID + e;
+ LOGGER.error(message);
+ throw new PolicyException(message, e);
+ }
+ contentType = MediaType.MULTIPART_FORM_DATA_VALUE;
+ // Get Response.
+ try {
+ ResponseEntity<String> result = callNewPDP(resource, HttpMethod.POST, parameters, String.class);
+ // Process response
+ response.setResponseMessage(result.getBody());
+ response.setResponseCode(result.getStatusCode().value());
+ } catch (PolicyException exception) {
+ return processException(exception);
+ } finally{
+ contentType = null;
+ }
+ return response;
+ }
+
+ /*
+ * createPolicy Using policyParameters.
+ */
+ public PolicyChangeResponse createPolicy(PolicyParameters policyParameters) throws PolicyException{
+ return createUpdatePolicyImpl(policyParameters, false);
+ }
+
+ /*
+ * updatePolicy using policyParameters.
+ */
+ public PolicyChangeResponse updatePolicy(PolicyParameters policyParameters) throws PolicyException{
+ return createUpdatePolicyImpl(policyParameters, true);
+ }
+
+ public PolicyChangeResponse createUpdatePolicyImpl(PolicyParameters policyParameters, boolean updateFlag) throws PolicyException{
+ StdPolicyChangeResponse response = new StdPolicyChangeResponse();
+ String resource= "createPolicy";
+ if(updateFlag){
+ resource="updatePolicy";
+ }
+ String body = new String();
+ // Create Request.
+ try {
+ body = PolicyUtils.objectToJsonString(policyParameters);
+ } catch (JsonProcessingException e) {
+ String message = XACMLErrorConstants.ERROR_SCHEMA_INVALID + e;
+ LOGGER.error(message);
+ throw new PolicyException(message, e);
+ }
+ // Get Response.
+ try {
+ ResponseEntity<String> result = callNewPDP(resource, HttpMethod.PUT, body, String.class);
+ // Process response
+ response.setResponseMessage(result.getBody());
+ response.setResponseCode(result.getStatusCode().value());
+ } catch (PolicyException exception) {
+ return processException(exception);
+ }
+ return response;
+ }
+
+ private PolicyChangeResponse processException(PolicyException exception) throws PolicyException {
+ StdPolicyChangeResponse response = new StdPolicyChangeResponse();
+ if(exception.getCause()!=null && exception.getCause() instanceof HttpClientErrorException){
+ LOGGER.error(exception);
+ HttpClientErrorException ex = (HttpClientErrorException) exception.getCause();
+ response.setResponseCode(ex.getRawStatusCode());
+ response.setResponseMessage(exception.getMessage());
+ return response;
+ }else{
+ String message = XACMLErrorConstants.ERROR_SYSTEM_ERROR+ "Error while processing results. please check logs.";
+ LOGGER.error(message, exception);
+ throw new PolicyException(message, exception);
+ }
+ }
+
+ public DecisionResponse getDecisionImpl(String onapComponentName,
+ Map<String, String> decisionAttributes,
+ UUID requestID) throws PolicyDecisionException {
+ String resource= "getDecision";
+ StdDecisionResponse response = new StdDecisionResponse();
+ String body = new String();
+ // Create Request.
+ try {
+ DecisionRequestParameters decisionRequestParameters = new DecisionRequestParameters();
+ decisionRequestParameters.setDecisionAttributes(decisionAttributes);
+ decisionRequestParameters.setONAPComponentName(onapComponentName);
+ decisionRequestParameters.setRequestID(requestID);
+ body = PolicyUtils.objectToJsonString(decisionRequestParameters);
+ } catch (JsonProcessingException e) {
+ String message = XACMLErrorConstants.ERROR_SCHEMA_INVALID + e;
+ LOGGER.error(message);
+ throw new PolicyDecisionException(message, e);
+ }
+ // Get Response.
+ try {
+ ResponseEntity<StdDecisionResponse> result = callNewPDP(resource, HttpMethod.POST, body, StdDecisionResponse.class);
+ // Process response
+ response = result.getBody();
+ } catch (Exception exception) {
+ if(exception.getCause().getMessage().contains("401")){
+ String message = XACMLErrorConstants.ERROR_PERMISSIONS + ERROR_AUTH_GET_PERM + resource;
+ LOGGER.error(message);
+ throw new PolicyDecisionException(message, exception);
+ }if(exception.getCause().getMessage().contains("400")){
+ String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid Data is given.";
+ LOGGER.error(message);
+ throw new PolicyDecisionException(message, exception);
+ }
+ String message = XACMLErrorConstants.ERROR_PERMISSIONS+ "Unable to get valid Response from PDP(s) " + pdps;
+ LOGGER.error(message, exception);
+ throw new PolicyDecisionException(message, exception);
+ }
+ return response;
+ }
+
+ public Collection<PolicyConfig> getConfigImpl(ConfigRequestParameters configRequestParameters) throws PolicyConfigException{
+ String resource= "getConfig";
+ ArrayList<PolicyConfig> response = new ArrayList<>();
+ String body = new String();
+ // Create Request.
+ try {
+ body = PolicyUtils.objectToJsonString(configRequestParameters);
+ } catch (JsonProcessingException e) {
+ String message = XACMLErrorConstants.ERROR_SCHEMA_INVALID + e;
+ LOGGER.error(message);
+ throw new PolicyConfigException(message, e);
+ }
+ // Get Response.
+ try {
+ ResponseEntity<APIPolicyConfigResponse[]> result = callNewPDP(resource, HttpMethod.POST, body, APIPolicyConfigResponse[].class);
+ // Process Response
+ response = configResult(result.getBody());
+ } catch (Exception exception) {
+ if(exception.getCause().getMessage().contains("401")){
+ String message = XACMLErrorConstants.ERROR_PERMISSIONS + ERROR_AUTH_GET_PERM + resource;
+ LOGGER.error(message);
+ throw new PolicyConfigException(message, exception);
+ }if(exception.getCause().getMessage().contains("400")){
+ String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid Data is given.";
+ LOGGER.error(message);
+ throw new PolicyConfigException(message, exception);
+ }
+ String message = XACMLErrorConstants.ERROR_PROCESS_FLOW+ "Unable to get valid Response from PDP(s) " + pdps;
+ LOGGER.error(message, exception);
+ throw new PolicyConfigException(message, exception);
+ }
+ return response;
+ }
+
+ private ArrayList<PolicyConfig> configResult(APIPolicyConfigResponse[] response) throws PolicyConfigException {
+ ArrayList<PolicyConfig> result = new ArrayList<>();
+ if(response!=null && response.length>0){
+ for(APIPolicyConfigResponse policyConfigResponse: response){
+ StdPolicyConfig policyConfig = new StdPolicyConfig();
+ policyConfig.setConfigStatus(policyConfigResponse.getPolicyConfigMessage());
+ policyConfig.setMatchingConditions(policyConfigResponse.getMatchingConditions());
+ policyConfig.setPolicyConfigStatus(policyConfigResponse.getPolicyConfigStatus());
+ policyConfig.setPolicyName(policyConfigResponse.getPolicyName());
+ policyConfig.setPolicyType(policyConfigResponse.getType());
+ policyConfig.setPolicyVersion(policyConfigResponse.getPolicyVersion());
+ policyConfig.setResponseAttributes(policyConfigResponse.getResponseAttributes());
+ setMatches(policyConfig.getMatchingConditions());
+ if(policyConfigResponse.getType()!=null){
+ try {
+ switch (policyConfigResponse.getType()) {
+ case JSON:
+ JsonReader jsonReader = Json.createReader(new StringReader(policyConfigResponse.getConfig()));
+ JsonObject object = jsonReader.readObject();
+ jsonReader.close();
+ policyConfig.setJsonObject(object);
+ break;
+ case OTHER:
+ policyConfig.setOther(policyConfigResponse.getConfig());
+ break;
+ case PROPERTIES:
+ Properties props = new Properties();
+ props.putAll(policyConfigResponse.getProperty());
+ policyConfig.setProperties(props);
+ break;
+ case XML:
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder;
+ builder = factory.newDocumentBuilder();
+ policyConfig.setDocument(builder.parse(new InputSource(new StringReader(policyConfigResponse.getConfig()))));
+ break;
+ }
+ } catch (Exception e) {
+ LOGGER.error(XACMLErrorConstants.ERROR_SCHEMA_INVALID+ e);
+ throw new PolicyConfigException(XACMLErrorConstants.ERROR_SCHEMA_INVALID+ "Unable to parse the config", e);
+ }
+ }
+ result.add(policyConfig);
+ }
+ }
+ return result;
+ }
+
+ private void setMatches(Map<String, String> matchingConditions) {
+ Matches match = new Matches();
+ HashMap<String, String> configAttributes = new HashMap<>();
+ try{
+ for(String key: matchingConditions.keySet()){
+ if(key.equalsIgnoreCase("ONAPName")){
+ match.setOnapName(matchingConditions.get(key));
+ }else if(key.equalsIgnoreCase("ConfigName")){
+ match.setConfigName(matchingConditions.get(key));
+ }else{
+ configAttributes.put(key, matchingConditions.get(key));
+ }
+ }
+ if(!configAttributes.isEmpty()){
+ match.setConfigAttributes(configAttributes);
+ }
+ MatchStore.storeMatch(match);
+ }catch(Exception e){
+ LOGGER.info("StoreMatch failed for Onap:"
+ + match.getOnapName() + " Config: "
+ + match.getConfigName());
+ }
+ }
+
+ /*
+ * Generic Rest Client to call PDP services.
+ */
+ private <T> ResponseEntity<T> callNewPDP(String resource,
+ HttpMethod method, Object body, Class<T> responseType) throws PolicyException{
+ RestTemplate restTemplate = new RestTemplate();
+ HttpEntity<?> requestEntity = new HttpEntity<>(body, getHeaders());
+ ResponseEntity<T> result = null;
+ HttpClientErrorException exception = null;
+ int pdpsCount = 0;
+ while(pdpsCount < pdps.size()){
+ try{
+ result = restTemplate.exchange(pdps.get(0)+"/api/" + resource, method, requestEntity, responseType);
+ }catch(HttpClientErrorException e){
+ LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + pdps.get(0), e);
+ exception = e;
+ }catch(Exception e){
+ LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + pdps.get(0), e);
+ exception = new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, e.getMessage());
+ }
+ if(result == null){
+ Collections.rotate(pdps, -1);
+ Collections.rotate(encoding, -1);
+ pdpsCount++;
+ }else{
+ break;
+ }
+ }
+ if(exception != null && exception.getStatusCode()!=null){
+ if(exception.getStatusCode().equals(HttpStatus.UNAUTHORIZED)){
+ String message = XACMLErrorConstants.ERROR_PERMISSIONS +":"+exception.getStatusCode()+":" +ERROR_AUTH_GET_PERM + resource;
+ LOGGER.error(message);
+ throw new PolicyException(message, exception);
+ }
+ if(exception.getStatusCode().equals(HttpStatus.BAD_REQUEST)){
+ String message = XACMLErrorConstants.ERROR_DATA_ISSUE + ":"+exception.getStatusCode()+":" + exception.getResponseBodyAsString();
+ LOGGER.error(message);
+ throw new PolicyException(message, exception);
+ }
+ if(exception.getStatusCode().equals(HttpStatus.NOT_FOUND)){
+ String message = XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while connecting to " + pdps + exception;
+ LOGGER.error(message);
+ throw new PolicyException(message, exception);
+ }
+ String message = XACMLErrorConstants.ERROR_PROCESS_FLOW + ":"+exception.getStatusCode()+":" + exception.getResponseBodyAsString();
+ LOGGER.error(message);
+ throw new PolicyException(message, exception);
+ }
+ return result;
+ }
+
+ private HttpHeaders getHeaders() {
+ HttpHeaders headers = new HttpHeaders();
+ headers.set("ClientAuth", "Basic " + clientEncoding);
+ headers.set("Authorization", "Basic " + encoding.get(0));
+ if(contentType!=null){
+ headers.set("Content-Type", contentType.toString());
+ }else{
+ headers.set("Content-Type", MediaType.APPLICATION_JSON_VALUE);
+ }
+ headers.set("Environment", environment);
+ return headers;
+ }
+
+ private void setClientEncoding() {
+ Base64.Encoder encoder = Base64.getEncoder();
+ clientEncoding = encoder.encodeToString((userName+":"+pass).getBytes(StandardCharsets.UTF_8));
+ }
+
+ public Collection<String> listConfigImpl(ConfigRequestParameters listRequestParameters) throws PolicyConfigException{
+ Collection<String> policyList = new ArrayList<>();
+ if (junit){
+ policyList.add("Policy Name: listConfigTest");
+ return policyList;
+ }
+ Collection<PolicyConfig> policyConfig = getConfigImpl(listRequestParameters);
+ for(PolicyConfig policy : policyConfig){
+ if(policy.getPolicyConfigMessage()!=null && policy.getPolicyConfigMessage().contains("PE300")){
+ policyList.add(policy.getPolicyConfigMessage());
+ } else {
+ policyList.add("Policy Name: " + policy.getPolicyName());
+ }
+ }
+ return policyList;
+ }
+
+ public Collection<PolicyResponse> sendEventImpl(Map<String, String> eventAttributes, UUID requestID) throws PolicyEventException {
+ String resource= "sendEvent";
+ ArrayList<PolicyResponse> response = new ArrayList<PolicyResponse>();
+ String body = new String();
+ // Create Request.
+ try {
+ // Long way here, can be shortened and will be done.
+ EventRequestParameters eventRequestParameters = new EventRequestParameters();
+ eventRequestParameters.setEventAttributes(eventAttributes);
+ eventRequestParameters.setRequestID(requestID);
+ body = PolicyUtils.objectToJsonString(eventRequestParameters);
+ } catch (JsonProcessingException e) {
+ String message = XACMLErrorConstants.ERROR_SCHEMA_INVALID + e;
+ LOGGER.error(message);
+ throw new PolicyEventException(message, e);
+ }
+ // Get Response.
+ try {
+ ResponseEntity<StdPolicyResponse[]> result = callNewPDP(resource, HttpMethod.POST, body, StdPolicyResponse[].class);
+ // Process Response
+ response = eventResult(result.getBody());
+ } catch (Exception exception) {
+ if(exception.getCause().getMessage().contains("401")){
+ String message = XACMLErrorConstants.ERROR_PERMISSIONS + ERROR_AUTH_GET_PERM + resource;
+ LOGGER.error(message);
+ throw new PolicyEventException(message, exception);
+ }if(exception.getCause().getMessage().contains("400")){
+ String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid Data is given.";
+ LOGGER.error(message);
+ throw new PolicyEventException(message, exception);
+ }
+ String message = XACMLErrorConstants.ERROR_PERMISSIONS+ "Unable to get valid Response from PDP(s) " + pdps;
+ LOGGER.error(message, exception);
+ throw new PolicyEventException(message, exception);
+ }
+ return response;
+ }
+
+ private ArrayList<PolicyResponse> eventResult(StdPolicyResponse[] response) throws PolicyEventException{
+ ArrayList<PolicyResponse> eventResult = new ArrayList<>();
+ if(response!=null && response.length>0){
+ for(StdPolicyResponse policyConfigResponse: response){
+ eventResult.add(policyConfigResponse);
+ }
+ }
+ return eventResult;
+ }
+
+ private void setProperty(String propertyFilePath, String clientKey)
+ throws PolicyEngineException {
+ this.propertyFilePath = propertyFilePath;
+ if (this.propertyFilePath == null) {
+ throw new PolicyEngineException(XACMLErrorConstants.ERROR_DATA_ISSUE + "Error NO PropertyFile Path provided");
+ } else {
+ // Adding logic for remote Properties file.
+ Properties prop = new Properties();
+ if (propertyFilePath.startsWith("http")) {
+ URL configURL;
+ try {
+ configURL = new URL(propertyFilePath);
+ URLConnection connection = null;
+ connection = configURL.openConnection();
+ prop.load(connection.getInputStream());
+ } catch (IOException e) {
+ LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e);
+ throw new PolicyEngineException(XACMLErrorConstants.ERROR_DATA_ISSUE + "Maformed property URL "+ e.getMessage());
+ }
+ } else {
+ Path file = Paths.get(propertyFilePath);
+ if (Files.notExists(file)) {
+ throw new PolicyEngineException(XACMLErrorConstants.ERROR_DATA_ISSUE + "File doesn't exist in the specified Path " + file.toString());
+ }
+ if (file.toString().endsWith(".properties")) {
+ InputStream in;
+ prop = new Properties();
+ try {
+ in = new FileInputStream(file.toFile());
+ prop.load(in);
+ } catch (IOException e) {
+ LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e);
+ throw new PolicyEngineException(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Cannot Load the Properties file", e);
+ }
+ } else {
+ LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Not a .properties file " + propertyFilePath);
+ throw new PolicyEngineException(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Not a .properties file");
+ }
+ }
+ // UEB and DMAAP Settings
+ String check_type = prop.getProperty("NOTIFICATION_TYPE");
+ String serverList = prop.getProperty("NOTIFICATION_SERVERS");
+ topic = prop.getProperty("NOTIFICATION_TOPIC");
+ apiKey = prop.getProperty("UEB_API_KEY");
+ apiSecret = prop.getProperty("UEB_API_SECRET");
+
+ if(check_type==null) {
+ notificationType.add(DEFAULT_NOTIFICATION);
+ LOGGER.info("Properties file doesn't have the NOTIFICATION_TYPE parameter system will use defualt websockets");
+ }else{
+ check_type = check_type.trim();
+ if(check_type.contains(",")) {
+ typeDefault = new ArrayList<String>(Arrays.asList(prop.getProperty("NOTIFICATION_TYPE").split(",")));
+ notificationType = typeDefault;
+ } else {
+ notificationType = new ArrayList<>();
+ notificationType.add(check_type);
+ }
+ }
+ if(serverList==null) {
+ notificationType.clear();
+ notificationType.add(DEFAULT_NOTIFICATION);
+ LOGGER.info("Properties file doesn't have the NOTIFICATION_SERVERS parameter system will use defualt websockets");
+ }else{
+ serverList = serverList.trim();
+ if(serverList.contains(",")) {
+ notificationURLList = new ArrayList<String>(Arrays.asList(serverList.split(",")));
+ } else {
+ notificationURLList = new ArrayList<>();
+ notificationURLList.add(serverList);
+ }
+ }
+
+ if(topic!=null) {
+ topic = topic.trim();
+ } else {
+ LOGGER.error("Properties file doesn't have the NOTIFICATION_TOPIC parameter.");
+ }
+
+ // Client ID Authorization Settings.
+ String clientID = prop.getProperty("CLIENT_ID");
+ if(clientKey==null){
+ clientKey = prop.getProperty("CLIENT_KEY");
+ try {
+ clientKey = PolicyUtils.decode(clientKey);
+ } catch (UnsupportedEncodingException|IllegalArgumentException e) {
+ LOGGER.error(XACMLErrorConstants.ERROR_PERMISSIONS+" Cannot Decode the given Password Proceeding with given Password!!");
+ }
+ }
+ if(clientID ==null || clientKey == null || clientID.isEmpty() || clientKey.isEmpty()){
+ LOGGER.error(XACMLErrorConstants.ERROR_PERMISSIONS+" Cannot proceed without the CLIENT_KEY and CLIENT_ID values !!");
+ throw new PolicyEngineException(XACMLErrorConstants.ERROR_PERMISSIONS+ " Cannot proceed without the CLIENT_KEY and CLIENT_ID values !!");
+ }else{
+ userName = clientID.trim();
+ pass = clientKey.trim();
+ }
+ setClientEncoding();
+ environment = prop.getProperty("ENVIRONMENT", AAFEnvironment.DEVL.toString());
+ if(environment.equalsIgnoreCase(AAFEnvironment.TEST.toString())){
+ environment = AAFEnvironment.TEST.toString();
+ }else if(environment.equalsIgnoreCase(AAFEnvironment.PROD.toString())){
+ environment = AAFEnvironment.PROD.toString();
+ }else{
+ environment = AAFEnvironment.DEVL.toString();
+ }
+ // Initializing the values.
+ pdps = new ArrayList<>();
+ encoding = new ArrayList<>();
+ // Check the Keys for PDP_URLs
+ Collection<Object> unsorted = prop.keySet();
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ List<String> sorted = new ArrayList(unsorted);
+ Collections.sort(sorted);
+ for (String propKey : sorted) {
+ if (propKey.startsWith("PDP_URL")) {
+ String check_val = prop.getProperty(propKey);
+ if (check_val == null) {
+ throw new PolicyEngineException(XACMLErrorConstants.ERROR_DATA_ISSUE + "Properties file doesn't have the PDP_URL parameter");
+ }
+ if (check_val.contains(";")) {
+ pdpDefault = new ArrayList<String>(Arrays.asList(check_val.split("\\s*;\\s*")));
+ int pdpCount = 0;
+ while (pdpCount < pdpDefault.size()) {
+ String pdpVal = pdpDefault.get(pdpCount);
+ readPDPParam(pdpVal);
+ pdpCount++;
+ }
+ } else {
+ readPDPParam(check_val);
+ }
+ }
+ }
+ if (pdps == null || pdps.isEmpty()) {
+ LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Cannot Proceed without PDP_URLs");
+ throw new PolicyEngineException(XACMLErrorConstants.ERROR_DATA_ISSUE + "Cannot Proceed without PDP_URLs");
+ }
+
+ // Get JUNIT property from properties file when running tests
+ String junit = prop.getProperty("JUNIT");
+ if(junit == null || junit.isEmpty()){
+ LOGGER.info("No JUNIT property provided, this will not be executed as a test.");
+ }else{
+ if(junit.equalsIgnoreCase("test")){
+ StdPolicyEngine.junit = true;
+ } else {
+ StdPolicyEngine.junit = false;
+ }
+ }
+ }
+ }
+
+ /*
+ * Read the PDP_URL parameter
+ */
+ private void readPDPParam(String pdpVal) throws PolicyEngineException{
+ if(pdpVal.contains(",")){
+ List<String> pdpValues = new ArrayList<String>(Arrays.asList(pdpVal.split("\\s*,\\s*")));
+ if(pdpValues.size()==3){
+ // 0 - PDPURL
+ pdps.add(pdpValues.get(0));
+ // 1:2 will be UserID:Password
+ String userID = pdpValues.get(1);
+ String pass = pdpValues.get(2);
+ Base64.Encoder encoder = Base64.getEncoder();
+ encoding.add(encoder.encodeToString((userID+":"+pass).getBytes(StandardCharsets.UTF_8)));
+ }else{
+ LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "No Credentials to send Request: " + pdpValues);
+ throw new PolicyEngineException(XACMLErrorConstants.ERROR_DATA_ISSUE + "No enough Credentials to send Request. " + pdpValues);
+ }
+ }else{
+ LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "PDP value is improper/missing required values: " + pdpVal);
+ throw new PolicyEngineException(XACMLErrorConstants.ERROR_DATA_ISSUE + "PDP value is improper/missing required values.");
+ }
+ }
+ /*
+ * Allowing changes to the scheme and Handler.
+ */
+ public void notification(NotificationScheme scheme, NotificationHandler handler) {
+ this.scheme = scheme;
+ this.handler = handler;
+ LOGGER.debug("Scheme is : " + scheme.toString());
+ LOGGER.debug("Handler is : " + handler.getClass().getName());
+
+ if (notificationType.get(0).equals("ueb")){
+ if (this.uebThread) {
+ uebClientThread.setAuto(scheme, handler);
+ this.uebThread = registerUEBThread.isAlive();
+ }
+ } else if (notificationType.get(0).equals("dmaap")){
+ if (this.dmaapThread) {
+ dmaapClientThread.setAuto(scheme, handler);
+ this.dmaapThread = registerDMAAPThread.isAlive();
+ }
+ } else {
+ AutoClientEnd.setAuto(scheme, handler);
+ }
+
+ if(junit){
+ return;
+ }
+
+ if(pdps!=null){
+ if (notificationType.get(0).equals("ueb") && !this.uebThread){
+ this.uebClientThread = new AutoClientUEB(pdps.get(0), notificationURLList, apiKey, apiSecret);
+ this.uebClientThread.setAuto(scheme, handler);
+ this.registerUEBThread = new Thread(this.uebClientThread);
+ this.registerUEBThread.start();
+ this.uebThread = true;
+ }else if (notificationType.get(0).equals("dmaap") && !this.dmaapThread){
+ this.dmaapClientThread = new AutoClientDMAAP(notificationURLList,topic,userName,pass);
+ this.dmaapClientThread.setAuto(scheme, handler);
+ this.registerDMAAPThread = new Thread(this.dmaapClientThread);
+ this.registerDMAAPThread.start();
+ this.dmaapThread = true;
+ }else{
+ if(pdps.get(0)!=null){
+ if(AutoClientEnd.getURL()==null){
+ AutoClientEnd.start(pdps.get(0));
+ }else {
+ AutoClientEnd.stop();
+ AutoClientEnd.start(pdps.get(0));
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ * Gets the Notification if one exists. Used only for Manual Polling
+ * purposes.
+ */
+ public PDPNotification getNotification(){
+ //Check if there is proper scheme..
+ PDPNotification notification = null;
+ if(this.scheme.equals(NotificationScheme.MANUAL_ALL_NOTIFICATIONS) || this.scheme.equals(NotificationScheme.MANUAL_NOTIFICATIONS)) {
+ if (notificationType.get(0).equals("ueb")){
+ ManualClientEndUEB.start(pdps.get(0), notificationURLList, UNIQUEID);
+ notification = ManualClientEndUEB.result(scheme);
+ }else if (notificationType.get(0).equals("dmaap")){
+ ManualClientEndDMAAP.start(notificationURLList, topic, UNIQUEID, userName, pass);
+ notification = ManualClientEndDMAAP.result(scheme);
+ }else{
+ ManualClientEnd.start(pdps.get(0));
+ LOGGER.debug("manual notification requested.. : " + scheme.toString());
+ notification = ManualClientEnd.result(scheme);
+ }
+ if (notification == null){
+ LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "No Notification yet..");
+ return null;
+ } else {
+ return notification;
+ }
+ }else {
+ return null;
+ }
+ }
+
+ /*
+ * Setting the Scheme.
+ */
+ public void setScheme(NotificationScheme scheme) {
+ this.scheme = scheme;
+ if (notificationType.get(0).equals("ueb")){
+ AutoClientUEB.setScheme(this.scheme);
+ if (this.scheme.equals(NotificationScheme.MANUAL_ALL_NOTIFICATIONS)){
+ ManualClientEndUEB.createTopic(pdps.get(0), UNIQUEID, notificationURLList);
+ }
+ }else if (notificationType.get(0).equals("dmaap")){
+ AutoClientDMAAP.setScheme(this.scheme);
+ if (this.scheme.equals(NotificationScheme.MANUAL_ALL_NOTIFICATIONS)){
+ ManualClientEndDMAAP.createTopic(topic, UNIQUEID, notificationURLList, userName, pass);
+ }
+ }else{
+ AutoClientEnd.setScheme(this.scheme);
+ }
+ }
+
+ /*
+ * Returns the Scheme
+ */
+ public NotificationScheme getScheme() {
+ return this.scheme;
+ }
+
+ /*
+ * Returns the NotificationHandler
+ */
+ public NotificationHandler getNotificationHandler() {
+ return this.handler;
+ }
+
+ /*
+ * Stop the Notification Service if its running.
+ */
+ public void stopNotification() {
+ if (this.scheme != null && this.handler != null) {
+ if (this.scheme.equals(NotificationScheme.AUTO_ALL_NOTIFICATIONS)
+ || this.scheme
+ .equals(NotificationScheme.AUTO_NOTIFICATIONS)) {
+ LOGGER.info("Clear Notification called.. ");
+ if (notificationType.get(0).equals("ueb")){
+ this.uebClientThread.terminate();
+ this.uebThread = false;
+ }else if (notificationType.get(0).equals("dmaap")){
+ this.dmaapClientThread.terminate();
+ this.dmaapThread = false;
+ }else{
+ AutoClientEnd.stop();
+ }
+ }
+ }
+ }
+
+ /*
+ * Push a policy to the PDP API implementation
+ */
+ public String pushPolicy(String policyScope, String policyName, String policyType, String pdpGroup, UUID requestID) throws PolicyException {
+ PushPolicyParameters pushPolicyParameters = new PushPolicyParameters();
+ if(policyScope==null|| policyScope.trim().isEmpty()){
+ String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Scope given.";
+ LOGGER.error(message);
+ throw new PolicyException(message);
+ }
+ if(policyName==null|| policyName.trim().isEmpty()){
+ String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Name given.";
+ LOGGER.error(message);
+ throw new PolicyException(message);
+ }
+ pushPolicyParameters.setPolicyName(policyScope+"."+policyName);
+ pushPolicyParameters.setPolicyType(policyType);
+ pushPolicyParameters.setPdpGroup(pdpGroup);
+ pushPolicyParameters.setRequestID(requestID);
+ return pushPolicyImpl(pushPolicyParameters).getResponseMessage();
+ }
+
+ public String createUpdateConfigPolicy(String policyName, String policyDescription, String onapName, String configName,
+ Map<String, String> configAttributes, String configType, String body, String policyScope, UUID requestID,
+ String riskLevel, String riskType, String guard, String ttlDate, boolean updateFlag) throws PolicyException {
+ return createUpdateConfigPolicyImpl(policyName, policyDescription, onapName, configName,
+ configAttributes, configType, body, policyScope, requestID,
+ riskLevel, riskType, guard, ttlDate, updateFlag);
+ }
+
+ /*
+ * Create Config Policy API Implementation
+ */
+ public String createUpdateConfigPolicyImpl(String policyName, String policyDescription, String onapName, String configName,
+ Map<String, String> configAttributes, String configType, String body, String policyScope, UUID requestID,
+ String riskLevel, String riskType, String guard, String ttlDate, boolean updateFlag) throws PolicyException {
+ PolicyParameters policyParameters = new PolicyParameters();
+ policyParameters.setPolicyClass(PolicyClass.Config);
+ policyParameters.setPolicyConfigType(PolicyConfigType.Base);
+ if(policyScope==null|| policyScope.trim().isEmpty()){
+ String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Scope given.";
+ LOGGER.error(message);
+ throw new PolicyException(message);
+ }
+ if(policyName==null|| policyName.trim().isEmpty()){
+ String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Name given.";
+ LOGGER.error(message);
+ throw new PolicyException(message);
+ }
+ policyParameters.setPolicyName(policyScope+"."+policyName);
+ policyParameters.setPolicyDescription(policyDescription);
+ policyParameters.setOnapName(onapName);
+ policyParameters.setConfigName(configName);
+ Map<AttributeType, Map<String, String>> attributes = new HashMap<AttributeType, Map<String, String>>();
+ attributes.put(AttributeType.MATCHING, configAttributes);
+ policyParameters.setAttributes(attributes);
+ policyParameters.setConfigBodyType(PolicyType.valueOf(configType));
+ policyParameters.setConfigBody(body);
+ policyParameters.setRequestID(requestID);
+ policyParameters.setRiskLevel(riskLevel);
+ policyParameters.setRiskType(riskType);
+ policyParameters.setGuard(Boolean.parseBoolean(guard));
+ try {
+ policyParameters.setTtlDate(new SimpleDateFormat("dd-MM-yyyy").parse(ttlDate));
+ } catch (ParseException e) {
+ LOGGER.warn("Error Parsing date given " + ttlDate);
+ policyParameters.setTtlDate(null);
+ }
+ return createUpdatePolicyImpl(policyParameters, updateFlag).getResponseMessage();
+ }
+
+ public String createUpdateConfigFirewallPolicy(String policyName, JsonObject firewallJson, String policyScope, UUID requestID,
+ String riskLevel, String riskType, String guard, String ttlDate, boolean updateFlag) throws PolicyException {
+ return createUpdateConfigFirewallPolicyImpl(policyName, firewallJson, policyScope, requestID,
+ riskLevel, riskType, guard, ttlDate, updateFlag);
+ }
+
+ /*
+ * Create Update Config Firewall Policy API implementation
+ */
+ public String createUpdateConfigFirewallPolicyImpl(String policyName, JsonObject firewallJson, String policyScope, UUID requestID,
+ String riskLevel, String riskType, String guard, String ttlDate, boolean updateFlag) throws PolicyException {
+ PolicyParameters policyParameters = new PolicyParameters();
+ policyParameters.setPolicyClass(PolicyClass.Config);
+ policyParameters.setPolicyConfigType(PolicyConfigType.Firewall);
+ if(policyScope==null|| policyScope.trim().isEmpty()){
+ String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Scope given.";
+ LOGGER.error(message);
+ throw new PolicyException(message);
+ }
+ if(policyName==null|| policyName.trim().isEmpty()){
+ String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Name given.";
+ LOGGER.error(message);
+ throw new PolicyException(message);
+ }
+ policyParameters.setPolicyName(policyScope+"."+policyName);
+ policyParameters.setConfigBody(firewallJson.toString());
+ policyParameters.setRequestID(requestID);
+ policyParameters.setRiskLevel(riskLevel);
+ policyParameters.setRiskType(riskType);
+ policyParameters.setGuard(Boolean.parseBoolean(guard));
+ try {
+ policyParameters.setTtlDate(new SimpleDateFormat("dd-MM-yyyy").parse(ttlDate));
+ } catch (NullPointerException | ParseException e) {
+ LOGGER.warn("Error Parsing date given " + ttlDate);
+ policyParameters.setTtlDate(null);
+ }
+ return createUpdatePolicyImpl(policyParameters, updateFlag).getResponseMessage();
+ }
+
+ public void setClientKey(String clientKey){
+ if(clientKey!=null && !clientKey.isEmpty()){
+ StdPolicyEngine.pass = clientKey;
+ setClientEncoding();
+ }
+ }
+ /*
+ * Get the Environment.
+ */
+ public static String getEnvironment() {
+ return environment;
+ }
+ /*
+ * Rotate the PDP list upon WEBsocket Failures
+ */
+ public static void rotatePDPList() {
+ Collections.rotate(pdps, -1);
+ Collections.rotate(encoding, -1);
+ }
+ /*
+ * Get the latest PDP
+ */
+ public static String getPDPURL() {
+ return pdps.get(0);
+ }
+} \ No newline at end of file
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyResponse.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyResponse.java
new file mode 100644
index 000000000..3ab57f2be
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyResponse.java
@@ -0,0 +1,98 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+
+package org.onap.policy.std;
+
+import java.util.Map;
+
+import org.onap.policy.api.PolicyResponse;
+import org.onap.policy.api.PolicyResponseStatus;
+
+/**
+ * PolicyResponse Implementation class.
+ *
+ * @version 0.1
+ *
+ */
+public class StdPolicyResponse implements PolicyResponse{
+ private PolicyResponseStatus policyResponseStatus;
+ private Map<String,String> actionAdvised;
+ private Map<String,String> actionTaken;
+ private Map<String,String> requestAttributes;
+ private String policyResponseMessage;
+
+ @Override
+ public PolicyResponseStatus getPolicyResponseStatus() {
+ return policyResponseStatus;
+ }
+
+ @Override
+ public Map<String, String> getActionAdvised() {
+ return actionAdvised;
+ }
+
+ @Override
+ public Map<String, String> getActionTaken() {
+ return actionTaken;
+ }
+
+ @Override
+ public Map<String, String> getRequestAttributes() {
+ return requestAttributes;
+ }
+
+ @Override
+ public String getPolicyResponseMessage() {
+ return policyResponseMessage;
+ }
+
+ public void setPolicyResponseStatus(PolicyResponseStatus policyResponseStatus) {
+ this.policyResponseStatus = policyResponseStatus;
+ }
+
+ public void setActionAdvised(Map<String, String> actionAdvised) {
+ this.actionAdvised = actionAdvised;
+ }
+
+ public void setActionTaken(Map<String, String> actionTaken) {
+ this.actionTaken = actionTaken;
+ }
+
+ public void setRequestAttributes(Map<String, String> requestAttributes) {
+ this.requestAttributes = requestAttributes;
+ }
+
+ public void setPolicyResponseMessage(String policyResponseMessage) {
+ this.policyResponseMessage = policyResponseMessage;
+ }
+
+ public void setPolicyResponseStatus(String policyResponseMessage, PolicyResponseStatus policyResponseStatus) {
+ this.policyResponseMessage = policyResponseMessage;
+ this.policyResponseStatus = policyResponseStatus;
+ }
+
+ @Override
+ public String toString() {
+ return "PolicyResponse [ policyResponseStatus=" + policyResponseStatus + ", policyResponseMessage=" + policyResponseMessage + ", " +
+ ""
+ + "]";
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdStatus.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdStatus.java
new file mode 100644
index 000000000..798cbde37
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/StdStatus.java
@@ -0,0 +1,235 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+
+package org.onap.policy.std;
+
+import java.util.Map;
+import java.util.Properties;
+
+import javax.json.JsonObject;
+
+import org.onap.policy.api.DecisionResponse;
+import org.onap.policy.api.PolicyConfig;
+import org.onap.policy.api.PolicyConfigStatus;
+import org.onap.policy.api.PolicyDecision;
+import org.onap.policy.api.PolicyResponse;
+import org.onap.policy.api.PolicyResponseStatus;
+import org.onap.policy.api.PolicyType;
+import org.w3c.dom.Document;
+
+public class StdStatus extends StdPolicyResponse implements PolicyConfig, PolicyResponse, DecisionResponse{
+ private PolicyType policyType;
+ private Properties properties;
+ private JsonObject jsonObject;
+ private Document document;
+ private String other;
+ private PolicyConfigStatus policyConfigStatus;
+ private String configStatus;
+ private PolicyResponseStatus policyResponseStatus;
+ private Map<String,String> actionAdvised;
+ private Map<String,String> actionTaken;
+ private Map<String,String> requestAttributes;
+ private String policyResponseMessage;
+ private String policyName;
+ private String policyVersion;
+ private Map<String,String> matchingConditions;
+ private Map<String,String> responseAttributes;
+ private PolicyDecision policyDecision;
+ private String details;
+
+ public void setStatus(String message, PolicyResponseStatus policyResponseStatus, PolicyConfigStatus policyConfigStatus) {
+ this.configStatus = message;
+ this.policyResponseMessage = message;
+ this.policyResponseStatus = policyResponseStatus;
+ this.policyConfigStatus = policyConfigStatus;
+ }
+ @Override
+ public PolicyResponseStatus getPolicyResponseStatus() {
+ return policyResponseStatus;
+ }
+
+ @Override
+ public Map<String, String> getActionAdvised() {
+ return actionAdvised;
+ }
+
+ @Override
+ public Map<String, String> getActionTaken() {
+ return actionTaken;
+ }
+
+ @Override
+ public Map<String, String> getRequestAttributes() {
+ return requestAttributes;
+ }
+
+ @Override
+ public String getPolicyResponseMessage() {
+ return policyResponseMessage;
+ }
+
+ public void setPolicyResponseStatus(PolicyResponseStatus policyResponseStatus) {
+ this.policyResponseStatus = policyResponseStatus;
+ }
+
+ public void setActionAdvised(Map<String, String> actionAdvised) {
+ this.actionAdvised = actionAdvised;
+ }
+
+ public void setActionTaken(Map<String, String> actionTaken) {
+ this.actionTaken = actionTaken;
+ }
+
+ public void setRequestAttributes(Map<String, String> requestAttributes) {
+ this.requestAttributes = requestAttributes;
+ }
+
+ public void setPolicyResponseMessage(String policyResponseMessage) {
+ this.policyResponseMessage = policyResponseMessage;
+ }
+
+ public void setPolicyResponseStatus(String policyResponseMessage, PolicyResponseStatus policyResponseStatus) {
+ this.policyResponseMessage = policyResponseMessage;
+ this.policyResponseStatus = policyResponseStatus;
+ }
+
+ @Override
+ public PolicyType getType() {
+ return policyType;
+ }
+
+ @Override
+ public Properties toProperties() {
+ return properties;
+ }
+
+ @Override
+ public JsonObject toJSON() {
+ return jsonObject;
+ }
+
+ @Override
+ public Document toXML() {
+ return document;
+ }
+
+ @Override
+ public PolicyConfigStatus getPolicyConfigStatus() {
+ return policyConfigStatus;
+ }
+
+ @Override
+ public String getPolicyConfigMessage() {
+ return configStatus;
+ }
+
+ @Override
+ public String getPolicyName() {
+ if(policyName!=null && policyName.contains(".xml")){
+ return (policyName.substring(0, policyName.substring(0, policyName.lastIndexOf(".")).lastIndexOf(".")));
+ }
+ return policyName;
+ }
+
+ @Override
+ public String getPolicyVersion() {
+ return policyVersion;
+ }
+
+ @Override
+ public Map<String,String> getMatchingConditions(){
+ return matchingConditions;
+ }
+
+ @Override
+ public Map<String,String> getResponseAttributes(){
+ return responseAttributes;
+ }
+
+ public void setPolicyType(PolicyType policyType) {
+ this.policyType = policyType;
+ }
+
+ public void setProperties(Properties properties) {
+ this.properties = properties;
+ }
+
+ public void setJsonObject(JsonObject jsonObject) {
+ this.jsonObject = jsonObject;
+ }
+
+ public void setDocument(Document document) {
+ this.document = document;
+ }
+
+ public void setConfigStatus(String configStatus) {
+ this.configStatus = configStatus;
+ }
+
+ public void setPolicyName(String policyName) {
+ this.policyName = policyName;
+ }
+
+ public void setPolicyVersion(String policyVersion) {
+ this.policyVersion = policyVersion;
+ }
+
+ public void setMatchingConditions(Map<String,String> matchingConditions){
+ this.matchingConditions = matchingConditions;
+ }
+
+ public void setResposneAttributes(Map<String,String> responseAttributes){
+ this.responseAttributes = responseAttributes;
+ }
+
+ public void setPolicyConfigStatus(PolicyConfigStatus policyConfigStatus) {
+ this.policyConfigStatus = policyConfigStatus;
+ }
+
+ public void setPolicyConfigStatus(String configStatus, PolicyConfigStatus policyConfigStatus) {
+ this.policyConfigStatus = policyConfigStatus;
+ this.configStatus = configStatus;
+ }
+
+ @Override
+ public String toOther() {
+ return other;
+ }
+
+ public void setOther(String other) {
+ this.other = other;
+ }
+
+ public PolicyDecision getDecision() {
+ return policyDecision;
+ }
+ public void setDecision(PolicyDecision policyDecision) {
+ this.policyDecision = policyDecision;
+ }
+
+ public void setDetails(String details){
+ this.details = details;
+ }
+
+ public String getDetails(){
+ return details;
+ }
+}
diff --git a/PolicyEngineAPI/src/main/java/org/onap/policy/std/package-info.java b/PolicyEngineAPI/src/main/java/org/onap/policy/std/package-info.java
new file mode 100644
index 000000000..5d6bbcb92
--- /dev/null
+++ b/PolicyEngineAPI/src/main/java/org/onap/policy/std/package-info.java
@@ -0,0 +1,27 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PolicyEngineAPI
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.std;
+/**
+ * Provides standard implementations of the interfaces from the {@link org.onap.policy.api} package.
+ *
+ * @version 0.3
+ *
+ */