diff options
Diffstat (limited to 'java/sca/modules/policy-xml')
4 files changed, 53 insertions, 19 deletions
diff --git a/java/sca/modules/policy-xml/META-INF/MANIFEST.MF b/java/sca/modules/policy-xml/META-INF/MANIFEST.MF index 78cf2f5405..844978a333 100644 --- a/java/sca/modules/policy-xml/META-INF/MANIFEST.MF +++ b/java/sca/modules/policy-xml/META-INF/MANIFEST.MF @@ -9,12 +9,17 @@ Bnd-LastModified: 1225397115375 Bundle-ManifestVersion: 2
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-Description: Apache Tuscany SCA Policy XML Model
-Import-Package: javax.xml.namespace,javax.xml.stream,javax.xml.xpath,o
- rg.apache.tuscany.sca.contribution.processor;version="2.0.0",org.apache
- .tuscany.sca.contribution.resolver;version="2.0.0",org.apache.tuscany.s
- ca.core;version="2.0.0",org.apache.tuscany.sca.monitor;version="2.0.0",or
- g.apache.tuscany.sca.policy;version="2.0.0",org.apache.tuscany.sca.poli
- cy.impl;version="2.0.0"
+Import-Package: javax.xml.namespace,
+ javax.xml.stream,
+ javax.xml.xpath,
+ org.apache.tuscany.sca.assembly;version="2.0.0",
+ org.apache.tuscany.sca.common.xml.xpath;version="2.0.0",
+ org.apache.tuscany.sca.contribution.processor;version="2.0.0",
+ org.apache.tuscany.sca.contribution.resolver;version="2.0.0",
+ org.apache.tuscany.sca.core;version="2.0.0",
+ org.apache.tuscany.sca.monitor;version="2.0.0",
+ org.apache.tuscany.sca.policy;version="2.0.0",
+ org.apache.tuscany.sca.policy.impl;version="2.0.0"
Bundle-SymbolicName: org.apache.tuscany.sca.policy.xml
Bundle-DocURL: http://www.apache.org/
Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 diff --git a/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicySetProcessor.java b/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicySetProcessor.java index 955788ce8f..a6ee5efde6 100644 --- a/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicySetProcessor.java +++ b/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicySetProcessor.java @@ -26,20 +26,23 @@ import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; +import javax.xml.namespace.NamespaceContext; import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathExpressionException; -import javax.xml.xpath.XPathFactory; +import org.apache.tuscany.sca.common.xml.xpath.XPathHelper; import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor; import org.apache.tuscany.sca.contribution.processor.ContributionReadException; import org.apache.tuscany.sca.contribution.processor.ContributionResolveException; import org.apache.tuscany.sca.contribution.processor.ContributionWriteException; import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; import org.apache.tuscany.sca.contribution.resolver.ModelResolver; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.core.FactoryExtensionPoint; import org.apache.tuscany.sca.monitor.Monitor; import org.apache.tuscany.sca.monitor.Problem; @@ -61,17 +64,22 @@ public class PolicySetProcessor extends BaseStAXArtifactProcessor implements StA private PolicyFactory policyFactory; private StAXArtifactProcessor<Object> extensionProcessor; - private XPathFactory xpathFactory = XPathFactory.newInstance(); + private XPathHelper xpathHelper; + // private XPathFactory xpathFactory; private Monitor monitor; - public PolicySetProcessor(FactoryExtensionPoint modelFactories, + public PolicySetProcessor(ExtensionPointRegistry registry, StAXArtifactProcessor<Object> extensionProcessor, Monitor monitor) { + FactoryExtensionPoint modelFactories = registry.getExtensionPoint(FactoryExtensionPoint.class); this.policyFactory = modelFactories.getFactory(PolicyFactory.class); this.extensionProcessor = extensionProcessor; this.monitor = monitor; + this.xpathHelper = XPathHelper.getInstance(registry); + // this.xpathFactory = modelFactories.getFactory(XPathFactory.class); } + /* public PolicySetProcessor(PolicyFactory policyFactory, StAXArtifactProcessor<Object> extensionProcessor, Monitor monitor) { @@ -79,6 +87,7 @@ public class PolicySetProcessor extends BaseStAXArtifactProcessor implements StA this.extensionProcessor = extensionProcessor; this.monitor = monitor; } + */ /** * Report a exception. @@ -146,16 +155,35 @@ public class PolicySetProcessor extends BaseStAXArtifactProcessor implements StA policySet.setAppliesTo(appliesTo); - XPath path = xpathFactory.newXPath(); - path.setNamespaceContext(reader.getNamespaceContext()); - try { - if (appliesTo != null) { - policySet.setAppliesToXPathExpression(path.compile(appliesTo)); + if (appliesTo != null) { + try { + XPath path = xpathHelper.newXPath(); + NamespaceContext context = xpathHelper.getNamespaceContext(appliesTo, reader.getNamespaceContext()); + // path.setXPathFunctionResolver(new PolicyXPathFunctionResolver(context)); + XPathExpression expression = xpathHelper.compile(path, context, appliesTo); + policySet.setAppliesToXPathExpression(expression); + } catch (XPathExpressionException e) { + ContributionReadException ce = new ContributionReadException(e); + error("ContributionReadException", policySet, ce); + //throw ce; } - } catch (XPathExpressionException e) { - ContributionReadException ce = new ContributionReadException(e); - error("ContributionReadException", policySet, ce); - //throw ce; + } + + String attachTo = reader.getAttributeValue(null, ATTACH_TO); + if (attachTo != null) { + try { + XPath path = xpathHelper.newXPath(); + NamespaceContext context = xpathHelper.getNamespaceContext(attachTo, reader.getNamespaceContext()); + path.setXPathFunctionResolver(new PolicyXPathFunctionResolver(context)); + XPathExpression expression = xpathHelper.compile(path, context, attachTo); + policySet.setAttachTo(attachTo); + policySet.setAttachToXPathExpression(expression); + } catch (XPathExpressionException e) { + ContributionReadException ce = new ContributionReadException(e); + error("ContributionReadException", policySet, ce); + //throw ce; + } + } readProvidedIntents(policySet, reader); diff --git a/java/sca/modules/policy-xml/src/test/resources/org/apache/tuscany/sca/policy/xml/Calculator.composite b/java/sca/modules/policy-xml/src/test/resources/org/apache/tuscany/sca/policy/xml/Calculator.composite index 4d2dbe721c..d6082a936d 100644 --- a/java/sca/modules/policy-xml/src/test/resources/org/apache/tuscany/sca/policy/xml/Calculator.composite +++ b/java/sca/modules/policy-xml/src/test/resources/org/apache/tuscany/sca/policy/xml/Calculator.composite @@ -22,7 +22,7 @@ xmlns:sample="http://sample" name="Calculator"> - <component name="CalculatorServiceComponent" requires="sca:confidentiality"> + <component name="CalculatorServiceComponent" requires="confidentiality"> <implementation.java class="calculator.CalculatorServiceImpl" xmlns:test="http://test" requiers="test:TestIntentOne"/> <reference name="addService" target="AddServiceComponent" /> <reference name="subtractService" target="SubtractServiceComponent" /> diff --git a/java/sca/modules/policy-xml/src/test/resources/org/apache/tuscany/sca/policy/xml/test_definitions.xml b/java/sca/modules/policy-xml/src/test/resources/org/apache/tuscany/sca/policy/xml/test_definitions.xml index 17880254a1..b4857c499f 100644 --- a/java/sca/modules/policy-xml/src/test/resources/org/apache/tuscany/sca/policy/xml/test_definitions.xml +++ b/java/sca/modules/policy-xml/src/test/resources/org/apache/tuscany/sca/policy/xml/test_definitions.xml @@ -38,6 +38,7 @@ </intent> <policySet name="TestPolicySetOne" provides="test:TestIntentOne" appliesTo="sca:binding.ws" + attachTo = "//sca:component[@name='CalculatorServiceComponent']/sca:reference[@name='addService']" xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200903" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"> <wsp:PolicyAttachment> <!-- policy expression and policy subject for |