From 073cc188efe9abb4c010cf674e34e2cf46ef1c52 Mon Sep 17 00:00:00 2001 From: Guo Ruijing Date: Mon, 31 Jul 2017 08:47:35 +0000 Subject: [POLICY-73] replace openecomp for policy-engine Change-Id: I54072f6bcd388c0e05562614ee89b4ae7ad67004 Signed-off-by: Guo Ruijing Signed-off-by: Pamela Dragosh --- .../java/org/onap/policy/api/AttributeType.java | 78 ++ .../onap/policy/api/ConfigRequestParameters.java | 148 +++ .../onap/policy/api/DecisionRequestParameters.java | 104 ++ .../java/org/onap/policy/api/DecisionResponse.java | 43 + .../org/onap/policy/api/DeletePolicyCondition.java | 65 + .../onap/policy/api/DeletePolicyParameters.java | 114 ++ .../org/onap/policy/api/DictionaryParameters.java | 82 ++ .../org/onap/policy/api/DictionaryResponse.java | 41 + .../java/org/onap/policy/api/DictionaryType.java | 100 ++ .../onap/policy/api/EventRequestParameters.java | 89 ++ .../java/org/onap/policy/api/ImportParameters.java | 175 +++ .../onap/policy/api/MetricsRequestParameters.java | 21 + .../java/org/onap/policy/api/MetricsResponse.java | 45 + .../org/onap/policy/api/NotificationScheme.java | 61 + .../org/onap/policy/api/PolicyChangeResponse.java | 44 + .../main/java/org/onap/policy/api/PolicyClass.java | 67 ++ .../java/org/onap/policy/api/PolicyConfig.java | 123 ++ .../org/onap/policy/api/PolicyConfigException.java | 49 + .../org/onap/policy/api/PolicyConfigStatus.java | 79 ++ .../java/org/onap/policy/api/PolicyConfigType.java | 87 ++ .../java/org/onap/policy/api/PolicyDecision.java | 68 ++ .../onap/policy/api/PolicyDecisionException.java | 50 + .../java/org/onap/policy/api/PolicyEngine.java | 602 ++++++++++ .../org/onap/policy/api/PolicyEngineException.java | 49 + .../org/onap/policy/api/PolicyEventException.java | 49 + .../java/org/onap/policy/api/PolicyException.java | 29 + .../java/org/onap/policy/api/PolicyParameters.java | 557 +++++++++ .../java/org/onap/policy/api/PolicyResponse.java | 77 ++ .../org/onap/policy/api/PolicyResponseStatus.java | 85 ++ .../main/java/org/onap/policy/api/PolicyType.java | 72 ++ .../org/onap/policy/api/PushPolicyParameters.java | 131 ++ .../java/org/onap/policy/api/RuleProvider.java | 73 ++ .../java/org/onap/policy/api/package-info.java | 36 + .../org/onap/policy/models/APIConfigResponse.java | 37 + .../onap/policy/models/APIDictionaryResponse.java | 53 + .../policy/models/APIPolicyConfigResponse.java | 91 ++ .../java/org/onap/policy/std/AutoClientDMAAP.java | 132 +++ .../java/org/onap/policy/std/AutoClientEnd.java | 248 ++++ .../java/org/onap/policy/std/AutoClientUEB.java | 178 +++ .../java/org/onap/policy/std/ManualClientEnd.java | 138 +++ .../org/onap/policy/std/ManualClientEndDMAAP.java | 107 ++ .../org/onap/policy/std/ManualClientEndUEB.java | 160 +++ .../main/java/org/onap/policy/std/MatchStore.java | 246 ++++ .../src/main/java/org/onap/policy/std/Matches.java | 48 + .../org/onap/policy/std/NotificationUnMarshal.java | 69 ++ .../org/onap/policy/std/StdDecisionResponse.java | 55 + .../org/onap/policy/std/StdDictionaryResponse.java | 73 ++ .../org/onap/policy/std/StdMetricsResponse.java | 78 ++ .../onap/policy/std/StdPolicyChangeResponse.java | 47 + .../java/org/onap/policy/std/StdPolicyConfig.java | 168 +++ .../java/org/onap/policy/std/StdPolicyEngine.java | 1254 ++++++++++++++++++++ .../org/onap/policy/std/StdPolicyResponse.java | 98 ++ .../main/java/org/onap/policy/std/StdStatus.java | 235 ++++ .../java/org/onap/policy/std/package-info.java | 27 + .../org/openecomp/policy/api/AttributeType.java | 78 -- .../policy/api/ConfigRequestParameters.java | 148 --- .../policy/api/DecisionRequestParameters.java | 104 -- .../org/openecomp/policy/api/DecisionResponse.java | 43 - .../policy/api/DeletePolicyCondition.java | 65 - .../policy/api/DeletePolicyParameters.java | 114 -- .../openecomp/policy/api/DictionaryParameters.java | 82 -- .../openecomp/policy/api/DictionaryResponse.java | 41 - .../org/openecomp/policy/api/DictionaryType.java | 100 -- .../policy/api/EventRequestParameters.java | 89 -- .../org/openecomp/policy/api/ImportParameters.java | 175 --- .../policy/api/MetricsRequestParameters.java | 21 - .../org/openecomp/policy/api/MetricsResponse.java | 45 - .../openecomp/policy/api/NotificationScheme.java | 61 - .../openecomp/policy/api/PolicyChangeResponse.java | 44 - .../java/org/openecomp/policy/api/PolicyClass.java | 67 -- .../org/openecomp/policy/api/PolicyConfig.java | 123 -- .../policy/api/PolicyConfigException.java | 49 - .../openecomp/policy/api/PolicyConfigStatus.java | 79 -- .../org/openecomp/policy/api/PolicyConfigType.java | 87 -- .../org/openecomp/policy/api/PolicyDecision.java | 68 -- .../policy/api/PolicyDecisionException.java | 50 - .../org/openecomp/policy/api/PolicyEngine.java | 602 ---------- .../policy/api/PolicyEngineException.java | 49 - .../openecomp/policy/api/PolicyEventException.java | 49 - .../org/openecomp/policy/api/PolicyException.java | 29 - .../org/openecomp/policy/api/PolicyParameters.java | 557 --------- .../org/openecomp/policy/api/PolicyResponse.java | 77 -- .../openecomp/policy/api/PolicyResponseStatus.java | 85 -- .../java/org/openecomp/policy/api/PolicyType.java | 72 -- .../openecomp/policy/api/PushPolicyParameters.java | 131 -- .../org/openecomp/policy/api/RuleProvider.java | 73 -- .../org/openecomp/policy/api/package-info.java | 36 - .../openecomp/policy/models/APIConfigResponse.java | 37 - .../policy/models/APIDictionaryResponse.java | 53 - .../policy/models/APIPolicyConfigResponse.java | 91 -- .../org/openecomp/policy/std/AutoClientDMAAP.java | 132 --- .../org/openecomp/policy/std/AutoClientEnd.java | 248 ---- .../org/openecomp/policy/std/AutoClientUEB.java | 178 --- .../org/openecomp/policy/std/ManualClientEnd.java | 138 --- .../openecomp/policy/std/ManualClientEndDMAAP.java | 107 -- .../openecomp/policy/std/ManualClientEndUEB.java | 160 --- .../java/org/openecomp/policy/std/MatchStore.java | 246 ---- .../java/org/openecomp/policy/std/Matches.java | 48 - .../policy/std/NotificationUnMarshal.java | 69 -- .../openecomp/policy/std/StdDecisionResponse.java | 55 - .../policy/std/StdDictionaryResponse.java | 73 -- .../openecomp/policy/std/StdMetricsResponse.java | 78 -- .../policy/std/StdPolicyChangeResponse.java | 47 - .../org/openecomp/policy/std/StdPolicyConfig.java | 168 --- .../org/openecomp/policy/std/StdPolicyEngine.java | 1254 -------------------- .../openecomp/policy/std/StdPolicyResponse.java | 98 -- .../java/org/openecomp/policy/std/StdStatus.java | 235 ---- .../org/openecomp/policy/std/package-info.java | 27 - 108 files changed, 7035 insertions(+), 7035 deletions(-) create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/AttributeType.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/ConfigRequestParameters.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/DecisionRequestParameters.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/DecisionResponse.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/DeletePolicyCondition.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/DeletePolicyParameters.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryParameters.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryResponse.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/DictionaryType.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/EventRequestParameters.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/ImportParameters.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/MetricsRequestParameters.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/MetricsResponse.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/NotificationScheme.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyChangeResponse.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyClass.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfig.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigException.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigStatus.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyConfigType.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyDecision.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyDecisionException.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEngine.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEngineException.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyEventException.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyException.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyParameters.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyResponse.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyResponseStatus.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PolicyType.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/PushPolicyParameters.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/RuleProvider.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/api/package-info.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/models/APIConfigResponse.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/models/APIDictionaryResponse.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/models/APIPolicyConfigResponse.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientDMAAP.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientEnd.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/AutoClientUEB.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEnd.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEndDMAAP.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/ManualClientEndUEB.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/MatchStore.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/Matches.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/NotificationUnMarshal.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/StdDecisionResponse.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/StdDictionaryResponse.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/StdMetricsResponse.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyChangeResponse.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyConfig.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyEngine.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/StdPolicyResponse.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/StdStatus.java create mode 100644 PolicyEngineAPI/src/main/java/org/onap/policy/std/package-info.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/AttributeType.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/ConfigRequestParameters.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DecisionRequestParameters.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DecisionResponse.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DeletePolicyCondition.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DeletePolicyParameters.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DictionaryParameters.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DictionaryResponse.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DictionaryType.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/EventRequestParameters.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/ImportParameters.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/MetricsRequestParameters.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/MetricsResponse.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/NotificationScheme.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyChangeResponse.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyClass.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyConfig.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyConfigException.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyConfigStatus.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyConfigType.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyDecision.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyDecisionException.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyEngine.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyEngineException.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyEventException.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyException.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyParameters.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyResponse.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyResponseStatus.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyType.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PushPolicyParameters.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/RuleProvider.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/api/package-info.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/models/APIConfigResponse.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/models/APIDictionaryResponse.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/models/APIPolicyConfigResponse.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/AutoClientDMAAP.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/AutoClientEnd.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/AutoClientUEB.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/ManualClientEnd.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/ManualClientEndDMAAP.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/ManualClientEndUEB.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/MatchStore.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/Matches.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/NotificationUnMarshal.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdDecisionResponse.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdDictionaryResponse.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdMetricsResponse.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdPolicyChangeResponse.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdPolicyConfig.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdPolicyEngine.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdPolicyResponse.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdStatus.java delete mode 100644 PolicyEngineAPI/src/main/java/org/openecomp/policy/std/package-info.java (limited to 'PolicyEngineAPI/src/main/java/org') 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 String format of Type for this AttributeType + * @return the String of the Type for this AttributeType + */ + 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; + +/** + * ConfigRequestParameters 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 configAttributes; + private UUID requestID; + private Boolean unique = false; + + /** + * Sets the PolicyName of the Config policy which needs to be retrieved. + * + * @param policyName the String 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 String 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 String 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 Map of String,String format of the configuration attributes which are required. + */ + public void setConfigAttributes(Map configAttributes){ + this.configAttributes = configAttributes; + } + + /** + * Sets the Request ID of the ONAP request. + * + * @param requestID unique UUID 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 String format of the policyName. + */ + public String getPolicyName(){ + return policyName; + } + + /** + * Gets the ONAP Component Name of the Request Parameters. + * + * @return String format of the ONAP Component Name. + */ + public String getOnapName(){ + return onapComponentName; + } + + /** + * Gets the Config name of the Request Parameters. + * + * @return String format of the Config Name. + */ + public String getConfigName(){ + return configName; + } + + /** + * Gets the Config Attributes of the Request Parameters. + * + * @return Map of String,String format of the config Attributes. + */ + public Map getConfigAttributes(){ + return configAttributes; + } + + /** + * Gets the Request ID of the Request Paramters. + * + * @return UUID 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; + +/** + * DecisionRequestParameters 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 decisionAttributes; + private UUID requestID; + + /** + * Constructor with no Parameters + */ + public DecisionRequestParameters(){ + } + + /** + * Constructor with Parameters + * + * @param onapComponentName the String format of the onapComponentName whose Decision is required. + * @param decisionAttributes the Map of String,String 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 decisionAttributes, UUID requestID){ + this.onapComponentName = onapComponentName; + this.decisionAttributes = decisionAttributes; + this.requestID = requestID; + } + + /** + * Gets the ONAPComponentName of the Decision Request Parameters. + * + * @return ONAPComponentName the String 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 String 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 Map of String,String format of the decisionAttributes that contain the ID and values. + */ + public Map getDecisionAttributes() { + return decisionAttributes; + } + /** + * Sets the Decision Attributes which contain ID and values for obtaining Decision from PDP. + * + * @param decisionAttributes the Map of String,String format of the decisionAttributes that must contain the ID and values. + */ + public void setDecisionAttributes(Map 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 String 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 String format of delete condition for this Policy + * @return the String 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; + +/** + * PushPolicyParameters 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 String of the DictionaryItemsMessage from DictionaryResponse. + * + * @return the String which consists of DictionaryItemsMessage from DictionaryResponse + */ + public String getResponseMessage(); + + /** + * Response code of type Integer which corresponds to the HTTP Response code explaining the response from Policy Engine. + * + * @return the responseCode in Integer format corresponding to the HTTP response code from Policy Engine. + */ + public int getResponseCode(); + + + /** + * Gets the JsonObject of all the Dictionary data retrieved + * + * @return the JsonObject 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 Map of String, String which consists of the Key and Value pairs for each Dictionary item retrieved. + */ + public Map 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 String format of Type for this PolicyClass + * @return the String of the Type for this PolicyClass + */ + 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; + +/** + * EventRequestParameters 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 eventAttributes; + private UUID requestID; + + /** + * Constructor with no Parameters + */ + public EventRequestParameters(){ + } + + /** + * Constructor with Parameters + * + * @param eventAttributes the Map of String,String 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 eventAttributes, UUID requestID){ + this.eventAttributes = eventAttributes; + this.requestID = requestID; + } + + /** + * Gets the eventAttributes of Event Request Parameters. + * + * @return eventAttributes the Map of String,String format of the eventAttributes that contains the event ID and values. + */ + public Map getEventAttributes() { + return eventAttributes; + } + + /** + * Sets the eventAttributes that contain the eventID and values to the Event Request Parameters. + * + * @param eventAttributes the Map of String,String format of the eventAttributes that must contain the event ID and values. + */ + public void setEventAttributes(Map 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; + + +/** + * ImportParameters 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 String format of the Service Name + * @param description the String 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 List format of the file paths for the service files + * @param importType the {@link IMPORT_TYPE} format of the Policy Service List + * @param version the String 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 String format of the Policy Service Name + */ + public String getServiceName() { + return serviceName; + } + + /** + * Sets the serviceName of the Policy Service Parameters. + * + * @param serviceName the String format of the Policy Service Name + */ + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + + /** + * Gets the Policy Import Description. + * + * @return description the String format of the Policy Import Description + */ + public String getDescription() { + return description; + } + + /** + * Sets the Description of the new Policy Import Description. + * + * @param description the String 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 List 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 List 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 enumServiceType 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 String format of the Policy Import Version + */ + public String getVersion() { + return version; + } + + /** + * Sets the policy Import Version of the new Policy Import. + * + * @param version the String 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 String of the metrics message from MetricsResponse. + * + * @return the String which consists of the metrics message from MetricsResponse + */ + public String getResponseMessage(); + + /** + * Gets the response code of type Integer which corresponds to the HTTP Response code explaining the response from Policy Engine. + * + * @return the responseCode in Integer format corresponding to the HTTP response code from Policy Engine. + */ + public int getResponseCode(); + + + /** + * Gets the Integer value of the count of policies that reside on the PAP. + * + * @return the Integer which consists of count of policies that reside on the PAP. + */ + public int getPapMetrics(); + + + /** + * Gets the Integer value of the count of policies that reside on the PDP. + * + * @return the Integer which consists of count of policies that reside on the PDP. + */ + public int getPdpMetrics(); + + + /** + * Gets the Integer value of the total count of policies. + * + * @return the Integer 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 NotificationScheme 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 String name for this NotificationScheme + * + * @return the String name for this NotificationScheme + */ + @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; + +/** + * PolicyChangeResponse 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 String format from the Policy Engine. + * + * @return the responseMessage in String format related to Response from Policy Engine. + */ + public String getResponseMessage(); + + /** + * Response code of type Integer which corresponds to the HTTP Response code explaining the response from Policy Engine. + * + * @return the responseCode in Integer 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 String format of Type for this PolicyClass + * @return the String of the Type for this PolicyClass + */ + 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 PolicyConfig + * + * @return the PolicyType associated with this PolicyConfig + */ + public PolicyType getType(); + + /** + * Gives the Properties response associated with the PolicyConfig + * + * @return the Properties associated with this PolicyConfig + */ + public Properties toProperties(); + + /** + * Gives the JsonObject response associated with the PolicyConfig + * + * @return the JsonObject result associated with PolicyConfig + */ + public JsonObject toJSON(); + + /** + * Gives the XML Document result associated with PolicyConfig + * + * @return the Document result associated with PolicyConfig + */ + public Document toXML(); + + /** + * Gives the Other String response associated with PolicyConfig + * + * @return the String result associated with PolicyConfig + */ + public String toOther(); + + /** + * Gets the {@link org.onap.policy.api.PolicyConfigStatus} associated with this PolicyConfig. + * + * @return the PolicyConfigStatus associated with this PolicyConfig + */ + public PolicyConfigStatus getPolicyConfigStatus(); + + /** + * Gets the String of the PolicyConfigMessage from PolicyConfig. + * + * @return the String which consists of PolicyConfigMessage from PolicyConfig + */ + public String getPolicyConfigMessage(); + + /** + * Gets the String of the PolicyName retrieved. + * + * @return the String which consists of Policy Name which has been retrieved. + */ + public String getPolicyName(); + + + /** + * Gets the String of the PolicyVersion retrieved. + * + * @return the String 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 Map of String, String which consists of the Matching conditions of the Policy retrieved. + */ + public Map getMatchingConditions(); + + /** + * Gets the Response Attributes of the policy retrieved. Which can hold additional information about the policy retrieved. + * + * @return Map of String, String which consists of the Response Attributes of the Policy retrieved. + */ + public Map getResponseAttributes(); + + /** + * Returns the String version of the PolicyConfig object. + * + * @return String of the PolicyConfig 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 Exception 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 PolicyConfigStatus based on String representation of PolicyConfig + * + * @param configStatus the String Configuration Status + * @return the PolicyConfigResponse with the name matching CONFIG_RETRIEVED or CONFIG_NOT_FOUND + * 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 String name for this PolicyConfigStatus + * + * @return the String name for this PolicyConfigStatus + */ + 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 String format of Type for this PolicyClass + * @return the String of the Type for this PolicyClass + */ + 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 String name for this PolicyDecision + * + * @return the String name for this PolicyDecision + */ + 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 Exception 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 String format of propertiesFilePathname + * + * @param propertiesFilePathname the String 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 String format of propertiesFilePathname + * + * @param propertiesFilePathname the String 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 String format of PropertiesFilePathname and NotificationScheme + * + * @param propertiesFilePathname the String format of the propertiesFilePathname + * @param scheme the NotificationScheme 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 String format of PropertiesFilePathname, NotificationScheme and NotificationHandler + * + * @param propertiesFilePathname the String format of the propertiesFilePathname + * @param scheme the NotificationScheme of {@link org.onap.policy.api.NotificationScheme} which defines the Notification Scheme + * @param handler the NotificationHandler 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 String which represents the Policy File Name + * + * @param policyName the String format of the PolicyFile Name whose configuration is required. + * @return Collection 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 getConfigByPolicyName(String policyName) throws PolicyConfigException { + return getConfig(setConfigRequestParameters(policyName, null, null, null, null)); + } + + /** + * Gets the configuration from the PolicyDecisionPoint(PDP) for the String which represents the Policy File Name + * + * @param policyName the String 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 Collection 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 getConfigByPolicyName(String policyName, UUID requestID) throws PolicyConfigException { + return getConfig(setConfigRequestParameters(policyName, null, null, null, requestID)); + } + + /** + * Gets the configuration from the PolicyDecisionPoint(PDP) for the String which represents the onapComponentName + * + * @param onapComponentName the String format of the onapComponentName whose configuration is required. + * @return Collection of {@link org.onap.policy.api.PolicyConfig} which has the configuration. + * @throws PolicyConfigException PolicyConfig Exception + * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead. + */ + @Deprecated + public Collection getConfig(String onapComponentName) throws PolicyConfigException { + return getConfig(setConfigRequestParameters(null, onapComponentName, null, null, null)); + } + + /** + * Gets the configuration from the PolicyDecisionPoint(PDP) for the String which represents the onapComponentName + * + * @param onapComponentName the String format of the onapComponentName whose configuration is required. + * @return Collection 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 getConfig(String onapComponentName, UUID requestID) throws PolicyConfigException { + return getConfig(setConfigRequestParameters(null, onapComponentName, null, null, requestID)); + } + + /** + * Requests the configuration of the String which represents the onapComponentName and String + * which represents the configName and returns the configuration if different Configurations exist for the + * particular onapComponentName. + * + * @param onapComponentName the String format of the onapComponentName whose configuration is required. + * @param configName the String format of the configurationName whose configuration is required. + * @return Collection of {@link org.onap.policy.api.PolicyConfig} which has the configuration. + * @throws PolicyConfigException PolicyConfig Exception + * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead. + */ + @Deprecated + public Collection getConfig(String onapComponentName, String configName) throws PolicyConfigException { + return getConfig(setConfigRequestParameters(null, onapComponentName, configName, null, null)); + } + + /** + * Requests the configuration of the String which represents the onapComponentName and String + * which represents the configName and returns the configuration if different Configurations exist for the + * particular onapComponentName. + * + * @param onapComponentName the String format of the onapComponentName whose configuration is required. + * @param configName the String 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 Collection of {@link org.onap.policy.api.PolicyConfig} which has the configuration. + * @throws PolicyConfigException PolicyConfig Exception + * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead. + */ + @Deprecated + public Collection getConfig(String onapComponentName, String configName, UUID requestID) throws PolicyConfigException { + return getConfig(setConfigRequestParameters(null, onapComponentName, configName, null, requestID)); + } + + /** + * Requests the configuration of the String which represents the onapComponentName, String + * which represents the configName and Map of String,String which has the configAttribute and returns the specific + * configuration related to the configAttributes mentioned. + * + * @param onapComponentName the String format of the onapComponentName whose configuration is required. + * @param configName the String format of the configurationName whose configuration is required. + * @param configAttributes the Map of String,String format of the configuration attributes which are required. + * @return Collection of {@link org.onap.policy.api.PolicyConfig} which has the configuration. + * @throws PolicyConfigException PolicyConfig Exception + * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead. + */ + @Deprecated + public Collection getConfig(String onapComponentName, String configName, Map configAttributes) throws PolicyConfigException{ + return getConfig(setConfigRequestParameters(null, onapComponentName, configName, configAttributes, null)); + } + + /** + * Requests the configuration of the String which represents the onapComponentName, String + * which represents the configName and Map of String,String which has the configAttribute and returns the specific + * configuration related to the configAttributes mentioned. + * + * @param onapComponentName the String format of the onapComponentName whose configuration is required. + * @param configName the String format of the configurationName whose configuration is required. + * @param configAttributes the Map of String,String 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 Collection of {@link org.onap.policy.api.PolicyConfig} which has the configuration. + * @throws PolicyConfigException PolicyConfig Exception + * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead. + */ + @Deprecated + public Collection getConfig(String onapComponentName, String configName, Map configAttributes, UUID requestID) throws PolicyConfigException{ + return getConfig(setConfigRequestParameters(null, onapComponentName, configName, configAttributes, requestID)); + } + + /** + * Requests the configuration of the ConfigRequestParameters 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 Collection of {@link org.onap.policy.api.PolicyConfig} which has the configuration. + * @throws PolicyConfigException PolicyConfig Exception + */ + public Collection getConfig(ConfigRequestParameters configRequestParameters) throws PolicyConfigException{ + return stdPolicyEngine.getConfig(configRequestParameters); + } + + /** + * Requests the list of policies based on the ConfigRequestParameters 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 Collection of String which returns the list of policies. + * @throws PolicyConfigException PolicyConfig Exception + */ + public Collection listConfig(ConfigRequestParameters listPolicyRequestParameters) throws PolicyConfigException{ + return stdPolicyEngine.listConfig(listPolicyRequestParameters); + } + + + /** + * Sends the Events specified to the PEP and returns back the PolicyResponse. + * + * @param eventAttributes the Map of String,String format of the eventAttributes that must contain the event ID and values. + * @return Collection of {@link org.onap.policy.api.PolicyResponse} which has the Response. + * @throws PolicyEventException PolicyEvent Exception + * @deprecated use {@link #sendEvent(EventRequestParameters)} Instead. + */ + @Deprecated + public Collection sendEvent(Map eventAttributes) throws PolicyEventException { + return stdPolicyEngine.sendEvent(eventAttributes, (UUID) null); + } + + /** + * Sends the Events specified to the PEP and returns back the PolicyResponse. + * + * @param eventAttributes the Map of String,String 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 Collection of {@link org.onap.policy.api.PolicyResponse} which has the Response. + * @throws PolicyEventException PolicyEvent Exception + * @deprecated use {@link #sendEvent(EventRequestParameters)} Instead. + */ + @Deprecated + public Collection sendEvent(Map 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 Collection of {@link org.onap.policy.api.PolicyResponse} which has the Response. + * @throws PolicyEventException PolicyEvent Exception + */ + public Collection 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 String format of the onapComponentName whose Decision is required. + * @param decisionAttributes the Map of String,String 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 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 String format of the onapComponentName whose Decision is required. + * @param decisionAttributes the Map of String,String 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 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 String format of the Policy Name + * @param policyDescription the String format of the Policy Description + * @param onapName the String format of the ONAP Name + * @param configName the String format of the Config Name + * @param configAttributes the List the Map Attributes that must contain the key and value. + * @param configType the String format of the Config Type + * @param body the String format of the Policy Body + * @param policyScope the String 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 String value of risk Level. + * @param riskType the String value of risk Type. + * @param guard the String value of guard. + * @param ttlDate the String value of time to live Date. + * @throws PolicyException PolicyException related to the operation. + * @return String format of response + * @deprecated use {@link #createPolicy(PolicyParameters)} Instead. + */ + @Deprecated + public String createConfigPolicy(String policyName, String policyDescription, String onapName, String configName, + Map 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 String format of the Policy Name + * @param policyDescription the String format of the Policy Description + * @param onapName the String format of the ONAP Name + * @param configName the String format of the Config Name + * @param configAttributes the List the Map Attributes that must contain the key and value. + * @param configType the String format of the Config Type + * @param body the String format of the Policy Body + * @param policyScope the String 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 String value of risk Level. + * @param riskType the String value of risk Type. + * @param guard the String value of guard. + * @param ttlDate the String value of time to live Date. + * @throws PolicyException PolicyException related to the operation. + * @return String format of response + * @deprecated use {@link #updatePolicy(PolicyParameters)} Instead. + */ + @Deprecated + public String updateConfigPolicy(String policyName, String policyDescription, String onapName, String configName, + Map 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 String format of the Policy Name + * @param firewallJson the JsonObject representation of the Firewall Rules List + * @param policyScope the String 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 String value of risk Level. + * @param riskType the String value of risk Type. + * @param guard the String value of guard. + * @param ttlDate the String value of time to live Date. + * @throws PolicyException PolicyException related to the operation. + * @return String 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 String format of the Policy Name + * @param firewallJson the JsonObject representation of the Firewall Rules List + * @param policyScope the String 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 String value of risk Level. + * @param riskType the String value of risk Type. + * @param guard the String value of guard. + * @param ttlDate the String value of time to live Date. + * @throws PolicyException PolicyException related to the operation. + * @return String 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 String value of the sub scope directory where the policy is located + * @param policyName the String format of the Policy Name being pushed. + * @param policyType the String format of the Policy Type which is being pushed. + * @param pdpGroup the String 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 String 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); + } + + /** + * setNotification allows changes to the Notification Scheme and Notification Handler + * + * @param scheme the NotificationScheme of {@link org.onap.policy.api.NotificationScheme} which defines the Notification Scheme + * @param handler the NotificationHandler 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); + } + + /** + * clearNotification shutsDown the Notification Service if the Auto Scehme Notification service is running. + */ + public void clearNotification(){ + stdPolicyEngine.stopNotification(); + } + + /** + * setNotification allows changes to the Notification Scheme + * + * @param scheme the NotificationScheme 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 PDPNotification if there is one exists. This is used for Polling Patterns. + * + * @return PDPNotification 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 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 Exception 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 Exception 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 Exception 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; + +/** + * PolicyParameters 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> attributes; + private String configBody; + private PolicyType configBodyType; + private String actionPerformer; + private String actionAttribute; + private UUID requestID; + private List dynamicRuleAlgorithmLabels; + private List dynamicRuleAlgorithmFunctions; + private List dynamicRuleAlgorithmField1; + private List dynamicRuleAlgorithmField2; + private String priority; + private RuleProvider ruleProvider; + private String controllerName; + private ArrayList 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 String format of the Policy Name + * @param policyDescription the String format of the Policy Description + * @param onapName the String format of the ONAP Name + * @param configName the String format of the Config Name + * @param attributes the Map 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 String 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> 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 String format of the Policy Name + * @param firewallJson the String 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 String format of the Policy Name + */ + public String getPolicyName() { + return policyName; + } + + /** + * Sets the policyName of the Policy Parameters. + * + * @param policyName the String format of the Policy Name + */ + public void setPolicyName(String policyName) { + this.policyName = policyName; + } + + /** + * Gets the policy Description. + * + * @return the String format of the Policy Description + */ + public String getPolicyDescription() { + return policyDescription; + } + + /** + * Sets the policy Description of the Policy Description. + * + * @param policyDescription the String format of the Policy Description + */ + public void setPolicyDescription(String policyDescription) { + this.policyDescription = policyDescription; + } + + /** + * Gets the ONAP Name value of the Policy Paramters. + * + * @return String format of the ONAP Name + */ + public String getOnapName() { + return onapName; + } + + /** + * Sets the ONAP Name field of the Policy Parameters. + * + * @param onapName the String format of the ONAP Name + */ + public void setOnapName(String onapName) { + this.onapName = onapName; + } + + /** + * Gets the Config Name value of the Policy Parameters. + * + * @return String format of the Config Name + */ + public String getConfigName() { + return configName; + } + + /** + * Sets the Config Name field of the Policy Parameters. + * + * @param configName the String format of the Config Name + */ + public void setConfigName(String configName) { + this.configName = configName; + } + + /** + * Gets the Attributes of the policy Parameters. + * + * @return List the Map Attributes that must contain the AttributeType and Map of key,value pairs corresponding to it. + */ + public Map> getAttributes() { + return attributes; + } + + /** + * Sets the Attributes of the Policy Parameters. + * + * @param attributes the Map Attributes that must contain the AttributeType and Map of key,value pairs corresponding to it. + */ + public void setAttributes(Map> 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 String format of the Policy Body + */ + public String getConfigBody() { + return configBody; + } + + /** + * Sets the configBody field of the Policy Parameters. + * + * @param configBody the String 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 PolicyType representation of the configBodyType + */ + public PolicyType getConfigBodyType() { + return configBodyType; + } + + /** + * Sets the configBodyType field of the Policy Parameters. + * + * @param configBodyType the PolicyType 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 String 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 String 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 String 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 String 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 List the Dynamic Rule Algorithm Label that must contain the Labels in order + */ + public List 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 List dynamicRuleAlgoritmLabels in order + */ + public void setDynamicRuleAlgorithmLabels( + List 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 List the Dynamic Rule Algorithm Functions that must contain the values in order + */ + public List 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 List dynamicRuleAlgorithmFunctions in order + */ + public void setDynamicRuleAlgorithmFunctions(List 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 List the Dynamic Rule Algorithm Field1 that must contain the Field1 values in order + */ + public List 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 List dynamicRuleAlgorithmField1 in order + */ + public void setDynamicRuleAlgorithmField1( + List 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 List the Dynamic Rule Algorithm Field2 that must contain the Field2 values in order + */ + public List 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 List dynamicRuleAlgorithmField2 in order + */ + public void setDynamicRuleAlgorithmField2( + List dynamicRuleAlgorithmField2) { + this.dynamicRuleAlgorithmField2 = dynamicRuleAlgorithmField2; + } + + /** + * Gets the Priority of the Policy Parameters. + * + * @return priority the String format of the Micro Services priority + */ + public String getPriority() { + return priority; + } + + /** + * Sets the Priority of the Policy Parameters. + * + * @param priority the String 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 Boolean 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 boolean value of the Guard for Config Policies + */ + public boolean getGuard(){ + return guard; + } + + /** + * Sets the riskType field of the Policy Parameters. + * + * @param riskType the String 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 String value of the riskType for Config Policies + */ + public String getRiskType(){ + return riskType; + } + + /** + * Sets the riskLevel field of the Policy Parameters. + * + * @param riskLevel the String 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 String value of the riskLevel for Config Policies + */ + public String getRiskLevel(){ + return riskLevel; + } + + /** + * Sets the TTLDate field of the Policy Parameters. + * + * @param TTLDate the Date 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 Date 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 getDependencyNames() { + return dependencyNames; + } + + /** + * Sets Dependency that your policy is dependent on. + * + * @param dependencyNames ArrayList of String(s). + */ + public void setDependencyNames(ArrayList 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 PolicyResponse. + * + * @return the PolicyResponseStatus associated with this PolicyResponse + */ + public PolicyResponseStatus getPolicyResponseStatus(); + + /** + * Gets the Map of String,String which consists of ActionAdvised in this PolicyResponse. + * If there is no ActionAdvised this method must return an empty Map. + * + * @return the Map of String,String which consists of AdviceAttributes in PolicyResponse + */ + public Map getActionAdvised(); + + /** + * Gets the Map of String,String which consists of ActionTaken in this PolicyResponse. + * If there are no ActionTaken this method must return an empty Map. + * + * @return the Map of String,String which consists of ActionTaken in PolicyResponse + */ + public Map getActionTaken(); + + /** + * Gets the Map of String,String which consists of RequestAttributes in this PolicyResponse. + * + * @return the Map of String,String which consists of RequestAttributes from PolicyResponse + */ + public Map getRequestAttributes(); + + /** + * Gets the String of the PolicyResponseMessage from PolicyResponse + * + * @return the String which consists of PolicyResponseMessage from PolicyResponse + */ + public String getPolicyResponseMessage(); + + /** + * Returns the String version of the PolicyResponse object. + * + * @return String of the PolicyResponse 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 PolicyResponseStatus based on String representation of PolicyResponse + * + * @param responseStatus the String Response Status + * @return the PolicyResponseStatus with the name matching ACTION_ADVISED or ACTION_TAKEN or NO_ACTION_REQUIRED + */ + 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 String name for this PolicyResponseStatus + * + * @return the String name for this PolicyResponseStatus + */ + 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 String format of Type for this PolicyType + * @return the String of the Type for this PolicyType + */ + 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; + +/** + * PushPolicyParameters 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 String format of the Policy Name + * @param policyType the String format of the Policy Type + * @param pdpGroup the String 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 String format of the Policy Name + */ + public String getPolicyName() { + return policyName; + } + + /** + * Sets the policyName of the Push Policy Parameters. + * + * @param policyName the String format of the Policy Name + */ + public void setPolicyName(String policyName) { + this.policyName = policyName; + } + + /** + * Gets the PolicyType of the Push Policy Parameters. + * + * @return policyType the String format of the Policy Type + */ + public String getPolicyType() { + return policyType; + } + + /** + * Sets the policyType of the Push Policy Parameters. + * + * @param policyType the String format of the Policy Type + */ + public void setPolicyType(String policyType) { + this.policyType = policyType; + } + + /** + * Gets the PDPGroup of the Push Policy Parameters. + * + * @return pdpGroup the String format of the PDPGroup + */ + public String getPdpGroup() { + return pdpGroup; + } + + /** + * Sets the PDPGroup of the Push Policy Parameters. + * + * @param pdpGroup the String 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 String format of Type for this AttributeType + * @return the String of the Type for this AttributeType + */ + 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 getMatchingConditions(); + public Map getResponseAttributes(); + public Map 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 matchingConditions; + private Map responseAttributes; + private Map 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 getProperty() { + return property; + } + public void setProperty(Map 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 getMatchingConditions(){ + return matchingConditions; + } + public void setMatchingConditions(Map matchingConditions){ + this.matchingConditions = matchingConditions; + } + public void setResponseAttributes(Map responseAttributes){ + this.responseAttributes = responseAttributes; + } + public Map 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 dmaapList = null; + private static String aafLogin = null; + private static String aafPassword = null; + public volatile boolean isRunning = false; + + + public AutoClientDMAAP(List 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 uebURLList = null; + public volatile boolean isRunning = false; + + + public AutoClientUEB(String url, List 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 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 dmaapList, String aafLogin, String aafPassword){ + ManualClientEndDMAAP.topic = topic; + publishMessage(topic, uniquID, dmaapList, aafLogin, aafPassword); + } + + + public static void start(List 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 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 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 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 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 matchStore = new HashSet<>(); + private static Logger logger = FlexLogger.getLogger(MatchStore.class.getName()); + + public static HashSet 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 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 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 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 getConfigAttributes() { + return configAttributes; + } + public void setConfigAttributes(Map 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 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 dictionaryData; + private int responseCode; + + @Override + public String getResponseMessage() { + return dictionaryMessage; + } + + @Override + public JsonObject getDictionaryJson() { + return dictionaryJson; + } + + @Override + public Map 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 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 matchingConditions; + private Map 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 getMatchingConditions(){ + return matchingConditions; + } + + @Override + public Map 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 matchingConditions){ + this.matchingConditions = matchingConditions; + } + + public void setResponseAttributes(Map 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 pdps = null; + private static String environment= null; + private static String userName = null; + private static String pass = null; + private static List encoding = null; + private static boolean junit = false; + private List pdpDefault = null; + private List typeDefault = null; + private List notificationType = new ArrayList(); + private List notificationURLList = new ArrayList(); + 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 sendEvent(Map eventAttributes, UUID requestID) throws PolicyEventException { + return sendEventImpl(eventAttributes, requestID); + } + + /* + * sendEvent API Implementation for eventRequestParameters + */ + public Collection 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 getConfig(ConfigRequestParameters configRequestParameters) throws PolicyConfigException{ + return getConfigImpl(configRequestParameters); + } + + /* + * listPolicies using configRequestParameters Implementation + */ + public Collection listConfig(ConfigRequestParameters listPolicyRequestParameters) throws PolicyConfigException{ + return listConfigImpl(listPolicyRequestParameters); + } + + /* + * getDecision using the decision Attributes. + */ + public DecisionResponse getDecision(String onapComponentName, Map 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 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 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 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 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) 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 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 parameters = new LinkedMultiValueMap(); + // 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 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 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 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 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 getConfigImpl(ConfigRequestParameters configRequestParameters) throws PolicyConfigException{ + String resource= "getConfig"; + ArrayList 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 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 configResult(APIPolicyConfigResponse[] response) throws PolicyConfigException { + ArrayList 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 matchingConditions) { + Matches match = new Matches(); + HashMap 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 ResponseEntity callNewPDP(String resource, + HttpMethod method, Object body, Class responseType) throws PolicyException{ + RestTemplate restTemplate = new RestTemplate(); + HttpEntity requestEntity = new HttpEntity<>(body, getHeaders()); + ResponseEntity 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 listConfigImpl(ConfigRequestParameters listRequestParameters) throws PolicyConfigException{ + Collection policyList = new ArrayList<>(); + if (junit){ + policyList.add("Policy Name: listConfigTest"); + return policyList; + } + Collection 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 sendEventImpl(Map eventAttributes, UUID requestID) throws PolicyEventException { + String resource= "sendEvent"; + ArrayList response = new ArrayList(); + 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 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 eventResult(StdPolicyResponse[] response) throws PolicyEventException{ + ArrayList 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(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(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 unsorted = prop.keySet(); + @SuppressWarnings({ "rawtypes", "unchecked" }) + List 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(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 pdpValues = new ArrayList(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 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 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> attributes = new HashMap>(); + 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 actionAdvised; + private Map actionTaken; + private Map requestAttributes; + private String policyResponseMessage; + + @Override + public PolicyResponseStatus getPolicyResponseStatus() { + return policyResponseStatus; + } + + @Override + public Map getActionAdvised() { + return actionAdvised; + } + + @Override + public Map getActionTaken() { + return actionTaken; + } + + @Override + public Map getRequestAttributes() { + return requestAttributes; + } + + @Override + public String getPolicyResponseMessage() { + return policyResponseMessage; + } + + public void setPolicyResponseStatus(PolicyResponseStatus policyResponseStatus) { + this.policyResponseStatus = policyResponseStatus; + } + + public void setActionAdvised(Map actionAdvised) { + this.actionAdvised = actionAdvised; + } + + public void setActionTaken(Map actionTaken) { + this.actionTaken = actionTaken; + } + + public void setRequestAttributes(Map 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 actionAdvised; + private Map actionTaken; + private Map requestAttributes; + private String policyResponseMessage; + private String policyName; + private String policyVersion; + private Map matchingConditions; + private Map 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 getActionAdvised() { + return actionAdvised; + } + + @Override + public Map getActionTaken() { + return actionTaken; + } + + @Override + public Map getRequestAttributes() { + return requestAttributes; + } + + @Override + public String getPolicyResponseMessage() { + return policyResponseMessage; + } + + public void setPolicyResponseStatus(PolicyResponseStatus policyResponseStatus) { + this.policyResponseStatus = policyResponseStatus; + } + + public void setActionAdvised(Map actionAdvised) { + this.actionAdvised = actionAdvised; + } + + public void setActionTaken(Map actionTaken) { + this.actionTaken = actionTaken; + } + + public void setRequestAttributes(Map 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 getMatchingConditions(){ + return matchingConditions; + } + + @Override + public Map 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 matchingConditions){ + this.matchingConditions = matchingConditions; + } + + public void setResposneAttributes(Map 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 + * + */ diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/AttributeType.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/AttributeType.java deleted file mode 100644 index 44cf441ca..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/AttributeType.java +++ /dev/null @@ -1,78 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import com.fasterxml.jackson.annotation.JsonCreator; - -/** - * Enumeration of the Attribute Types that is used as a part of - * {@link org.openecomp.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 String format of Type for this AttributeType - * @return the String of the Type for this AttributeType - */ - 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/openecomp/policy/api/ConfigRequestParameters.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/ConfigRequestParameters.java deleted file mode 100644 index 1830679e0..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/ConfigRequestParameters.java +++ /dev/null @@ -1,148 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import java.util.Map; -import java.util.UUID; - -/** - * ConfigRequestParameters 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 eCOMPComponentName; - private String configName; - private Map configAttributes; - private UUID requestID; - private Boolean unique = false; - - /** - * Sets the PolicyName of the Config policy which needs to be retrieved. - * - * @param policyName the String format of the PolicyFile Name whose configuration is required. - */ - public void setPolicyName(String policyName){ - this.policyName = policyName; - } - - /** - * Sets the ECOMP Component Name of the Config policy which needs to be retrieved. - * - * @param eCOMPComponentName the String format of the eCOMPComponentName whose configuration is required. - */ - public void setEcompName(String eCOMPComponentName){ - this.eCOMPComponentName = eCOMPComponentName; - } - - /** - * Sets the Config Name of the Config policy which needs to be retrieved. - * - * @param configName the String 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 Map of String,String format of the configuration attributes which are required. - */ - public void setConfigAttributes(Map configAttributes){ - this.configAttributes = configAttributes; - } - - /** - * Sets the Request ID of the ECOMP request. - * - * @param requestID unique UUID requestID which will be passed throughout the ECOMP components to correlate logging messages. - */ - public void setRequestID(UUID requestID){ - this.requestID = requestID; - } - - /** - * Gets the policyName of the Request Parameters. - * - * @return String format of the policyName. - */ - public String getPolicyName(){ - return policyName; - } - - /** - * Gets the ECOMP Component Name of the Request Parameters. - * - * @return String format of the ECOMP Component Name. - */ - public String getEcompName(){ - return eCOMPComponentName; - } - - /** - * Gets the Config name of the Request Parameters. - * - * @return String format of the Config Name. - */ - public String getConfigName(){ - return configName; - } - - /** - * Gets the Config Attributes of the Request Parameters. - * - * @return Map of String,String format of the config Attributes. - */ - public Map getConfigAttributes(){ - return configAttributes; - } - - /** - * Gets the Request ID of the Request Paramters. - * - * @return UUID 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/openecomp/policy/api/DecisionRequestParameters.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DecisionRequestParameters.java deleted file mode 100644 index dc485f7b3..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DecisionRequestParameters.java +++ /dev/null @@ -1,104 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import java.util.Map; -import java.util.UUID; - -/** - * DecisionRequestParameters 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 eCOMPComponentName; - private Map decisionAttributes; - private UUID requestID; - - /** - * Constructor with no Parameters - */ - public DecisionRequestParameters(){ - } - - /** - * Constructor with Parameters - * - * @param eCOMPComponentName the String format of the eCOMPComponentName whose Decision is required. - * @param decisionAttributes the Map of String,String format of the decisionAttributes that contain the ID and values. - * @param requestID unique request ID which will be passed throughout the ECOMP components to correlate logging messages. - */ - public DecisionRequestParameters(String eCOMPComponentName, Map decisionAttributes, UUID requestID){ - this.eCOMPComponentName = eCOMPComponentName; - this.decisionAttributes = decisionAttributes; - this.requestID = requestID; - } - - /** - * Gets the ECOMPComponentName of the Decision Request Parameters. - * - * @return ECOMPComponentName the String format of the eCOMPComponentName of the Decision Request Parameters. - */ - public String getECOMPComponentName() { - return eCOMPComponentName; - } - /** - * Sets the ECOMPComponentName of the Decision Request parameters. - * - * @param eCOMPComponentName the String format of the eCOMPComponentName whose Decision is required. - */ - public void setECOMPComponentName(String eCOMPComponentName) { - this.eCOMPComponentName = eCOMPComponentName; - } - /** - * Gets the Decision Attributes from Decision Request Parameters. - * - * @return decisionAttributes the Map of String,String format of the decisionAttributes that contain the ID and values. - */ - public Map getDecisionAttributes() { - return decisionAttributes; - } - /** - * Sets the Decision Attributes which contain ID and values for obtaining Decision from PDP. - * - * @param decisionAttributes the Map of String,String format of the decisionAttributes that must contain the ID and values. - */ - public void setDecisionAttributes(Map decisionAttributes) { - this.decisionAttributes = decisionAttributes; - } - /** - * Gets the request ID of Decision Request Parameters. - * - * @return the requestID unique request ID which will be passed throughout the ECOMP components to correlate logging messages. - */ - public UUID getRequestID() { - return requestID; - } - /** - * Sets the ReqestID of Decision Request Parameters which will be passed around ECOMP requests. - * - * @param requestID unique request ID which will be passed throughout the ECOMP components to correlate logging messages. - */ - public void setRequestID(UUID requestID) { - this.requestID = requestID; - } -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DecisionResponse.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DecisionResponse.java deleted file mode 100644 index caa9fda74..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DecisionResponse.java +++ /dev/null @@ -1,43 +0,0 @@ -/*- - * ============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.openecomp.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.openecomp.policy.api.PolicyDecision} Enumeration. - */ - public PolicyDecision getDecision(); - - /** - * Gets the details of the result. Would be required in case of Deny. - * - * @return String format of the details of Deny cause. - */ - public String getDetails(); -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DeletePolicyCondition.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DeletePolicyCondition.java deleted file mode 100644 index 4ef348c7d..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DeletePolicyCondition.java +++ /dev/null @@ -1,65 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import com.fasterxml.jackson.annotation.JsonCreator; - -/** - * Enumeration of the Policy Delete Condition that is used as a part of - * {@link org.openecomp.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 String format of delete condition for this Policy - * @return the String 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/openecomp/policy/api/DeletePolicyParameters.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DeletePolicyParameters.java deleted file mode 100644 index 3121297e1..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DeletePolicyParameters.java +++ /dev/null @@ -1,114 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import java.util.UUID; - -/** - * PushPolicyParameters 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/openecomp/policy/api/DictionaryParameters.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DictionaryParameters.java deleted file mode 100644 index cf70caf07..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DictionaryParameters.java +++ /dev/null @@ -1,82 +0,0 @@ -/*- - * ============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.openecomp.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/openecomp/policy/api/DictionaryResponse.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DictionaryResponse.java deleted file mode 100644 index dd7379871..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DictionaryResponse.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.openecomp.policy.api; - -import java.util.Map; - -import javax.json.JsonObject; - -public interface DictionaryResponse { - - /** - * Gets the String of the DictionaryItemsMessage from DictionaryResponse. - * - * @return the String which consists of DictionaryItemsMessage from DictionaryResponse - */ - public String getResponseMessage(); - - /** - * Response code of type Integer which corresponds to the HTTP Response code explaining the response from Policy Engine. - * - * @return the responseCode in Integer format corresponding to the HTTP response code from Policy Engine. - */ - public int getResponseCode(); - - - /** - * Gets the JsonObject of all the Dictionary data retrieved - * - * @return the JsonObject 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 Map of String, String which consists of the Key and Value pairs for each Dictionary item retrieved. - */ - public Map getDictionaryData(); - - - -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DictionaryType.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DictionaryType.java deleted file mode 100644 index 823a56ba9..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/DictionaryType.java +++ /dev/null @@ -1,100 +0,0 @@ -/*- - * ============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.openecomp.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 String format of Type for this PolicyClass - * @return the String of the Type for this PolicyClass - */ - 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/openecomp/policy/api/EventRequestParameters.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/EventRequestParameters.java deleted file mode 100644 index 155d9c6a5..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/EventRequestParameters.java +++ /dev/null @@ -1,89 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import java.util.Map; -import java.util.UUID; - -/** - * EventRequestParameters 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 eventAttributes; - private UUID requestID; - - /** - * Constructor with no Parameters - */ - public EventRequestParameters(){ - } - - /** - * Constructor with Parameters - * - * @param eventAttributes the Map of String,String format of the eventAttributes that contains the event ID and values. - * @param requestID unique request ID which will be passed throughout the ECOMP components to correlate logging messages. - */ - public EventRequestParameters(Map eventAttributes, UUID requestID){ - this.eventAttributes = eventAttributes; - this.requestID = requestID; - } - - /** - * Gets the eventAttributes of Event Request Parameters. - * - * @return eventAttributes the Map of String,String format of the eventAttributes that contains the event ID and values. - */ - public Map getEventAttributes() { - return eventAttributes; - } - - /** - * Sets the eventAttributes that contain the eventID and values to the Event Request Parameters. - * - * @param eventAttributes the Map of String,String format of the eventAttributes that must contain the event ID and values. - */ - public void setEventAttributes(Map eventAttributes) { - this.eventAttributes = eventAttributes; - } - - /** - * Gets the ReqestID of Event Request Parameters which will be passed around ECOMP requests. - * - * @return requestID unique request ID which will be passed throughout the ECOMP components to correlate logging messages. - */ - public UUID getRequestID() { - return requestID; - } - - /** - * Sets the ReqestID of Event Request Parameters which will be passed around ECOMP requests. - * - * @param requestID unique request ID which will be passed throughout the ECOMP components to correlate logging messages. - */ - public void setRequestID(UUID requestID) { - this.requestID = requestID; - } - -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/ImportParameters.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/ImportParameters.java deleted file mode 100644 index 882379397..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/ImportParameters.java +++ /dev/null @@ -1,175 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import java.util.UUID; - - -/** - * ImportParameters 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 String format of the Service Name - * @param description the String format of the i Description - * @param requestID unique request ID which will be passed throughout the ECOMP components to correlate logging messages. - * @param filePath the List format of the file paths for the service files - * @param importType the {@link IMPORT_TYPE} format of the Policy Service List - * @param version the String 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 String format of the Policy Service Name - */ - public String getServiceName() { - return serviceName; - } - - /** - * Sets the serviceName of the Policy Service Parameters. - * - * @param serviceName the String format of the Policy Service Name - */ - public void setServiceName(String serviceName) { - this.serviceName = serviceName; - } - - /** - * Gets the Policy Import Description. - * - * @return description the String format of the Policy Import Description - */ - public String getDescription() { - return description; - } - - /** - * Sets the Description of the new Policy Import Description. - * - * @param description the String 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 ECOMP 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 ECOMP 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 List 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 List 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 enumServiceType 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 String format of the Policy Import Version - */ - public String getVersion() { - return version; - } - - /** - * Sets the policy Import Version of the new Policy Import. - * - * @param version the String format of the Policy Import Version - */ - public void setVersion(String version) { - this.version = version; - } -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/MetricsRequestParameters.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/MetricsRequestParameters.java deleted file mode 100644 index 4c10f391f..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/MetricsRequestParameters.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.openecomp.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/openecomp/policy/api/MetricsResponse.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/MetricsResponse.java deleted file mode 100644 index d96a6dc9c..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/MetricsResponse.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.openecomp.policy.api; - -public interface MetricsResponse { - - /** - * Gets the String of the metrics message from MetricsResponse. - * - * @return the String which consists of the metrics message from MetricsResponse - */ - public String getResponseMessage(); - - /** - * Gets the response code of type Integer which corresponds to the HTTP Response code explaining the response from Policy Engine. - * - * @return the responseCode in Integer format corresponding to the HTTP response code from Policy Engine. - */ - public int getResponseCode(); - - - /** - * Gets the Integer value of the count of policies that reside on the PAP. - * - * @return the Integer which consists of count of policies that reside on the PAP. - */ - public int getPapMetrics(); - - - /** - * Gets the Integer value of the count of policies that reside on the PDP. - * - * @return the Integer which consists of count of policies that reside on the PDP. - */ - public int getPdpMetrics(); - - - /** - * Gets the Integer value of the total count of policies. - * - * @return the Integer which consists of the total count of policies. - */ - public int getMetricsTotal(); - - - -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/NotificationScheme.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/NotificationScheme.java deleted file mode 100644 index 2e88d9c38..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/NotificationScheme.java +++ /dev/null @@ -1,61 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -/** - * Enumeration of NotificationScheme 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 String name for this NotificationScheme - * - * @return the String name for this NotificationScheme - */ - @Override - public String toString(){ - return this.name; - } -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyChangeResponse.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyChangeResponse.java deleted file mode 100644 index 98bfdc2e3..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyChangeResponse.java +++ /dev/null @@ -1,44 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -/** - * PolicyChangeResponse 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 String format from the Policy Engine. - * - * @return the responseMessage in String format related to Response from Policy Engine. - */ - public String getResponseMessage(); - - /** - * Response code of type Integer which corresponds to the HTTP Response code explaining the response from Policy Engine. - * - * @return the responseCode in Integer format corresponding to the HTTP response code from Policy Engine. - */ - public int getResponseCode(); -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyClass.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyClass.java deleted file mode 100644 index 8b87f408b..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyClass.java +++ /dev/null @@ -1,67 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import com.fasterxml.jackson.annotation.JsonCreator; - -/** - * Enumeration of the Policy Types that is used as a part of - * {@link org.openecomp.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 String format of Type for this PolicyClass - * @return the String of the Type for this PolicyClass - */ - 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/openecomp/policy/api/PolicyConfig.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyConfig.java deleted file mode 100644 index 5cb7d8176..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyConfig.java +++ /dev/null @@ -1,123 +0,0 @@ -/*- - * ============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.openecomp.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.openecomp.policy.api.PolicyType} associated with PolicyConfig - * - * @return the PolicyType associated with this PolicyConfig - */ - public PolicyType getType(); - - /** - * Gives the Properties response associated with the PolicyConfig - * - * @return the Properties associated with this PolicyConfig - */ - public Properties toProperties(); - - /** - * Gives the JsonObject response associated with the PolicyConfig - * - * @return the JsonObject result associated with PolicyConfig - */ - public JsonObject toJSON(); - - /** - * Gives the XML Document result associated with PolicyConfig - * - * @return the Document result associated with PolicyConfig - */ - public Document toXML(); - - /** - * Gives the Other String response associated with PolicyConfig - * - * @return the String result associated with PolicyConfig - */ - public String toOther(); - - /** - * Gets the {@link org.openecomp.policy.api.PolicyConfigStatus} associated with this PolicyConfig. - * - * @return the PolicyConfigStatus associated with this PolicyConfig - */ - public PolicyConfigStatus getPolicyConfigStatus(); - - /** - * Gets the String of the PolicyConfigMessage from PolicyConfig. - * - * @return the String which consists of PolicyConfigMessage from PolicyConfig - */ - public String getPolicyConfigMessage(); - - /** - * Gets the String of the PolicyName retrieved. - * - * @return the String which consists of Policy Name which has been retrieved. - */ - public String getPolicyName(); - - - /** - * Gets the String of the PolicyVersion retrieved. - * - * @return the String 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 Map of String, String which consists of the Matching conditions of the Policy retrieved. - */ - public Map getMatchingConditions(); - - /** - * Gets the Response Attributes of the policy retrieved. Which can hold additional information about the policy retrieved. - * - * @return Map of String, String which consists of the Response Attributes of the Policy retrieved. - */ - public Map getResponseAttributes(); - - /** - * Returns the String version of the PolicyConfig object. - * - * @return String of the PolicyConfig Object. - */ - @Override - public String toString(); - -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyConfigException.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyConfigException.java deleted file mode 100644 index ad6948e77..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyConfigException.java +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -/** - * PolicyConfigException extends Exception to implement exceptions thrown by {@link org.openecomp.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/openecomp/policy/api/PolicyConfigStatus.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyConfigStatus.java deleted file mode 100644 index 95d890de8..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyConfigStatus.java +++ /dev/null @@ -1,79 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import com.fasterxml.jackson.annotation.JsonCreator; - -/** - * Enumeration of PolicyConfigStatus that can be returned as a part of - * {@link org.openecomp.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 PolicyConfigStatus based on String representation of PolicyConfig - * - * @param configStatus the String Configuration Status - * @return the PolicyConfigResponse with the name matching CONFIG_RETRIEVED or CONFIG_NOT_FOUND - * 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 String name for this PolicyConfigStatus - * - * @return the String name for this PolicyConfigStatus - */ - 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/openecomp/policy/api/PolicyConfigType.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyConfigType.java deleted file mode 100644 index 028696462..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyConfigType.java +++ /dev/null @@ -1,87 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import com.fasterxml.jackson.annotation.JsonCreator; - -/** - * Enumeration of the Policy Config Types that is used as a part of - * {@link org.openecomp.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 String format of Type for this PolicyClass - * @return the String of the Type for this PolicyClass - */ - 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/openecomp/policy/api/PolicyDecision.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyDecision.java deleted file mode 100644 index a6b4bd2b4..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyDecision.java +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import com.fasterxml.jackson.annotation.JsonCreator; - -/** - * Enumeration of PolicyDecision that can be returned as a part of - * {@link org.openecomp.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 String name for this PolicyDecision - * - * @return the String name for this PolicyDecision - */ - 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/openecomp/policy/api/PolicyDecisionException.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyDecisionException.java deleted file mode 100644 index 7f08fcb36..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyDecisionException.java +++ /dev/null @@ -1,50 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -/** - * PolicyDecisionException extends Exception to implement exceptions thrown by {@link org.openecomp.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/openecomp/policy/api/PolicyEngine.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyEngine.java deleted file mode 100644 index 4e2c092c1..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyEngine.java +++ /dev/null @@ -1,602 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import java.util.Collection; -import java.util.Map; -import java.util.UUID; - -import javax.json.JsonObject; - -import org.openecomp.policy.api.NotificationHandler; -import org.openecomp.policy.api.PDPNotification; -import org.openecomp.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 String format of propertiesFilePathname - * - * @param propertiesFilePathname the String 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 String format of propertiesFilePathname - * - * @param propertiesFilePathname the String 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 String format of PropertiesFilePathname and NotificationScheme - * - * @param propertiesFilePathname the String format of the propertiesFilePathname - * @param scheme the NotificationScheme of {@link org.openecomp.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 String format of PropertiesFilePathname, NotificationScheme and NotificationHandler - * - * @param propertiesFilePathname the String format of the propertiesFilePathname - * @param scheme the NotificationScheme of {@link org.openecomp.policy.api.NotificationScheme} which defines the Notification Scheme - * @param handler the NotificationHandler of {@link org.openecomp.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 String which represents the Policy File Name - * - * @param policyName the String format of the PolicyFile Name whose configuration is required. - * @return Collection of {@link org.openecomp.policy.api.PolicyConfig} which has the configuration. - * @throws PolicyConfigException PolicyConfig Exception - * @deprecated use {@link #getConfig(ConfigRequestParameters configRequestParameters)} Instead. - */ - @Deprecated - public Collection getConfigByPolicyName(String policyName) throws PolicyConfigException { - return getConfig(setConfigRequestParameters(policyName, null, null, null, null)); - } - - /** - * Gets the configuration from the PolicyDecisionPoint(PDP) for the String which represents the Policy File Name - * - * @param policyName the String format of the PolicyFile Name whose configuration is required. - * @param requestID unique request ID which will be passed throughout the ECOMP components to correlate logging messages. - * A different request ID should be passed for each request. - * @return Collection of {@link org.openecomp.policy.api.PolicyConfig} which has the configuration. - * @throws PolicyConfigException PolicyConfig Exception - * @deprecated use {@link #getConfig(ConfigRequestParameters configRequestParameters)} Instead. - */ - @Deprecated - public Collection getConfigByPolicyName(String policyName, UUID requestID) throws PolicyConfigException { - return getConfig(setConfigRequestParameters(policyName, null, null, null, requestID)); - } - - /** - * Gets the configuration from the PolicyDecisionPoint(PDP) for the String which represents the eCOMPComponentName - * - * @param eCOMPComponentName the String format of the eCOMPComponentName whose configuration is required. - * @return Collection of {@link org.openecomp.policy.api.PolicyConfig} which has the configuration. - * @throws PolicyConfigException PolicyConfig Exception - * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead. - */ - @Deprecated - public Collection getConfig(String eCOMPComponentName) throws PolicyConfigException { - return getConfig(setConfigRequestParameters(null, eCOMPComponentName, null, null, null)); - } - - /** - * Gets the configuration from the PolicyDecisionPoint(PDP) for the String which represents the eCOMPComponentName - * - * @param eCOMPComponentName the String format of the eCOMPComponentName whose configuration is required. - * @return Collection of {@link org.openecomp.policy.api.PolicyConfig} which has the configuration. - * @param requestID unique request ID which will be passed throughout the ECOMP 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 getConfig(String eCOMPComponentName, UUID requestID) throws PolicyConfigException { - return getConfig(setConfigRequestParameters(null, eCOMPComponentName, null, null, requestID)); - } - - /** - * Requests the configuration of the String which represents the eCOMPComponentName and String - * which represents the configName and returns the configuration if different Configurations exist for the - * particular eCOMPComponentName. - * - * @param eCOMPComponentName the String format of the eCOMPComponentName whose configuration is required. - * @param configName the String format of the configurationName whose configuration is required. - * @return Collection of {@link org.openecomp.policy.api.PolicyConfig} which has the configuration. - * @throws PolicyConfigException PolicyConfig Exception - * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead. - */ - @Deprecated - public Collection getConfig(String eCOMPComponentName, String configName) throws PolicyConfigException { - return getConfig(setConfigRequestParameters(null, eCOMPComponentName, configName, null, null)); - } - - /** - * Requests the configuration of the String which represents the eCOMPComponentName and String - * which represents the configName and returns the configuration if different Configurations exist for the - * particular eCOMPComponentName. - * - * @param eCOMPComponentName the String format of the eCOMPComponentName whose configuration is required. - * @param configName the String format of the configurationName whose configuration is required. - * @param requestID unique request ID which will be passed throughout the ECOMP components to correlate logging messages. - * A different request ID should be passed for each request. - * @return Collection of {@link org.openecomp.policy.api.PolicyConfig} which has the configuration. - * @throws PolicyConfigException PolicyConfig Exception - * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead. - */ - @Deprecated - public Collection getConfig(String eCOMPComponentName, String configName, UUID requestID) throws PolicyConfigException { - return getConfig(setConfigRequestParameters(null, eCOMPComponentName, configName, null, requestID)); - } - - /** - * Requests the configuration of the String which represents the eCOMPComponentName, String - * which represents the configName and Map of String,String which has the configAttribute and returns the specific - * configuration related to the configAttributes mentioned. - * - * @param eCOMPComponentName the String format of the eCOMPComponentName whose configuration is required. - * @param configName the String format of the configurationName whose configuration is required. - * @param configAttributes the Map of String,String format of the configuration attributes which are required. - * @return Collection of {@link org.openecomp.policy.api.PolicyConfig} which has the configuration. - * @throws PolicyConfigException PolicyConfig Exception - * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead. - */ - @Deprecated - public Collection getConfig(String eCOMPComponentName, String configName, Map configAttributes) throws PolicyConfigException{ - return getConfig(setConfigRequestParameters(null, eCOMPComponentName, configName, configAttributes, null)); - } - - /** - * Requests the configuration of the String which represents the eCOMPComponentName, String - * which represents the configName and Map of String,String which has the configAttribute and returns the specific - * configuration related to the configAttributes mentioned. - * - * @param eCOMPComponentName the String format of the eCOMPComponentName whose configuration is required. - * @param configName the String format of the configurationName whose configuration is required. - * @param configAttributes the Map of String,String format of the configuration attributes which are required. - * @param requestID unique request ID which will be passed throughout the ECOMP components to correlate logging messages. - * A different request ID should be passed for each request. - * @return Collection of {@link org.openecomp.policy.api.PolicyConfig} which has the configuration. - * @throws PolicyConfigException PolicyConfig Exception - * @deprecated use {@link #getConfig(ConfigRequestParameters)} Instead. - */ - @Deprecated - public Collection getConfig(String eCOMPComponentName, String configName, Map configAttributes, UUID requestID) throws PolicyConfigException{ - return getConfig(setConfigRequestParameters(null, eCOMPComponentName, configName, configAttributes, requestID)); - } - - /** - * Requests the configuration of the ConfigRequestParameters which represents the Config policy request parameters - * and returns the specific configuration related to the matching parameters. - * - * @param configRequestParameters {@link org.openecomp.policy.api.ConfigRequestParameters} which represents the Config policy request parameters. - * @return Collection of {@link org.openecomp.policy.api.PolicyConfig} which has the configuration. - * @throws PolicyConfigException PolicyConfig Exception - */ - public Collection getConfig(ConfigRequestParameters configRequestParameters) throws PolicyConfigException{ - return stdPolicyEngine.getConfig(configRequestParameters); - } - - /** - * Requests the list of policies based on the ConfigRequestParameters which represents the policy request parameters - * and returns the list of policies filtered by the parameters. - * - * @param configRequestParameters {@link org.openecomp.policy.api.ConfigRequestParameters} which represents the List Policy request parameters. - * @return Collection of String which returns the list of policies. - * @throws PolicyConfigException PolicyConfig Exception - */ - public Collection listConfig(ConfigRequestParameters listPolicyRequestParameters) throws PolicyConfigException{ - return stdPolicyEngine.listConfig(listPolicyRequestParameters); - } - - - /** - * Sends the Events specified to the PEP and returns back the PolicyResponse. - * - * @param eventAttributes the Map of String,String format of the eventAttributes that must contain the event ID and values. - * @return Collection of {@link org.openecomp.policy.api.PolicyResponse} which has the Response. - * @throws PolicyEventException PolicyEvent Exception - * @deprecated use {@link #sendEvent(EventRequestParameters)} Instead. - */ - @Deprecated - public Collection sendEvent(Map eventAttributes) throws PolicyEventException { - return stdPolicyEngine.sendEvent(eventAttributes, (UUID) null); - } - - /** - * Sends the Events specified to the PEP and returns back the PolicyResponse. - * - * @param eventAttributes the Map of String,String format of the eventAttributes that must contain the event ID and values. - * @param requestID unique request ID which will be passed throughout the ECOMP components to correlate logging messages. - * A different request ID should be passed for each request. - * @return Collection of {@link org.openecomp.policy.api.PolicyResponse} which has the Response. - * @throws PolicyEventException PolicyEvent Exception - * @deprecated use {@link #sendEvent(EventRequestParameters)} Instead. - */ - @Deprecated - public Collection sendEvent(Map 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.openecomp.policy.api.EventRequestParameters} which represents the Event Request Parameters. - * @return Collection of {@link org.openecomp.policy.api.PolicyResponse} which has the Response. - * @throws PolicyEventException PolicyEvent Exception - */ - public Collection sendEvent(EventRequestParameters eventRequestParameters) throws PolicyEventException { - return stdPolicyEngine.sendEvent(eventRequestParameters); - } - - /** - * Sends the decision Attributes specified to the PEP and returns back the PolicyDecision. - * - * @param eCOMPComponentName the String format of the eCOMPComponentName whose Decision is required. - * @param decisionAttributes the Map of String,String format of the decisionAttributes that must contain the ID and values. - * @return {@link org.openecomp.policy.api.DecisionResponse} which has the Decision. - * @throws PolicyDecisionException PolicyDecision Exception - * @deprecated use {@link #getDecision(DecisionRequestParameters)} Instead. - */ - @Deprecated - public DecisionResponse getDecision(String eCOMPComponentName, Map decisionAttributes) throws PolicyDecisionException { - return stdPolicyEngine.getDecision(eCOMPComponentName, decisionAttributes, null); - } - - /** - * Sends the decision Attributes specified to the PEP and returns back the PolicyDecision. - * - * @param eCOMPComponentName the String format of the eCOMPComponentName whose Decision is required. - * @param decisionAttributes the Map of String,String format of the decisionAttributes that must contain the ID and values. - * @param requestID unique request ID which will be passed throughout the ECOMP components to correlate logging messages. - * A different request ID should be passed for each request. - * @return {@link org.openecomp.policy.api.DecisionResponse} which has the Decision. - * @throws PolicyDecisionException PolicyDecision Exception - * @deprecated use {@link #getDecision(DecisionRequestParameters)} Instead. - */ - @Deprecated - public DecisionResponse getDecision(String eCOMPComponentName, Map decisionAttributes, UUID requestID) throws PolicyDecisionException { - return stdPolicyEngine.getDecision(eCOMPComponentName, decisionAttributes, requestID); - } - - /** - * Sends the decision Attributes specified to the PEP and returns back the PolicyDecision. - * - * @param decisionRequestParameters {@link org.openecomp.policy.api.DecisionRequestParameters} which represents the Decision Request Parameters. - * @return {@link org.openecomp.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.openecomp.policy.api.MetricsRequestParameters} which represents the Parameters required to get the Policy Metrics - * @return {@link org.openecomp.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 String format of the Policy Name - * @param policyDescription the String format of the Policy Description - * @param ecompName the String format of the ECOMP Name - * @param configName the String format of the Config Name - * @param configAttributes the List the Map Attributes that must contain the key and value. - * @param configType the String format of the Config Type - * @param body the String format of the Policy Body - * @param policyScope the String 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 ECOMP components to correlate logging messages. - * A different request ID should be passed for each request. - * @param riskLevel the String value of risk Level. - * @param riskType the String value of risk Type. - * @param guard the String value of guard. - * @param ttlDate the String value of time to live Date. - * @throws PolicyException PolicyException related to the operation. - * @return String format of response - * @deprecated use {@link #createPolicy(PolicyParameters)} Instead. - */ - @Deprecated - public String createConfigPolicy(String policyName, String policyDescription, String ecompName, String configName, - Map configAttributes, String configType, String body, String policyScope, UUID requestID, - String riskLevel, String riskType, String guard, String ttlDate) throws PolicyException { - return stdPolicyEngine.createUpdateConfigPolicy(policyName, policyDescription, ecompName, configName, - configAttributes, configType, body, policyScope, requestID, - riskLevel, riskType, guard, ttlDate, false); - } - - /** - * Creates a Config Policy based on given arguments - * @param policyName the String format of the Policy Name - * @param policyDescription the String format of the Policy Description - * @param ecompName the String format of the ECOMP Name - * @param configName the String format of the Config Name - * @param configAttributes the List the Map Attributes that must contain the key and value. - * @param configType the String format of the Config Type - * @param body the String format of the Policy Body - * @param policyScope the String 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 ECOMP components to correlate logging messages. - * A different request ID should be passed for each request. - * @param riskLevel the String value of risk Level. - * @param riskType the String value of risk Type. - * @param guard the String value of guard. - * @param ttlDate the String value of time to live Date. - * @throws PolicyException PolicyException related to the operation. - * @return String format of response - * @deprecated use {@link #updatePolicy(PolicyParameters)} Instead. - */ - @Deprecated - public String updateConfigPolicy(String policyName, String policyDescription, String ecompName, String configName, - Map configAttributes, String configType, String body, String policyScope, UUID requestID, - String riskLevel, String riskType, String guard, String ttlDate) throws PolicyException { - return stdPolicyEngine.createUpdateConfigPolicy(policyName, policyDescription, ecompName, configName, - configAttributes, configType, body, policyScope, requestID,riskLevel, riskType, guard, ttlDate, true); - } - - /** - * Creates a Config Firewall Policy based on given arguments - * @param policyName the String format of the Policy Name - * @param firewallJson the JsonObject representation of the Firewall Rules List - * @param policyScope the String 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 ECOMP components to correlate logging messages. - * A different request ID should be passed for each request. - * @param riskLevel the String value of risk Level. - * @param riskType the String value of risk Type. - * @param guard the String value of guard. - * @param ttlDate the String value of time to live Date. - * @throws PolicyException PolicyException related to the operation. - * @return String 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 String format of the Policy Name - * @param firewallJson the JsonObject representation of the Firewall Rules List - * @param policyScope the String 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 ECOMP components to correlate logging messages. - * A different request ID should be passed for each request. - * @param riskLevel the String value of risk Level. - * @param riskType the String value of risk Type. - * @param guard the String value of guard. - * @param ttlDate the String value of time to live Date. - * @throws PolicyException PolicyException related to the operation. - * @return String 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.openecomp.policy.api.DictionaryParameters} which represents the Dictionary Parameters required to create a Dictionary Item. - * @return {@link org.openecomp.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.openecomp.policy.api.DictionaryParameters} which represents the Dictionary Parameters required to create a Dictionary Item. - * @return {@link org.openecomp.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.openecomp.policy.api.DictionaryParameters} which represents the Dictionary Parameters required to update a Dictionary Item. - * @return {@link org.openecomp.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.openecomp.policy.api.PolicyParameters} which represents the Policy Parameters required to create a Policy. - * @return {@link org.openecomp.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.openecomp.policy.api.PolicyParameters} which represents the Policy Parameters required to update a Policy. - * @return {@link org.openecomp.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 String value of the sub scope directory where the policy is located - * @param policyName the String format of the Policy Name being pushed. - * @param policyType the String format of the Policy Type which is being pushed. - * @param pdpGroup the String 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 ECOMP components to correlate logging messages. - * @return String 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.openecomp.policy.api.PushPolicyParameters} which represents the Push Policy parameters required to push a policy. - * @return {@link org.openecomp.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.openecomp.policy.api.DeletePolicyParameters} which represents the Delete Policy parameters to delete a policy. - * @return {@link org.openecomp.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.openecomp.policy.api.ImportParameters} which represents the Service Parameters required to create a Policy Service. - * @return {@link org.openecomp.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); - } - - /** - * setNotification allows changes to the Notification Scheme and Notification Handler - * - * @param scheme the NotificationScheme of {@link org.openecomp.policy.api.NotificationScheme} which defines the Notification Scheme - * @param handler the NotificationHandler of {@link org.openecomp.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); - } - - /** - * clearNotification shutsDown the Notification Service if the Auto Scehme Notification service is running. - */ - public void clearNotification(){ - stdPolicyEngine.stopNotification(); - } - - /** - * setNotification allows changes to the Notification Scheme - * - * @param scheme the NotificationScheme of {@link org.openecomp.policy.api.NotificationScheme} which defines the Notification Scheme - */ - public void setScheme(NotificationScheme scheme){ - this.scheme = scheme; - stdPolicyEngine.setScheme(this.scheme); - } - - /** - * Gets the PDPNotification if there is one exists. This is used for Polling Patterns. - * - * @return PDPNotification of {@link org.openecomp.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 eCOMPComponentName, String configName, Map configAttributes, UUID requestID){ - ConfigRequestParameters configRequestParameters = new ConfigRequestParameters(); - configRequestParameters.setPolicyName(policyName); - configRequestParameters.setEcompName(eCOMPComponentName); - 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/openecomp/policy/api/PolicyEngineException.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyEngineException.java deleted file mode 100644 index e80513ad8..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyEngineException.java +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -/** - * PolicyEngineException extends Exception to implement exceptions thrown by {@link org.openecomp.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/openecomp/policy/api/PolicyEventException.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyEventException.java deleted file mode 100644 index 8e4c81990..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyEventException.java +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -/** - * PolicyEventException extends Exception to implement exceptions thrown by {@link org.openecomp.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/openecomp/policy/api/PolicyException.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyException.java deleted file mode 100644 index f4a99fd32..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyException.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.openecomp.policy.api; - -/** - * PolicyException extends Exception to implement exceptions thrown by {@link org.openecomp.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/openecomp/policy/api/PolicyParameters.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyParameters.java deleted file mode 100644 index 0f34de0d1..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyParameters.java +++ /dev/null @@ -1,557 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * PolicyParameters 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 ecompName; - private String configName; - private Map> attributes; - private String configBody; - private PolicyType configBodyType; - private String actionPerformer; - private String actionAttribute; - private UUID requestID; - private List dynamicRuleAlgorithmLabels; - private List dynamicRuleAlgorithmFunctions; - private List dynamicRuleAlgorithmField1; - private List dynamicRuleAlgorithmField2; - private String priority; - private RuleProvider ruleProvider; - private String controllerName; - private ArrayList 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.openecomp.policy.api.PolicyConfigType} Enum format of the Config Type - * @param policyName the String format of the Policy Name - * @param policyDescription the String format of the Policy Description - * @param ecompName the String format of the ECOMP Name - * @param configName the String format of the Config Name - * @param attributes the Map Attributes that must contain the AttributeType and Map of key,value pairs corresponding to it. - * @param configBodyType the {@link org.openecomp.policy.api.PolicyType} Enum format of the config Body Type. - * @param configBody the String format of the Policy Body - * @param requestID unique request ID which will be passed throughout the ECOMP 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 ecompName, String configName, - Map> attributes, PolicyType configBodyType, String configBody, UUID requestID){ - this.setPolicyConfigType(policyConfigType); - this.setPolicyName(policyName); - this.setPolicyDescription(policyDescription); - this.setEcompName(ecompName); - this.setConfigName(configName); - this.setAttributes(attributes); - this.setConfigBody(configBody); - this.setConfigBodyType(configBodyType); - this.setRequestID(requestID); - } - - /** - * Sets config Firewall Policy Parameters. - * - * @param policyName the String format of the Policy Name - * @param firewallJson the String representation of the Firewall Rules List - * @param requestID unique request ID which will be passed throughout the ECOMP 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 String format of the Policy Name - */ - public String getPolicyName() { - return policyName; - } - - /** - * Sets the policyName of the Policy Parameters. - * - * @param policyName the String format of the Policy Name - */ - public void setPolicyName(String policyName) { - this.policyName = policyName; - } - - /** - * Gets the policy Description. - * - * @return the String format of the Policy Description - */ - public String getPolicyDescription() { - return policyDescription; - } - - /** - * Sets the policy Description of the Policy Description. - * - * @param policyDescription the String format of the Policy Description - */ - public void setPolicyDescription(String policyDescription) { - this.policyDescription = policyDescription; - } - - /** - * Gets the ECOMP Name value of the Policy Paramters. - * - * @return String format of the ECOMP Name - */ - public String getEcompName() { - return ecompName; - } - - /** - * Sets the ECOMP Name field of the Policy Parameters. - * - * @param ecompName the String format of the ECOMP Name - */ - public void setEcompName(String ecompName) { - this.ecompName = ecompName; - } - - /** - * Gets the Config Name value of the Policy Parameters. - * - * @return String format of the Config Name - */ - public String getConfigName() { - return configName; - } - - /** - * Sets the Config Name field of the Policy Parameters. - * - * @param configName the String format of the Config Name - */ - public void setConfigName(String configName) { - this.configName = configName; - } - - /** - * Gets the Attributes of the policy Parameters. - * - * @return List the Map Attributes that must contain the AttributeType and Map of key,value pairs corresponding to it. - */ - public Map> getAttributes() { - return attributes; - } - - /** - * Sets the Attributes of the Policy Parameters. - * - * @param attributes the Map Attributes that must contain the AttributeType and Map of key,value pairs corresponding to it. - */ - public void setAttributes(Map> attributes) { - this.attributes = attributes; - } - - /** - * Gets the Policy Config Type value the Policy parameters. - * - * @return {@link org.openecomp.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.openecomp.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 String format of the Policy Body - */ - public String getConfigBody() { - return configBody; - } - - /** - * Sets the configBody field of the Policy Parameters. - * - * @param configBody the String 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 PolicyType representation of the configBodyType - */ - public PolicyType getConfigBodyType() { - return configBodyType; - } - - /** - * Sets the configBodyType field of the Policy Parameters. - * - * @param configBodyType the PolicyType 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 ECOMP 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 ECOMP components to correlate logging messages. - */ - public void setRequestID(UUID requestID) { - this.requestID = requestID; - } - - /** - * Gets the Policy Class of the Policy Parameters. - * - * @return {@link org.openecomp.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.openecomp.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 String 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 String 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 String 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 String 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 List the Dynamic Rule Algorithm Label that must contain the Labels in order - */ - public List 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 List dynamicRuleAlgoritmLabels in order - */ - public void setDynamicRuleAlgorithmLabels( - List 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 List the Dynamic Rule Algorithm Functions that must contain the values in order - */ - public List 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 List dynamicRuleAlgorithmFunctions in order - */ - public void setDynamicRuleAlgorithmFunctions(List 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 List the Dynamic Rule Algorithm Field1 that must contain the Field1 values in order - */ - public List 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 List dynamicRuleAlgorithmField1 in order - */ - public void setDynamicRuleAlgorithmField1( - List 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 List the Dynamic Rule Algorithm Field2 that must contain the Field2 values in order - */ - public List 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 List dynamicRuleAlgorithmField2 in order - */ - public void setDynamicRuleAlgorithmField2( - List dynamicRuleAlgorithmField2) { - this.dynamicRuleAlgorithmField2 = dynamicRuleAlgorithmField2; - } - - /** - * Gets the Priority of the Policy Parameters. - * - * @return priority the String format of the Micro Services priority - */ - public String getPriority() { - return priority; - } - - /** - * Sets the Priority of the Policy Parameters. - * - * @param priority the String 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 Boolean 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 boolean value of the Guard for Config Policies - */ - public boolean getGuard(){ - return guard; - } - - /** - * Sets the riskType field of the Policy Parameters. - * - * @param riskType the String 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 String value of the riskType for Config Policies - */ - public String getRiskType(){ - return riskType; - } - - /** - * Sets the riskLevel field of the Policy Parameters. - * - * @param riskLevel the String 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 String value of the riskLevel for Config Policies - */ - public String getRiskLevel(){ - return riskLevel; - } - - /** - * Sets the TTLDate field of the Policy Parameters. - * - * @param TTLDate the Date 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 Date 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 getDependencyNames() { - return dependencyNames; - } - - /** - * Sets Dependency that your policy is dependent on. - * - * @param dependencyNames ArrayList of String(s). - */ - public void setDependencyNames(ArrayList 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 + ", ecompName="+ ecompName - + ", 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/openecomp/policy/api/PolicyResponse.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyResponse.java deleted file mode 100644 index 316f7dd83..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyResponse.java +++ /dev/null @@ -1,77 +0,0 @@ -/*- - * ============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.openecomp.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.openecomp.policy.api.PolicyResponseStatus} associated with this PolicyResponse. - * - * @return the PolicyResponseStatus associated with this PolicyResponse - */ - public PolicyResponseStatus getPolicyResponseStatus(); - - /** - * Gets the Map of String,String which consists of ActionAdvised in this PolicyResponse. - * If there is no ActionAdvised this method must return an empty Map. - * - * @return the Map of String,String which consists of AdviceAttributes in PolicyResponse - */ - public Map getActionAdvised(); - - /** - * Gets the Map of String,String which consists of ActionTaken in this PolicyResponse. - * If there are no ActionTaken this method must return an empty Map. - * - * @return the Map of String,String which consists of ActionTaken in PolicyResponse - */ - public Map getActionTaken(); - - /** - * Gets the Map of String,String which consists of RequestAttributes in this PolicyResponse. - * - * @return the Map of String,String which consists of RequestAttributes from PolicyResponse - */ - public Map getRequestAttributes(); - - /** - * Gets the String of the PolicyResponseMessage from PolicyResponse - * - * @return the String which consists of PolicyResponseMessage from PolicyResponse - */ - public String getPolicyResponseMessage(); - - /** - * Returns the String version of the PolicyResponse object. - * - * @return String of the PolicyResponse Object. - */ - @Override - public String toString(); -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyResponseStatus.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyResponseStatus.java deleted file mode 100644 index 84fac733d..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyResponseStatus.java +++ /dev/null @@ -1,85 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import com.fasterxml.jackson.annotation.JsonCreator; - -/** - * Enumeration of PolicyResponseStatus that can be returned as a part of - * {@link org.openecomp.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 PolicyResponseStatus based on String representation of PolicyResponse - * - * @param responseStatus the String Response Status - * @return the PolicyResponseStatus with the name matching ACTION_ADVISED or ACTION_TAKEN or NO_ACTION_REQUIRED - */ - 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 String name for this PolicyResponseStatus - * - * @return the String name for this PolicyResponseStatus - */ - 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/openecomp/policy/api/PolicyType.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyType.java deleted file mode 100644 index a0566e039..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PolicyType.java +++ /dev/null @@ -1,72 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import com.fasterxml.jackson.annotation.JsonCreator; - -/** - * Enumeration of the Policy Return Types that can be returned as part of a - * {@link org.openecomp.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 String format of Type for this PolicyType - * @return the String of the Type for this PolicyType - */ - 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/openecomp/policy/api/PushPolicyParameters.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PushPolicyParameters.java deleted file mode 100644 index 8a822065b..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/PushPolicyParameters.java +++ /dev/null @@ -1,131 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import java.util.UUID; - -/** - * PushPolicyParameters 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 String format of the Policy Name - * @param policyType the String format of the Policy Type - * @param pdpGroup the String format of the PDPGroup - * @param requestID unique request ID which will be passed throughout the ECOMP 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 String format of the Policy Name - */ - public String getPolicyName() { - return policyName; - } - - /** - * Sets the policyName of the Push Policy Parameters. - * - * @param policyName the String format of the Policy Name - */ - public void setPolicyName(String policyName) { - this.policyName = policyName; - } - - /** - * Gets the PolicyType of the Push Policy Parameters. - * - * @return policyType the String format of the Policy Type - */ - public String getPolicyType() { - return policyType; - } - - /** - * Sets the policyType of the Push Policy Parameters. - * - * @param policyType the String format of the Policy Type - */ - public void setPolicyType(String policyType) { - this.policyType = policyType; - } - - /** - * Gets the PDPGroup of the Push Policy Parameters. - * - * @return pdpGroup the String format of the PDPGroup - */ - public String getPdpGroup() { - return pdpGroup; - } - - /** - * Sets the PDPGroup of the Push Policy Parameters. - * - * @param pdpGroup the String 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 ECOMP 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 ECOMP components to correlate logging messages. - */ - public void setRequestID(UUID requestID) { - this.requestID = requestID; - } - - -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/RuleProvider.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/RuleProvider.java deleted file mode 100644 index 99f075a30..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/RuleProvider.java +++ /dev/null @@ -1,73 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -import com.fasterxml.jackson.annotation.JsonCreator; - -/** - * Enumeration of the Attribute Types that is used as a part of - * {@link org.openecomp.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 String format of Type for this AttributeType - * @return the String of the Type for this AttributeType - */ - 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/openecomp/policy/api/package-info.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/package-info.java deleted file mode 100644 index 982dbb47c..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/api/package-info.java +++ /dev/null @@ -1,36 +0,0 @@ -/*- - * ============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.openecomp.policy.api; - -/** - * org.openecomp.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/openecomp/policy/models/APIConfigResponse.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/models/APIConfigResponse.java deleted file mode 100644 index 664522615..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/models/APIConfigResponse.java +++ /dev/null @@ -1,37 +0,0 @@ -/*- - * ============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.openecomp.policy.models; - -import java.util.Map; - -import org.openecomp.policy.api.PolicyConfigStatus; -import org.openecomp.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 getMatchingConditions(); - public Map getResponseAttributes(); - public Map getProperty(); -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/models/APIDictionaryResponse.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/models/APIDictionaryResponse.java deleted file mode 100644 index 4829bfac8..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/models/APIDictionaryResponse.java +++ /dev/null @@ -1,53 +0,0 @@ -/*- - * ============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.openecomp.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/openecomp/policy/models/APIPolicyConfigResponse.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/models/APIPolicyConfigResponse.java deleted file mode 100644 index 7be932162..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/models/APIPolicyConfigResponse.java +++ /dev/null @@ -1,91 +0,0 @@ -/*- - * ============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.openecomp.policy.models; - -import java.util.Map; - -import org.openecomp.policy.api.PolicyConfigStatus; -import org.openecomp.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 matchingConditions; - private Map responseAttributes; - private Map 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 getProperty() { - return property; - } - public void setProperty(Map 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 getMatchingConditions(){ - return matchingConditions; - } - public void setMatchingConditions(Map matchingConditions){ - this.matchingConditions = matchingConditions; - } - public void setResponseAttributes(Map responseAttributes){ - this.responseAttributes = responseAttributes; - } - public Map getResponseAttributes(){ - return responseAttributes; - } -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/AutoClientDMAAP.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/AutoClientDMAAP.java deleted file mode 100644 index 563cd85ca..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/AutoClientDMAAP.java +++ /dev/null @@ -1,132 +0,0 @@ -package org.openecomp.policy.std; - -import java.util.List; -import java.util.UUID; - -import org.openecomp.policy.api.NotificationHandler; -import org.openecomp.policy.api.NotificationScheme; -import org.openecomp.policy.api.NotificationType; -import org.openecomp.policy.api.PDPNotification; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.utils.BusConsumer; -import org.openecomp.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 dmaapList = null; - private static String aafLogin = null; - private static String aafPassword = null; - public volatile boolean isRunning = false; - - - public AutoClientDMAAP(List 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/openecomp/policy/std/AutoClientEnd.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/AutoClientEnd.java deleted file mode 100644 index 06a2e471e..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/AutoClientEnd.java +++ /dev/null @@ -1,248 +0,0 @@ -/*- - * ============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.openecomp.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.openecomp.policy.api.NotificationHandler; -import org.openecomp.policy.api.NotificationScheme; -import org.openecomp.policy.api.NotificationType; -import org.openecomp.policy.api.PDPNotification; -import org.openecomp.policy.std.NotificationStore; -import org.openecomp.policy.std.StdPDPNotification; - -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.JsonMappingException; -import org.openecomp.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/openecomp/policy/std/AutoClientUEB.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/AutoClientUEB.java deleted file mode 100644 index 782187720..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/AutoClientUEB.java +++ /dev/null @@ -1,178 +0,0 @@ -/*- - * ============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.openecomp.policy.std; - -import java.net.MalformedURLException; -import java.net.URL; -import java.util.List; -import java.util.UUID; - -import org.openecomp.policy.api.NotificationHandler; -import org.openecomp.policy.api.NotificationScheme; -import org.openecomp.policy.api.NotificationType; -import org.openecomp.policy.api.PDPNotification; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.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 uebURLList = null; - public volatile boolean isRunning = false; - - - public AutoClientUEB(String url, List 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/openecomp/policy/std/ManualClientEnd.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/ManualClientEnd.java deleted file mode 100644 index c006b057b..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/ManualClientEnd.java +++ /dev/null @@ -1,138 +0,0 @@ -/*- - * ============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.openecomp.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.openecomp.policy.api.NotificationScheme; -import org.openecomp.policy.api.NotificationType; -import org.openecomp.policy.api.PDPNotification; -import org.openecomp.policy.std.StdPDPNotification; - -import org.openecomp.policy.xacml.api.XACMLErrorConstants; - -import org.openecomp.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/openecomp/policy/std/ManualClientEndDMAAP.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/ManualClientEndDMAAP.java deleted file mode 100644 index f4a218d66..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/ManualClientEndDMAAP.java +++ /dev/null @@ -1,107 +0,0 @@ -package org.openecomp.policy.std; - -import java.util.List; - -import org.json.JSONObject; -import org.openecomp.policy.api.NotificationScheme; -import org.openecomp.policy.api.NotificationType; -import org.openecomp.policy.api.PDPNotification; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.utils.BusConsumer; -import org.openecomp.policy.utils.BusPublisher; -import org.openecomp.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 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 dmaapList, String aafLogin, String aafPassword){ - ManualClientEndDMAAP.topic = topic; - publishMessage(topic, uniquID, dmaapList, aafLogin, aafPassword); - } - - - public static void start(List 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/openecomp/policy/std/ManualClientEndUEB.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/ManualClientEndUEB.java deleted file mode 100644 index 85d5659e8..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/ManualClientEndUEB.java +++ /dev/null @@ -1,160 +0,0 @@ -/*- - * ============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.openecomp.policy.std; - -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.List; - -import org.json.JSONObject; -import org.openecomp.policy.api.NotificationScheme; -import org.openecomp.policy.api.NotificationType; -import org.openecomp.policy.api.PDPNotification; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.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 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 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 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 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/openecomp/policy/std/MatchStore.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/MatchStore.java deleted file mode 100644 index 1459dd9d9..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/MatchStore.java +++ /dev/null @@ -1,246 +0,0 @@ -/*- - * ============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.openecomp.policy.std; - -import java.util.Collection; -import java.util.HashSet; - -import org.openecomp.policy.api.LoadedPolicy; -import org.openecomp.policy.api.NotificationType; -import org.openecomp.policy.api.PDPNotification; -import org.openecomp.policy.api.RemovedPolicy; -import org.openecomp.policy.std.StdLoadedPolicy; -import org.openecomp.policy.std.StdPDPNotification; -import org.openecomp.policy.std.StdRemovedPolicy; - -import org.openecomp.policy.common.logging.flexlogger.*; - -public class MatchStore { - private static HashSet matchStore = new HashSet<>(); - private static Logger logger = FlexLogger.getLogger(MatchStore.class.getName()); - - public static HashSet 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 ECOMPName - if(oldMatch.getEcompName().equals(newMatch.getEcompName())){ - // 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 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 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 ecomp 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("ECOMPName")){ - if(updatedPolicy.getMatches().get(newKey).equals(match.getEcompName())){ - 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("ECOMPName").equals(match.getEcompName())){ - if(updatedPolicy.getMatches().get("ConfigName").equals(match.getConfigName())){ - // Match.. - matched = true; - }else{ - break; - } - }else { - break; - } - }else{ - break; - } - }else { - // If non exist then assuming the ECOMP Name to be there. - if(updatedPolicy.getMatches().size()== 1){ - if(updatedPolicy.getMatches().get("ECOMPName").equals(match.getEcompName())){ - // 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/openecomp/policy/std/Matches.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/Matches.java deleted file mode 100644 index 8e6a8ee97..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/Matches.java +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * ============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.openecomp.policy.std; - -import java.util.Map; - -public class Matches { - private String ecompName = null; - private String configName = null; - private Map configAttributes = null; - public String getEcompName() { - return ecompName; - } - public void setEcompName(String ecompName) { - this.ecompName = ecompName; - } - public String getConfigName() { - return configName; - } - public void setConfigName(String configName) { - this.configName = configName; - } - public Map getConfigAttributes() { - return configAttributes; - } - public void setConfigAttributes(Map configAttributes) { - this.configAttributes = configAttributes; - } - -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/NotificationUnMarshal.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/NotificationUnMarshal.java deleted file mode 100644 index 196f89b3d..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/NotificationUnMarshal.java +++ /dev/null @@ -1,69 +0,0 @@ -/*- - * ============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.openecomp.policy.std; - -import java.util.ArrayList; -import java.util.Collection; - -import org.openecomp.policy.api.LoadedPolicy; -import org.openecomp.policy.api.RemovedPolicy; -import org.openecomp.policy.api.UpdateType; -import org.openecomp.policy.std.StdLoadedPolicy; -import org.openecomp.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 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/openecomp/policy/std/StdDecisionResponse.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdDecisionResponse.java deleted file mode 100644 index 1f4cf65d0..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdDecisionResponse.java +++ /dev/null @@ -1,55 +0,0 @@ -/*- - * ============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.openecomp.policy.std; - -import org.openecomp.policy.api.DecisionResponse; -import org.openecomp.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/openecomp/policy/std/StdDictionaryResponse.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdDictionaryResponse.java deleted file mode 100644 index 74eebc354..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdDictionaryResponse.java +++ /dev/null @@ -1,73 +0,0 @@ -/*- - * ============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.openecomp.policy.std; - -import java.util.Map; - -import javax.json.JsonObject; - -import org.openecomp.policy.api.DictionaryResponse; - -public class StdDictionaryResponse implements DictionaryResponse { - private String dictionaryMessage; - private JsonObject dictionaryJson; - private Map dictionaryData; - private int responseCode; - - @Override - public String getResponseMessage() { - return dictionaryMessage; - } - - @Override - public JsonObject getDictionaryJson() { - return dictionaryJson; - } - - @Override - public Map 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 dictionaryData) { - this.dictionaryData = dictionaryData; - } - - public void setResponseCode(int responseCode) { - this.responseCode = responseCode; - } - - - -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdMetricsResponse.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdMetricsResponse.java deleted file mode 100644 index 8c89e4a9d..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdMetricsResponse.java +++ /dev/null @@ -1,78 +0,0 @@ -/*- - * ============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.openecomp.policy.std; - -import org.openecomp.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/openecomp/policy/std/StdPolicyChangeResponse.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdPolicyChangeResponse.java deleted file mode 100644 index 2fec8605c..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdPolicyChangeResponse.java +++ /dev/null @@ -1,47 +0,0 @@ -/*- - * ============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.openecomp.policy.std; - -import org.openecomp.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/openecomp/policy/std/StdPolicyConfig.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdPolicyConfig.java deleted file mode 100644 index ec205dab2..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdPolicyConfig.java +++ /dev/null @@ -1,168 +0,0 @@ -/*- - * ============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.openecomp.policy.std; - -import java.util.Map; -import java.util.Properties; - -import javax.json.JsonObject; - -import org.openecomp.policy.api.PolicyConfig; -import org.openecomp.policy.api.PolicyConfigStatus; -import org.openecomp.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 matchingConditions; - private Map 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 getMatchingConditions(){ - return matchingConditions; - } - - @Override - public Map 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 matchingConditions){ - this.matchingConditions = matchingConditions; - } - - public void setResponseAttributes(Map responseAttributes){ - this.responseAttributes = responseAttributes; - } - - @Override - public String toString() { - return "PolicyConfig [ policyConfigStatus=" + policyConfigStatus + ", policyConfigMessage=" + configStatus + ", policyName=" + policyName + - "" - + "]"; - } - -} diff --git a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdPolicyEngine.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdPolicyEngine.java deleted file mode 100644 index 0732c3cf5..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdPolicyEngine.java +++ /dev/null @@ -1,1254 +0,0 @@ -/*- - * ============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.openecomp.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.openecomp.policy.api.AttributeType; -import org.openecomp.policy.api.ConfigRequestParameters; -import org.openecomp.policy.api.DecisionRequestParameters; -import org.openecomp.policy.api.DecisionResponse; -import org.openecomp.policy.api.DeletePolicyParameters; -import org.openecomp.policy.api.DictionaryParameters; -import org.openecomp.policy.api.DictionaryResponse; -import org.openecomp.policy.api.EventRequestParameters; -import org.openecomp.policy.api.ImportParameters; -import org.openecomp.policy.api.MetricsRequestParameters; -import org.openecomp.policy.api.MetricsResponse; -import org.openecomp.policy.api.NotificationHandler; -import org.openecomp.policy.api.NotificationScheme; -import org.openecomp.policy.api.PDPNotification; -import org.openecomp.policy.api.PolicyChangeResponse; -import org.openecomp.policy.api.PolicyClass; -import org.openecomp.policy.api.PolicyConfig; -import org.openecomp.policy.api.PolicyConfigException; -import org.openecomp.policy.api.PolicyConfigType; -import org.openecomp.policy.api.PolicyDecisionException; -import org.openecomp.policy.api.PolicyEngineException; -import org.openecomp.policy.api.PolicyEventException; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.api.PolicyResponse; -import org.openecomp.policy.api.PolicyType; -import org.openecomp.policy.api.PushPolicyParameters; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.models.APIDictionaryResponse; -import org.openecomp.policy.models.APIPolicyConfigResponse; -import org.openecomp.policy.utils.AAFEnvironment; -import org.openecomp.policy.utils.PolicyUtils; -import org.openecomp.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 pdps = null; - private static String environment= null; - private static String userName = null; - private static String pass = null; - private static List encoding = null; - private static boolean junit = false; - private List pdpDefault = null; - private List typeDefault = null; - private List notificationType = new ArrayList(); - private List notificationURLList = new ArrayList(); - 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 sendEvent(Map eventAttributes, UUID requestID) throws PolicyEventException { - return sendEventImpl(eventAttributes, requestID); - } - - /* - * sendEvent API Implementation for eventRequestParameters - */ - public Collection 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 getConfig(ConfigRequestParameters configRequestParameters) throws PolicyConfigException{ - return getConfigImpl(configRequestParameters); - } - - /* - * listPolicies using configRequestParameters Implementation - */ - public Collection listConfig(ConfigRequestParameters listPolicyRequestParameters) throws PolicyConfigException{ - return listConfigImpl(listPolicyRequestParameters); - } - - /* - * getDecision using the decision Attributes. - */ - public DecisionResponse getDecision(String eCOMPComponentName, Map decisionAttributes, UUID requestID) throws PolicyDecisionException { - return getDecisionImpl(eCOMPComponentName, 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.getECOMPComponentName(), 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 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 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 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 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) 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 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 parameters = new LinkedMultiValueMap(); - // 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 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 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 eCOMPComponentName, - Map 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.setECOMPComponentName(eCOMPComponentName); - 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 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 getConfigImpl(ConfigRequestParameters configRequestParameters) throws PolicyConfigException{ - String resource= "getConfig"; - ArrayList 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 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 configResult(APIPolicyConfigResponse[] response) throws PolicyConfigException { - ArrayList 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 matchingConditions) { - Matches match = new Matches(); - HashMap configAttributes = new HashMap<>(); - try{ - for(String key: matchingConditions.keySet()){ - if(key.equalsIgnoreCase("ECOMPName")){ - match.setEcompName(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 Ecomp:" - + match.getEcompName() + " Config: " - + match.getConfigName()); - } - } - - /* - * Generic Rest Client to call PDP services. - */ - private ResponseEntity callNewPDP(String resource, - HttpMethod method, Object body, Class responseType) throws PolicyException{ - RestTemplate restTemplate = new RestTemplate(); - HttpEntity requestEntity = new HttpEntity<>(body, getHeaders()); - ResponseEntity 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 listConfigImpl(ConfigRequestParameters listRequestParameters) throws PolicyConfigException{ - Collection policyList = new ArrayList<>(); - if (junit){ - policyList.add("Policy Name: listConfigTest"); - return policyList; - } - Collection 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 sendEventImpl(Map eventAttributes, UUID requestID) throws PolicyEventException { - String resource= "sendEvent"; - ArrayList response = new ArrayList(); - 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 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 eventResult(StdPolicyResponse[] response) throws PolicyEventException{ - ArrayList 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(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(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 unsorted = prop.keySet(); - @SuppressWarnings({ "rawtypes", "unchecked" }) - List 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(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 pdpValues = new ArrayList(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 ecompName, String configName, - Map 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, ecompName, configName, - configAttributes, configType, body, policyScope, requestID, - riskLevel, riskType, guard, ttlDate, updateFlag); - } - - /* - * Create Config Policy API Implementation - */ - public String createUpdateConfigPolicyImpl(String policyName, String policyDescription, String ecompName, String configName, - Map 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.setEcompName(ecompName); - policyParameters.setConfigName(configName); - Map> attributes = new HashMap>(); - 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/openecomp/policy/std/StdPolicyResponse.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdPolicyResponse.java deleted file mode 100644 index eed40ba2e..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdPolicyResponse.java +++ /dev/null @@ -1,98 +0,0 @@ -/*- - * ============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.openecomp.policy.std; - -import java.util.Map; - -import org.openecomp.policy.api.PolicyResponse; -import org.openecomp.policy.api.PolicyResponseStatus; - -/** - * PolicyResponse Implementation class. - * - * @version 0.1 - * - */ -public class StdPolicyResponse implements PolicyResponse{ - private PolicyResponseStatus policyResponseStatus; - private Map actionAdvised; - private Map actionTaken; - private Map requestAttributes; - private String policyResponseMessage; - - @Override - public PolicyResponseStatus getPolicyResponseStatus() { - return policyResponseStatus; - } - - @Override - public Map getActionAdvised() { - return actionAdvised; - } - - @Override - public Map getActionTaken() { - return actionTaken; - } - - @Override - public Map getRequestAttributes() { - return requestAttributes; - } - - @Override - public String getPolicyResponseMessage() { - return policyResponseMessage; - } - - public void setPolicyResponseStatus(PolicyResponseStatus policyResponseStatus) { - this.policyResponseStatus = policyResponseStatus; - } - - public void setActionAdvised(Map actionAdvised) { - this.actionAdvised = actionAdvised; - } - - public void setActionTaken(Map actionTaken) { - this.actionTaken = actionTaken; - } - - public void setRequestAttributes(Map 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/openecomp/policy/std/StdStatus.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdStatus.java deleted file mode 100644 index a7d22b7cb..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/StdStatus.java +++ /dev/null @@ -1,235 +0,0 @@ -/*- - * ============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.openecomp.policy.std; - -import java.util.Map; -import java.util.Properties; - -import javax.json.JsonObject; - -import org.openecomp.policy.api.DecisionResponse; -import org.openecomp.policy.api.PolicyConfig; -import org.openecomp.policy.api.PolicyConfigStatus; -import org.openecomp.policy.api.PolicyDecision; -import org.openecomp.policy.api.PolicyResponse; -import org.openecomp.policy.api.PolicyResponseStatus; -import org.openecomp.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 actionAdvised; - private Map actionTaken; - private Map requestAttributes; - private String policyResponseMessage; - private String policyName; - private String policyVersion; - private Map matchingConditions; - private Map 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 getActionAdvised() { - return actionAdvised; - } - - @Override - public Map getActionTaken() { - return actionTaken; - } - - @Override - public Map getRequestAttributes() { - return requestAttributes; - } - - @Override - public String getPolicyResponseMessage() { - return policyResponseMessage; - } - - public void setPolicyResponseStatus(PolicyResponseStatus policyResponseStatus) { - this.policyResponseStatus = policyResponseStatus; - } - - public void setActionAdvised(Map actionAdvised) { - this.actionAdvised = actionAdvised; - } - - public void setActionTaken(Map actionTaken) { - this.actionTaken = actionTaken; - } - - public void setRequestAttributes(Map 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 getMatchingConditions(){ - return matchingConditions; - } - - @Override - public Map 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 matchingConditions){ - this.matchingConditions = matchingConditions; - } - - public void setResposneAttributes(Map 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/openecomp/policy/std/package-info.java b/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/package-info.java deleted file mode 100644 index a10f347e9..000000000 --- a/PolicyEngineAPI/src/main/java/org/openecomp/policy/std/package-info.java +++ /dev/null @@ -1,27 +0,0 @@ -/*- - * ============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.openecomp.policy.std; -/** - * Provides standard implementations of the interfaces from the {@link org.openecomp.policy.api} package. - * - * @version 0.3 - * - */ -- cgit 1.2.3-korg