diff options
author | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-02-25 00:09:28 +0000 |
---|---|---|
committer | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-02-25 00:09:28 +0000 |
commit | bfbc84720aa11a2f54d87f36d1741b46fe1ed43c (patch) | |
tree | 721fd8e4136773a9501e84d4513469867815bde8 /java/sca/modules/policy-xml/src/main | |
parent | dbed306fd58a4007be3df458e571bf4fd4302dce (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')
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; |