summaryrefslogtreecommitdiffstats
path: root/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org')
-rw-r--r--tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/BindingTypeProcessor.java67
-rw-r--r--tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/ExtensionTypeProcessor.java251
-rw-r--r--tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/ImplementationTypeProcessor.java67
-rw-r--r--tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/IntentProcessor.java387
-rw-r--r--tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyConstants.java74
-rw-r--r--tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicySetProcessor.java490
-rw-r--r--tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunction.java127
-rw-r--r--tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunctionResolver.java72
8 files changed, 0 insertions, 1535 deletions
diff --git a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/BindingTypeProcessor.java b/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/BindingTypeProcessor.java
deleted file mode 100644
index 38c7b57f12..0000000000
--- a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/BindingTypeProcessor.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.tuscany.sca.policy.xml;
-
-import javax.xml.namespace.QName;
-
-import org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.policy.BindingType;
-import org.apache.tuscany.sca.policy.ExtensionType;
-import org.apache.tuscany.sca.policy.PolicyFactory;
-
-/**
- * Processor for handling XML models of BindingType meta data definitions
- *
- * @version $Rev$ $Date$
- */
-public class BindingTypeProcessor extends ExtensionTypeProcessor {
-
- public BindingTypeProcessor(PolicyFactory policyFactory,
- StAXArtifactProcessor<Object> extensionProcessor,
- Monitor monitor) {
- super(policyFactory, extensionProcessor, monitor);
- }
-
- public BindingTypeProcessor(FactoryExtensionPoint modelFactories,
- StAXArtifactProcessor<Object> extensionProcessor,
- Monitor monitor) {
- super(modelFactories.getFactory(PolicyFactory.class), extensionProcessor, monitor);
- }
-
- public QName getArtifactType() {
- return BINDING_TYPE_QNAME;
- }
-
- @Override
- protected ExtensionType resolveExtensionType(ExtensionType extnType, ModelResolver resolver)
- throws ContributionResolveException {
- if (extnType instanceof BindingType) {
- BindingType bindingType = (BindingType)extnType;
- return resolver.resolveModel(BindingType.class, bindingType);
- } else {
- return extnType;
- }
-
- }
-}
diff --git a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/ExtensionTypeProcessor.java b/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/ExtensionTypeProcessor.java
deleted file mode 100644
index f437b5d599..0000000000
--- a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/ExtensionTypeProcessor.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.tuscany.sca.policy.xml;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
-
-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.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.Problem;
-import org.apache.tuscany.sca.monitor.Problem.Severity;
-import org.apache.tuscany.sca.policy.BindingType;
-import org.apache.tuscany.sca.policy.ExtensionType;
-import org.apache.tuscany.sca.policy.ImplementationType;
-import org.apache.tuscany.sca.policy.Intent;
-import org.apache.tuscany.sca.policy.PolicyFactory;
-
-/**
- * Processor for handling XML models of ExtensionType meta data definitions
- *
- * @version $Rev$ $Date$
- */
-abstract class ExtensionTypeProcessor extends BaseStAXArtifactProcessor implements
- StAXArtifactProcessor<ExtensionType>, PolicyConstants {
-
- private PolicyFactory policyFactory;
- private Monitor monitor;
-
- protected abstract ExtensionType resolveExtensionType(ExtensionType extnType, ModelResolver resolver)
- throws ContributionResolveException;
-
- public ExtensionTypeProcessor(PolicyFactory policyFactory,
- StAXArtifactProcessor<Object> extensionProcessor,
- Monitor monitor) {
- this.policyFactory = policyFactory;
- this.monitor = monitor;
- }
-
- /**
- * Report a error.
- *
- * @param problems
- * @param message
- * @param model
- */
- private void error(String message, Object model, Object... messageParameters) {
- if (monitor != null) {
- Problem problem =
- monitor.createProblem(this.getClass().getName(),
- "policy-xml-validation-messages",
- Severity.ERROR,
- model,
- message,
- (Object[])messageParameters);
- monitor.problem(problem);
- }
- }
-
- public ExtensionType read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
- QName extType = getArtifactType();
- QName type = getQName(reader, "type");
-
- if (type != null) {
- ExtensionType extensionType = null;
- if (BINDING_TYPE_QNAME.equals(extType)) {
- extensionType = policyFactory.createBindingType();
- } else if (IMPLEMENTATION_TYPE_QNAME.equals(extType)) {
- extensionType = policyFactory.createImplementationType();
- } else {
- error("UnrecognizedExtensionType", reader, type);
- return null;
- //throw new ContributionReadException("Unrecognized ExtensionType - " + type);
- }
- extensionType.setType(type);
- extensionType.setUnresolved(true);
-
- readAlwaysProvidedIntents(extensionType, reader);
- readMayProvideIntents(extensionType, reader);
- return extensionType;
-
- } else {
- error("RequiredAttributeMissing", reader, extType);
- //throw new ContributionReadException("Required attribute '" + TYPE +
- //"' missing from BindingType Definition");
- }
- return null;
- }
-
- private void readAlwaysProvidedIntents(ExtensionType extnType, XMLStreamReader reader) {
- String value = reader.getAttributeValue(null, ALWAYS_PROVIDES);
- if (value != null) {
- List<Intent> alwaysProvided = extnType.getAlwaysProvidedIntents();
- for (StringTokenizer tokens = new StringTokenizer(value); tokens.hasMoreTokens();) {
- QName qname = getQNameValue(reader, tokens.nextToken());
- Intent intent = policyFactory.createIntent();
- intent.setName(qname);
- alwaysProvided.add(intent);
- }
- }
- }
-
- private void readMayProvideIntents(ExtensionType extnType, XMLStreamReader reader) {
- String value = reader.getAttributeValue(null, MAY_PROVIDE);
- if (value != null) {
- List<Intent> mayProvide = extnType.getMayProvidedIntents();
- for (StringTokenizer tokens = new StringTokenizer(value); tokens.hasMoreTokens();) {
- QName qname = getQNameValue(reader, tokens.nextToken());
- Intent intent = policyFactory.createIntent();
- intent.setName(qname);
- mayProvide.add(intent);
- }
- }
- }
-
- public void write(ExtensionType extnType, XMLStreamWriter writer) throws ContributionWriteException,
- XMLStreamException {
-
- // Write an <sca:bindingType or sca:implementationType>
- if (extnType instanceof BindingType) {
- writer.writeStartElement(SCA11_NS, BINDING_TYPE);
- } else if (extnType instanceof ImplementationType) {
- writer.writeStartElement(SCA11_NS, IMPLEMENTATION_TYPE);
- }
-
- writeAlwaysProvidesIntentsAttribute(extnType, writer);
- writeMayProvideIntentsAttribute(extnType, writer);
-
- writer.writeEndElement();
- }
-
- private void writeMayProvideIntentsAttribute(ExtensionType extnType, XMLStreamWriter writer)
- throws XMLStreamException {
- StringBuffer sb = new StringBuffer();
- for (Intent intent : extnType.getMayProvidedIntents()) {
- writer.writeNamespace(intent.getName().getPrefix(), intent.getName().getNamespaceURI());
- sb.append(intent.getName().getPrefix() + COLON + intent.getName().getLocalPart());
- sb.append(WHITE_SPACE);
- }
-
- if (sb.length() > 0) {
- writer.writeAttribute(MAY_PROVIDE, sb.toString());
- }
- }
-
- private void writeAlwaysProvidesIntentsAttribute(ExtensionType extnType, XMLStreamWriter writer)
- throws XMLStreamException {
- StringBuffer sb = new StringBuffer();
- for (Intent intent : extnType.getAlwaysProvidedIntents()) {
- writer.writeNamespace(intent.getName().getPrefix(), intent.getName().getNamespaceURI());
- sb.append(intent.getName().getPrefix() + COLON + intent.getName().getLocalPart());
- sb.append(WHITE_SPACE);
- }
-
- if (sb.length() > 0) {
- writer.writeAttribute(ALWAYS_PROVIDES, sb.toString());
-
- }
- }
-
- public void resolve(ExtensionType extnType, ModelResolver resolver) throws ContributionResolveException {
-
- if (extnType != null && extnType.isUnresolved()) {
- resolveAlwaysProvidedIntents(extnType, resolver);
- resolveMayProvideIntents(extnType, resolver);
- extnType.setUnresolved(false);
- //resolveExtensionType(extnType, resolver);
- }
- }
-
- private void resolveAlwaysProvidedIntents(ExtensionType extensionType, ModelResolver resolver)
- throws ContributionResolveException {
- if (extensionType != null) {
- // resolve all provided intents
- List<Intent> alwaysProvided = new ArrayList<Intent>();
- for (Intent providedIntent : extensionType.getAlwaysProvidedIntents()) {
- if (providedIntent.isUnresolved()) {
- providedIntent = resolver.resolveModel(Intent.class, providedIntent);
- if (!providedIntent.isUnresolved()) {
- alwaysProvided.add(providedIntent);
- } else {
- error("AlwaysProvidedIntentNotFound", resolver, providedIntent, extensionType);
- //throw new ContributionResolveException("Always Provided Intent - " + providedIntent
- //+ " not found for ExtensionType "
- //+ extensionType);
- }
- } else {
- alwaysProvided.add(providedIntent);
- }
- }
- extensionType.getAlwaysProvidedIntents().clear();
- extensionType.getAlwaysProvidedIntents().addAll(alwaysProvided);
- }
- }
-
- private void resolveMayProvideIntents(ExtensionType extensionType, ModelResolver resolver)
- throws ContributionResolveException {
- if (extensionType != null) {
- // resolve all provided intents
- List<Intent> mayProvide = new ArrayList<Intent>();
- for (Intent providedIntent : extensionType.getMayProvidedIntents()) {
- if (providedIntent.isUnresolved()) {
- providedIntent = resolver.resolveModel(Intent.class, providedIntent);
- if (!providedIntent.isUnresolved()) {
- mayProvide.add(providedIntent);
- } else {
- error("MayProvideIntentNotFound", resolver, providedIntent, extensionType);
- //throw new ContributionResolveException("May Provide Intent - " + providedIntent
- //+ " not found for ExtensionType "
- //+ extensionType);
- }
- } else {
- mayProvide.add(providedIntent);
- }
- }
- extensionType.getMayProvidedIntents().clear();
- extensionType.getMayProvidedIntents().addAll(mayProvide);
- }
- }
-
- public Class<ExtensionType> getModelType() {
- return ExtensionType.class;
- }
-}
diff --git a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/ImplementationTypeProcessor.java b/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/ImplementationTypeProcessor.java
deleted file mode 100644
index 41e2af3809..0000000000
--- a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/ImplementationTypeProcessor.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.tuscany.sca.policy.xml;
-
-import javax.xml.namespace.QName;
-
-import org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.policy.ExtensionType;
-import org.apache.tuscany.sca.policy.ImplementationType;
-import org.apache.tuscany.sca.policy.PolicyFactory;
-
-/**
- * Processor for handling XML models of ImplementationType meta data definitions
- *
- * @version $Rev$ $Date$
- */
-public class ImplementationTypeProcessor extends ExtensionTypeProcessor {
-
- public ImplementationTypeProcessor(PolicyFactory policyFactory,
- StAXArtifactProcessor<Object> extensionProcessor,
- Monitor monitor) {
- super(policyFactory, extensionProcessor, monitor);
- }
-
- public ImplementationTypeProcessor(FactoryExtensionPoint modelFactories,
- StAXArtifactProcessor<Object> extensionProcessor,
- Monitor monitor) {
- super(modelFactories.getFactory(PolicyFactory.class), extensionProcessor, monitor);
- }
-
- public QName getArtifactType() {
- return IMPLEMENTATION_TYPE_QNAME;
- }
-
- @Override
- protected ExtensionType resolveExtensionType(ExtensionType extnType, ModelResolver resolver)
- throws ContributionResolveException {
- if (extnType instanceof ImplementationType) {
- ImplementationType implType = (ImplementationType)extnType;
- return resolver.resolveModel(ImplementationType.class, implType);
- } else {
- return extnType;
- }
-
- }
-}
diff --git a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/IntentProcessor.java b/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/IntentProcessor.java
deleted file mode 100644
index d87921dbbf..0000000000
--- a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/IntentProcessor.java
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.tuscany.sca.policy.xml;
-
-import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
-import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
-
-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.FactoryExtensionPoint;
-import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.Problem;
-import org.apache.tuscany.sca.monitor.Problem.Severity;
-import org.apache.tuscany.sca.policy.ExtensionType;
-import org.apache.tuscany.sca.policy.Intent;
-import org.apache.tuscany.sca.policy.PolicyFactory;
-import org.apache.tuscany.sca.policy.Intent.Type;
-
-/**
- * Processor for handling XML models of PolicyIntent definitions
- *
- * @version $Rev$ $Date$
- */
-public class IntentProcessor extends BaseStAXArtifactProcessor implements StAXArtifactProcessor<Intent>,
- PolicyConstants {
-
- private PolicyFactory policyFactory;
- private Monitor monitor;
-
- public IntentProcessor(FactoryExtensionPoint modelFactories, Monitor monitor) {
- this.policyFactory = modelFactories.getFactory(PolicyFactory.class);
- this.monitor = monitor;
- }
-
- public IntentProcessor(PolicyFactory policyFactory, Monitor monitor) {
- this.policyFactory = policyFactory;
- this.monitor = monitor;
- }
-
- /**
- * Report a error.
- *
- * @param problems
- * @param message
- * @param model
- */
- private void error(String message, Object model, Object... messageParameters) {
- if (monitor != null) {
- Problem problem =
- monitor.createProblem(this.getClass().getName(),
- "policy-xml-validation-messages",
- Severity.ERROR,
- model,
- message,
- messageParameters);
- monitor.problem(problem);
- }
- }
-
- private void warn(String message, Object model, Object... messageParameters) {
- if (monitor != null) {
- Problem problem =
- monitor.createProblem(this.getClass().getName(),
- "policy-xml-validation-messages",
- Severity.WARNING,
- model,
- message,
- messageParameters);
- monitor.problem(problem);
- }
- }
-
- public Intent read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
- Intent intent = null;
- String intentLocalName = reader.getAttributeValue(null, NAME);
- if (intentLocalName == null) {
- error("IntentNameMissing", reader);
- return null;
- }
-
- String intentType = reader.getAttributeValue(null, INTENT_TYPE);
- if (intentType == null) {
- intentType = Intent.Type.interaction.name();
- }
-
- intent = policyFactory.createIntent();
-
- // [rfeng] the target namespace is not available, set the local part for now
- // This will be changed in the definitions processor
- intent.setName(new QName(intentLocalName));
- intent.setType(Type.valueOf(intentType));
-
- readRequiredIntents(intent, reader);
- readExcludedIntents(intent, reader);
-
- readConstrainedTypes(intent, reader);
-
- Intent current = intent;
- int event = reader.getEventType();
- QName name = null;
- while (reader.hasNext()) {
- event = reader.getEventType();
- switch (event) {
- case START_ELEMENT: {
- name = reader.getName();
- if (DESCRIPTION_QNAME.equals(name)) {
- current.setDescription(reader.getElementText());
- } else if (INTENT_QUALIFIER_QNAME.equals(name)) {
- String qualifierName = reader.getAttributeValue(null, NAME);
- String defaultQ = reader.getAttributeValue(null, DEFAULT);
- boolean isDefault = defaultQ == null ? false : Boolean.parseBoolean(defaultQ);
- String qualifiedIntentName = intentLocalName + QUALIFIER + qualifierName;
- Intent qualified = policyFactory.createIntent();
- qualified.setType(intent.getType());
- qualified.setName(new QName(qualifiedIntentName));
- if (isDefault) {
- intent.setDefaultQualifiedIntent(qualified);
- }
- intent.getQualifiedIntents().add(qualified);
- qualified.setQualifiableIntent(intent);
- current = qualified;
- }
- break;
- }
- case END_ELEMENT: {
- name = reader.getName();
- if (INTENT_QUALIFIER_QNAME.equals(name)) {
- current = intent;
- }
- break;
- }
- }
- if (event == END_ELEMENT && POLICY_INTENT_QNAME.equals(reader.getName())) {
- break;
- }
-
- //Read the next element
- if (reader.hasNext()) {
- reader.next();
- }
- }
- // REVIEW: [rfeng] What's going to happen if there is only one qualified intent
- if (intent.getQualifiedIntents().size() == 1) {
- intent.setDefaultQualifiedIntent(intent.getQualifiedIntents().get(0));
- }
- return intent;
- }
-
- public void write(Intent intent, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException {
- // Write an <sca:intent>
- writer.writeStartElement(PolicyConstants.SCA11_NS, INTENT);
- writer.writeNamespace(intent.getName().getPrefix(), intent.getName().getNamespaceURI());
- writer.writeAttribute(PolicyConstants.NAME, intent.getName().getPrefix() + COLON
- + intent.getName().getLocalPart());
- if (intent.getRequiredIntents() != null && intent.getRequiredIntents().size() > 0) {
- StringBuffer sb = new StringBuffer();
- for (Intent requiredIntents : intent.getRequiredIntents()) {
- sb.append(requiredIntents.getName());
- sb.append(" ");
- }
- writer.writeAttribute(PolicyConstants.REQUIRES, sb.toString());
- }
-
- if (intent.getExcludedIntents() != null && intent.getExcludedIntents().size() > 0) {
- StringBuffer sb = new StringBuffer();
- for (Intent excludedIntents : intent.getExcludedIntents()) {
- sb.append(excludedIntents.getName());
- sb.append(" ");
- }
- writer.writeAttribute(PolicyConstants.EXCLUDES, sb.toString());
- }
-
- if (intent.getConstrainedTypes() != null && intent.getConstrainedTypes().size() > 0) {
- StringBuffer sb = new StringBuffer();
- for (ExtensionType contrainedArtifact : intent.getConstrainedTypes()) {
- sb.append(contrainedArtifact.getType().getPrefix());
- sb.append(':').append(contrainedArtifact.getType().getLocalPart());
- sb.append(" ");
- }
- writer.writeAttribute(CONSTRAINS, sb.toString());
- }
-
- if (intent.getDescription() != null && intent.getDescription().length() > 0) {
- writer.writeStartElement(PolicyConstants.SCA11_NS, DESCRIPTION);
- writer.writeCData(intent.getDescription());
- writer.writeEndElement();
- }
-
- writer.writeEndElement();
- }
-
- private void resolveContrainedTypes(Intent intent, ModelResolver resolver) throws ContributionResolveException {
- Collection<ExtensionType> resolvedTypes = new HashSet<ExtensionType>();
- for (ExtensionType extensionType : intent.getConstrainedTypes()) {
- if (ExtensionType.BINDING_BASE.equals(extensionType.getType()) || ExtensionType.IMPLEMENTATION_BASE
- .equals(extensionType.getType())) {
- // HACK: Mark sca:binding and sca:implementation as resolved
- extensionType.setUnresolved(false);
- resolvedTypes.add(extensionType);
- } else {
- ExtensionType resolved = resolver.resolveModel(ExtensionType.class, extensionType);
- if (!resolved.isUnresolved() || resolved != extensionType) {
- resolvedTypes.add(resolved);
- } else {
- warn("ConstrainedTypeNotFound", intent, extensionType, intent);
- }
- }
- }
- intent.getConstrainedTypes().clear();
- intent.getConstrainedTypes().addAll(resolvedTypes);
- }
-
- private void resolveProfileIntent(Intent intent, ModelResolver resolver) throws ContributionResolveException {
- // FIXME: Need to check for cyclic references first i.e an A requiring B
- // and then B requiring A...
- if (intent != null && !intent.getRequiredIntents().isEmpty()) {
- // resolve all required intents
- List<Intent> requiredIntents = new ArrayList<Intent>();
- for (Intent required : intent.getRequiredIntents()) {
- if (required.isUnresolved()) {
- Intent resolved = resolver.resolveModel(Intent.class, required);
- // At this point, when the required intent is not resolved, it does not mean
- // its undeclared, chances are that their dependency are not resolved yet.
- // Lets try to resolve them first.
- if (resolved.isUnresolved()) {
- if (((resolved).getRequiredIntents()).contains(intent)) {
- error("CyclicReferenceFound", resolver, required, intent);
- return;
- }
- }
-
- if (!resolved.isUnresolved() || resolved != required) {
- requiredIntents.add(resolved);
- } else {
- error("RequiredIntentNotFound", resolver, required, intent);
- return;
- //throw new ContributionResolveException("Required Intent - " + requiredIntent
- //+ " not found for Intent " + policyIntent);
- }
- } else {
- requiredIntents.add(required);
- }
- }
- intent.getRequiredIntents().clear();
- intent.getRequiredIntents().addAll(requiredIntents);
- }
- }
-
- private void resolveQualifiedIntent(Intent qualifed, ModelResolver resolver) throws ContributionResolveException {
- if (qualifed != null) {
- //resolve the qualifiable intent
- Intent parent = qualifed.getQualifiableIntent();
- if (parent == null) {
- return;
- }
- if (parent.isUnresolved()) {
- Intent resolved = resolver.resolveModel(Intent.class, parent);
- // At this point, when the qualifiable intent is not resolved, it does not mean
- // its undeclared, chances are that their dependency are not resolved yet.
- // Lets try to resolve them first.
-
- if (!resolved.isUnresolved() || resolved != qualifed) {
- qualifed.setQualifiableIntent(resolved);
- } else {
- error("QualifiableIntentNotFound", resolver, parent, qualifed);
- //throw new ContributionResolveException("Qualifiable Intent - " + qualifiableIntent
- //+ " not found for Intent " + policyIntent);
- }
- }
- }
- }
-
- public void resolve(Intent intent, ModelResolver resolver) throws ContributionResolveException {
- resolveProfileIntent(intent, resolver);
- resolveExcludedIntents(intent, resolver);
- resolveQualifiedIntent(intent, resolver);
- resolveContrainedTypes(intent, resolver);
- intent.setUnresolved(false);
- }
-
- public QName getArtifactType() {
- return POLICY_INTENT_QNAME;
- }
-
- private void readConstrainedTypes(Intent policyIntent, XMLStreamReader reader) throws ContributionReadException {
- String value = reader.getAttributeValue(null, CONSTRAINS);
- if (value != null) {
- List<ExtensionType> constrainedTypes = policyIntent.getConstrainedTypes();
- for (StringTokenizer tokens = new StringTokenizer(value); tokens.hasMoreTokens();) {
- QName qname = getQNameValue(reader, tokens.nextToken());
- ExtensionType extensionType = policyFactory.createExtensionType();
- extensionType.setType(qname);
- constrainedTypes.add(extensionType);
- }
- }
- }
-
- private void readRequiredIntents(Intent intent, XMLStreamReader reader) {
- String value = reader.getAttributeValue(null, REQUIRES);
- if (value != null) {
- List<Intent> requiredIntents = intent.getRequiredIntents();
- for (StringTokenizer tokens = new StringTokenizer(value); tokens.hasMoreTokens();) {
- QName qname = getQNameValue(reader, tokens.nextToken());
- Intent required = policyFactory.createIntent();
- required.setName(qname);
- required.setUnresolved(true);
- requiredIntents.add(required);
- }
- }
- }
-
- private void readExcludedIntents(Intent intent, XMLStreamReader reader) {
- String value = reader.getAttributeValue(null, EXCLUDES);
- if (value != null) {
- List<Intent> excludedIntents = intent.getExcludedIntents();
- for (StringTokenizer tokens = new StringTokenizer(value); tokens.hasMoreTokens();) {
- QName qname = getQNameValue(reader, tokens.nextToken());
- Intent excluded = policyFactory.createIntent();
- excluded.setName(qname);
- excluded.setUnresolved(true);
- excludedIntents.add(excluded);
- }
- }
- }
-
- private void resolveExcludedIntents(Intent policyIntent, ModelResolver resolver)
- throws ContributionResolveException {
- if (policyIntent != null) {
- // resolve all excluded intents
- List<Intent> excludedIntents = new ArrayList<Intent>();
- for (Intent excludedIntent : policyIntent.getExcludedIntents()) {
- if (excludedIntent.isUnresolved()) {
- Intent resolvedExcludedIntent = resolver.resolveModel(Intent.class, excludedIntent);
- if (!resolvedExcludedIntent.isUnresolved()) {
- excludedIntents.add(resolvedExcludedIntent);
- } else {
- error("ExcludedIntentNotFound", resolver, excludedIntent, policyIntent);
- return;
- //throw new ContributionResolveException("Excluded Intent " + excludedIntent
- //+ " not found for intent " + policyIntent);
- }
- } else {
- excludedIntents.add(excludedIntent);
- }
- }
- policyIntent.getExcludedIntents().clear();
- policyIntent.getExcludedIntents().addAll(excludedIntents);
- }
- }
-
- public Class<Intent> getModelType() {
- return Intent.class;
- }
-
-}
diff --git a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyConstants.java b/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyConstants.java
deleted file mode 100644
index 7d63440e23..0000000000
--- a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyConstants.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tuscany.sca.policy.xml;
-
-import javax.xml.namespace.QName;
-
-/**
- * constants related to policy framework
- *
- * @version $Rev$ $Date$
- */
-public interface PolicyConstants {
- String WHITE_SPACE = " ";
- String COLON = ":";
- String SCA11_NS = "http://docs.oasis-open.org/ns/opencsa/sca/200903";
- String TUSCANY_NS = "http://tuscany.apache.org/xmlns/sca/1.1";
- String INTENT = "intent";
- String POLICY_SET = "policySet";
- String POLICY_SET_REFERENCE = "policySetReference";
- String INTENT_MAP = "intentMap";
- String NAME = "name";
- String TARGET_NAMESPACE = "targetNamespace";
- String SCA_DEFINITIONS = "definitions";
- String CONSTRAINS = "constrains";
- String DESCRIPTION = "description";
- String PROVIDES = "provides";
- String APPLIES_TO = "appliesTo";
- String ATTACH_TO = "attachTo";
- String ALWAYS_APPLIES_TO = "alwaysAppliesTo";
- String QUALIFIER = ".";
- String INTENT_QUALIFIER = "qualifier";
- String INTENT_MAP_QUALIFIER = "qualifier";
- String REQUIRES = "requires";
- String EXCLUDES = "excludes";
- String DEFAULT = "default";
-
- String ALWAYS_PROVIDES = "alwaysProvides";
- String MAY_PROVIDE = "mayProvide";
- String INTENT_TYPE = "intentType";
- String IMPLEMENTATION_TYPE = "implementationType";
- String BINDING_TYPE = "bindingType";
- QName IMPLEMENTATION_TYPE_QNAME = new QName(SCA11_NS, IMPLEMENTATION_TYPE);
- QName BINDING_TYPE_QNAME = new QName(SCA11_NS, BINDING_TYPE);
- String BINDING = "binding";
- String IMPLEMENTATION = "implementation";
-
- QName POLICY_INTENT_QNAME = new QName(SCA11_NS, INTENT);
- QName POLICY_SET_QNAME = new QName(SCA11_NS, POLICY_SET);
- QName POLICY_INTENT_MAP_QNAME = new QName(SCA11_NS, INTENT_MAP);
- QName SCA_DEFINITIONS_QNAME = new QName(SCA11_NS, SCA_DEFINITIONS);
- QName DESCRIPTION_QNAME = new QName(SCA11_NS, DESCRIPTION);
- QName POLICY_INTENT_MAP_QUALIFIER_QNAME = new QName(SCA11_NS, INTENT_MAP_QUALIFIER);
- QName POLICY_SET_REFERENCE_QNAME = new QName(SCA11_NS, POLICY_SET_REFERENCE);
- QName INTENT_QUALIFIER_QNAME = new QName(SCA11_NS, INTENT_QUALIFIER);
-
- String QUALIFIED_INTENT_CONSTRAINS_ERROR = " - Qualified Intents must not specify 'constrains' attribute";
-
-}
diff --git a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicySetProcessor.java b/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicySetProcessor.java
deleted file mode 100644
index 955788ce8f..0000000000
--- a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicySetProcessor.java
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.tuscany.sca.policy.xml;
-
-import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
-import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-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.XPathExpressionException;
-import javax.xml.xpath.XPathFactory;
-
-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.FactoryExtensionPoint;
-import org.apache.tuscany.sca.monitor.Monitor;
-import org.apache.tuscany.sca.monitor.Problem;
-import org.apache.tuscany.sca.monitor.Problem.Severity;
-import org.apache.tuscany.sca.policy.Intent;
-import org.apache.tuscany.sca.policy.IntentMap;
-import org.apache.tuscany.sca.policy.PolicyExpression;
-import org.apache.tuscany.sca.policy.PolicyFactory;
-import org.apache.tuscany.sca.policy.PolicySet;
-import org.apache.tuscany.sca.policy.Qualifier;
-
-/**
- * Processor for handling XML models of PolicySet definitions
- *
- * @version $Rev$ $Date$
- */
-public class PolicySetProcessor extends BaseStAXArtifactProcessor implements StAXArtifactProcessor<PolicySet>,
- PolicyConstants {
-
- private PolicyFactory policyFactory;
- private StAXArtifactProcessor<Object> extensionProcessor;
- private XPathFactory xpathFactory = XPathFactory.newInstance();
- private Monitor monitor;
-
- public PolicySetProcessor(FactoryExtensionPoint modelFactories,
- StAXArtifactProcessor<Object> extensionProcessor,
- Monitor monitor) {
- this.policyFactory = modelFactories.getFactory(PolicyFactory.class);
- this.extensionProcessor = extensionProcessor;
- this.monitor = monitor;
- }
-
- public PolicySetProcessor(PolicyFactory policyFactory,
- StAXArtifactProcessor<Object> extensionProcessor,
- Monitor monitor) {
- this.policyFactory = policyFactory;
- this.extensionProcessor = extensionProcessor;
- this.monitor = monitor;
- }
-
- /**
- * Report a exception.
- *
- * @param problems
- * @param message
- * @param model
- */
- private void error(String message, Object model, Exception ex) {
- if (monitor != null) {
- Problem problem =
- monitor.createProblem(this.getClass().getName(),
- "policy-xml-validation-messages",
- Severity.ERROR,
- model,
- message,
- ex);
- monitor.problem(problem);
- }
- }
-
- /**
- * Report a error.
- *
- * @param problems
- * @param message
- * @param model
- */
- private void error(String message, Object model, Object... messageParameters) {
- if (monitor != null) {
- Problem problem =
- monitor.createProblem(this.getClass().getName(),
- "policy-xml-validation-messages",
- Severity.ERROR,
- model,
- message,
- (Object[])messageParameters);
- monitor.problem(problem);
- }
- }
-
- public PolicySet read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
- PolicySet policySet = null;
-
- String policySetName = reader.getAttributeValue(null, NAME);
- String appliesTo = reader.getAttributeValue(null, APPLIES_TO);
- if (policySetName == null || appliesTo == null) {
- if (policySetName == null)
- error("PolicySetNameMissing", reader);
- if (appliesTo == null)
- error("PolicySetAppliesToMissing", reader);
- return policySet;
- }
-
- policySet = policyFactory.createPolicySet();
- policySet.setName(new QName(policySetName));
-
- //TODO: with 1.0 version of specs the applies to xpath is given related to the immediate
- //parent whereas the runtime evaluates the xpath aginst the composite element. What the runtime
- //is doing is what the future version of the specs could be tending towards. When that happens
- //this 'if' must be deleted
- if (appliesTo != null && !appliesTo.startsWith("/")) {
- appliesTo = "//" + appliesTo;
- }
-
- policySet.setAppliesTo(appliesTo);
-
- XPath path = xpathFactory.newXPath();
- path.setNamespaceContext(reader.getNamespaceContext());
- try {
- if (appliesTo != null) {
- policySet.setAppliesToXPathExpression(path.compile(appliesTo));
- }
- } catch (XPathExpressionException e) {
- ContributionReadException ce = new ContributionReadException(e);
- error("ContributionReadException", policySet, ce);
- //throw ce;
- }
-
- readProvidedIntents(policySet, reader);
-
- int event = reader.getEventType();
- QName name = null;
- reader.next();
- while (reader.hasNext()) {
- event = reader.getEventType();
- switch (event) {
- case START_ELEMENT: {
- name = reader.getName();
- if (POLICY_INTENT_MAP_QNAME.equals(name)) {
- Intent mappedIntent = policyFactory.createIntent();
- String provides = reader.getAttributeValue(null, PROVIDES);
- if (provides != null) {
- mappedIntent.setName(getQName(reader, PROVIDES));
- if (policySet.getProvidedIntents().contains(mappedIntent)) {
- readIntentMap(reader, policySet, mappedIntent);
- } else {
- error("IntentNotSpecified", policySet, policySetName);
- //throw new ContributionReadException("Intent Map provides for Intent not specified as provided by parent PolicySet - " + policySetName);
- }
- } else {
- error("IntentMapProvidesMissing", reader, policySetName);
- }
- } else if (POLICY_SET_REFERENCE_QNAME.equals(name)) {
- PolicySet referredPolicySet = policyFactory.createPolicySet();
- String referencename = reader.getAttributeValue(null, NAME);
- if (referencename != null) {
- referredPolicySet.setName(getQName(reader, NAME));
- policySet.getReferencedPolicySets().add(referredPolicySet);
- } else {
- error("PolicySetReferenceNameMissing", reader, policySetName);
- }
- } /*else if ( WS_POLICY_QNAME.equals(name) ) {
- OMElement policyElement = loadElement(reader);
- org.apache.neethi.Policy wsPolicy = PolicyEngine.getPolicy(policyElement);
- policySet.getPolicies().add(wsPolicy);
- } */else {
- Object extension = extensionProcessor.read(reader);
- if (extension != null) {
- PolicyExpression exp = policyFactory.createPolicyExpression();
- exp.setName(name);
- exp.setPolicy(extension);
- policySet.getPolicies().add(exp);
- }
- }
- break;
- }
- }
- if (event == END_ELEMENT) {
- if (POLICY_SET_QNAME.equals(reader.getName())) {
- break;
- }
- }
-
- //Read the next element
- if (reader.hasNext()) {
- reader.next();
- }
- }
- return policySet;
- }
-
- public void readIntentMap(XMLStreamReader reader, PolicySet policySet, Intent mappedIntent)
- throws ContributionReadException {
- QName name = reader.getName();
- if (POLICY_INTENT_MAP_QNAME.equals(name)) {
-
- IntentMap intentMap = policyFactory.createIntentMap();
- QName intentName = getQName(reader, INTENT_MAP);
- intentMap.setProvidedIntent(mappedIntent);
-
- policySet.getIntentMaps().add(intentMap);
-
- String qualifierName = null;
- String qualfiedIntentName = null;
- Intent qualifiedIntent = null;
-
- Qualifier qualifier = null;
-
- int event = reader.getEventType();
- try {
- reader.next();
- while (reader.hasNext()) {
- event = reader.getEventType();
- switch (event) {
- case START_ELEMENT: {
- name = reader.getName();
- if (POLICY_INTENT_MAP_QUALIFIER_QNAME.equals(name)) {
- qualifierName = getString(reader, NAME);
- if (qualifierName != null) {
- qualfiedIntentName =
- mappedIntent.getName().getLocalPart() + QUALIFIER + qualifierName;
- qualifiedIntent = policyFactory.createIntent();
- qualifiedIntent.setName(new QName(mappedIntent.getName().getNamespaceURI(),
- qualfiedIntentName));
- qualifier = policyFactory.createQualifier();
- qualifier.setIntent(qualifiedIntent);
- intentMap.getQualifiers().add(qualifier);
-
- } else {
- error("QualifierNameMissing", reader, policySet.getName());
- }
- } else if (POLICY_INTENT_MAP_QNAME.equals(name)) {
- QName providedIntent = getQName(reader, PROVIDES);
- if (qualifierName.equals(providedIntent.getLocalPart())) {
- readIntentMap(reader, policySet, qualifiedIntent);
- } else {
- error("IntentMapDoesNotMatch",
- providedIntent,
- providedIntent,
- qualifierName,
- policySet);
- //throw new ContributionReadException("Intent provided by IntentMap " +
- //providedIntent + " does not match parent qualifier " + qualifierName +
- //" in policyset - " + policySet);
- }
- } else {
- Object extension = extensionProcessor.read(reader);
- if (extension != null && qualifier != null) {
- PolicyExpression exp = policyFactory.createPolicyExpression();
- exp.setName(name);
- exp.setPolicy(extension);
- qualifier.getPolicies().add(exp);
- }
- }
- break;
- }
- }
- if (event == END_ELEMENT && POLICY_INTENT_MAP_QNAME.equals(reader.getName())) {
- break;
- }
- //Read the next element
- if (reader.hasNext()) {
- reader.next();
- }
- }
- } catch (XMLStreamException e) {
- ContributionReadException ce = new ContributionReadException(e);
- error("ContributionReadException", reader, ce);
- throw ce;
- }
- }
- }
-
- public void write(PolicySet policySet, XMLStreamWriter writer) throws ContributionWriteException,
- XMLStreamException {
-
- // Write an <sca:policySet>
- writer.writeStartElement(SCA11_NS, POLICY_SET);
- writer.writeNamespace(policySet.getName().getPrefix(), policySet.getName().getNamespaceURI());
- writer.writeAttribute(NAME, policySet.getName().getPrefix() + COLON + policySet.getName().getLocalPart());
- writer.writeAttribute(APPLIES_TO, policySet.getAppliesTo());
- writer.writeAttribute(ATTACH_TO, policySet.getAttachTo());
-
- writeProvidedIntents(policySet, writer);
-
- writer.writeEndElement();
- }
-
- private void readProvidedIntents(PolicySet policySet, XMLStreamReader reader) {
- String value = reader.getAttributeValue(null, PROVIDES);
- if (value != null) {
- List<Intent> providedIntents = policySet.getProvidedIntents();
- for (StringTokenizer tokens = new StringTokenizer(value); tokens.hasMoreTokens();) {
- QName qname = getQNameValue(reader, tokens.nextToken());
- Intent intent = policyFactory.createIntent();
- intent.setName(qname);
- providedIntents.add(intent);
- }
- }
- }
-
- private void writeProvidedIntents(PolicySet policySet, XMLStreamWriter writer) throws XMLStreamException {
- if (!policySet.getProvidedIntents().isEmpty()) {
- StringBuffer sb = new StringBuffer();
- for (Intent providedIntents : policySet.getProvidedIntents()) {
- sb.append(getQualifiedName(providedIntents.getName(), writer));
- sb.append(" ");
- }
- // Remove the last space
- sb.deleteCharAt(sb.length() - 1);
- writer.writeAttribute(PolicyConstants.PROVIDES, sb.toString());
- }
- }
-
- private String getQualifiedName(QName name, XMLStreamWriter writer) throws XMLStreamException {
- String local = name.getLocalPart();
- String prefix = writer.getPrefix(name.getNamespaceURI());
- if (prefix != null && prefix.length() > 0) {
- return prefix + ':' + local;
- } else {
- return local;
- }
- }
-
- private void resolvePolicies(PolicySet policySet, ModelResolver resolver) throws ContributionResolveException {
- boolean unresolved = false;
- if (policySet != null) {
- for (Object o : policySet.getPolicies()) {
- extensionProcessor.resolve(o, resolver);
- /*if ( o instanceof Policy && ((Policy)o).isUnresolved() ) {
- unresolved = true;
- }*/
- }
- policySet.setUnresolved(unresolved);
- }
- }
-
- public QName getArtifactType() {
- return POLICY_SET_QNAME;
- }
-
- public Class<PolicySet> getModelType() {
- return PolicySet.class;
- }
-
- private void resolveProvidedIntents(PolicySet policySet, ModelResolver resolver)
- throws ContributionResolveException {
- if (policySet != null) {
- //resolve all provided intents
- List<Intent> providedIntents = new ArrayList<Intent>();
- for (Intent providedIntent : policySet.getProvidedIntents()) {
- if (providedIntent.isUnresolved()) {
- Intent resolved = resolver.resolveModel(Intent.class, providedIntent);
- if (!resolved.isUnresolved() || resolved != providedIntent) {
- providedIntents.add(resolved);
- } else {
- error("ProvidedIntentNotFound", policySet, providedIntent, policySet);
- return;
- //throw new ContributionResolveException("Provided Intent - " + providedIntent
- //+ " not found for PolicySet " + policySet);
- }
- } else {
- providedIntents.add(providedIntent);
- }
- }
- policySet.getProvidedIntents().clear();
- policySet.getProvidedIntents().addAll(providedIntents);
- }
- }
-
- private void resolveIntentsInMappedPolicies(PolicySet policySet, ModelResolver resolver)
- throws ContributionResolveException {
- for (IntentMap intentMap : policySet.getIntentMaps()) {
- Intent intent = intentMap.getProvidedIntent();
- if (intent.isUnresolved()) {
- Intent resolved = resolver.resolveModel(Intent.class, intent);
- if (!resolved.isUnresolved() || resolved != intent) {
- intentMap.setProvidedIntent(resolved);
- } else {
- error("MappedIntentNotFound", policySet, intent, policySet);
- return;
- //throw new ContributionResolveException("Mapped Intent - " + mappedIntent
- //+ " not found for PolicySet " + policySet);
- }
- }
- for (Qualifier qualifier : intentMap.getQualifiers()) {
- intent = qualifier.getIntent();
- if (intent.isUnresolved()) {
- Intent resolved = resolver.resolveModel(Intent.class, intent);
- if (!resolved.isUnresolved() || resolved != intent) {
- qualifier.setIntent(resolved);
- } else {
- error("MappedIntentNotFound", policySet, intent, policySet);
- return;
- //throw new ContributionResolveException("Mapped Intent - " + mappedIntent
- //+ " not found for PolicySet " + policySet);
- }
- }
- for (PolicyExpression exp : qualifier.getPolicies()) {
- // FIXME: How to resolve the policies?
- }
- }
- }
-
- }
-
- private void resolveReferredPolicySets(PolicySet policySet, ModelResolver resolver)
- throws ContributionResolveException {
-
- List<PolicySet> referredPolicySets = new ArrayList<PolicySet>();
- for (PolicySet referredPolicySet : policySet.getReferencedPolicySets()) {
- if (referredPolicySet.isUnresolved()) {
- PolicySet resolved = resolver.resolveModel(PolicySet.class, referredPolicySet);
- if (!resolved.isUnresolved() || resolved != referredPolicySet) {
- referredPolicySets.add(resolved);
- } else {
- error("ReferredPolicySetNotFound", policySet, referredPolicySet, policySet);
- return;
- //throw new ContributionResolveException("Referred PolicySet - " + referredPolicySet
- //+ "not found for PolicySet - " + policySet);
- }
- } else {
- referredPolicySets.add(referredPolicySet);
- }
- }
- policySet.getReferencedPolicySets().clear();
- policySet.getReferencedPolicySets().addAll(referredPolicySets);
- }
-
- private void includeReferredPolicySets(PolicySet policySet, PolicySet referredPolicySet) {
- for (PolicySet furtherReferredPolicySet : referredPolicySet.getReferencedPolicySets()) {
- includeReferredPolicySets(referredPolicySet, furtherReferredPolicySet);
- }
- policySet.getPolicies().addAll(referredPolicySet.getPolicies());
- policySet.getIntentMaps().addAll(referredPolicySet.getIntentMaps());
- }
-
- public void resolve(PolicySet policySet, ModelResolver resolver) throws ContributionResolveException {
- resolveProvidedIntents(policySet, resolver);
- resolveIntentsInMappedPolicies(policySet, resolver);
- resolveReferredPolicySets(policySet, resolver);
-
- for (PolicySet referredPolicySet : policySet.getReferencedPolicySets()) {
- includeReferredPolicySets(policySet, referredPolicySet);
- }
-
- if (policySet.isUnresolved()) {
- //resolve the policy attachments
- resolvePolicies(policySet, resolver);
-
- /*if ( !policySet.isUnresolved() ) {
- resolver.addModel(policySet);
- }*/
- }
-
- policySet.setUnresolved(false);
- }
-}
diff --git a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunction.java b/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunction.java
deleted file mode 100644
index 1b6d64e4f7..0000000000
--- a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunction.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.tuscany.sca.policy.xml;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.namespace.QName;
-import javax.xml.xpath.XPathFunction;
-import javax.xml.xpath.XPathFunctionException;
-
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * The SCA-defined XPath function
- */
-public class PolicyXPathFunction implements XPathFunction {
- private static Logger logger = Logger.getLogger(PolicyXPathFunction.class.getName());
-
- static final QName InterfaceRef = new QName(PolicyConstants.SCA11_NS, "InterfaceRef");
- static final QName OperationRef = new QName(PolicyConstants.SCA11_NS, "OperationRef");
- static final QName MessageRef = new QName(PolicyConstants.SCA11_NS, "MessageRef");
- static final QName IntentRefs = new QName(PolicyConstants.SCA11_NS, "IntentRefs");
- static final QName URIRef = new QName(PolicyConstants.SCA11_NS, "URIRef");
-
- static final Set<QName> functions =
- new HashSet<QName>(Arrays.asList(InterfaceRef, OperationRef, MessageRef, IntentRefs, URIRef));
-
- private NamespaceContext namespaceContext;
- private final QName functionName;
-
- public PolicyXPathFunction(NamespaceContext namespaceContext, QName functionName) {
- super();
- this.namespaceContext = namespaceContext;
- this.functionName = functionName;
- }
-
- private Node getContextNode(List args) {
- if (args.size() >= 2) {
- NodeList nodeList = (NodeList)args.get(1);
- if (nodeList.getLength() > 0) {
- return nodeList.item(0);
- }
- }
- return null;
- }
-
- public Object evaluate(List args) throws XPathFunctionException {
- if (logger.isLoggable(Level.FINE)) {
- logger.fine(functionName + "(" + args + ")");
- }
-
- String arg = (String)args.get(0);
- Node node = getContextNode(args);
- if (InterfaceRef.equals(functionName)) {
- return evaluateInterface(arg, node);
- } 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, node);
- } 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, node);
- } else if (URIRef.equals(functionName)) {
- return evaluateURI(arg, node);
- } else if (IntentRefs.equals(functionName)) {
- String[] intents = arg.split("(\\s)+");
- return evaluateIntents(intents, node);
- } else {
- return Boolean.FALSE;
- }
- }
-
- private Boolean evaluateInterface(String interfaceName, Node node) {
- return Boolean.FALSE;
- }
-
- private Boolean evaluateOperation(String interfaceName, String operationName, Node node) {
- return Boolean.FALSE;
- }
-
- private Boolean evaluateMessage(String interfaceName, String operationName, String messageName, Node node) {
- return Boolean.FALSE;
- }
-
- private Boolean evaluateURI(String uri, Node node) {
- return Boolean.FALSE;
- }
-
- private Boolean evaluateIntents(String[] intents, Node node) {
- return Boolean.FALSE;
- }
-
-}
diff --git a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunctionResolver.java b/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunctionResolver.java
deleted file mode 100644
index ca44667903..0000000000
--- a/tags/java/sca/2.0-M3-RC3a/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyXPathFunctionResolver.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.tuscany.sca.policy.xml;
-
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.namespace.QName;
-import javax.xml.xpath.XPathFunction;
-import javax.xml.xpath.XPathFunctionResolver;
-
-/**
- * A resolver that handles SCA-defined XPath functions
- *
- * Interface Related Functions
- * <ul>
- * <li>InterfaceRef( InterfaceName )
- * <li>OperationRef( InterfaceName/OperationName )
- * <li>MessageRef( InterfaceName/OperationName/MessageName )
- * </ul>
- *
- * Intent Related Functions
- * <ul>
- * <li>IntentRefs( IntentList )
- * </ul>
- *
- * URI Based Function
- * <ul>
- * <li>URIRef( URI )
- * </ul>
- */
-public class PolicyXPathFunctionResolver implements XPathFunctionResolver {
- private NamespaceContext namespaceContext;
-
- public PolicyXPathFunctionResolver(NamespaceContext namespaceContext) {
- super();
- this.namespaceContext = namespaceContext;
- }
-
- public XPathFunction resolveFunction(QName functionName, int arity) {
- if (functionName == null) {
- throw new NullPointerException("Function name is null");
- }
- if (PolicyXPathFunction.functions.contains(functionName)) {
- if (arity >= 1) {
- // We are relaxing the arity here so that we can pass in the context node
- // by modifying the original xpath so that sca functions take self::node()
- // as the 2nd argument
- return new PolicyXPathFunction(namespaceContext, functionName);
- } else {
- throw new IllegalArgumentException("Invalid number of arguments: " + arity);
- }
- }
- return null;
- }
-
-}