X-Git-Url: https://gerrit.onap.org/r/gitweb?p=policy%2Fengine.git;a=blobdiff_plain;f=ONAP-XACML%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fxacml%2Futil%2FXACMLPolicyWriter.java;h=f28d829ee0845f024d6a3e9a59e9437a150251d9;hp=928165909e7b0894f9295a344faac48ce0e9c01d;hb=d089848fdb0beef8446bdcf60cdb14e4655a93e5;hpb=1df87df1af0d215b9ff908dd15089393b9be270b diff --git a/ONAP-XACML/src/main/java/org/onap/policy/xacml/util/XACMLPolicyWriter.java b/ONAP-XACML/src/main/java/org/onap/policy/xacml/util/XACMLPolicyWriter.java index 928165909..f28d829ee 100644 --- a/ONAP-XACML/src/main/java/org/onap/policy/xacml/util/XACMLPolicyWriter.java +++ b/ONAP-XACML/src/main/java/org/onap/policy/xacml/util/XACMLPolicyWriter.java @@ -2,15 +2,15 @@ * ============LICENSE_START======================================================= * ONAP-XACML * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. * Modified Copyright (C) 2018 Samsung Electronics Co., Ltd. * ================================================================================ * 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. @@ -18,6 +18,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.xacml.util; import java.io.ByteArrayInputStream; @@ -36,10 +37,6 @@ import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; -import org.onap.policy.common.logging.eelf.MessageCodes; -import org.onap.policy.common.logging.eelf.PolicyLogger; - - import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType; @@ -55,9 +52,12 @@ import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType; import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; +import org.onap.policy.common.logging.eelf.MessageCodes; +import org.onap.policy.common.logging.eelf.PolicyLogger; + /** * Helper static class for policy writing. - * + * * */ public class XACMLPolicyWriter { @@ -131,17 +131,34 @@ public class XACMLPolicyWriter { } } - /** * Helper static class that does the work to write a policy to a file on disk. * * */ - public static InputStream getXmlAsInputStream(PolicyType policy) { - JAXBElement policyElement = new ObjectFactory().createPolicy(policy); + public static InputStream getXmlAsInputStream(Object policy) { + JAXBElement policyElement; + if (policy instanceof PolicyType) { + policyElement = new ObjectFactory().createPolicy((PolicyType) policy); + return getByteArrayInputStream(policyElement, PolicyType.class); + } else if (policy instanceof PolicySetType) { + policyElement = new ObjectFactory().createPolicySet((PolicySetType) policy); + return getByteArrayInputStream(policyElement, PolicySetType.class); + } + return null; + } + + /** + * Helper static class that reads the JAXB element and return policy input stream. + * + * @param policyElement + * @param className (PolicyType or PolicySetType ?). + * @return ByteArrayInputStream. + */ + public static InputStream getByteArrayInputStream(JAXBElement policyElement, Class className) { try { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - JAXBContext context = JAXBContext.newInstance(PolicyType.class); + JAXBContext context = JAXBContext.newInstance(className); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); m.marshal(policyElement, byteArrayOutputStream); @@ -151,6 +168,27 @@ public class XACMLPolicyWriter { throw new IllegalArgumentException("XACMLPolicyWriter writePolicyFile failed", e); } } + + /** + * Helper static class that does the work to write a policy set. + * + * + */ + public static InputStream getPolicySetXmlAsInputStream(PolicySetType policy) { + JAXBElement policyElement = new ObjectFactory().createPolicySet(policy); + try { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + JAXBContext context = JAXBContext.newInstance(PolicySetType.class); + Marshaller m = context.createMarshaller(); + m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + m.marshal(policyElement, byteArrayOutputStream); + return new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); + } catch (JAXBException e) { + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "XACMLPolicyWriter", "writePolicyFile failed"); + throw new IllegalArgumentException("XACMLPolicyWriter writePolicyFile failed", e); + } + } + /** * Helper static class that does the work to write a policy set to an output stream. * @@ -168,21 +206,24 @@ public class XACMLPolicyWriter { } } - @SuppressWarnings({ "unchecked", "rawtypes" }) + @SuppressWarnings({"unchecked", "rawtypes"}) public static String changeFileNameInXmlWhenRenamePolicy(Path filename) { String extension = ""; String domain = null; String repository = "repository"; - if(filename.toString().contains("Config_")){ - domain = filename.toString().substring(filename.toString().indexOf(repository) + (repository.length()+1), filename.toString().indexOf("Config_")); - }else if(filename.toString().contains("Action_")){ - domain = filename.toString().substring(filename.toString().indexOf(repository) + (repository.length()+1), filename.toString().indexOf("Action_")); - }else if(filename.toString().contains("Decision_")){ - domain = filename.toString().substring(filename.toString().indexOf(repository) + (repository.length()+1), filename.toString().indexOf("Decision_")); + if (filename.toString().contains("Config_")) { + domain = filename.toString().substring(filename.toString().indexOf(repository) + (repository.length() + 1), + filename.toString().indexOf("Config_")); + } else if (filename.toString().contains("Action_")) { + domain = filename.toString().substring(filename.toString().indexOf(repository) + (repository.length() + 1), + filename.toString().indexOf("Action_")); + } else if (filename.toString().contains("Decision_")) { + domain = filename.toString().substring(filename.toString().indexOf(repository) + (repository.length() + 1), + filename.toString().indexOf("Decision_")); } - if(domain.contains(File.separator)){ - domain = domain.replace(File.separator, "."); + if (domain.contains(File.separator)) { + domain = domain.replace(File.separator, "."); } try { JAXBContext context = JAXBContext.newInstance(PolicyType.class); @@ -192,73 +233,100 @@ public class XACMLPolicyWriter { if (policyType != null) { TargetType targetType = policyType.getTarget(); List anyOfTypes = targetType.getAnyOf(); - for( Iterator anyOfIte = anyOfTypes.iterator(); anyOfIte.hasNext(); ){ + for (Iterator anyOfIte = anyOfTypes.iterator(); anyOfIte.hasNext();) { AnyOfType anyOfType = (AnyOfType) anyOfIte.next(); List allOf = anyOfType.getAllOf(); - for( Iterator allOfIte = allOf.iterator(); allOfIte.hasNext(); ){ + for (Iterator allOfIte = allOf.iterator(); allOfIte.hasNext();) { AllOfType allOfType = (AllOfType) allOfIte.next(); List match = allOfType.getMatch(); - for( Iterator matchIte = match.iterator(); matchIte.hasNext();) { - MatchType matchType = (MatchType) matchIte.next(); - if("PolicyName".equals(matchType.getAttributeDesignator().getAttributeId())){ + for (Iterator matchIte = match.iterator(); matchIte.hasNext();) { + MatchType matchType = (MatchType) matchIte.next(); + if ("PolicyName".equals(matchType.getAttributeDesignator().getAttributeId())) { AttributeValueType attributeValueType = matchType.getAttributeValue(); List contents = attributeValueType.getContent(); if (contents != null && !contents.isEmpty()) { - String tmp = filename.getFileName()+""; + String tmp = filename.getFileName() + ""; String newName = tmp.substring(0, tmp.lastIndexOf(".")); attributeValueType.getContent().clear(); - attributeValueType.getContent().add(domain + newName + "." + "xml"); + attributeValueType.getContent().add(domain + newName + "." + "xml"); } } } } } - if(filename.toString().contains("Config_") || filename.toString().contains("Action_")){ - List objects = policyType.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition(); + if (filename.toString().contains("Config_") || filename.toString().contains("Action_")) { + List objects = + policyType.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition(); if (objects != null && !objects.isEmpty()) { for (Iterator ite = objects.iterator(); ite.hasNext();) { - RuleType ruleType = (RuleType ) ite.next(); + RuleType ruleType = (RuleType) ite.next(); AdviceExpressionsType adviceExpressionsType = ruleType.getAdviceExpressions(); if (adviceExpressionsType != null) { - List adviceExpressionTypes = adviceExpressionsType.getAdviceExpression(); + List adviceExpressionTypes = + adviceExpressionsType.getAdviceExpression(); if (adviceExpressionTypes != null && !adviceExpressionTypes.isEmpty()) { - for (Iterator iterator = adviceExpressionTypes - .iterator(); iterator.hasNext();) { - AdviceExpressionType adviceExpressionType = (AdviceExpressionType) iterator - .next(); - if (adviceExpressionType.getAdviceId() != null && !"".equals(adviceExpressionType.getAdviceId()) && ("configID".equals(adviceExpressionType.getAdviceId()) - || "faultID".equals(adviceExpressionType.getAdviceId()) || "PMID".equals(adviceExpressionType.getAdviceId())||"firewallConfigID".equals(adviceExpressionType.getAdviceId()) || "OptimizationID".equals(adviceExpressionType.getAdviceId()) - || "MSID".equals(adviceExpressionType.getAdviceId())) || "GocID".equals(adviceExpressionType.getAdviceId())||"GocHPID".equals(adviceExpressionType.getAdviceId())||"BRMSRAWID".equals(adviceExpressionType.getAdviceId()) - || "BRMSPARAMID".equals(adviceExpressionType.getAdviceId())|| "HPSuppID".equals(adviceExpressionType.getAdviceId()) || "HPFlapID".equals(adviceExpressionType.getAdviceId()) || "HPOverID".equals(adviceExpressionType.getAdviceId())) - { - List attributeAssignmentExpressionTypes = adviceExpressionType.getAttributeAssignmentExpression(); - if (attributeAssignmentExpressionTypes != null && !attributeAssignmentExpressionTypes.isEmpty()) { - for (Iterator iterator2 = attributeAssignmentExpressionTypes - .iterator(); iterator2.hasNext();) { - AttributeAssignmentExpressionType attributeAssignmentExpressionType = (AttributeAssignmentExpressionType) iterator2 - .next(); - if ("URLID".equals(attributeAssignmentExpressionType.getAttributeId())) { - JAXBElement attributeValueType = (JAXBElement) attributeAssignmentExpressionType.getExpression(); - AttributeValueType attributeValueType1 = attributeValueType.getValue(); + for (Iterator iterator = adviceExpressionTypes.iterator(); iterator.hasNext();) { + AdviceExpressionType adviceExpressionType = + (AdviceExpressionType) iterator.next(); + if (adviceExpressionType.getAdviceId() != null + && !"".equals(adviceExpressionType.getAdviceId()) + && ("configID".equals(adviceExpressionType.getAdviceId()) + || "faultID".equals(adviceExpressionType.getAdviceId()) + || "PMID".equals(adviceExpressionType.getAdviceId()) + || "firewallConfigID".equals(adviceExpressionType.getAdviceId()) + || "OptimizationID".equals(adviceExpressionType.getAdviceId()) + || "MSID".equals(adviceExpressionType.getAdviceId())) + || "GocID".equals(adviceExpressionType.getAdviceId()) + || "GocHPID".equals(adviceExpressionType.getAdviceId()) + || "BRMSRAWID".equals(adviceExpressionType.getAdviceId()) + || "BRMSPARAMID".equals(adviceExpressionType.getAdviceId()) + || "HPSuppID".equals(adviceExpressionType.getAdviceId()) + || "HPFlapID".equals(adviceExpressionType.getAdviceId()) + || "HPOverID".equals(adviceExpressionType.getAdviceId())) { + List attributeAssignmentExpressionTypes = + adviceExpressionType.getAttributeAssignmentExpression(); + if (attributeAssignmentExpressionTypes != null + && !attributeAssignmentExpressionTypes.isEmpty()) { + for (Iterator iterator2 = + attributeAssignmentExpressionTypes.iterator(); iterator2 + .hasNext();) { + AttributeAssignmentExpressionType attributeAssignmentExpressionType = + (AttributeAssignmentExpressionType) iterator2.next(); + if ("URLID".equals( + attributeAssignmentExpressionType.getAttributeId())) { + JAXBElement attributeValueType = + (JAXBElement) attributeAssignmentExpressionType + .getExpression(); + AttributeValueType attributeValueType1 = + attributeValueType.getValue(); String configUrl = "$URL"; - String urlVal = (String) attributeValueType1.getContent().get(0); - String origExtension = urlVal.substring(urlVal.lastIndexOf('.')+1).trim(); + String urlVal = + (String) attributeValueType1.getContent().get(0); + String origExtension = + urlVal.substring(urlVal.lastIndexOf('.') + 1).trim(); extension = origExtension; attributeValueType1.getContent().clear(); String txtFileName = filename.getFileName().toString(); - txtFileName = txtFileName.substring(0, txtFileName.lastIndexOf(".")+1) + origExtension; - txtFileName = configUrl+ File.separator + "Config" + File.separator + domain + txtFileName; + txtFileName = txtFileName.substring(0, + txtFileName.lastIndexOf(".") + 1) + origExtension; + txtFileName = configUrl + File.separator + "Config" + + File.separator + domain + txtFileName; attributeValueType1.getContent().add(txtFileName); - } else if ("PolicyName".equals(attributeAssignmentExpressionType.getAttributeId())) { - JAXBElement attributeValueType = (JAXBElement) attributeAssignmentExpressionType.getExpression(); - AttributeValueType attributeValueType1 = attributeValueType.getValue(); + } else if ("PolicyName".equals( + attributeAssignmentExpressionType.getAttributeId())) { + JAXBElement attributeValueType = + (JAXBElement) attributeAssignmentExpressionType + .getExpression(); + AttributeValueType attributeValueType1 = + attributeValueType.getValue(); List contents = attributeValueType1.getContent(); if (contents != null && !contents.isEmpty()) { - String tmp = filename.getFileName()+""; + String tmp = filename.getFileName() + ""; String newName = tmp.substring(0, tmp.lastIndexOf(".")); attributeValueType1.getContent().clear(); - attributeValueType1.getContent().add(domain + newName + "." + "xml"); + attributeValueType1.getContent() + .add(domain + newName + "." + "xml"); } } @@ -273,33 +341,47 @@ public class XACMLPolicyWriter { if (objects != null && !objects.isEmpty()) { for (Iterator ite1 = objects.iterator(); ite1.hasNext();) { - RuleType ruleType1 = (RuleType ) ite1.next(); - ObligationExpressionsType obligationExpressionsType = ruleType1.getObligationExpressions(); + RuleType ruleType1 = (RuleType) ite1.next(); + ObligationExpressionsType obligationExpressionsType = + ruleType1.getObligationExpressions(); if (obligationExpressionsType != null) { - List obligationExpressionType = obligationExpressionsType.getObligationExpression(); + List obligationExpressionType = + obligationExpressionsType.getObligationExpression(); if (obligationExpressionType != null && !obligationExpressionType.isEmpty()) { - for (Iterator iterator = obligationExpressionType - .iterator(); iterator.hasNext();) { - ObligationExpressionType obligationExpressionTypes = (ObligationExpressionType) iterator - .next(); - if (obligationExpressionTypes.getObligationId() != null && !"".equals(obligationExpressionTypes.getObligationId())) { - List attributeAssignmentExpressionTypes = obligationExpressionTypes.getAttributeAssignmentExpression(); - if (attributeAssignmentExpressionTypes != null && !attributeAssignmentExpressionTypes.isEmpty()) { - for (Iterator iterator2 = attributeAssignmentExpressionTypes - .iterator(); iterator2.hasNext();) { - AttributeAssignmentExpressionType attributeAssignmentExpressionType = (AttributeAssignmentExpressionType) iterator2 - .next(); - if ("body".equals(attributeAssignmentExpressionType.getAttributeId())) { - JAXBElement attributeValueType = (JAXBElement) attributeAssignmentExpressionType.getExpression(); - AttributeValueType attributeValueType1 = attributeValueType.getValue(); + for (Iterator iterator = obligationExpressionType.iterator(); iterator + .hasNext();) { + ObligationExpressionType obligationExpressionTypes = + (ObligationExpressionType) iterator.next(); + if (obligationExpressionTypes.getObligationId() != null + && !"".equals(obligationExpressionTypes.getObligationId())) { + List attributeAssignmentExpressionTypes = + obligationExpressionTypes.getAttributeAssignmentExpression(); + if (attributeAssignmentExpressionTypes != null + && !attributeAssignmentExpressionTypes.isEmpty()) { + for (Iterator iterator2 = + attributeAssignmentExpressionTypes.iterator(); iterator2 + .hasNext();) { + AttributeAssignmentExpressionType attributeAssignmentExpressionType = + (AttributeAssignmentExpressionType) iterator2.next(); + if ("body".equals( + attributeAssignmentExpressionType.getAttributeId())) { + JAXBElement attributeValueType = + (JAXBElement) attributeAssignmentExpressionType + .getExpression(); + AttributeValueType attributeValueType1 = + attributeValueType.getValue(); String configUrl = "$URL"; - String urlVal = (String) attributeValueType1.getContent().get(0); - String origExtension = urlVal.substring(urlVal.lastIndexOf('.')+1).trim(); + String urlVal = + (String) attributeValueType1.getContent().get(0); + String origExtension = urlVal + .substring(urlVal.lastIndexOf('.') + 1).trim(); extension = "json"; attributeValueType1.getContent().clear(); String txtFileName = filename.getFileName().toString(); - txtFileName = txtFileName.substring(0, txtFileName.lastIndexOf(".")+1) + origExtension; - txtFileName = configUrl+ File.separator + "Action" + File.separator + domain + txtFileName; + txtFileName = txtFileName.substring(0, + txtFileName.lastIndexOf(".") + 1) + origExtension; + txtFileName = configUrl + File.separator + "Action" + + File.separator + domain + txtFileName; attributeValueType1.getContent().add(txtFileName); } @@ -317,7 +399,7 @@ public class XACMLPolicyWriter { } writePolicyFile(filename, policyType); } - }catch (JAXBException e) { + } catch (JAXBException e) { PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "XACMLPolicyWriter", "writePolicyFile failed"); }