List of usage examples for org.w3c.dom Node getLocalName
public String getLocalName();
From source file:org.apache.openaz.xacml.pdp.policy.dom.DOMPolicyDefaults.java
public static boolean repair(Node nodePolicyDefaults) throws DOMStructureException { Element elementPolicyDefaults = DOMUtil.getElement(nodePolicyDefaults); boolean result = false; NodeList children = elementPolicyDefaults.getChildNodes(); int numChildren; if (children != null && (numChildren = children.getLength()) > 0) { for (int i = 0; i < numChildren; i++) { Node child = children.item(i); if (DOMUtil.isElement(child)) { if (DOMUtil.isInNamespace(child, XACML3.XMLNS) && XACML3.ELEMENT_XPATHVERSION.equals(child.getLocalName())) { try { DOMUtil.getURIContent(child); } catch (DOMStructureException ex) { logger.warn("Setting invalid " + XACML3.ELEMENT_XPATHVERSION + " attribute " + child.getTextContent() + " to " + XACML.XPATHVERSION_2_0); child.setTextContent(XACML.XPATHVERSION_2_0); result = true;/*from ww w . j a v a 2 s.c o m*/ } } else { logger.warn("Unexpected element " + child.getNodeName()); elementPolicyDefaults.removeChild(child); result = true; } } } } return result; }
From source file:org.apache.openaz.xacml.pdp.policy.dom.DOMPolicyIssuer.java
/** * Creates a new <code>DOMPolicyIssuer</code> by parsing the given <code>Node</code> representing a XACML * PolicyIssuer element.//from w w w. jav a2 s.c o m * * @param nodePolicyIssuer the <code>Node</code> representing the PolicyIssuer element * @return the new <code>DOMPolicyIssuer</code> parsed from the given <code>Node</code> * @throws DOMStructureException if the conversion is not possible */ public static PolicyIssuer newInstance(Node nodePolicyIssuer) throws DOMStructureException { Element elementPolicyIssuer = DOMUtil.getElement(nodePolicyIssuer); boolean bLenient = DOMProperties.isLenient(); DOMPolicyIssuer domPolicyIssuer = new DOMPolicyIssuer(); try { NodeList children = elementPolicyIssuer.getChildNodes(); int numChildren; if (children != null && (numChildren = children.getLength()) > 0) { for (int i = 0; i < numChildren; i++) { Node child = children.item(i); if (DOMUtil.isElement(child) && DOMUtil.isInNamespace(child, XACML3.XMLNS)) { String childName = child.getLocalName(); if (XACML3.ELEMENT_CONTENT.equals(childName)) { if (domPolicyIssuer.getContent() != null && !bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodePolicyIssuer); } domPolicyIssuer.setContent(child); } else if (XACML3.ELEMENT_ATTRIBUTE.equals(childName)) { domPolicyIssuer.add(DOMAttribute.newInstance(identifierCategoryPolicyIssuer, child)); } else if (!bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodePolicyIssuer); } } } } } catch (DOMStructureException ex) { domPolicyIssuer.setStatus(StdStatusCode.STATUS_CODE_SYNTAX_ERROR, ex.getMessage()); if (DOMProperties.throwsExceptions()) { throw ex; } } return domPolicyIssuer; }
From source file:org.apache.openaz.xacml.pdp.policy.dom.DOMPolicyIssuer.java
public static boolean repair(Node nodePolicyIssuer) throws DOMStructureException { Element elementPolicyIssuer = DOMUtil.getElement(nodePolicyIssuer); boolean result = false; boolean sawContent = false; NodeList children = elementPolicyIssuer.getChildNodes(); int numChildren; if (children != null && (numChildren = children.getLength()) > 0) { for (int i = 0; i < numChildren; i++) { Node child = children.item(i); if (DOMUtil.isElement(child) && DOMUtil.isInNamespace(child, XACML3.XMLNS)) { String childName = child.getLocalName(); if (XACML3.ELEMENT_CONTENT.equals(childName)) { if (sawContent) { logger.warn("Unexpected element " + child.getNodeName()); elementPolicyIssuer.removeChild(child); result = true;/*from w w w . jav a 2 s . co m*/ } else { sawContent = true; } } else if (XACML3.ELEMENT_ATTRIBUTE.equals(childName)) { result = DOMAttribute.repair(child) || result; } else { logger.warn("Unexpected element " + child.getNodeName()); elementPolicyIssuer.removeChild(child); result = true; } } } } return result; }
From source file:org.apache.openaz.xacml.pdp.policy.dom.DOMPolicySet.java
/** * Creates a new <code>PolicySet</code> by parsing the given <code>Node</code> representing a XACML * PolicySet element.//w w w .j a v a 2s. com * * @param nodePolicySet the <code>Node</code> representing the XACML PolicySetelement * @param policyDefaultsParent the {@link org.apache.openaz.xacml.pdp.policy.PolicyDefaults} from the * parent element * @return a new <code>PolicySet</code> parsed from the given <code>Node</code> * @throws DOMStructureException if there is an error parsing the <code>Node</code> */ public static PolicySet newInstance(Node nodePolicySet, PolicySet policySetParent, PolicyDefaults policyDefaultsParent) throws DOMStructureException { Element elementPolicySet = DOMUtil.getElement(nodePolicySet); boolean bLenient = DOMProperties.isLenient(); PolicySet domPolicySet = new PolicySet(policySetParent); Iterator<?> iterator; Identifier identifier; Integer integer; try { NodeList children = elementPolicySet.getChildNodes(); int numChildren; if (children != null && (numChildren = children.getLength()) > 0) { /* * Run through once, quickly, to set the PolicyDefaults for the new DOMPolicySet */ for (int i = 0; i < numChildren; i++) { Node child = children.item(i); if (DOMUtil.isNamespaceElement(child, XACML3.XMLNS) && XACML3.ELEMENT_POLICYDEFAULTS.equals(child.getLocalName())) { if (domPolicySet.getPolicyDefaults() != null && !bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodePolicySet); } domPolicySet.setPolicyDefaults(DOMPolicyDefaults.newInstance(child, policyDefaultsParent)); } } if (domPolicySet.getPolicyDefaults() == null) { domPolicySet.setPolicyDefaults(policyDefaultsParent); } /* * Now process the other elements so we can pull up the parent policy defaults */ for (int i = 0; i < numChildren; i++) { Node child = children.item(i); if (DOMUtil.isElement(child)) { if (DOMUtil.isInNamespace(child, XACML3.XMLNS)) { String childName = child.getLocalName(); if (XACML3.ELEMENT_DESCRIPTION.equals(childName)) { if (domPolicySet.getDescription() != null && !bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodePolicySet); } domPolicySet.setDescription(child.getTextContent()); } else if (XACML3.ELEMENT_POLICYISSUER.equals(childName)) { if (domPolicySet.getPolicyIssuer() != null && !bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodePolicySet); } domPolicySet.setPolicyIssuer(DOMPolicyIssuer.newInstance(child)); } else if (XACML3.ELEMENT_POLICYSETDEFAULTS.equals(childName)) { //NOPMD // TODO } else if (XACML3.ELEMENT_TARGET.equals(childName)) { if (domPolicySet.getTarget() != null && !bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodePolicySet); } domPolicySet.setTarget(DOMTarget.newInstance(child)); } else if (XACML3.ELEMENT_POLICYSET.equals(childName)) { domPolicySet.addChild(DOMPolicySet.newInstance(child, domPolicySet, domPolicySet.getPolicyDefaults())); } else if (XACML3.ELEMENT_POLICY.equals(childName)) { domPolicySet.addChild(DOMPolicy.newInstance(child, domPolicySet, domPolicySet.getPolicyDefaults())); } else if (XACML3.ELEMENT_POLICYIDREFERENCE.equals(childName)) { domPolicySet.addChild(DOMPolicyIdReference.newInstance(child, domPolicySet)); } else if (XACML3.ELEMENT_POLICYSETIDREFERENCE.equals(childName)) { domPolicySet.addChild(DOMPolicySetIdReference.newInstance(child, domPolicySet)); } else if (XACML3.ELEMENT_COMBINERPARAMETERS.equals(childName)) { domPolicySet.addCombinerParameters(DOMCombinerParameter.newList(child)); } else if (XACML3.ELEMENT_POLICYCOMBINERPARAMETERS.equals(childName)) { domPolicySet .addPolicyCombinerParameter(DOMPolicyCombinerParameter.newInstance(child)); } else if (XACML3.ELEMENT_POLICYSETCOMBINERPARAMETERS.equals(childName)) { domPolicySet.addPolicyCombinerParameter( DOMPolicySetCombinerParameter.newInstance(child)); } else if (XACML3.ELEMENT_OBLIGATIONEXPRESSIONS.equals(childName)) { if ((iterator = domPolicySet.getObligationExpressions()) != null && iterator.hasNext() && !bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodePolicySet); } domPolicySet.setObligationExpressions(DOMObligationExpression.newList(child, null)); } else if (XACML3.ELEMENT_ADVICEEXPRESSIONS.equals(childName)) { if ((iterator = domPolicySet.getAdviceExpressions()) != null && iterator.hasNext() && !bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodePolicySet); } domPolicySet.setAdviceExpressions(DOMAdviceExpression.newList(child, null)); } else if (!bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodePolicySet); } } else if (!bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodePolicySet); } } } } if (domPolicySet.getTarget() == null && !bLenient) { throw DOMUtil.newMissingElementException(nodePolicySet, XACML3.XMLNS, XACML3.ELEMENT_TARGET); } /* * Get the attributes */ domPolicySet.setIdentifier( DOMUtil.getIdentifierAttribute(elementPolicySet, XACML3.ATTRIBUTE_POLICYSETID, !bLenient)); domPolicySet .setVersion(DOMUtil.getVersionAttribute(elementPolicySet, XACML3.ATTRIBUTE_VERSION, !bLenient)); identifier = DOMUtil.getIdentifierAttribute(elementPolicySet, XACML3.ATTRIBUTE_POLICYCOMBININGALGID, !bLenient); CombiningAlgorithm<PolicySetChild> combiningAlgorithm = null; try { combiningAlgorithm = CombiningAlgorithmFactory.newInstance() .getPolicyCombiningAlgorithm(identifier); } catch (FactoryException ex) { if (!bLenient) { throw new DOMStructureException("Failed to get CombinginAlgorithm", ex); } } if (combiningAlgorithm == null && !bLenient) { throw new DOMStructureException(elementPolicySet, "Unknown policy combining algorithm \"" + identifier.toString() + "\" in \"" + DOMUtil.getNodeLabel(nodePolicySet)); } else { domPolicySet.setPolicyCombiningAlgorithm(combiningAlgorithm); } if ((integer = DOMUtil.getIntegerAttribute(elementPolicySet, XACML3.ATTRIBUTE_MAXDELEGATIONDEPTH)) != null) { domPolicySet.setMaxDelegationDepth(integer); } } catch (DOMStructureException ex) { domPolicySet.setStatus(StdStatusCode.STATUS_CODE_SYNTAX_ERROR, ex.getMessage()); if (DOMProperties.throwsExceptions()) { throw ex; } } return domPolicySet; }
From source file:org.apache.openaz.xacml.pdp.policy.dom.DOMPolicySet.java
public static boolean repair(Node nodePolicySet) throws DOMStructureException { Element elementPolicySet = DOMUtil.getElement(nodePolicySet); boolean result = false; NodeList children = elementPolicySet.getChildNodes(); int numChildren; boolean sawDescription = false; boolean sawPolicyIssuer = false; boolean sawPolicyDefaults = false; boolean sawTarget = false; boolean sawObligationExprs = false; boolean sawAdviceExprs = false; if (children != null && (numChildren = children.getLength()) > 0) { /*//from www .ja v a2s.c om * Now process the other elements so we can pull up the parent policy defaults */ for (int i = 0; i < numChildren; i++) { Node child = children.item(i); if (DOMUtil.isElement(child)) { if (DOMUtil.isInNamespace(child, XACML3.XMLNS)) { String childName = child.getLocalName(); if (XACML3.ELEMENT_DESCRIPTION.equals(childName)) { if (sawDescription) { logger.warn("Unexpected element " + child.getNodeName()); elementPolicySet.removeChild(child); result = true; } else { sawDescription = true; } } else if (XACML3.ELEMENT_POLICYISSUER.equals(childName)) { if (sawPolicyIssuer) { logger.warn("Unexpected element " + child.getNodeName()); elementPolicySet.removeChild(child); result = true; } else { sawPolicyIssuer = true; result = DOMPolicyIssuer.repair(child) || result; } } else if (XACML3.ELEMENT_POLICYSETDEFAULTS.equals(childName)) { if (sawPolicyDefaults) { logger.warn("Unexpected element " + child.getNodeName()); elementPolicySet.removeChild(child); result = true; } else { sawPolicyDefaults = true; result = DOMPolicyDefaults.repair(child) || result; } } else if (XACML3.ELEMENT_TARGET.equals(childName)) { if (sawTarget) { logger.warn("Unexpected element " + child.getNodeName()); elementPolicySet.removeChild(child); result = true; } else { sawTarget = true; result = DOMTarget.repair(child) || result; } } else if (XACML3.ELEMENT_POLICYSET.equals(childName)) { result = DOMPolicySet.repair(child) || result; } else if (XACML3.ELEMENT_POLICY.equals(childName)) { result = DOMPolicy.repair(child) || result; } else if (XACML3.ELEMENT_POLICYIDREFERENCE.equals(childName)) { result = DOMPolicyIdReference.repair(child) || result; } else if (XACML3.ELEMENT_POLICYSETIDREFERENCE.equals(childName)) { result = DOMPolicySetIdReference.repair(child) || result; } else if (XACML3.ELEMENT_COMBINERPARAMETERS.equals(childName)) { result = DOMCombinerParameter.repair(child) || result; } else if (XACML3.ELEMENT_POLICYCOMBINERPARAMETERS.equals(childName)) { result = DOMPolicyCombinerParameter.repair(child) || result; } else if (XACML3.ELEMENT_POLICYSETCOMBINERPARAMETERS.equals(childName)) { result = DOMPolicySetCombinerParameter.repair(child) || result; } else if (XACML3.ELEMENT_OBLIGATIONEXPRESSIONS.equals(childName)) { if (sawObligationExprs) { logger.warn("Unexpected element " + child.getNodeName()); elementPolicySet.removeChild(child); result = true; } else { sawObligationExprs = true; result = DOMObligationExpression.repairList(child) || result; } } else if (XACML3.ELEMENT_ADVICEEXPRESSIONS.equals(childName)) { if (sawAdviceExprs) { logger.warn("Unexpected element " + child.getNodeName()); elementPolicySet.removeChild(child); result = true; } else { sawAdviceExprs = true; result = DOMAdviceExpression.repairList(child) || result; } } else { logger.warn("Unexpected element " + child.getNodeName()); elementPolicySet.removeChild(child); result = true; } } else { logger.warn("Unexpected element " + child.getNodeName()); elementPolicySet.removeChild(child); result = true; } } } } if (!sawTarget) { throw DOMUtil.newMissingElementException(nodePolicySet, XACML3.XMLNS, XACML3.ELEMENT_TARGET); } /* * Get the attributes */ result = DOMUtil.repairIdentifierAttribute(elementPolicySet, XACML3.ATTRIBUTE_POLICYSETID, logger) || result; result = DOMUtil.repairVersionAttribute(elementPolicySet, XACML3.ATTRIBUTE_VERSION, logger) || result; result = DOMUtil.repairIdentifierAttribute(elementPolicySet, XACML3.ATTRIBUTE_POLICYCOMBININGALGID, XACML3.ID_POLICY_DENY_OVERRIDES, logger) || result; Identifier identifier = DOMUtil.getIdentifierAttribute(elementPolicySet, XACML3.ATTRIBUTE_POLICYCOMBININGALGID); CombiningAlgorithm<PolicySetChild> combiningAlgorithm = null; try { combiningAlgorithm = CombiningAlgorithmFactory.newInstance().getPolicyCombiningAlgorithm(identifier); } catch (FactoryException ex) { combiningAlgorithm = null; } if (combiningAlgorithm == null) { logger.warn("Setting invalid " + XACML3.ATTRIBUTE_POLICYCOMBININGALGID + " attribute " + identifier.stringValue() + " to " + XACML3.ID_POLICY_DENY_OVERRIDES.stringValue()); elementPolicySet.setAttribute(XACML3.ATTRIBUTE_POLICYCOMBININGALGID, XACML3.ID_POLICY_DENY_OVERRIDES.stringValue()); result = true; } return result; }
From source file:org.apache.openaz.xacml.pdp.policy.dom.DOMPolicySetCombinerParameter.java
/** * Creates a new <code>TargetedCombinerParameter</code> for <code>PolicySet</code>s by parsing the given * <code>Node</code> representing a XACML PolicySetCombinerParameter element. * * @param nodeCombinerParameter the <code>Node</code> representing the XACML PolicySetCombinerParameter * element/*from ww w . j a v a 2 s .co m*/ * @return a new <code>TargetedCombinerParameter</code> for <code>PolicySet</code>s parsed from the given * <code>Node</code> * @throws DOMStructureException if there is an error parsing the <code>Node</code> */ public static TargetedCombinerParameter<Identifier, PolicySetChild> newInstance(Node nodeCombinerParameter) throws DOMStructureException { Element elementPolicySetCombinerParameter = DOMUtil.getElement(nodeCombinerParameter); boolean bLenient = DOMProperties.isLenient(); DOMPolicySetCombinerParameter domPolicySetCombinerParameter = new DOMPolicySetCombinerParameter(); try { NodeList children = elementPolicySetCombinerParameter.getChildNodes(); int numChildren; if (children != null && (numChildren = children.getLength()) > 0) { for (int i = 0; i < numChildren; i++) { Node child = children.item(i); if (DOMUtil.isElement(child)) { if (DOMUtil.isInNamespace(child, XACML3.XMLNS) && XACML3.ELEMENT_ATTRIBUTEVALUE.equals(child.getLocalName())) { if (domPolicySetCombinerParameter.getAttributeValue() != null && !bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodeCombinerParameter); } domPolicySetCombinerParameter .setAttributeValue(DOMAttributeValue.newInstance(child, null)); } else if (!bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodeCombinerParameter); } } } } if (domPolicySetCombinerParameter.getAttributeValue() == null && !bLenient) { throw DOMUtil.newMissingElementException(elementPolicySetCombinerParameter, XACML3.XMLNS, XACML3.ELEMENT_ATTRIBUTEVALUE); } domPolicySetCombinerParameter.setName(DOMUtil.getStringAttribute(elementPolicySetCombinerParameter, XACML3.ATTRIBUTE_PARAMETERNAME, !bLenient)); domPolicySetCombinerParameter.setTargetId(DOMUtil.getIdentifierAttribute( elementPolicySetCombinerParameter, XACML3.ATTRIBUTE_POLICYSETIDREF, !bLenient)); } catch (DOMStructureException ex) { domPolicySetCombinerParameter.setStatus(StdStatusCode.STATUS_CODE_SYNTAX_ERROR, ex.getMessage()); if (DOMProperties.throwsExceptions()) { throw ex; } } return domPolicySetCombinerParameter; }
From source file:org.apache.openaz.xacml.pdp.policy.dom.DOMPolicySetCombinerParameter.java
public static boolean repair(Node nodeCombinerParameter) throws DOMStructureException { Element elementPolicySetCombinerParameter = DOMUtil.getElement(nodeCombinerParameter); boolean result = false; NodeList children = elementPolicySetCombinerParameter.getChildNodes(); int numChildren; boolean sawAttributeValue = false; if (children != null && (numChildren = children.getLength()) > 0) { for (int i = 0; i < numChildren; i++) { Node child = children.item(i); if (DOMUtil.isElement(child)) { if (DOMUtil.isInNamespace(child, XACML3.XMLNS) && XACML3.ELEMENT_ATTRIBUTEVALUE.equals(child.getLocalName())) { if (sawAttributeValue) { logger.warn("Unexpected element " + child.getNodeName()); elementPolicySetCombinerParameter.removeChild(child); result = true;/* ww w .j a v a 2 s .co m*/ } else { sawAttributeValue = true; result = DOMAttributeValue.repair(child) || result; } } else { logger.warn("Unexpected element " + child.getNodeName()); elementPolicySetCombinerParameter.removeChild(child); result = true; } } } } if (!sawAttributeValue) { throw DOMUtil.newMissingElementException(elementPolicySetCombinerParameter, XACML3.XMLNS, XACML3.ELEMENT_ATTRIBUTEVALUE); } result = DOMUtil.repairStringAttribute(elementPolicySetCombinerParameter, XACML3.ATTRIBUTE_PARAMETERNAME, "parameter", logger) || result; result = DOMUtil.repairIdentifierAttribute(elementPolicySetCombinerParameter, XACML3.ATTRIBUTE_POLICYSETIDREF, logger) || result; return result; }
From source file:org.apache.openaz.xacml.pdp.policy.dom.DOMRule.java
/** * Creates a new <code>Rule</code> by parsing the given <code>Node</code> representing a XACML Rule * element.//from ww w . j a v a 2 s . c om * * @param nodeRule the <code>Node</code> representing the XACML Rule element * @param policy the {@link org.apache.openaz.xacml.pdp.policy.Policy} encompassing the Rule element * @return a new <code>Rule</code> parsed from the given <code>Node</code> * @throws DOMStructureException if there is an error parsing the <code>Node</code> */ public static Rule newInstance(Node nodeRule, Policy policy) throws DOMStructureException { Element elementRule = DOMUtil.getElement(nodeRule); boolean bLenient = DOMProperties.isLenient(); DOMRule domRule = new DOMRule(); domRule.setPolicy(policy); Iterator<?> iterator; try { NodeList children = elementRule.getChildNodes(); int numChildren; if (children != null && (numChildren = children.getLength()) > 0) { for (int i = 0; i < numChildren; i++) { Node child = children.item(i); if (DOMUtil.isElement(child)) { if (DOMUtil.isInNamespace(child, XACML3.XMLNS)) { String childName = child.getLocalName(); if (XACML3.ELEMENT_DESCRIPTION.equals(childName)) { if (domRule.getDescription() != null && !bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodeRule); } domRule.setDescription(child.getTextContent()); } else if (XACML3.ELEMENT_TARGET.equals(childName)) { if (domRule.getTarget() != null && !bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodeRule); } domRule.setTarget(DOMTarget.newInstance(child)); } else if (XACML3.ELEMENT_CONDITION.equals(childName)) { if (domRule.getCondition() != null && !bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodeRule); } Node nodeExpression = DOMUtil.getFirstChildElement(child); if (nodeExpression == null && !bLenient) { throw DOMUtil.newMissingElementException(child, XACML3.XMLNS, XACML3.ELEMENT_EXPRESSION); } domRule.setCondition( new Condition(DOMExpression.newInstance(nodeExpression, policy))); } else if (XACML3.ELEMENT_OBLIGATIONEXPRESSIONS.equals(childName)) { if ((iterator = domRule.getObligationExpressions()) != null && iterator.hasNext() && !bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodeRule); } domRule.setObligationExpressions(DOMObligationExpression.newList(child, policy)); } else if (XACML3.ELEMENT_ADVICEEXPRESSIONS.equals(childName)) { if ((iterator = domRule.getAdviceExpressions()) != null && iterator.hasNext() && !bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodeRule); } domRule.setAdviceExpressions(DOMAdviceExpression.newList(child, policy)); } else if (!bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodeRule); } } else if (!bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodeRule); } } } } domRule.setRuleId(DOMUtil.getStringAttribute(elementRule, XACML3.ATTRIBUTE_RULEID, !bLenient)); String string = DOMUtil.getStringAttribute(elementRule, XACML3.ATTRIBUTE_EFFECT, !bLenient); RuleEffect ruleEffect = RuleEffect.getRuleEffect(string); if (ruleEffect == null && !bLenient) { throw new DOMStructureException(elementRule, "Unknown RuleEffect \"" + string + "\" in \"" + DOMUtil.getNodeLabel(nodeRule) + "\""); } domRule.setRuleEffect(ruleEffect); } catch (DOMStructureException ex) { domRule.setStatus(StdStatusCode.STATUS_CODE_SYNTAX_ERROR, ex.getMessage()); if (DOMProperties.throwsExceptions()) { throw ex; } } return domRule; }
From source file:org.apache.openaz.xacml.pdp.policy.dom.DOMRule.java
public static boolean repair(Node nodeRule) throws DOMStructureException { Element elementRule = DOMUtil.getElement(nodeRule); boolean result = false; NodeList children = elementRule.getChildNodes(); int numChildren; boolean sawDescription = false; boolean sawTarget = false; boolean sawCondition = false; boolean sawObligationExpressions = false; boolean sawAdviceExpressions = false; if (children != null && (numChildren = children.getLength()) > 0) { for (int i = 0; i < numChildren; i++) { Node child = children.item(i); if (DOMUtil.isElement(child)) { if (DOMUtil.isInNamespace(child, XACML3.XMLNS)) { String childName = child.getLocalName(); if (XACML3.ELEMENT_DESCRIPTION.equals(childName)) { if (sawDescription) { logger.warn("Unexpected element " + child.getNodeName()); elementRule.removeChild(child); result = true; } else { sawDescription = true; }//from w ww . ja va2s . c o m } else if (XACML3.ELEMENT_TARGET.equals(childName)) { if (sawTarget) { logger.warn("Unexpected element " + child.getNodeName()); elementRule.removeChild(child); result = true; } else { sawTarget = true; result = DOMTarget.repair(child) || result; } } else if (XACML3.ELEMENT_CONDITION.equals(childName)) { if (sawCondition) { logger.warn("Unexpected element " + child.getNodeName()); elementRule.removeChild(child); result = true; } else { sawCondition = true; Node nodeExpression = DOMUtil.getFirstChildElement(child); if (nodeExpression == null) { throw DOMUtil.newMissingElementException(child, XACML3.XMLNS, XACML3.ELEMENT_EXPRESSION); } result = DOMExpression.repair(nodeExpression) || result; } } else if (XACML3.ELEMENT_OBLIGATIONEXPRESSIONS.equals(childName)) { if (sawObligationExpressions) { logger.warn("Unexpected element " + child.getNodeName()); elementRule.removeChild(child); result = true; } else { sawObligationExpressions = true; result = DOMObligationExpression.repairList(child) || result; } } else if (XACML3.ELEMENT_ADVICEEXPRESSIONS.equals(childName)) { if (sawAdviceExpressions) { logger.warn("Unexpected element " + child.getNodeName()); elementRule.removeChild(child); result = true; } else { sawAdviceExpressions = true; result = DOMAdviceExpression.repairList(child) || result; } } else { logger.warn("Unexpected element " + child.getNodeName()); elementRule.removeChild(child); result = true; } } else { logger.warn("Unexpected element " + child.getNodeName()); elementRule.removeChild(child); result = true; } } } } result = DOMUtil.repairStringAttribute(elementRule, XACML3.ATTRIBUTE_RULEID, IdentifierImpl.gensym().stringValue(), logger) || result; result = DOMUtil.repairStringAttribute(elementRule, XACML3.ATTRIBUTE_EFFECT, RuleEffect.DENY.getName(), logger) || result; String string = DOMUtil.getStringAttribute(elementRule, XACML3.ATTRIBUTE_EFFECT); RuleEffect ruleEffect = RuleEffect.getRuleEffect(string); if (ruleEffect == null) { logger.warn("Setting invalid " + XACML3.ATTRIBUTE_EFFECT + " attribute " + string + " to " + RuleEffect.DENY.getName()); elementRule.setAttribute(XACML3.ATTRIBUTE_EFFECT, RuleEffect.DENY.getName()); result = true; } return result; }
From source file:org.apache.openaz.xacml.pdp.policy.dom.DOMRuleCombinerParameters.java
/** * Creates a new <code>TargetedCombinerParameter</code> for * {@link org.apache.openaz.xacml.pdp.policy.Rule}s by parsing the given <code>Node</code> representing * a XACML RuleCombinerParameters element. * * @param nodeRuleCombinerParameters the <code>Node</code> representing the XACML RuleCombinerParameters * element.//from w ww .j av a 2 s .co m * @return a new <code>TargetedCombinerParameter</code> for <code>Rule</code>s parsed from the given * <code>Node</code> * @throws DOMStructureException if there is an error parsing the <code>Node</code>. */ public static TargetedCombinerParameter<String, Rule> newInstance(Node nodeRuleCombinerParameters) throws DOMStructureException { Element elementRuleCombinerParameters = DOMUtil.getElement(nodeRuleCombinerParameters); boolean bLenient = DOMProperties.isLenient(); DOMRuleCombinerParameters domRuleCombinerParameters = new DOMRuleCombinerParameters(); try { NodeList children = elementRuleCombinerParameters.getChildNodes(); int numChildren; if (children != null && (numChildren = children.getLength()) > 0) { for (int i = 0; i < numChildren; i++) { Node child = children.item(i); if (DOMUtil.isElement(child)) { if (DOMUtil.isInNamespace(child, XACML3.XMLNS) && XACML3.ELEMENT_ATTRIBUTEVALUE.equals(child.getLocalName())) { if (domRuleCombinerParameters.getAttributeValue() != null) { throw DOMUtil.newUnexpectedElementException(child, nodeRuleCombinerParameters); } domRuleCombinerParameters.setAttributeValue(DOMAttributeValue.newInstance(child, null)); } else if (!bLenient) { throw DOMUtil.newUnexpectedElementException(child, nodeRuleCombinerParameters); } } } } if (domRuleCombinerParameters.getAttributeValue() == null && !bLenient) { throw DOMUtil.newMissingElementException(nodeRuleCombinerParameters, XACML3.XMLNS, XACML3.ELEMENT_ATTRIBUTEVALUE); } domRuleCombinerParameters.setName(DOMUtil.getStringAttribute(elementRuleCombinerParameters, XACML3.ATTRIBUTE_PARAMETERNAME, !bLenient)); domRuleCombinerParameters.setTargetId(DOMUtil.getStringAttribute(elementRuleCombinerParameters, XACML3.ATTRIBUTE_RULEIDREF, !bLenient)); } catch (DOMStructureException ex) { domRuleCombinerParameters.setStatus(StdStatusCode.STATUS_CODE_SYNTAX_ERROR, ex.getMessage()); if (DOMProperties.throwsExceptions()) { throw ex; } } return domRuleCombinerParameters; }