summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/policy-xml/src/main
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-02-25 00:09:28 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-02-25 00:09:28 +0000
commitbfbc84720aa11a2f54d87f36d1741b46fe1ed43c (patch)
tree721fd8e4136773a9501e84d4513469867815bde8 /java/sca/modules/policy-xml/src/main
parentdbed306fd58a4007be3df458e571bf4fd4302dce (diff)
Add more test cases for XPath
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@747620 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/policy-xml/src/main')
-rw-r--r--java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunction.java48
-rw-r--r--java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunctionResolver.java2
2 files changed, 48 insertions, 2 deletions
diff --git a/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunction.java b/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunction.java
index ffabad5644..f015fc90fb 100644
--- a/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunction.java
+++ b/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunction.java
@@ -52,9 +52,55 @@ public class PolicyXPathFunction implements XPathFunction {
}
public Object evaluate(List args) throws XPathFunctionException {
+ System.out.println(functionName + "(" + args + ")");
// FIXME: [rfeng] To be implemented
String arg = (String)args.get(0);
- System.out.println(functionName + "(" + arg + ")");
+ if (InterfaceRef.equals(functionName)) {
+ return evaluateInterface(arg);
+ } else if (OperationRef.equals(functionName)) {
+ String[] params = arg.split("/");
+ if (params.length != 2) {
+ throw new IllegalArgumentException("Invalid argument: " + arg);
+ }
+ String interfaceName = params[0];
+ String operationName = params[1];
+ return evaluateOperation(interfaceName, operationName);
+ } else if (MessageRef.equals(functionName)) {
+ String[] params = arg.split("/");
+ if (params.length != 3) {
+ throw new IllegalArgumentException("Invalid argument: " + arg);
+ }
+ String interfaceName = params[0];
+ String operationName = params[1];
+ String messageName = params[2];
+ return evaluateMessage(interfaceName, operationName, messageName);
+ } else if (URIRef.equals(functionName)) {
+ return evaluateURI(arg);
+ } else if (IntentRefs.equals(functionName)) {
+ String[] intents = arg.split("(\\s)+");
+ return evaluateIntents(intents);
+ } else {
+ return Boolean.FALSE;
+ }
+ }
+
+ private Boolean evaluateInterface(String interfaceName) {
+ return Boolean.FALSE;
+ }
+
+ private Boolean evaluateOperation(String interfaceName, String operationName) {
+ return Boolean.FALSE;
+ }
+
+ private Boolean evaluateMessage(String interfaceName, String operationName, String messageName) {
+ return Boolean.FALSE;
+ }
+
+ private Boolean evaluateURI(String uri) {
+ return Boolean.FALSE;
+ }
+
+ private Boolean evaluateIntents(String[] intents) {
return Boolean.FALSE;
}
diff --git a/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunctionResolver.java b/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunctionResolver.java
index 733b208de7..2d04a27cd7 100644
--- a/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunctionResolver.java
+++ b/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunctionResolver.java
@@ -60,7 +60,7 @@ public class PolicyXPathFunctionResolver implements XPathFunctionResolver {
if (arity == 1) {
return new PolicyXPathFunction(namespaceContext, functionName);
} else {
- return null;
+ throw new IllegalArgumentException("Invalid number of arguments: " + arity);
}
}
return null;