sunxacml-commit Mailing List for Sun's XACML Implementation (Page 7)
Brought to you by:
farrukh_najmi,
sethp
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
(3) |
Jul
(6) |
Aug
(37) |
Sep
(5) |
Oct
(6) |
Nov
(1) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(3) |
Feb
(11) |
Mar
(26) |
Apr
(5) |
May
(27) |
Jun
(13) |
Jul
(7) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(2) |
2005 |
Jan
(12) |
Feb
(5) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(8) |
2006 |
Jan
(10) |
Feb
(6) |
Mar
|
Apr
(3) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
(1) |
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(6) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <se...@us...> - 2003-12-04 22:08:15
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/cond In directory sc8-pr-cvs1:/tmp/cvs-serv24080/com/sun/xacml/cond Modified Files: Tag: branch_1_1 MatchFunction.java Log Message: fixed $ and ^ anchor handling Index: MatchFunction.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/cond/MatchFunction.java,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** MatchFunction.java 13 Feb 2003 22:19:10 -0000 1.1.1.1 --- MatchFunction.java 4 Dec 2003 22:08:11 -0000 1.1.1.1.2.1 *************** *** 174,185 **** // in several ways; the next several code blocks transform // the XACML syntax into a semantically equivalent Pattern syntax // in order to handle the requirement that the string is // considered to match the pattern if any substring matches ! // the pattern, we prepend ".*" and append ".*" to the reg exp ! StringBuffer buf = new StringBuffer(arg0); ! buf = buf.insert(0, ".*"); ! buf = buf.insert(buf.length(), ".*"); // in order to handle Unicode blocks, we replace all --- 174,190 ---- // in several ways; the next several code blocks transform // the XACML syntax into a semantically equivalent Pattern syntax + + StringBuffer buf = new StringBuffer(arg0); + // in order to handle the requirement that the string is // considered to match the pattern if any substring matches ! // the pattern, we prepend ".*" and append ".*" to the reg exp, ! // but only if there isn't an anchor (^ or $) in place ! if (arg0.charAt(0) != '^') ! buf = buf.insert(0, ".*"); ! if (arg0.charAt(arg0.length() - 1) != '$') ! buf = buf.insert(buf.length(), ".*"); // in order to handle Unicode blocks, we replace all |
From: <se...@us...> - 2003-12-04 22:07:07
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr In directory sc8-pr-cvs1:/tmp/cvs-serv23797/com/sun/xacml/attr Modified Files: Tag: branch_1_1 BagAttribute.java Log Message: updated constructor javadoc Index: BagAttribute.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr/BagAttribute.java,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** BagAttribute.java 13 Feb 2003 22:19:10 -0000 1.1.1.1 --- BagAttribute.java 4 Dec 2003 22:07:03 -0000 1.1.1.1.2.1 *************** *** 67,75 **** /** * Creates a new <code>BagAttribute</code> that represents ! * the <code>Set</code> supplied. If the set is null or empty, then ! * the new bag is empty. * * @param type the data type of all the attributes in the set ! * @param bag the <code>Collection</code> value to be represented */ public BagAttribute(URI type, Collection bag) { --- 67,75 ---- /** * Creates a new <code>BagAttribute</code> that represents ! * the <code>Collection</code> of <code>AttributeValue</code>s supplied. ! * If the set is null or empty, then the new bag is empty. * * @param type the data type of all the attributes in the set ! * @param bag a <code>Collection</code> of <code>AttributeValue</code>s */ public BagAttribute(URI type, Collection bag) { |
From: <se...@us...> - 2003-11-07 17:35:36
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr In directory sc8-pr-cvs1:/tmp/cvs-serv10187/com/sun/xacml/attr Modified Files: StringAttribute.java Log Message: changed to clarify the problem with XML Elements Index: StringAttribute.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr/StringAttribute.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** StringAttribute.java 29 Aug 2003 18:51:27 -0000 1.2 --- StringAttribute.java 7 Nov 2003 17:35:32 -0000 1.3 *************** *** 40,43 **** --- 40,44 ---- import org.w3c.dom.Node; + import org.w3c.dom.NodeList; *************** *** 46,49 **** --- 47,57 ---- * xs:string values. All objects of this class are immutable and * all methods of the class are thread-safe. + * <p> + * Note that there is currently some confusion in the XACML specification + * about whether this datatype should be able to handle XML elements (ie, + * whether <AttributeValue DataType="...string"><foo/> + * </AttributeValue> is valid). Until that is clarified the strict + * definition of the string datatype is used in this code, which means that + * elements are not valid. * * @author Marco Barreno *************** *** 122,132 **** public static StringAttribute getInstance(Node root) { Node node = root.getFirstChild(); ! // Strings are allowed to have an empty AttributeValue element and are // just treated as empty strings...we have to handle this case if (node == null) return new StringAttribute(""); ! else return getInstance(node.getNodeValue()); } --- 130,152 ---- public static StringAttribute getInstance(Node root) { Node node = root.getFirstChild(); ! // Strings are allowed to have an empty AttributeValue element and are // just treated as empty strings...we have to handle this case if (node == null) return new StringAttribute(""); ! ! // get the type of the node ! short type = node.getNodeType(); ! ! // now see if we have (effectively) a simple string value ! if ((type == Node.TEXT_NODE) || (type == Node.CDATA_SECTION_NODE) || ! (type == Node.COMMENT_NODE)) { return getInstance(node.getNodeValue()); + } + + // there is some confusion in the specifications about what should + // happen at this point, but the strict reading of the XMLSchema + // specification suggests that this should be an error + return null; } |
From: <se...@us...> - 2003-10-27 04:59:08
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/cond In directory sc8-pr-cvs1:/tmp/cvs-serv11433/com/sun/xacml/cond Modified Files: FunctionFactory.java Log Message: updated add* interfaces to remove id parameter Index: FunctionFactory.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/cond/FunctionFactory.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** FunctionFactory.java 29 Aug 2003 18:58:33 -0000 1.2 --- FunctionFactory.java 27 Oct 2003 04:55:07 -0000 1.3 *************** *** 1,5 **** /* ! * @(#)FunctionFactory.java 1.27 01/31/03 * * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. --- 1,5 ---- /* ! * @(#)FunctionFactory.java * * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. *************** *** 224,235 **** * * @param function the function to add - * @param identity the name of the function * * @throws IllegalArgumentException if the name is already in use */ ! public static void addTargetFunction(Function function, URI identity) throws IllegalArgumentException { ! addTargetFunctionHelper(function, identity); } --- 224,234 ---- * * @param function the function to add * * @throws IllegalArgumentException if the name is already in use */ ! public static void addTargetFunction(Function function) throws IllegalArgumentException { ! addTargetFunctionHelper(function, function.getIdentifier()); } *************** *** 276,287 **** * * @param function the function to add - * @param identity the name of the function * * @throws IllegalArgumentException if the name is already in use */ ! public static void addConditionFunction(Function function, URI identity) throws IllegalArgumentException { ! addConditionFunctionHelper(function, identity); } --- 275,285 ---- * * @param function the function to add * * @throws IllegalArgumentException if the name is already in use */ ! public static void addConditionFunction(Function function) throws IllegalArgumentException { ! addConditionFunctionHelper(function, function.getIdentifier()); } *************** *** 328,339 **** * * @param function the function to add - * @param identity the name of the function * * @throws IllegalArgumentException if the name is already in use */ ! public static void addGeneralFunction(Function function, URI identity) throws IllegalArgumentException { ! addGeneralFunctionHelper(function, identity); } --- 326,336 ---- * * @param function the function to add * * @throws IllegalArgumentException if the name is already in use */ ! public static void addGeneralFunction(Function function) throws IllegalArgumentException { ! addGeneralFunctionHelper(function, function.getIdentifier()); } |
From: <se...@us...> - 2003-10-27 04:49:54
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr In directory sc8-pr-cvs1:/tmp/cvs-serv10719/com/sun/xacml/attr Modified Files: AttributeDesignator.java Log Message: removed metadata from missing-attribute return, since the spec is broken Index: AttributeDesignator.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr/AttributeDesignator.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** AttributeDesignator.java 25 Aug 2003 16:53:10 -0000 1.3 --- AttributeDesignator.java 27 Oct 2003 04:49:22 -0000 1.4 *************** *** 1,5 **** /* ! * @(#)AttributeDesignator.java 1.13 01/31/03 * * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. --- 1,5 ---- /* ! * @(#)AttributeDesignator.java * * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. *************** *** 366,377 **** "AttributeDesignator attribute"; ! List attrs = new ArrayList(); ! attrs.add(new Attribute(id, type, ! ((issuer == null) ? null : ! issuer.toString()), ! null, null)); ! StatusDetail detail = new StatusDetail(attrs); ! return new EvaluationResult(new Status(code, message, detail)); } } --- 366,383 ---- "AttributeDesignator attribute"; ! // Note that there is a bug in the XACML spec. You can't ! // specify an identifier without specifying acceptable ! // values. Until this is fixed, this code will only ! // return the status code, and not any hints about what ! // was missing ! /*List attrs = new ArrayList(); ! attrs.add(new Attribute(id, ! ((issuer == null) ? null : ! issuer.toString()), ! null, null)); ! StatusDetail detail = new StatusDetail(attrs);*/ ! ! return new EvaluationResult(new Status(code, message)); } } |
From: <se...@us...> - 2003-10-27 04:44:29
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml In directory sc8-pr-cvs1:/tmp/cvs-serv10487/com/sun/xacml Modified Files: EvaluationCtx.java Obligation.java Log Message: updated to use new Attribute constructor Index: EvaluationCtx.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/EvaluationCtx.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** EvaluationCtx.java 11 Aug 2003 20:48:44 -0000 1.4 --- EvaluationCtx.java 27 Oct 2003 04:44:01 -0000 1.5 *************** *** 1,5 **** /* ! * @(#)EvaluationCtx.java 1.25 01/31/03 * * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. --- 1,5 ---- /* ! * @(#)EvaluationCtx.java * * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. *************** *** 431,437 **** // ...and insert the new value ! attrSet.add(new Attribute(attr.getId(), resourceId.getType(), ! attr.getIssuer(), attr.getIssueInstant(), ! resourceId)); } --- 431,436 ---- // ...and insert the new value ! attrSet.add(new Attribute(attr.getId(), attr.getIssuer(), ! attr.getIssueInstant(), resourceId)); } Index: Obligation.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/Obligation.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Obligation.java 25 Aug 2003 16:53:10 -0000 1.2 --- Obligation.java 27 Oct 2003 04:44:01 -0000 1.3 *************** *** 1,5 **** /* ! * @(#)Obligation.java 1.6 01/30/03 * * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. --- 1,5 ---- /* ! * @(#)Obligation.java * * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. *************** *** 142,147 **** AttributeValue attrValue = AttributeFactory.createAttribute(node); ! assignments.add(new Attribute(attrId, attrValue.getType(), ! null, null, attrValue)); } catch (URISyntaxException use) { throw new ParsingException("Error parsing URI", use); --- 142,147 ---- AttributeValue attrValue = AttributeFactory.createAttribute(node); ! assignments.add(new Attribute(attrId, null, null, ! attrValue)); } catch (URISyntaxException use) { throw new ParsingException("Error parsing URI", use); |
From: <se...@us...> - 2003-10-27 04:43:05
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/ctx In directory sc8-pr-cvs1:/tmp/cvs-serv10368/com/sun/xacml/ctx Modified Files: Attribute.java Log Message: updated so null null values aren't supported Index: Attribute.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/ctx/Attribute.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Attribute.java 30 Sep 2003 19:59:13 -0000 1.5 --- Attribute.java 27 Oct 2003 04:43:02 -0000 1.6 *************** *** 1,5 **** /* ! * @(#)Attribute.java 1.11 01/30/03 * * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. --- 1,5 ---- /* ! * @(#)Attribute.java * * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. *************** *** 288,295 **** encoded += " IssueInstant=\"" + issueInstant.encode() + "\""; ! if (value != null) ! encoded += ">" + value.encodeWithTags(false) + "</Attribute>"; ! else ! encoded += "/>"; return encoded; --- 288,292 ---- encoded += " IssueInstant=\"" + issueInstant.encode() + "\""; ! encoded += ">" + value.encodeWithTags(false) + "</Attribute>"; return encoded; |
From: <se...@us...> - 2003-10-25 21:43:15
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/combine In directory sc8-pr-cvs1:/tmp/cvs-serv28155/com/sun/xacml/combine Modified Files: CombiningAlgFactory.java Log Message: updated addCombiningAlg method to use the identifier from the alg interface Index: CombiningAlgFactory.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/combine/CombiningAlgFactory.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** CombiningAlgFactory.java 25 Aug 2003 16:46:33 -0000 1.4 --- CombiningAlgFactory.java 25 Oct 2003 21:35:55 -0000 1.5 *************** *** 1,5 **** /* ! * @(#)CombiningAlgFactory.java 1.6 01/30/03 * * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. --- 1,5 ---- /* ! * @(#)CombiningAlgFactory.java * * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. *************** *** 70,100 **** */ ! algMap.put(DenyOverridesRuleAlg.algId, ! new DenyOverridesRuleAlg()); ! algMap.put(DenyOverridesPolicyAlg.algId, ! new DenyOverridesPolicyAlg()); ! algMap.put(OrderedDenyOverridesRuleAlg.algId, ! new OrderedDenyOverridesRuleAlg()); ! algMap.put(OrderedDenyOverridesPolicyAlg.algId, ! new OrderedDenyOverridesPolicyAlg()); ! algMap.put(PermitOverridesRuleAlg.algId, ! new PermitOverridesRuleAlg()); ! algMap.put(PermitOverridesPolicyAlg.algId, ! new PermitOverridesPolicyAlg()); ! algMap.put(OrderedPermitOverridesRuleAlg.algId, ! new OrderedPermitOverridesRuleAlg()); ! algMap.put(OrderedPermitOverridesPolicyAlg.algId, ! new OrderedPermitOverridesPolicyAlg()); ! algMap.put(FirstApplicableRuleAlg.algId, ! new FirstApplicableRuleAlg()); ! algMap.put(FirstApplicablePolicyAlg.algId, ! new FirstApplicablePolicyAlg()); ! algMap.put(OnlyOneApplicablePolicyAlg.algId, ! new OnlyOneApplicablePolicyAlg()); } --- 70,89 ---- */ ! addCombiningAlg(new DenyOverridesRuleAlg()); ! addCombiningAlg(new DenyOverridesPolicyAlg()); ! addCombiningAlg(new OrderedDenyOverridesRuleAlg()); ! addCombiningAlg(new OrderedDenyOverridesPolicyAlg()); ! addCombiningAlg(new PermitOverridesRuleAlg()); ! addCombiningAlg(new PermitOverridesPolicyAlg()); ! addCombiningAlg(new OrderedPermitOverridesRuleAlg()); ! addCombiningAlg(new OrderedPermitOverridesPolicyAlg()); ! addCombiningAlg(new FirstApplicableRuleAlg()); ! addCombiningAlg(new FirstApplicablePolicyAlg()); ! addCombiningAlg(new OnlyOneApplicablePolicyAlg()); } *************** *** 112,129 **** * id given here. * - * @param algId the identifier by which the algorithm is known * @param alg the combining algorithm to add * * @throws ProcessingException if the algId is already registered */ ! public static void addCombiningAlg(URI algId, CombiningAlgorithm alg) throws ProcessingException { // check that the id doesn't already exist in the factory ! if (algMap.containsKey(algId.toString())) throw new ProcessingException("algorithm already registered"); // add the algorithm ! algMap.put(algId.toString(), alg); } --- 101,119 ---- * id given here. * * @param alg the combining algorithm to add * * @throws ProcessingException if the algId is already registered */ ! public static void addCombiningAlg(CombiningAlgorithm alg) throws ProcessingException { + String algId = alg.getIdentifier().toString(); + // check that the id doesn't already exist in the factory ! if (algMap.containsKey(algId)) throw new ProcessingException("algorithm already registered"); // add the algorithm ! algMap.put(algId, alg); } |
From: <se...@us...> - 2003-10-20 17:23:11
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml In directory sc8-pr-cvs1:/tmp/cvs-serv15440/com/sun/xacml Modified Files: PolicyReference.java Log Message: Fixed encoding routine (a '>' was missing on one line) Index: PolicyReference.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/PolicyReference.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** PolicyReference.java 25 Aug 2003 16:53:10 -0000 1.3 --- PolicyReference.java 20 Oct 2003 16:57:56 -0000 1.4 *************** *** 341,345 **** if (policyType == POLICY_REFERENCE) { out.println(encoded + "<PolicyIdReference>" + ! reference.toString() + "</PolicyIdReference"); } else { out.println(encoded + "<PolicySetIdReference>" + --- 341,345 ---- if (policyType == POLICY_REFERENCE) { out.println(encoded + "<PolicyIdReference>" + ! reference.toString() + "</PolicyIdReference>"); } else { out.println(encoded + "<PolicySetIdReference>" + |
From: <se...@us...> - 2003-09-30 19:59:59
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr In directory sc8-pr-cvs1:/tmp/cvs-serv14923/com/sun/xacml/attr Modified Files: DateTimeAttribute.java Log Message: Fixed an encoding bug where hours showed up in 12-hour not 24-hour mode Index: DateTimeAttribute.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr/DateTimeAttribute.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** DateTimeAttribute.java 13 Feb 2003 22:19:10 -0000 1.1.1.1 --- DateTimeAttribute.java 30 Sep 2003 19:59:55 -0000 1.2 *************** *** 604,608 **** buf.append(DateAttribute.zeroPadInt(dom, 2)); buf.append('T'); ! int hour = gmtCalendar.get(Calendar.HOUR); buf.append(DateAttribute.zeroPadInt(hour, 2)); buf.append(':'); --- 604,608 ---- buf.append(DateAttribute.zeroPadInt(dom, 2)); buf.append('T'); ! int hour = gmtCalendar.get(Calendar.HOUR_OF_DAY); buf.append(DateAttribute.zeroPadInt(hour, 2)); buf.append(':'); |
From: <se...@us...> - 2003-09-30 19:59:17
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/ctx In directory sc8-pr-cvs1:/tmp/cvs-serv14798/com/sun/xacml/ctx Modified Files: Attribute.java Log Message: Introduced new constructor and deprecated the previous one Index: Attribute.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/ctx/Attribute.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Attribute.java 29 Aug 2003 18:52:20 -0000 1.4 --- Attribute.java 30 Sep 2003 19:59:13 -0000 1.5 *************** *** 77,81 **** --- 77,104 ---- /** + * Creates a new <code>Attribute</code> of the type specified in the + * given <code>AttributeValue</code>. + * + * @param id the id of the attribute + * @param issuer the attribute's issuer or null if there is none + * @param issueInstant the moment when the attribute was issued, or null + * if it's unspecified + * @param value the actual value associated with the attribute meta-data + */ + public Attribute(URI id, String issuer, DateTimeAttribute issueInstant, + AttributeValue value) { + this(id, value.getType(), issuer, issueInstant, value); + } + + /** * Creates a new <code>Attribute</code> + * + * @deprecated As of version 1.1, replaced by + * {@link #Attribute(URI,String,DateTimeAttribute,AttributeValue)}. + * This constructor has some ambiguity in that it allows a + * specified datatype and a value that already has some + * associated datatype. The new constructor clarifies this + * issue by removing the datatype parameter and using the + * datatype specified by the given value. * * @param id the id of the attribute |
From: <se...@us...> - 2003-09-30 19:58:43
|
Update of /cvsroot/sunxacml/sunxacml In directory sc8-pr-cvs1:/tmp/cvs-serv14745 Modified Files: build.xml Log Message: Updated version number to 1.1 Index: build.xml =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/build.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** build.xml 13 Mar 2003 18:28:56 -0000 1.1 --- build.xml 30 Sep 2003 19:58:39 -0000 1.2 *************** *** 49,53 **** <!-- Values for the JavaDocs --> <property name="projName" value="Sun's XACML Implementation"/> ! <property name="projVersion" value="1.0"/> <!-- Builds the project into debug-enabled class files --> --- 49,53 ---- <!-- Values for the JavaDocs --> <property name="projName" value="Sun's XACML Implementation"/> ! <property name="projVersion" value="1.1"/> <!-- Builds the project into debug-enabled class files --> |
From: <se...@us...> - 2003-09-30 14:52:02
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml In directory sc8-pr-cvs1:/tmp/cvs-serv8392/com/sun/xacml Modified Files: Target.java Log Message: Updated comments for constructor Index: Target.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/Target.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Target.java 29 Aug 2003 18:58:32 -0000 1.4 --- Target.java 30 Sep 2003 14:51:58 -0000 1.5 *************** *** 70,79 **** * Constructor that creates a <code>Target</code> from components. * ! * @param subjects a <code>List</code> containing the subjects or null ! * if this represents AnySubject ! * @param resources a <code>List</code> containing the resources or null ! * if this represents AnyResource ! * @param actions a <code>List</code> containing the actions or null ! * if this represents AnyAction */ public Target(List subjects, List resources, List actions) { --- 70,82 ---- * Constructor that creates a <code>Target</code> from components. * ! * @param subjects A <code>List</code> containing the subjects or null ! * if this represents AnySubject. The list is of the ! * form described in <code>getSubjects</code>. ! * @param resources A <code>List</code> containing the resources or null ! * if this represents AnyResource The list is of the ! * form described in <code>getResources</code>. ! * @param actions A <code>List</code> containing the actions or null ! * if this represents AnyAction The list is of the ! * form described in <code>getActions</code>. */ public Target(List subjects, List resources, List actions) { |
From: <se...@us...> - 2003-09-02 21:39:48
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml In directory sc8-pr-cvs1:/tmp/cvs-serv17897/com/sun/xacml Modified Files: Indenter.java Log Message: changed makeString to use the right criteria Index: Indenter.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/Indenter.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Indenter.java 25 Aug 2003 16:53:10 -0000 1.2 --- Indenter.java 2 Sep 2003 21:39:44 -0000 1.3 *************** *** 103,107 **** public String makeString() { // Return quickly if no indenting ! if (width <= 0) { return new String(""); } --- 103,107 ---- public String makeString() { // Return quickly if no indenting ! if (depth <= 0) { return new String(""); } |
From: <se...@us...> - 2003-08-29 18:58:38
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/cond In directory sc8-pr-cvs1:/tmp/cvs-serv11479/com/sun/xacml/cond Modified Files: Apply.java FunctionFactory.java FunctionProxy.java Log Message: added support for enforcing XPathVersion and updated SelectorModule to correctly handle nodes of different types Index: Apply.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/cond/Apply.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Apply.java 25 Aug 2003 16:53:10 -0000 1.4 --- Apply.java 29 Aug 2003 18:58:33 -0000 1.5 *************** *** 143,153 **** * * @param root the DOM root of a ConditionType XML type * * @throws ParsingException if this is not a valid ConditionType */ ! public static Apply getConditionInstance(Node root) throws ParsingException { ! return getInstance(root, FunctionFactory.getConditionInstance(), true); } --- 143,157 ---- * * @param root the DOM root of a ConditionType XML type + * @param xpathVersion the XPath version to use in any selectors or XPath + * functions, or null if this is unspecified (ie, not + * supplied in the defaults section of the policy) * * @throws ParsingException if this is not a valid ConditionType */ ! public static Apply getConditionInstance(Node root, String xpathVersion) throws ParsingException { ! return getInstance(root, FunctionFactory.getConditionInstance(), true, ! xpathVersion); } *************** *** 156,166 **** * * @param root the DOM root of an ApplyType XML type * * @throws ParsingException if this is not a valid ApplyType */ ! public static Apply getInstance(Node root) throws ParsingException { ! return getInstance(root, FunctionFactory.getGeneralInstance(), false); } --- 160,174 ---- * * @param root the DOM root of an ApplyType XML type + * @param xpathVersion the XPath version to use in any selectors or XPath + * functions, or null if this is unspecified (ie, not + * supplied in the defaults section of the policy) * * @throws ParsingException if this is not a valid ApplyType */ ! public static Apply getInstance(Node root, String xpathVersion) throws ParsingException { ! return getInstance(root, FunctionFactory.getGeneralInstance(), false, ! xpathVersion); } *************** *** 171,178 **** */ private static Apply getInstance(Node root, FunctionFactory factory, ! boolean isCondition) throws ParsingException { ! Function function = getFunction(root, factory); Function bagFunction = null; List evals = new ArrayList(); --- 179,186 ---- */ private static Apply getInstance(Node root, FunctionFactory factory, ! boolean isCondition, String xpathVersion) throws ParsingException { ! Function function = getFunction(root, xpathVersion, factory); Function bagFunction = null; List evals = new ArrayList(); *************** *** 184,188 **** if (name.equals("Apply")) { ! evals.add(Apply.getInstance(node)); } else if (name.equals("AttributeValue")) { try { --- 192,196 ---- if (name.equals("Apply")) { ! evals.add(Apply.getInstance(node, xpathVersion)); } else if (name.equals("AttributeValue")) { try { *************** *** 208,212 **** AttributeDesignator.ENVIRONMENT_TARGET)); } else if (name.equals("AttributeSelector")) { ! evals.add(AttributeSelector.getInstance(node)); } else if (name.equals("Function")) { // while the schema doesn't enforce this, it's illegal to --- 216,220 ---- AttributeDesignator.ENVIRONMENT_TARGET)); } else if (name.equals("AttributeSelector")) { ! evals.add(AttributeSelector.getInstance(node, xpathVersion)); } else if (name.equals("Function")) { // while the schema doesn't enforce this, it's illegal to *************** *** 216,220 **** bagFunction = ! getFunction(node, FunctionFactory.getGeneralInstance()); } --- 224,228 ---- bagFunction = ! getFunction(node, xpathVersion, FunctionFactory.getGeneralInstance()); } *************** *** 227,231 **** * Helper method that tries to get a function instance */ ! private static Function getFunction(Node root, FunctionFactory factory) throws ParsingException { --- 235,240 ---- * Helper method that tries to get a function instance */ ! private static Function getFunction(Node root, String version, ! FunctionFactory factory) throws ParsingException { *************** *** 242,246 **** try { FunctionFactory ff = FunctionFactory.getGeneralInstance(); ! return ff.createAbstractFunction(functionName, root); } catch (Exception e) { // any exception at this point is a failure --- 251,255 ---- try { FunctionFactory ff = FunctionFactory.getGeneralInstance(); ! return ff.createAbstractFunction(functionName, root, version); } catch (Exception e) { // any exception at this point is a failure *************** *** 279,282 **** --- 288,300 ---- public Function getHigherOrderFunction() { return bagFunction; + } + + /** + * Returns whether or not this ApplyType is actually a ConditionType. + * + * @return whether or not this represents a ConditionType + */ + public boolean isCondition() { + return isCondition; } Index: FunctionFactory.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/cond/FunctionFactory.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** FunctionFactory.java 13 Feb 2003 22:19:10 -0000 1.1.1.1 --- FunctionFactory.java 29 Aug 2003 18:58:33 -0000 1.2 *************** *** 172,176 **** // add the map function generalFunctionMap.put(MapFunction.NAME, new FunctionProxy() { ! public Function getInstance(Node root) throws Exception { return MapFunction.getInstance(root); } --- 172,177 ---- // add the map function generalFunctionMap.put(MapFunction.NAME, new FunctionProxy() { ! public Function getInstance(Node root, String xpathVersion) ! throws Exception { return MapFunction.getInstance(root); } *************** *** 427,430 **** --- 428,433 ---- * concrete function, and should therefore * be created through createFunction + * @throws ParsingException if the function can't be created with the + * given inputs */ public Function createAbstractFunction(URI identity, Node root) *************** *** 432,436 **** FunctionTypeException { ! return createAbstractFunction(identity.toString(), root); } --- 435,462 ---- FunctionTypeException { ! return createAbstractFunction(identity.toString(), root, null); ! } ! ! /** ! * Tries to get an instance of the specified abstract function. ! * ! * @param identity the name of the function ! * @param root the DOM root containing info used to create the function ! * @param xpathVersion the version specified in the contianing policy, or ! * null if no version was specified ! * ! * @throws UnknownIdentifierException if the name isn't known ! * @throws FunctionTypeException if the name is known to map to a ! * concrete function, and should therefore ! * be created through createFunction ! * @throws ParsingException if the function can't be created with the ! * given inputs ! */ ! public Function createAbstractFunction(URI identity, Node root, ! String xpathVersion) ! throws UnknownIdentifierException, ParsingException, ! FunctionTypeException ! { ! return createAbstractFunction(identity.toString(), root, xpathVersion); } *************** *** 445,448 **** --- 471,476 ---- * concrete function, and should therefore * be created through createFunction + * @throws ParsingException if the function can't be created with the + * given inputs */ public Function createAbstractFunction(String identity, Node root) *************** *** 450,453 **** --- 478,504 ---- FunctionTypeException { + return createAbstractFunction(identity, root, null); + } + + /** + * Tries to get an instance of the specified abstract function. + * + * @param identity the name of the function + * @param root the DOM root containing info used to create the function + * @param xpathVersion the version specified in the contianing policy, or + * null if no version was specified + * + * @throws UnknownIdentifierException if the name isn't known + * @throws FunctionTypeException if the name is known to map to a + * concrete function, and should therefore + * be created through createFunction + * @throws ParsingException if the function can't be created with the + * given inputs + */ + public Function createAbstractFunction(String identity, Node root, + String xpathVersion) + throws UnknownIdentifierException, ParsingException, + FunctionTypeException + { Object entry = createFunctionHelper(identity); *************** *** 455,459 **** if (entry instanceof FunctionProxy) { try { ! return ((FunctionProxy)entry).getInstance(root); } catch (Exception e) { throw new ParsingException("couldn't create abstract" + --- 506,511 ---- if (entry instanceof FunctionProxy) { try { ! return ((FunctionProxy)entry).getInstance(root, ! xpathVersion); } catch (Exception e) { throw new ParsingException("couldn't create abstract" + Index: FunctionProxy.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/cond/FunctionProxy.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** FunctionProxy.java 13 Feb 2003 22:19:10 -0000 1.1.1.1 --- FunctionProxy.java 29 Aug 2003 18:58:33 -0000 1.2 *************** *** 42,46 **** /** * Used by abstract functions to define how new functions are created by ! * the factory. * * @author Seth Proctor --- 42,47 ---- /** * Used by abstract functions to define how new functions are created by ! * the factory. Note that all functions using XPath are defined to be ! * abstract functions, so they must be created using this interface. * * @author Seth Proctor *************** *** 50,56 **** /** ! * Creates an instance of some abstract function. * * @param root the DOM root of the apply statement containing the function * * @return the function --- 51,62 ---- /** ! * Creates an instance of some abstract function. If the function ! * being created is not using XPath, then the version parameter can be ! * ignored, otherwise a value must be present and the version must ! * be acceptable. * * @param root the DOM root of the apply statement containing the function + * @param xpathVersion the version specified in the contianing policy, or + * null if no version was specified * * @return the function *************** *** 58,62 **** * @throws Exception if the underlying code experienced any error */ ! public Function getInstance(Node root) throws Exception; } --- 64,69 ---- * @throws Exception if the underlying code experienced any error */ ! public Function getInstance(Node root, String xpathVersion) ! throws Exception; } |
From: <se...@us...> - 2003-08-29 18:58:38
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/finder/impl In directory sc8-pr-cvs1:/tmp/cvs-serv11479/com/sun/xacml/finder/impl Modified Files: SelectorModule.java Log Message: added support for enforcing XPathVersion and updated SelectorModule to correctly handle nodes of different types Index: SelectorModule.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/finder/impl/SelectorModule.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** SelectorModule.java 11 Aug 2003 20:48:45 -0000 1.2 --- SelectorModule.java 29 Aug 2003 18:58:33 -0000 1.3 *************** *** 37,40 **** --- 37,41 ---- package com.sun.xacml.finder.impl; + import com.sun.xacml.AbstractPolicy; import com.sun.xacml.EvaluationCtx; import com.sun.xacml.ParsingException; *************** *** 73,76 **** --- 74,80 ---- * deciding what to return to the policy based on the MustBePresent * attribute. + * <p> + * This module uses the Xalan XPath implementation, and supports only version + * 1.0 of XPath. * * @author Seth Proctor *************** *** 107,110 **** --- 111,115 ---- * @param type the datatype of the attributes to find * @param context the representation of the request data + * @param xpathVersion the XPath version to use * * @return the result of attribute retrieval, which will be a bag of *************** *** 112,116 **** */ public EvaluationResult findAttribute(String path, URI type, ! EvaluationCtx context) { // get the DOM root of the request document Node root = context.getRequestRoot(); --- 117,126 ---- */ public EvaluationResult findAttribute(String path, URI type, ! EvaluationCtx context, ! String xpathVersion) { ! // we only support 1.0 ! if (! xpathVersion.equals(AbstractPolicy.XPATH_1_0_VERSION)) ! return new EvaluationResult(BagAttribute.createEmptyBag(type)); ! // get the DOM root of the request document Node root = context.getRequestRoot(); *************** *** 130,140 **** } ! // there was at least one match, so try to generate the attributes try { ArrayList list = new ArrayList(); for (int i = 0; i < matches.getLength(); i++) { ! String str = matches.item(i).getFirstChild().getNodeValue(); ! list.add(AttributeFactory.createAttribute(type, str)); } --- 140,165 ---- } ! // there was at least one match, so try to generate the values try { ArrayList list = new ArrayList(); for (int i = 0; i < matches.getLength(); i++) { ! String text = null; ! Node node = matches.item(i); ! short nodeType = node.getNodeType(); ! ! // see if this is straight text, or a node with data under ! // it and then get the values accordingly ! if ((nodeType == Node.CDATA_SECTION_NODE) || ! (nodeType == Node.COMMENT_NODE) || ! (nodeType == Node.TEXT_NODE)) { ! // there is no child to this node ! text = node.getNodeValue(); ! } else { ! // the data is in a child node ! text = node.getFirstChild().getNodeValue(); ! } ! ! list.add(AttributeFactory.createAttribute(type, text)); } |
From: <se...@us...> - 2003-08-29 18:58:38
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml In directory sc8-pr-cvs1:/tmp/cvs-serv11479/com/sun/xacml Modified Files: AbstractPolicy.java Policy.java Rule.java Target.java TargetMatch.java Log Message: added support for enforcing XPathVersion and updated SelectorModule to correctly handle nodes of different types Index: AbstractPolicy.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/AbstractPolicy.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** AbstractPolicy.java 25 Aug 2003 16:53:10 -0000 1.5 --- AbstractPolicy.java 29 Aug 2003 18:58:32 -0000 1.6 *************** *** 209,213 **** description = child.getFirstChild().getNodeValue(); } else if (cname.equals("Target")) { ! target = Target.getInstance(child); } else if (cname.equals("Obligations")) { parseObligations(child); --- 209,213 ---- description = child.getFirstChild().getNodeValue(); } else if (cname.equals("Target")) { ! target = Target.getInstance(child, defaultVersion); } else if (cname.equals("Obligations")) { parseObligations(child); *************** *** 402,416 **** * @param indenter an object that creates indentation strings */ ! protected void encodeCommonElements(OutputStream out, Indenter indenter) { ! target.encode(out, indenter); Iterator it = children.iterator(); while (it.hasNext()) { ! ((PolicyTreeElement)(it.next())).encode(out, indenter); } it = obligations.iterator(); while (it.hasNext()) { ! ((Obligation)(it.next())).encode(out, indenter); } } --- 402,417 ---- * @param indenter an object that creates indentation strings */ ! protected void encodeCommonElements(OutputStream output, ! Indenter indenter) { ! target.encode(output, indenter); Iterator it = children.iterator(); while (it.hasNext()) { ! ((PolicyTreeElement)(it.next())).encode(output, indenter); } it = obligations.iterator(); while (it.hasNext()) { ! ((Obligation)(it.next())).encode(output, indenter); } } Index: Policy.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/Policy.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Policy.java 25 Aug 2003 16:53:10 -0000 1.4 --- Policy.java 29 Aug 2003 18:58:32 -0000 1.5 *************** *** 206,209 **** --- 206,210 ---- List rules = new ArrayList(); + String xpathVersion = getDefaultVersion(); NodeList children = root.getChildNodes(); *************** *** 211,215 **** Node child = children.item(i); if (child.getNodeName().equals("Rule")) ! rules.add(Rule.getInstance(child)); } --- 212,216 ---- Node child = children.item(i); if (child.getNodeName().equals("Rule")) ! rules.add(Rule.getInstance(child, xpathVersion)); } Index: Rule.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/Rule.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Rule.java 25 Aug 2003 16:53:10 -0000 1.3 --- Rule.java 29 Aug 2003 18:58:32 -0000 1.4 *************** *** 104,111 **** * * @param root the DOM root of a RuleType XML type * * @throws ParsingException if the RuleType is invalid */ ! public static Rule getInstance(Node root) throws ParsingException { URI id = null; String name = null; --- 104,116 ---- * * @param root the DOM root of a RuleType XML type + * @param xpathVersion the XPath version to use in any selectors or XPath + * functions, or null if this is unspecified (ie, not + * supplied in the defaults section of the policy) * * @throws ParsingException if the RuleType is invalid */ ! public static Rule getInstance(Node root, String xpathVersion) ! throws ParsingException ! { URI id = null; String name = null; *************** *** 144,150 **** description = child.getFirstChild().getNodeValue(); } else if (cname.equals("Target")) { ! target = Target.getInstance(child); } else if (cname.equals("Condition")) { ! condition = Apply.getConditionInstance(child); } } --- 149,155 ---- description = child.getFirstChild().getNodeValue(); } else if (cname.equals("Target")) { ! target = Target.getInstance(child, xpathVersion); } else if (cname.equals("Condition")) { ! condition = Apply.getConditionInstance(child, xpathVersion); } } Index: Target.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/Target.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Target.java 25 Aug 2003 16:53:10 -0000 1.3 --- Target.java 29 Aug 2003 18:58:32 -0000 1.4 *************** *** 98,101 **** --- 98,104 ---- * * @param root the node to parse for the <code>Target</code> + * @param xpathVersion the XPath version to use in any selectors, or + * null if this is unspecified (ie, not supplied in + * the defaults section of the policy) * * @return a new <code>Target</code> constructed by parsing *************** *** 103,107 **** * @throws ParsingException if the DOM node is invalid */ ! public static Target getInstance(Node root) throws ParsingException { List subjects = null; List resources = null; --- 106,112 ---- * @throws ParsingException if the DOM node is invalid */ ! public static Target getInstance(Node root, String xpathVersion) ! throws ParsingException ! { List subjects = null; List resources = null; *************** *** 114,122 **** if (name.equals("Subjects")) { ! subjects = getAttributes(child, "Subject"); } else if (name.equals("Resources")) { ! resources = getAttributes(child, "Resource"); } else if (name.equals("Actions")) { ! actions = getAttributes(child, "Action"); } } --- 119,127 ---- if (name.equals("Subjects")) { ! subjects = getAttributes(child, "Subject", xpathVersion); } else if (name.equals("Resources")) { ! resources = getAttributes(child, "Resource", xpathVersion); } else if (name.equals("Actions")) { ! actions = getAttributes(child, "Action", xpathVersion); } } *************** *** 132,136 **** * it represents AnySubject, AnyResource, or AnyAction. */ ! private static List getAttributes(Node root, String prefix) throws ParsingException { --- 137,142 ---- * it represents AnySubject, AnyResource, or AnyAction. */ ! private static List getAttributes(Node root, String prefix, ! String xpathVersion) throws ParsingException { *************** *** 143,147 **** if (name.equals(prefix)) { ! matches.add(getMatches(child, prefix)); } else if (name.equals("Any" + prefix)) { return null; --- 149,153 ---- if (name.equals(prefix)) { ! matches.add(getMatches(child, prefix, xpathVersion)); } else if (name.equals("Any" + prefix)) { return null; *************** *** 157,161 **** * prefix, which must be either "Subject", "Resource" or "Action" */ ! private static List getMatches(Node root, String prefix) throws ParsingException { --- 163,168 ---- * prefix, which must be either "Subject", "Resource" or "Action" */ ! private static List getMatches(Node root, String prefix, ! String xpathVersion) throws ParsingException { *************** *** 168,172 **** if (name.equals(prefix + "Match")) ! list.add(TargetMatch.getInstance(child, prefix)); } --- 175,179 ---- if (name.equals(prefix + "Match")) ! list.add(TargetMatch.getInstance(child, prefix, xpathVersion)); } Index: TargetMatch.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/TargetMatch.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TargetMatch.java 25 Aug 2003 16:53:10 -0000 1.3 --- TargetMatch.java 29 Aug 2003 18:58:32 -0000 1.4 *************** *** 111,115 **** * attributes from the request context * @param attrValue the <code>AttributeValue</code> to compare against ! * * @throws IllegalArgumentException if the input type isn't a valid value */ --- 111,115 ---- * attributes from the request context * @param attrValue the <code>AttributeValue</code> to compare against ! * * @throws IllegalArgumentException if the input type isn't a valid value */ *************** *** 138,141 **** --- 138,144 ---- * @param prefix a String indicating what type of <code>TargetMatch</code> * to instantiate (Subject, Resource, or Action) + * @param xpathVersion the XPath version to use in any selectors, or + * null if this is unspecified (ie, not supplied in + * the defaults section of the policy) * * @return a new <code>TargetMatch</code> constructed by parsing *************** *** 144,148 **** * @throws IllegalArgumentException if the input prefix isn't a valid value */ ! public static TargetMatch getInstance(Node root, String prefix) throws ParsingException, IllegalArgumentException { --- 147,152 ---- * @throws IllegalArgumentException if the input prefix isn't a valid value */ ! public static TargetMatch getInstance(Node root, String prefix, ! String xpathVersion) throws ParsingException, IllegalArgumentException { *************** *** 196,200 **** eval = AttributeDesignator.getInstance(node, type); } else if (name.equals("AttributeSelector")) { ! eval = AttributeSelector.getInstance(node); } else if (name.equals("AttributeValue")) { try { --- 200,204 ---- eval = AttributeDesignator.getInstance(node, type); } else if (name.equals("AttributeSelector")) { ! eval = AttributeSelector.getInstance(node, xpathVersion); } else if (name.equals("AttributeValue")) { try { |
From: <se...@us...> - 2003-08-29 18:58:38
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr In directory sc8-pr-cvs1:/tmp/cvs-serv11479/com/sun/xacml/attr Modified Files: AttributeSelector.java Log Message: added support for enforcing XPathVersion and updated SelectorModule to correctly handle nodes of different types Index: AttributeSelector.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr/AttributeSelector.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** AttributeSelector.java 25 Aug 2003 16:53:10 -0000 1.4 --- AttributeSelector.java 29 Aug 2003 18:58:33 -0000 1.5 *************** *** 60,66 **** /** ! * Supports the standard selector functionality in XACML. This class uses ! * XPath to search for a value or a set of values in the request document. ! * It does not search outside the request document for attribute values. * * @author Seth Proctor --- 60,69 ---- /** ! * Supports the standard selector functionality in XACML, which uses XPath ! * expressions to resolve values from the Request or elsewhere. Unlike ! * the designator class, which does the Request search and then passes off ! * control to the <code>AttributeFinder</code>, all selector queries are ! * done by <code>AttributeFinderModule</code>s so that it's easy to plugin ! * different XPath implementations. * * @author Seth Proctor *************** *** 78,81 **** --- 81,87 ---- private boolean mustBePresent; + // the xpath version we've been told to use + private String xpathVersion; + /** * Creates a new <code>AttributeSelector</code>. *************** *** 85,102 **** * @param contextPath the XPath to query * @param mustBePresent must resolution find a match */ public AttributeSelector(URI type, String contextPath, ! boolean mustBePresent) { this.type = type; this.contextPath = contextPath; this.mustBePresent = mustBePresent; } /** * Creates a new <code>AttributeSelector</code> based on the DOM root ! * of the XML type. * * @param root the root of the DOM tree for the XML AttributeSelectorType * XML type * * @return an <code>AttributeSelector</code> --- 91,119 ---- * @param contextPath the XPath to query * @param mustBePresent must resolution find a match + * @param xpathVersion the XPath version to use, which must be a valid + * XPath version string (the identifier for XPath 1.0 + * is provided in <code>AbstractPolicy</code>) + * */ public AttributeSelector(URI type, String contextPath, ! boolean mustBePresent, String xpathVersion) { this.type = type; this.contextPath = contextPath; this.mustBePresent = mustBePresent; + this.xpathVersion = xpathVersion; } /** * Creates a new <code>AttributeSelector</code> based on the DOM root ! * of the XML type. Note that as of XACML 1.1 the XPathVersion element ! * is required in any policy that uses a selector, so if the ! * <code>xpathVersion</code> string is null, then this will throw ! * an exception. * * @param root the root of the DOM tree for the XML AttributeSelectorType * XML type + * @param xpathVersion the XPath version to use, or null if this is + * unspecified (ie, not supplied in the defaults + * section of the policy) * * @return an <code>AttributeSelector</code> *************** *** 104,108 **** * @throws ParsingException if the AttributeSelectorType was invalid */ ! public static AttributeSelector getInstance(Node root) throws ParsingException { --- 121,125 ---- * @throws ParsingException if the AttributeSelectorType was invalid */ ! public static AttributeSelector getInstance(Node root, String xpathVersion) throws ParsingException { *************** *** 111,114 **** --- 128,136 ---- boolean mustBePresent = false; + // make sure we were given an xpath version + if (xpathVersion == null) + throw new ParsingException("An XPathVersion is required for "+ + "any policies that use selectors"); + NamedNodeMap attrs = root.getAttributes(); *************** *** 143,147 **** } ! return new AttributeSelector(type, contextPath, mustBePresent); } --- 165,170 ---- } ! return new AttributeSelector(type, contextPath, mustBePresent, ! xpathVersion); } *************** *** 186,189 **** --- 209,223 ---- /** + * Returns the XPath version this selector is supposed to use. This is + * typically provided by the defaults section of the policy containing + * this selector. + * + * @return the XPath version + */ + public String getXPathVersion() { + return xpathVersion; + } + + /** * Invokes the <code>AttributeFinder</code> used by the given * <code>EvaluationCtx</code> to try to resolve an attribute value. If *************** *** 211,215 **** // call the finder EvaluationResult result = finder.findAttribute(contextPath, type, ! context); // see if we got anything --- 245,249 ---- // call the finder EvaluationResult result = finder.findAttribute(contextPath, type, ! context, xpathVersion); // see if we got anything |
From: <se...@us...> - 2003-08-29 18:58:38
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/finder In directory sc8-pr-cvs1:/tmp/cvs-serv11479/com/sun/xacml/finder Modified Files: AttributeFinder.java AttributeFinderModule.java Log Message: added support for enforcing XPathVersion and updated SelectorModule to correctly handle nodes of different types Index: AttributeFinder.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/finder/AttributeFinder.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** AttributeFinder.java 13 Feb 2003 22:19:10 -0000 1.1.1.1 --- AttributeFinder.java 29 Aug 2003 18:58:33 -0000 1.2 *************** *** 189,192 **** --- 189,193 ---- * @param attributeType the datatype of the attributes to find * @param context the representation of the request data + * @param xpathVersion the XPath version to use * * @return the result of attribute retrieval, which will be a bag of *************** *** 195,199 **** public EvaluationResult findAttribute(String contextPath, URI attributeType, ! EvaluationCtx context) { Iterator it = selectorModules.iterator(); --- 196,201 ---- public EvaluationResult findAttribute(String contextPath, URI attributeType, ! EvaluationCtx context, ! String xpathVersion) { Iterator it = selectorModules.iterator(); *************** *** 204,208 **** // see if the module can find an attribute value EvaluationResult result = ! module.findAttribute(contextPath, attributeType, context); // if there was an error, we stop right away --- 206,211 ---- // see if the module can find an attribute value EvaluationResult result = ! module.findAttribute(contextPath, attributeType, context, ! xpathVersion); // if there was an error, we stop right away Index: AttributeFinderModule.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/finder/AttributeFinderModule.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** AttributeFinderModule.java 13 Feb 2003 22:19:10 -0000 1.1.1.1 --- AttributeFinderModule.java 29 Aug 2003 18:58:33 -0000 1.2 *************** *** 149,152 **** --- 149,153 ---- * @param attributeType the datatype of the attributes to find * @param context the representation of the request data + * @param xpathVersion the XPath version to use * * @return the result of attribute retrieval, which will be a bag of *************** *** 155,159 **** public EvaluationResult findAttribute(String contextPath, URI attributeType, ! EvaluationCtx context) { return new EvaluationResult(BagAttribute. createEmptyBag(attributeType)); --- 156,161 ---- public EvaluationResult findAttribute(String contextPath, URI attributeType, ! EvaluationCtx context, ! String xpathVersion) { return new EvaluationResult(BagAttribute. createEmptyBag(attributeType)); |
From: <se...@us...> - 2003-08-29 18:56:53
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr In directory sc8-pr-cvs1:/tmp/cvs-serv11113/com/sun/xacml/attr Modified Files: AttributeFactory.java Log Message: cleaned up the formatting of some exception messages Index: AttributeFactory.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr/AttributeFactory.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** AttributeFactory.java 11 Aug 2003 20:48:44 -0000 1.2 --- AttributeFactory.java 29 Aug 2003 18:56:48 -0000 1.3 *************** *** 300,308 **** } catch (Exception e) { throw new ParsingException("couldn't create " + type + ! "attribute based on DOM node"); } } else { throw new UnknownIdentifierException("Attributes of type " + type + ! "aren't supported."); } } --- 300,308 ---- } catch (Exception e) { throw new ParsingException("couldn't create " + type + ! " attribute based on DOM node"); } } else { throw new UnknownIdentifierException("Attributes of type " + type + ! " aren't supported."); } } *************** *** 335,343 **** } catch (Exception e) { throw new ParsingException("couldn't create " + type + ! "attribute from input: " + value); } } else { throw new UnknownIdentifierException("Attributes of type " + type + ! "aren't supported."); } } --- 335,343 ---- } catch (Exception e) { throw new ParsingException("couldn't create " + type + ! " attribute from input: " + value); } } else { throw new UnknownIdentifierException("Attributes of type " + type + ! " aren't supported."); } } |
From: <se...@us...> - 2003-08-29 18:55:32
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr In directory sc8-pr-cvs1:/tmp/cvs-serv10865/com/sun/xacml/attr Modified Files: AttributeValue.java Log Message: updated a few comments Index: AttributeValue.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr/AttributeValue.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** AttributeValue.java 25 Aug 2003 16:53:10 -0000 1.3 --- AttributeValue.java 29 Aug 2003 18:55:28 -0000 1.4 *************** *** 50,58 **** /** ! * The base type for all attributes used in a policy or request/response, * this abstract class represents a value for a given attribute type. ! * All the required attribute types defined in the XACML specification are * provided as instances of <code>AttributeValue<code>s. If you want to ! * provide a new attribute type, extend this class and implement the * <code>equals(Object)</code> and <code>hashCode</code> methods from * <code>Object</code>, which are used for equality checking. --- 50,58 ---- /** ! * The base type for all datatypes used in a policy or request/response, * this abstract class represents a value for a given attribute type. ! * All the required types defined in the XACML specification are * provided as instances of <code>AttributeValue<code>s. If you want to ! * provide a new type, extend this class and implement the * <code>equals(Object)</code> and <code>hashCode</code> methods from * <code>Object</code>, which are used for equality checking. |
From: <se...@us...> - 2003-08-29 18:53:00
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/ctx In directory sc8-pr-cvs1:/tmp/cvs-serv10426/com/sun/xacml/ctx Modified Files: RequestCtx.java Log Message: fixed encoding bug to include RequestContent correctly Index: RequestCtx.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/ctx/RequestCtx.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** RequestCtx.java 25 Aug 2003 16:53:10 -0000 1.5 --- RequestCtx.java 29 Aug 2003 18:52:56 -0000 1.6 *************** *** 423,430 **** // next do the resource ! if (resource.size() != 0) { out.println(indent + "<Resource>"); if (resourceContent != null) ! out.println(indenter.makeString() + resourceContent); encodeAttributes(resource, out, indenter); out.println(indent + "</Resource>"); --- 423,431 ---- // next do the resource ! if ((resource.size() != 0) || (resourceContent != null)) { out.println(indent + "<Resource>"); if (resourceContent != null) ! out.println(indenter.makeString() + "<ResourceContent>" + ! resourceContent + "</ResourceContent>"); encodeAttributes(resource, out, indenter); out.println(indent + "</Resource>"); |
From: <se...@us...> - 2003-08-29 18:52:27
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/ctx In directory sc8-pr-cvs1:/tmp/cvs-serv10348/com/sun/xacml/ctx Modified Files: Attribute.java Log Message: added enforcement for one and only one value on getInstance Index: Attribute.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/ctx/Attribute.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Attribute.java 25 Aug 2003 16:53:10 -0000 1.3 --- Attribute.java 29 Aug 2003 18:52:20 -0000 1.4 *************** *** 155,158 **** --- 155,163 ---- Node node = nodes.item(i); if (node.getNodeName().equals("AttributeValue")) { + // only one value can be in an Attribute + if (value != null) + throw new ParsingException("Too many values in Attribute"); + + // now get the value try { value = AttributeFactory.createAttribute(node, type); *************** *** 162,165 **** --- 167,174 ---- } } + + // make sure we got a value + if (value == null) + throw new ParsingException("Attribute must contain a value"); return new Attribute(id, type, issuer, issueInstant, value); |
From: <se...@us...> - 2003-08-29 18:51:32
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr In directory sc8-pr-cvs1:/tmp/cvs-serv10185/com/sun/xacml/attr Modified Files: StringAttribute.java Log Message: fixed code to handle empty AttributeValues Index: StringAttribute.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/attr/StringAttribute.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** StringAttribute.java 13 Feb 2003 22:19:10 -0000 1.1.1.1 --- StringAttribute.java 29 Aug 2003 18:51:27 -0000 1.2 *************** *** 121,125 **** */ public static StringAttribute getInstance(Node root) { ! return getInstance(root.getFirstChild().getNodeValue()); } --- 121,132 ---- */ public static StringAttribute getInstance(Node root) { ! Node node = root.getFirstChild(); ! ! // Strings are allowed to have an empty AttributeValue element and are ! // just treated as empty strings...we have to handle this case ! if (node == null) ! return new StringAttribute(""); ! else ! return getInstance(node.getNodeValue()); } |
From: <se...@us...> - 2003-08-26 14:54:10
|
Update of /cvsroot/sunxacml/sunxacml/com/sun/xacml/cond In directory sc8-pr-cvs1:/tmp/cvs-serv22245/cond Modified Files: Apply.java Evaluatable.java Function.java Log Message: updated all existing encoding and added new encoding routines for all policy related elements Index: Apply.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/cond/Apply.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Apply.java 11 Aug 2003 20:48:45 -0000 1.3 --- Apply.java 25 Aug 2003 16:53:10 -0000 1.4 *************** *** 38,41 **** --- 38,42 ---- import com.sun.xacml.EvaluationCtx; + import com.sun.xacml.Indenter; import com.sun.xacml.ParsingException; import com.sun.xacml.UnknownIdentifierException; *************** *** 46,49 **** --- 47,53 ---- import com.sun.xacml.attr.AttributeValue; + import java.io.OutputStream; + import java.io.PrintStream; + import java.net.URI; *************** *** 74,77 **** --- 78,84 ---- private Function bagFunction; + // whether or not this is a condition + private boolean isCondition; + /** * Constructs an <code>Apply</code> object. Throws an *************** *** 84,92 **** * to the function, each of which is an * <code>Evaluatable</code> */ ! public Apply(Function function, List evals) throws IllegalArgumentException { ! this(function, evals, null); } --- 91,101 ---- * to the function, each of which is an * <code>Evaluatable</code> + * @param isCondition true if this <code>Apply</code> is a Condition, + * false otherwise */ ! public Apply(Function function, List evals, boolean isCondition) throws IllegalArgumentException { ! this(function, evals, null, isCondition); } *************** *** 102,107 **** * <code>Evaluatable</code> * @param bagFunction the higher-order function to use */ ! public Apply(Function function, List evals, Function bagFunction) throws IllegalArgumentException { --- 111,119 ---- * <code>Evaluatable</code> * @param bagFunction the higher-order function to use + * @param isCondition true if this <code>Apply</code> is a Condition, + * false otherwise */ ! public Apply(Function function, List evals, Function bagFunction, ! boolean isCondition) throws IllegalArgumentException { *************** *** 119,122 **** --- 131,135 ---- this.evals = Collections.unmodifiableList(evals); this.bagFunction = bagFunction; + this.isCondition = isCondition; } *************** *** 136,140 **** throws ParsingException { ! return getInstance(root, FunctionFactory.getConditionInstance()); } --- 149,153 ---- throws ParsingException { ! return getInstance(root, FunctionFactory.getConditionInstance(), true); } *************** *** 149,153 **** throws ParsingException { ! return getInstance(root, FunctionFactory.getGeneralInstance()); } --- 162,166 ---- throws ParsingException { ! return getInstance(root, FunctionFactory.getGeneralInstance(), false); } *************** *** 157,161 **** * kind of function. */ ! private static Apply getInstance(Node root, FunctionFactory factory) throws ParsingException { --- 170,175 ---- * kind of function. */ ! private static Apply getInstance(Node root, FunctionFactory factory, ! boolean isCondition) throws ParsingException { *************** *** 207,211 **** } ! return new Apply(function, evals, bagFunction); } --- 221,225 ---- } ! return new Apply(function, evals, bagFunction, isCondition); } *************** *** 327,330 **** --- 341,392 ---- public boolean evaluatesToBag() { return function.returnsBag(); + } + + /** + * Encodes this <code>Apply</code> into its XML representation and + * writes this encoding to the given <code>OutputStream</code> with no + * indentation. + * + * @param output a stream into which the XML-encoded data is written + */ + public void encode(OutputStream output) { + encode(output, new Indenter(0)); + } + + /** + * Encodes this <code>Apply</code> into its XML representation and + * writes this encoding to the given <code>OutputStream</code> with + * indentation. + * + * @param output a stream into which the XML-encoded data is written + * @param indenter an object that creates indentation strings + */ + public void encode(OutputStream output, Indenter indenter) { + PrintStream out = new PrintStream(output); + String indent = indenter.makeString(); + + if (isCondition) + out.println(indent + "<Condition FunctionId=\"" + + function.getIdentifier() + "\">"); + else + out.println(indent + "<Apply FunctionId=\"" + + function.getIdentifier() + "\">"); + indenter.in(); + + if (bagFunction != null) + out.println("<Function FunctionId=\"" + + bagFunction.getIdentifier() + "\"/>"); + + Iterator it = evals.iterator(); + while (it.hasNext()) { + Evaluatable eval = (Evaluatable)(it.next()); + eval.encode(output, indenter); + } + + indenter.out(); + if (isCondition) + out.println(indent + "</Condition>"); + else + out.println(indent + "</Apply>"); } Index: Evaluatable.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/cond/Evaluatable.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Evaluatable.java 13 Feb 2003 22:19:10 -0000 1.1.1.1 --- Evaluatable.java 25 Aug 2003 16:53:10 -0000 1.2 *************** *** 38,44 **** --- 38,47 ---- import com.sun.xacml.EvaluationCtx; + import com.sun.xacml.Indenter; import com.sun.xacml.attr.AttributeValue; + import java.io.OutputStream; + import java.net.URI; *************** *** 80,83 **** --- 83,105 ---- */ public boolean evaluatesToBag(); + + /** + * Encodes this <code>Evaluatable</code> into its XML representation and + * writes this encoding to the given <code>OutputStream</code> with no + * indentation. + * + * @param output a stream into which the XML-encoded data is written + */ + public void encode(OutputStream output); + + /** + * Encodes this <code>Evaluatable</code> into its XML representation and + * writes this encoding to the given <code>OutputStream</code> with + * indentation. + * + * @param output a stream into which the XML-encoded data is written + * @param indenter an object that creates indentation strings + */ + public void encode(OutputStream output, Indenter indenter); } Index: Function.java =================================================================== RCS file: /cvsroot/sunxacml/sunxacml/com/sun/xacml/cond/Function.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Function.java 29 Jul 2003 22:01:47 -0000 1.2 --- Function.java 25 Aug 2003 16:53:10 -0000 1.3 *************** *** 96,99 **** --- 96,101 ---- * URIs defined in the standard namespace. This function must always * return the complete namespace and identifier of this function. + * + * @return the function's identifier */ public URI getIdentifier(); |