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();
|