Update XACML tutorial code
[policy/parent.git] / docs / xacml / tutorial / app / src / main / java / org / onap / policy / tutorial / tutorial / TutorialTranslator.java
index d118aab..1dd6186 100644 (file)
@@ -1,8 +1,25 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2020 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.tutorial.tutorial;
 
 import java.util.List;
 import java.util.Map;
-
 import org.onap.policy.models.decisions.concepts.DecisionRequest;
 import org.onap.policy.models.decisions.concepts.DecisionResponse;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
@@ -10,7 +27,6 @@ import org.onap.policy.pdp.xacml.application.common.ToscaDictionary;
 import org.onap.policy.pdp.xacml.application.common.ToscaPolicyConversionException;
 import org.onap.policy.pdp.xacml.application.common.ToscaPolicyTranslator;
 import org.onap.policy.pdp.xacml.application.common.ToscaPolicyTranslatorUtils;
-
 import com.att.research.xacml.api.DataTypeException;
 import com.att.research.xacml.api.Decision;
 import com.att.research.xacml.api.Identifier;
@@ -20,7 +36,6 @@ import com.att.research.xacml.api.Result;
 import com.att.research.xacml.api.XACML3;
 import com.att.research.xacml.std.IdentifierImpl;
 import com.att.research.xacml.std.annotations.RequestParser;
-
 import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType;
 import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
 import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
@@ -29,18 +44,17 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
 import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
 
 public class TutorialTranslator implements ToscaPolicyTranslator {
-       
-       private static final Identifier ID_TUTORIAL_USER =
-            new IdentifierImpl(ToscaDictionary.ID_URN_ONAP, "tutorial-user");
-       private static final Identifier ID_TUTORIAL_ENTITY =
+
+    private static final Identifier ID_TUTORIAL_USER = new IdentifierImpl(ToscaDictionary.ID_URN_ONAP, "tutorial-user");
+    private static final Identifier ID_TUTORIAL_ENTITY =
             new IdentifierImpl(ToscaDictionary.ID_URN_ONAP, "tutorial-entity");
-       private static final Identifier ID_TUTORIAL_PERM =
-            new IdentifierImpl(ToscaDictionary.ID_URN_ONAP, "tutorial-perm");
+    private static final Identifier ID_TUTORIAL_PERM = new IdentifierImpl(ToscaDictionary.ID_URN_ONAP, "tutorial-perm");
 
+    @SuppressWarnings("unchecked")
        public PolicyType convertPolicy(ToscaPolicy toscaPolicy) throws ToscaPolicyConversionException {
-               //
-               // Here is our policy with a version and default combining algo
-               //
+        //
+        // Here is our policy with a version and default combining algo
+        //
         PolicyType newPolicyType = new PolicyType();
         newPolicyType.setPolicyId(toscaPolicy.getMetadata().get("policy-id"));
         newPolicyType.setVersion(toscaPolicy.getMetadata().get("policy-version"));
@@ -59,20 +73,12 @@ public class TutorialTranslator implements ToscaPolicyTranslator {
         //
         // For simplicity, let's just match on the action "authorize" and the user
         //
-        MatchType matchAction = ToscaPolicyTranslatorUtils.buildMatchTypeDesignator(
-                XACML3.ID_FUNCTION_STRING_EQUAL,
-                "authorize",
-                XACML3.ID_DATATYPE_STRING,
-                XACML3.ID_ACTION,
-                XACML3.ID_ATTRIBUTE_CATEGORY_ACTION);
+        MatchType matchAction = ToscaPolicyTranslatorUtils.buildMatchTypeDesignator(XACML3.ID_FUNCTION_STRING_EQUAL,
+                "authorize", XACML3.ID_DATATYPE_STRING, XACML3.ID_ACTION, XACML3.ID_ATTRIBUTE_CATEGORY_ACTION);
         Map<String, Object> props = toscaPolicy.getProperties();
         String user = props.get("user").toString();
-        MatchType matchUser = ToscaPolicyTranslatorUtils.buildMatchTypeDesignator(
-                XACML3.ID_FUNCTION_STRING_EQUAL,
-                user,
-                XACML3.ID_DATATYPE_STRING,
-                ID_TUTORIAL_USER,
-                XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE);
+        MatchType matchUser = ToscaPolicyTranslatorUtils.buildMatchTypeDesignator(XACML3.ID_FUNCTION_STRING_EQUAL, user,
+                XACML3.ID_DATATYPE_STRING, ID_TUTORIAL_USER, XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE);
         AnyOfType anyOf = new AnyOfType();
         //
         // Create AllOf (AND) of just Policy Id
@@ -86,47 +92,41 @@ public class TutorialTranslator implements ToscaPolicyTranslator {
         // Now add the rule for each permission
         //
         List<Object> permissions = (List<Object>) props.get("permissions");
-               for (Object permission : permissions) {
-                       
-            MatchType matchEntity = ToscaPolicyTranslatorUtils.buildMatchTypeDesignator(
-                    XACML3.ID_FUNCTION_STRING_EQUAL,
-                    ((Map<String, String>) permission).get("entity"),
-                    XACML3.ID_DATATYPE_STRING,
-                    ID_TUTORIAL_ENTITY,
+        for (Object permission : permissions) {
+
+            MatchType matchEntity = ToscaPolicyTranslatorUtils.buildMatchTypeDesignator(XACML3.ID_FUNCTION_STRING_EQUAL,
+                    ((Map<String, String>) permission).get("entity"), XACML3.ID_DATATYPE_STRING, ID_TUTORIAL_ENTITY,
                     XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE);
-               
+
             MatchType matchPermission = ToscaPolicyTranslatorUtils.buildMatchTypeDesignator(
-                    XACML3.ID_FUNCTION_STRING_EQUAL,
-                    ((Map<String, String>) permission).get("permission"),
-                    XACML3.ID_DATATYPE_STRING,
-                    ID_TUTORIAL_PERM,
-                    XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE);
+                    XACML3.ID_FUNCTION_STRING_EQUAL, ((Map<String, String>) permission).get("permission"),
+                    XACML3.ID_DATATYPE_STRING, ID_TUTORIAL_PERM, XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE);
             anyOf = new AnyOfType();
             anyOf.getAllOf().add(ToscaPolicyTranslatorUtils.buildAllOf(matchEntity));
             anyOf.getAllOf().add(ToscaPolicyTranslatorUtils.buildAllOf(matchPermission));
             target = new TargetType();
             target.getAnyOf().add(anyOf);
-            
+
             RuleType rule = new RuleType();
             rule.setDescription("Default is to PERMIT if the policy matches.");
             rule.setRuleId(newPolicyType.getPolicyId() + ":rule");
             rule.setEffect(EffectType.PERMIT);
             rule.setTarget(target);
-            
+
             newPolicyType.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule);
         }
-               return newPolicyType;
-       }
+        return newPolicyType;
+    }
 
-       public Request convertRequest(DecisionRequest request) {
+    public Request convertRequest(DecisionRequest request) {
         try {
             return RequestParser.parseRequest(TutorialRequest.createRequest(request));
         } catch (IllegalArgumentException | IllegalAccessException | DataTypeException e) {
         }
-               return null;
-       }
+        return null;
+    }
 
-       public DecisionResponse convertResponse(Response xacmlResponse) {
+    public DecisionResponse convertResponse(Response xacmlResponse) {
         DecisionResponse decisionResponse = new DecisionResponse();
         //
         // Iterate through all the results
@@ -156,6 +156,6 @@ public class TutorialTranslator implements ToscaPolicyTranslator {
         }
 
         return decisionResponse;
-       }
+    }
 
 }