diff options
author | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2008-10-14 20:05:45 +0000 |
---|---|---|
committer | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2008-10-14 20:05:45 +0000 |
commit | 3b85574e96c0845a49c76a8798dbe2cc3a2a96f7 (patch) | |
tree | c9b79cf8d347bf83ba8384fb18928359e0cf3589 /branches/sca-equinox/modules/definitions-xml/src/main | |
parent | 8330f72816dd0da822a8f784026b358ac70cb6b9 (diff) |
Add a factory for SCA Definitions and restrict the export-package
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@704653 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-equinox/modules/definitions-xml/src/main')
2 files changed, 127 insertions, 122 deletions
diff --git a/branches/sca-equinox/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsDocumentProcessor.java b/branches/sca-equinox/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsDocumentProcessor.java index af12bc5887..f396a601fc 100644 --- a/branches/sca-equinox/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsDocumentProcessor.java +++ b/branches/sca-equinox/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsDocumentProcessor.java @@ -40,22 +40,22 @@ import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor; import org.apache.tuscany.sca.contribution.resolver.ModelResolver; import org.apache.tuscany.sca.core.FactoryExtensionPoint; +import org.apache.tuscany.sca.definitions.DefinitionsFactory; import org.apache.tuscany.sca.definitions.SCADefinitions; -import org.apache.tuscany.sca.definitions.impl.SCADefinitionsImpl; import org.apache.tuscany.sca.definitions.util.SCADefinitionsUtil; 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.monitor.impl.ProblemImpl; /** * A SCA Definitions Document processor. * * @version $Rev$ $Date$ */ -public class SCADefinitionsDocumentProcessor implements URLArtifactProcessor<SCADefinitions> { +public class SCADefinitionsDocumentProcessor implements URLArtifactProcessor<SCADefinitions> { private StAXArtifactProcessor<Object> extensionProcessor; private XMLInputFactory inputFactory; + private DefinitionsFactory definitionsFactory; private static final String TUSCANY_NS = "http://tuscany.apache.org/xmlns/sca/1.0"; private static final String DEFINITIONS = "definitions"; private static final QName DEFINITIONS_QNAME = new QName(TUSCANY_NS, DEFINITIONS); @@ -69,9 +69,11 @@ public class SCADefinitionsDocumentProcessor implements URLArtifactProcessor<SC */ public SCADefinitionsDocumentProcessor(StAXArtifactProcessor<Object> staxProcessor, XMLInputFactory inputFactory, + DefinitionsFactory definitionsFactory, Monitor monitor) { this.extensionProcessor = (StAXArtifactProcessor<Object>)staxProcessor; this.inputFactory = inputFactory; + this.definitionsFactory = definitionsFactory; this.monitor = monitor; } @@ -81,14 +83,15 @@ public class SCADefinitionsDocumentProcessor implements URLArtifactProcessor<SC * @param modelFactories * @param staxProcessor */ - public SCADefinitionsDocumentProcessor(FactoryExtensionPoint modelFactories, - StAXArtifactProcessor<Object> staxProcessor, - Monitor monitor) { + public SCADefinitionsDocumentProcessor(FactoryExtensionPoint modelFactories, + StAXArtifactProcessor<Object> staxProcessor, + Monitor monitor) { this.extensionProcessor = (StAXArtifactProcessor<Object>)staxProcessor; this.inputFactory = modelFactories.getFactory(XMLInputFactory.class); + this.definitionsFactory = modelFactories.getFactory(DefinitionsFactory.class); this.monitor = monitor; } - + /** * Report a error. * @@ -96,13 +99,19 @@ public class SCADefinitionsDocumentProcessor implements URLArtifactProcessor<SC * @param message * @param model */ - private void error(String message, Object model, Object... messageParameters) { - if (monitor != null) { - Problem problem = monitor.createProblem(this.getClass().getName(), "definitions-xml-validation-messages", Severity.ERROR, model, message, (Object[])messageParameters); - monitor.problem(problem); - } - } - + private void error(String message, Object model, Object... messageParameters) { + if (monitor != null) { + Problem problem = + monitor.createProblem(this.getClass().getName(), + "definitions-xml-validation-messages", + Severity.ERROR, + model, + message, + (Object[])messageParameters); + monitor.problem(problem); + } + } + /** * Report a exception. * @@ -110,17 +119,22 @@ public class SCADefinitionsDocumentProcessor implements URLArtifactProcessor<SC * @param message * @param model */ - private void error(String message, Object model, Exception ex) { - if (monitor != null) { - Problem problem = monitor.createProblem(this.getClass().getName(), "definitions-xml-validation-messages", Severity.ERROR, model, message, ex); - monitor.problem(problem); - } - } - + private void error(String message, Object model, Exception ex) { + if (monitor != null) { + Problem problem = + monitor.createProblem(this.getClass().getName(), + "definitions-xml-validation-messages", + Severity.ERROR, + model, + message, + ex); + monitor.problem(problem); + } + } public SCADefinitions read(URL contributionURL, final URI uri, final URL url) throws ContributionReadException { - InputStream urlStream = null; - try { + InputStream urlStream = null; + try { // Allow privileged access to open URL stream. Add FilePermission to added to security // policy file. try { @@ -132,44 +146,43 @@ public class SCADefinitionsDocumentProcessor implements URLArtifactProcessor<SC } }); } catch (PrivilegedActionException e) { - error("PrivilegedActionException", url, (IOException)e.getException()); + error("PrivilegedActionException", url, (IOException)e.getException()); throw (IOException)e.getException(); } - + //urlStream = createInputStream(url); XMLStreamReader reader = inputFactory.createXMLStreamReader(url.toString(), urlStream); - - SCADefinitions definitions = new SCADefinitionsImpl(); + + SCADefinitions definitions = definitionsFactory.createDefinitions(); QName name = null; int event; - while ( reader.hasNext() ) { + while (reader.hasNext()) { event = reader.next(); - - if ( event == XMLStreamConstants.START_ELEMENT || - event == XMLStreamConstants.END_ELEMENT ) { + + if (event == XMLStreamConstants.START_ELEMENT || event == XMLStreamConstants.END_ELEMENT) { name = reader.getName(); - if ( name.equals(DEFINITIONS_QNAME) ) { - if ( event == XMLStreamConstants.END_ELEMENT ) { + if (name.equals(DEFINITIONS_QNAME)) { + if (event == XMLStreamConstants.END_ELEMENT) { return definitions; - } + } } else { SCADefinitions aDefn = (SCADefinitions)extensionProcessor.read(reader); SCADefinitionsUtil.aggregateSCADefinitions(aDefn, definitions); } } } - + return definitions; } catch (XMLStreamException e) { - ContributionReadException ce = new ContributionReadException(e); - error("ContributionReadException", inputFactory, ce); + ContributionReadException ce = new ContributionReadException(e); + error("ContributionReadException", inputFactory, ce); throw ce; } catch (IOException e) { - ContributionReadException ce = new ContributionReadException(e); - error("ContributionReadException", inputFactory, ce); + ContributionReadException ce = new ContributionReadException(e); + error("ContributionReadException", inputFactory, ce); throw ce; } finally { - + try { if (urlStream != null) { urlStream.close(); @@ -180,16 +193,16 @@ public class SCADefinitionsDocumentProcessor implements URLArtifactProcessor<SC } } } - + public void resolve(SCADefinitions scaDefinitions, ModelResolver resolver) throws ContributionResolveException { SCADefinitionsUtil.stripDuplicates(scaDefinitions); extensionProcessor.resolve(scaDefinitions, resolver); } - + public String getArtifactType() { return "definitions.xml"; } - + public Class<SCADefinitions> getModelType() { return SCADefinitions.class; } diff --git a/branches/sca-equinox/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsProcessor.java b/branches/sca-equinox/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsProcessor.java index 1247a1f241..46bcff3874 100644 --- a/branches/sca-equinox/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsProcessor.java +++ b/branches/sca-equinox/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/SCADefinitionsProcessor.java @@ -38,9 +38,9 @@ import org.apache.tuscany.sca.contribution.processor.ContributionResolveExceptio 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.definitions.DefinitionsFactory; import org.apache.tuscany.sca.definitions.SCADefinitions; -import org.apache.tuscany.sca.definitions.impl.SCADefinitionsImpl; import org.apache.tuscany.sca.monitor.Monitor; import org.apache.tuscany.sca.policy.Intent; import org.apache.tuscany.sca.policy.IntentAttachPointType; @@ -54,10 +54,11 @@ import org.apache.tuscany.sca.policy.QualifiedIntent; * @version $Rev$ $Date$ */ public class SCADefinitionsProcessor extends BaseStAXArtifactProcessor implements StAXArtifactProcessor<SCADefinitions> { - + private StAXArtifactProcessor<Object> extensionProcessor; + private DefinitionsFactory definitionsFactory; private Monitor monitor; - + public static final String BINDING = "binding"; public static final String IMPLEMENTATION = "implementation"; public static final String SCA10_NS = "http://www.osoa.org/xmlns/sca/1.0"; @@ -65,23 +66,13 @@ public class SCADefinitionsProcessor extends BaseStAXArtifactProcessor implement public static final QName SCA_DEFINITIONS_QNAME = new QName(SCA10_NS, SCA_DEFINITIONS); public static final String TARGET_NAMESPACE = "targetNamespace"; public static final String NAME = "name"; - - /** - * Construct a new definitions processor - * @param extensionProcessor - * @param modelResolver - */ - public SCADefinitionsProcessor(StAXArtifactProcessor<Object> extensionProcessor, - ModelResolver modelResolver, Monitor monitor) { - this.extensionProcessor = extensionProcessor; - this.monitor = monitor; - } - - public SCADefinitionsProcessor(ExtensionPointRegistry extensionPoints, - StAXArtifactProcessor<Object> extensionProcessor, - Monitor monitor) { + + public SCADefinitionsProcessor(FactoryExtensionPoint factoryExtensionPoint, + StAXArtifactProcessor<Object> extensionProcessor, + Monitor monitor) { this.extensionProcessor = extensionProcessor; this.monitor = monitor; + this.definitionsFactory = factoryExtensionPoint.getFactory(DefinitionsFactory.class); } public SCADefinitions read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException { @@ -94,44 +85,42 @@ public class SCADefinitionsProcessor extends BaseStAXArtifactProcessor implement switch (event) { case START_ELEMENT: { name = reader.getName(); - if ( SCA_DEFINITIONS_QNAME.equals(name)) { - definitions = new SCADefinitionsImpl(); + if (SCA_DEFINITIONS_QNAME.equals(name)) { + definitions = definitionsFactory.createDefinitions(); targetNamespace = reader.getAttributeValue(null, TARGET_NAMESPACE); definitions.setTargetNamespace(targetNamespace); } else { Object extension = extensionProcessor.read(reader); if (extension != null) { - if ( extension instanceof Intent ) { + if (extension instanceof Intent) { Intent intent = (Intent)extension; - intent.setName(new QName(targetNamespace, - intent.getName().getLocalPart())); - if ( intent instanceof QualifiedIntent ) { + intent.setName(new QName(targetNamespace, intent.getName().getLocalPart())); + if (intent instanceof QualifiedIntent) { QualifiedIntent qualifiedIntent = (QualifiedIntent)intent; - qualifiedIntent.getQualifiableIntent(). - setName(new QName(targetNamespace, - qualifiedIntent.getQualifiableIntent().getName().getLocalPart())); + qualifiedIntent.getQualifiableIntent() + .setName(new QName(targetNamespace, qualifiedIntent.getQualifiableIntent() + .getName().getLocalPart())); } - + // FIXME: Workaround for TUSCANY-2499 intent.setUnresolved(false); - + definitions.getPolicyIntents().add(intent); - } else if ( extension instanceof PolicySet ) { + } else if (extension instanceof PolicySet) { PolicySet policySet = (PolicySet)extension; - policySet.setName(new QName(targetNamespace, - policySet.getName().getLocalPart())); + policySet.setName(new QName(targetNamespace, policySet.getName().getLocalPart())); definitions.getPolicySets().add(policySet); - } else if ( extension instanceof Binding ) { + } else if (extension instanceof Binding) { Binding binding = (Binding)extension; definitions.getBindings().add(binding); - } else if ( extension instanceof IntentAttachPointType ) { + } else if (extension instanceof IntentAttachPointType) { IntentAttachPointType type = (IntentAttachPointType)extension; - if ( type.getName().getLocalPart().startsWith(BINDING)) { + if (type.getName().getLocalPart().startsWith(BINDING)) { definitions.getBindingTypes().add((IntentAttachPointType)extension); - } else if ( type.getName().getLocalPart().startsWith(IMPLEMENTATION)) { + } else if (type.getName().getLocalPart().startsWith(IMPLEMENTATION)) { definitions.getImplementationTypes().add((IntentAttachPointType)extension); } - } + } } break; } @@ -142,12 +131,12 @@ public class SCADefinitionsProcessor extends BaseStAXArtifactProcessor implement case END_ELEMENT: name = reader.getName(); - if ( SCA_DEFINITIONS_QNAME.equals(name)) { + if (SCA_DEFINITIONS_QNAME.equals(name)) { return definitions; } break; } - + //Read the next element if (reader.hasNext()) { reader.next(); @@ -155,101 +144,104 @@ public class SCADefinitionsProcessor extends BaseStAXArtifactProcessor implement } return definitions; } - - public void write(SCADefinitions definitions, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException { - writeStartDocument(writer, SCA10_NS, SCA_DEFINITIONS, - new XAttr(TARGET_NAMESPACE, definitions.getTargetNamespace())); - + public void write(SCADefinitions definitions, XMLStreamWriter writer) throws ContributionWriteException, + XMLStreamException { + + writeStartDocument(writer, SCA10_NS, SCA_DEFINITIONS, new XAttr(TARGET_NAMESPACE, definitions + .getTargetNamespace())); + for (Intent policyIntent : definitions.getPolicyIntents()) { extensionProcessor.write(policyIntent, writer); } - + for (PolicySet policySet : definitions.getPolicySets()) { extensionProcessor.write(policySet, writer); } - + for (IntentAttachPointType bindingType : definitions.getBindingTypes()) { extensionProcessor.write(bindingType, writer); } - + for (IntentAttachPointType implType : definitions.getImplementationTypes()) { extensionProcessor.write(implType, writer); } writeEndDocument(writer); } - + public void resolve(SCADefinitions scaDefns, ModelResolver resolver) throws ContributionResolveException { // start by adding all of the top level artifacts into the resolver as there // are many cross artifact references in a definitions file and we don't want // to be dependent on the order things appear - - List<Intent> simpleIntents = new ArrayList<Intent>(); - List<ProfileIntent> profileIntents = new ArrayList<ProfileIntent>(); - List<QualifiedIntent> qualifiedIntents = new ArrayList<QualifiedIntent>(); + + List<Intent> simpleIntents = new ArrayList<Intent>(); + List<ProfileIntent> profileIntents = new ArrayList<ProfileIntent>(); + List<QualifiedIntent> qualifiedIntents = new ArrayList<QualifiedIntent>(); List<PolicySet> simplePolicySets = new ArrayList<PolicySet>(); List<PolicySet> referredPolicySets = new ArrayList<PolicySet>(); - + for (Intent policyIntent : scaDefns.getPolicyIntents()) { - if (policyIntent instanceof ProfileIntent) - profileIntents.add((ProfileIntent)policyIntent); - else if (policyIntent instanceof QualifiedIntent) - qualifiedIntents.add((QualifiedIntent)policyIntent); - else simpleIntents.add(policyIntent); - - resolver.addModel(policyIntent); - } - + if (policyIntent instanceof ProfileIntent) + profileIntents.add((ProfileIntent)policyIntent); + else if (policyIntent instanceof QualifiedIntent) + qualifiedIntents.add((QualifiedIntent)policyIntent); + else + simpleIntents.add(policyIntent); + + resolver.addModel(policyIntent); + } + for (PolicySet policySet : scaDefns.getPolicySets()) { if (policySet.getReferencedPolicySets().isEmpty()) simplePolicySets.add(policySet); - else referredPolicySets.add(policySet); - + else + referredPolicySets.add(policySet); + resolver.addModel(policySet); } - + for (IntentAttachPointType bindingType : scaDefns.getBindingTypes()) { resolver.addModel(bindingType); } - + for (IntentAttachPointType implType : scaDefns.getImplementationTypes()) { resolver.addModel(implType); } - + // now resolve everything to ensure that any references between // artifacts are satisfied - + for (Intent policyIntent : simpleIntents) extensionProcessor.resolve(policyIntent, resolver); - + for (ProfileIntent policyIntent : profileIntents) extensionProcessor.resolve(policyIntent, resolver); - + for (QualifiedIntent policyIntent : qualifiedIntents) extensionProcessor.resolve(policyIntent, resolver); - + for (PolicySet policySet : simplePolicySets) extensionProcessor.resolve(policySet, resolver); - - for (PolicySet policySet : referredPolicySets) - extensionProcessor.resolve(policySet, resolver); - + + for (PolicySet policySet : referredPolicySets) + extensionProcessor.resolve(policySet, resolver); + for (int count = 0, size = scaDefns.getBindingTypes().size(); count < size; count++) { IntentAttachPointType bindingType = scaDefns.getBindingTypes().get(count); extensionProcessor.resolve(bindingType, resolver); } - + for (int count = 0, size = scaDefns.getImplementationTypes().size(); count < size; count++) { IntentAttachPointType implType = scaDefns.getImplementationTypes().get(count); extensionProcessor.resolve(implType, resolver); } } - + public QName getArtifactType() { return SCA_DEFINITIONS_QNAME; } - + public Class<SCADefinitions> getModelType() { return SCADefinitions.class; } |