summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-2.0-M2/modules
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-04-03 18:19:46 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-04-03 18:19:46 +0000
commit4dd27680428008ecffa48da348f9707d57c18a4d (patch)
treeaf391ada176e76a77c97f078d4ecfed886acc7db /branches/sca-java-2.0-M2/modules
parent0192d4e54627a86976ee671e44c7b83ea81adede (diff)
Merge changes from the trunk
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@761748 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
-rw-r--r--branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ArtifactProcessorExtensionPoint.java58
-rw-r--r--branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultArtifactProcessorExtensionPoint.java16
-rw-r--r--branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java258
-rw-r--r--branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXAttributeProcessorExtensionPoint.java167
-rw-r--r--branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java62
-rw-r--r--branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/StAXArtifactProcessorExtensionPoint.java39
-rw-r--r--branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/StAXAttributeProcessorExtensionPoint.java39
-rw-r--r--branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/URLArtifactProcessorExtensionPoint.java50
-rw-r--r--branches/sca-java-2.0-M2/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java20
-rw-r--r--branches/sca-java-2.0-M2/modules/host-jetty/META-INF/MANIFEST.MF18
-rw-r--r--branches/sca-java-2.0-M2/modules/implementation-bpel/pom.xml4
-rw-r--r--branches/sca-java-2.0-M2/modules/implementation-web-runtime/pom.xml12
-rw-r--r--branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java31
-rw-r--r--branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java60
-rw-r--r--branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java25
-rw-r--r--branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java35
16 files changed, 529 insertions, 365 deletions
diff --git a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ArtifactProcessorExtensionPoint.java b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ArtifactProcessorExtensionPoint.java
deleted file mode 100644
index 029df61f0f..0000000000
--- a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ArtifactProcessorExtensionPoint.java
+++ /dev/null
@@ -1,58 +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.contribution.processor;
-
-/**
- * An extension point for artifact processors.
- *
- * @version $Rev$ $Date$
- */
-public interface ArtifactProcessorExtensionPoint<P extends ArtifactProcessor> {
-
- /**
- * Add an artifact processor.
- *
- * @param artifactProcessor The artifact processor to add
- */
- void addArtifactProcessor(P artifactProcessor);
-
- /**
- * Remove an artifact processor.
- *
- * @param artifactProcessor The artifact processor to remove
- */
- void removeArtifactProcessor(P artifactProcessor);
-
- /**
- * Returns the processor associated with the given artifact type.
- *
- * @param artifactType An artifact type
- * @return The processor associated with the given artifact type
- */
- P getProcessor(Object artifactType);
-
- /**
- * Returns the processor associated with the given model type.
- *
- * @param modelType A model type
- * @return The processor associated with the given model type
- */
- P getProcessor(Class<?> modelType);
-
-}
diff --git a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultArtifactProcessorExtensionPoint.java b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultArtifactProcessorExtensionPoint.java
index 3c67a8c550..c871e4c868 100644
--- a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultArtifactProcessorExtensionPoint.java
+++ b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultArtifactProcessorExtensionPoint.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.contribution.processor;
@@ -23,10 +23,10 @@ import java.util.Map;
/**
* The default implementation of an artifact processor extension point.
- *
+ *
* @version $Rev$ $Date$
*/
-abstract class DefaultArtifactProcessorExtensionPoint<P> {
+abstract class DefaultArtifactProcessorExtensionPoint<P extends ArtifactProcessor<?>> {
protected final Map<Object, P> processorsByArtifactType = new HashMap<Object, P>();
protected final Map<Class<?>, P> processorsByModelType = new HashMap<Class<?>, P>();
@@ -38,7 +38,7 @@ abstract class DefaultArtifactProcessorExtensionPoint<P> {
/**
* Returns the processor associated with the given artifact type.
- *
+ *
* @param artifactType An artifact type
* @return The processor associated with the given artifact type
*/
@@ -48,11 +48,11 @@ abstract class DefaultArtifactProcessorExtensionPoint<P> {
/**
* Returns the processor associated with the given model type.
- *
+ *
* @param modelType A model type
* @return The processor associated with the given model type
*/
- public P getProcessor(Class<?> modelType) {
+ public <T> P getProcessor(Class<T> modelType) {
Class<?>[] classes = modelType.getInterfaces();
for (Class<?> c : classes) {
P processor = processorsByModelType.get(c);
diff --git a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java
index a531eb9ddd..d1443f1162 100644
--- a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java
+++ b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.contribution.processor;
@@ -43,11 +43,11 @@ import org.apache.tuscany.sca.monitor.Problem.Severity;
/**
* The default implementation of an extension point for StAX artifact processors.
- *
+ *
* @version $Rev$ $Date$
*/
public class DefaultStAXArtifactProcessorExtensionPoint extends
- DefaultArtifactProcessorExtensionPoint<StAXArtifactProcessor> implements StAXArtifactProcessorExtensionPoint {
+ DefaultArtifactProcessorExtensionPoint<StAXArtifactProcessor<?>> implements StAXArtifactProcessorExtensionPoint {
private ExtensionPointRegistry extensionPoints;
private FactoryExtensionPoint modelFactories;
@@ -68,28 +68,37 @@ public class DefaultStAXArtifactProcessorExtensionPoint extends
UtilityExtensionPoint utilities = this.extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
if (monitorFactory != null)
- this.monitor = monitorFactory.createMonitor();
- this.extensibleStAXProcessor = new ExtensibleStAXArtifactProcessor(this, inputFactory, outputFactory, this.monitor);
-
- StAXAttributeProcessorExtensionPoint attributeExtensionPoint = extensionPoints.getExtensionPoint(StAXAttributeProcessorExtensionPoint.class);
- this.extensibleStAXAttributeProcessor = new ExtensibleStAXAttributeProcessor(attributeExtensionPoint ,inputFactory, outputFactory, this.monitor);
+ this.monitor = monitorFactory.createMonitor();
+ this.extensibleStAXProcessor =
+ new ExtensibleStAXArtifactProcessor(this, inputFactory, outputFactory, this.monitor);
+
+ StAXAttributeProcessorExtensionPoint attributeExtensionPoint =
+ extensionPoints.getExtensionPoint(StAXAttributeProcessorExtensionPoint.class);
+ this.extensibleStAXAttributeProcessor =
+ new ExtensibleStAXAttributeProcessor(attributeExtensionPoint, inputFactory, outputFactory, this.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(), "contribution-validation-messages", Severity.ERROR, model, message, ex);
- monitor.problem(problem);
- }
+ Problem problem =
+ monitor.createProblem(this.getClass().getName(),
+ "contribution-validation-messages",
+ Severity.ERROR,
+ model,
+ message,
+ ex);
+ monitor.problem(problem);
+ }
}
- public void addArtifactProcessor(StAXArtifactProcessor artifactProcessor) {
+ public void addArtifactProcessor(StAXArtifactProcessor<?> artifactProcessor) {
if (artifactProcessor.getArtifactType() != null) {
processorsByArtifactType.put((Object)artifactProcessor.getArtifactType(), artifactProcessor);
}
@@ -98,7 +107,7 @@ public class DefaultStAXArtifactProcessorExtensionPoint extends
}
}
- public void removeArtifactProcessor(StAXArtifactProcessor artifactProcessor) {
+ public void removeArtifactProcessor(StAXArtifactProcessor<?> artifactProcessor) {
if (artifactProcessor.getArtifactType() != null) {
processorsByArtifactType.remove((Object)artifactProcessor.getArtifactType());
}
@@ -108,13 +117,13 @@ public class DefaultStAXArtifactProcessorExtensionPoint extends
}
@Override
- public StAXArtifactProcessor getProcessor(Class<?> modelType) {
+ public <T> StAXArtifactProcessor<T> getProcessor(Class<T> modelType) {
loadArtifactProcessors();
- return super.getProcessor(modelType);
+ return (StAXArtifactProcessor<T>)super.getProcessor(modelType);
}
@Override
- public StAXArtifactProcessor getProcessor(Object artifactType) {
+ public StAXArtifactProcessor<?> getProcessor(Object artifactType) {
loadArtifactProcessors();
return super.getProcessor(artifactType);
}
@@ -122,7 +131,7 @@ public class DefaultStAXArtifactProcessorExtensionPoint extends
/**
* Returns a QName object from a QName expressed as {ns}name
* or ns#name.
- *
+ *
* @param qname
* @return
*/
@@ -142,7 +151,7 @@ public class DefaultStAXArtifactProcessorExtensionPoint extends
return new QName(qname.substring(0, h), qname.substring(h + 1));
}
}
- throw new IllegalArgumentException("Invalid qname: "+qname);
+ throw new IllegalArgumentException("Invalid qname: " + qname);
}
/**
@@ -155,10 +164,11 @@ public class DefaultStAXArtifactProcessorExtensionPoint extends
// Get the processor service declarations
Set<ServiceDeclaration> processorDeclarations;
try {
- processorDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations(StAXArtifactProcessor.class.getName());
+ processorDeclarations =
+ ServiceDiscovery.getInstance().getServiceDeclarations(StAXArtifactProcessor.class.getName());
} catch (IOException e) {
- IllegalStateException ie = new IllegalStateException(e);
- error("IllegalStateException", extensibleStAXProcessor, ie);
+ IllegalStateException ie = new IllegalStateException(e);
+ error("IllegalStateException", extensibleStAXProcessor, ie);
throw ie;
}
@@ -173,14 +183,14 @@ public class DefaultStAXArtifactProcessorExtensionPoint extends
// Get the model class name
String modelTypeName = attributes.get("model");
- // Get the model factory class name
+ // Get the model factory class name
String factoryName = attributes.get("factory");
// Create a processor wrapper and register it
- StAXArtifactProcessor processor =
- new LazyStAXArtifactProcessor(artifactType, modelTypeName, factoryName,
- processorDeclaration, extensionPoints, modelFactories,
- extensibleStAXProcessor,extensibleStAXAttributeProcessor, monitor);
+ StAXArtifactProcessor<?> processor =
+ new LazyStAXArtifactProcessor(artifactType, modelTypeName, factoryName, processorDeclaration,
+ extensionPoints, modelFactories, extensibleStAXProcessor,
+ extensibleStAXAttributeProcessor, monitor);
addArtifactProcessor(processor);
}
@@ -198,7 +208,7 @@ public class DefaultStAXArtifactProcessorExtensionPoint extends
private String modelTypeName;
private String factoryName;
private ServiceDeclaration processorDeclaration;
- private StAXArtifactProcessor processor;
+ private StAXArtifactProcessor<?> processor;
private Class<?> modelType;
private StAXArtifactProcessor<Object> extensionProcessor;
private StAXAttributeProcessor<Object> extensionAttributeProcessor;
@@ -227,12 +237,18 @@ public class DefaultStAXArtifactProcessorExtensionPoint extends
public QName getArtifactType() {
return artifactType;
}
-
+
private void error(String message, Object model, Exception ex) {
if (monitor != null) {
- Problem problem = monitor.createProblem(this.getClass().getName(), "contribution-validation-messages", Severity.ERROR, model, message, ex);
- monitor.problem(problem);
- }
+ Problem problem =
+ monitor.createProblem(this.getClass().getName(),
+ "contribution-validation-messages",
+ Severity.ERROR,
+ model,
+ message,
+ ex);
+ monitor.problem(problem);
+ }
}
@SuppressWarnings("unchecked")
@@ -243,7 +259,8 @@ public class DefaultStAXArtifactProcessorExtensionPoint extends
.equals("org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor")) {
// Specific initialization for the DefaultBeanModelProcessor
- FactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
+ FactoryExtensionPoint modelFactories =
+ extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
try {
Class<StAXArtifactProcessor> processorClass =
(Class<StAXArtifactProcessor>)processorDeclaration.loadClass();
@@ -261,84 +278,109 @@ public class DefaultStAXArtifactProcessorExtensionPoint extends
Object.class,
Monitor.class);
processor =
- constructor.newInstance(modelFactories,
- artifactType,
- getModelType(),
- modelFactory,
- monitor);
+ constructor
+ .newInstance(modelFactories, artifactType, getModelType(), modelFactory, monitor);
} catch (Exception e) {
- IllegalStateException ie = new IllegalStateException(e);
- error("IllegalStateException", processor, ie);
+ IllegalStateException ie = new IllegalStateException(e);
+ error("IllegalStateException", processor, ie);
throw ie;
}
} else {
- FactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
+ FactoryExtensionPoint modelFactories =
+ extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
// Load and instantiate the processor class
try {
- Class<StAXArtifactProcessor> processorClass =
- (Class<StAXArtifactProcessor>)processorDeclaration.loadClass();
- try {
- Constructor<StAXArtifactProcessor> constructor =
- processorClass.getConstructor(FactoryExtensionPoint.class, Monitor.class);
- processor = constructor.newInstance(modelFactories, monitor);
- } catch (NoSuchMethodException e) {
- try {
- Constructor<StAXArtifactProcessor> constructor =
- processorClass.getConstructor(ExtensionPointRegistry.class, Monitor.class);
- processor = constructor.newInstance(extensionPoints, monitor);
- } catch (NoSuchMethodException e1) {
- try {
- Constructor<StAXArtifactProcessor> constructor =
- processorClass.getConstructor(FactoryExtensionPoint.class, StAXArtifactProcessor.class, Monitor.class);
- processor = constructor.newInstance(modelFactories, extensionProcessor, monitor);
- } catch (NoSuchMethodException e2) {
- try {
- Constructor<StAXArtifactProcessor> constructor =
- processorClass.getConstructor(FactoryExtensionPoint.class, StAXArtifactProcessor.class, StAXAttributeProcessor.class, Monitor.class);
- processor = constructor.newInstance(modelFactories, extensionProcessor, extensionAttributeProcessor, monitor);
- } catch (NoSuchMethodException e2a) {
- try {
- Constructor<StAXArtifactProcessor> constructor =
- processorClass.getConstructor(ExtensionPointRegistry.class, StAXArtifactProcessor.class, Monitor.class);
- processor = constructor.newInstance(extensionPoints, extensionProcessor, monitor);
- } catch (NoSuchMethodException e3) {
- try {
- Constructor<StAXArtifactProcessor> constructor =
- processorClass.getConstructor(ExtensionPointRegistry.class, StAXArtifactProcessor.class, StAXAttributeProcessor.class, Monitor.class);
- processor = constructor.newInstance(extensionPoints, extensionProcessor, extensionAttributeProcessor, monitor);
- } catch (NoSuchMethodException e3a) {
-
- try {
- Constructor<StAXArtifactProcessor> constructor =
- processorClass.getConstructor(FactoryExtensionPoint.class);
- processor = constructor.newInstance(modelFactories);
- } catch (NoSuchMethodException e4) {
- try {
- Constructor<StAXArtifactProcessor> constructor =
- processorClass.getConstructor(ExtensionPointRegistry.class);
- processor = constructor.newInstance(extensionPoints);
- } catch (NoSuchMethodException e4a) {
- try {
- Constructor<StAXArtifactProcessor> constructor =
- processorClass.getConstructor(FactoryExtensionPoint.class, StAXArtifactProcessor.class);
- processor = constructor.newInstance(modelFactories, extensionProcessor);
- } catch (NoSuchMethodException e5) {
- Constructor<StAXArtifactProcessor> constructor =
- processorClass.getConstructor(ExtensionPointRegistry.class, StAXArtifactProcessor.class);
- processor = constructor.newInstance(extensionPoints, extensionProcessor);
- }
- }
- }
- }
- }
- }
- }
- }
- }
+ Class<StAXArtifactProcessor> processorClass =
+ (Class<StAXArtifactProcessor>)processorDeclaration.loadClass();
+ try {
+ Constructor<StAXArtifactProcessor> constructor =
+ processorClass.getConstructor(FactoryExtensionPoint.class, Monitor.class);
+ processor = constructor.newInstance(modelFactories, monitor);
+ } catch (NoSuchMethodException e) {
+ try {
+ Constructor<StAXArtifactProcessor> constructor =
+ processorClass.getConstructor(ExtensionPointRegistry.class, Monitor.class);
+ processor = constructor.newInstance(extensionPoints, monitor);
+ } catch (NoSuchMethodException e1) {
+ try {
+ Constructor<StAXArtifactProcessor> constructor =
+ processorClass.getConstructor(FactoryExtensionPoint.class,
+ StAXArtifactProcessor.class,
+ Monitor.class);
+ processor = constructor.newInstance(modelFactories, extensionProcessor, monitor);
+ } catch (NoSuchMethodException e2) {
+ try {
+ Constructor<StAXArtifactProcessor> constructor =
+ processorClass.getConstructor(FactoryExtensionPoint.class,
+ StAXArtifactProcessor.class,
+ StAXAttributeProcessor.class,
+ Monitor.class);
+ processor =
+ constructor.newInstance(modelFactories,
+ extensionProcessor,
+ extensionAttributeProcessor,
+ monitor);
+ } catch (NoSuchMethodException e2a) {
+ try {
+ Constructor<StAXArtifactProcessor> constructor =
+ processorClass.getConstructor(ExtensionPointRegistry.class,
+ StAXArtifactProcessor.class,
+ Monitor.class);
+ processor =
+ constructor.newInstance(extensionPoints, extensionProcessor, monitor);
+ } catch (NoSuchMethodException e3) {
+ try {
+ Constructor<StAXArtifactProcessor> constructor =
+ processorClass.getConstructor(ExtensionPointRegistry.class,
+ StAXArtifactProcessor.class,
+ StAXAttributeProcessor.class,
+ Monitor.class);
+ processor =
+ constructor.newInstance(extensionPoints,
+ extensionProcessor,
+ extensionAttributeProcessor,
+ monitor);
+ } catch (NoSuchMethodException e3a) {
+
+ try {
+ Constructor<StAXArtifactProcessor> constructor =
+ processorClass.getConstructor(FactoryExtensionPoint.class);
+ processor = constructor.newInstance(modelFactories);
+ } catch (NoSuchMethodException e4) {
+ try {
+ Constructor<StAXArtifactProcessor> constructor =
+ processorClass.getConstructor(ExtensionPointRegistry.class);
+ processor = constructor.newInstance(extensionPoints);
+ } catch (NoSuchMethodException e4a) {
+ try {
+ Constructor<StAXArtifactProcessor> constructor =
+ processorClass
+ .getConstructor(FactoryExtensionPoint.class,
+ StAXArtifactProcessor.class);
+ processor =
+ constructor.newInstance(modelFactories,
+ extensionProcessor);
+ } catch (NoSuchMethodException e5) {
+ Constructor<StAXArtifactProcessor> constructor =
+ processorClass
+ .getConstructor(ExtensionPointRegistry.class,
+ StAXArtifactProcessor.class);
+ processor =
+ constructor.newInstance(extensionPoints,
+ extensionProcessor);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
} catch (Exception e) {
- IllegalStateException ie = new IllegalStateException(e);
- error("IllegalStateException", processor, ie);
+ IllegalStateException ie = new IllegalStateException(e);
+ error("IllegalStateException", processor, ie);
throw ie;
}
}
@@ -361,8 +403,8 @@ public class DefaultStAXArtifactProcessorExtensionPoint extends
try {
modelType = processorDeclaration.loadClass(modelTypeName);
} catch (Exception e) {
- IllegalStateException ie = new IllegalStateException(e);
- error("IllegalStateException", processorDeclaration, ie);
+ IllegalStateException ie = new IllegalStateException(e);
+ error("IllegalStateException", processorDeclaration, ie);
throw ie;
}
}
diff --git a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXAttributeProcessorExtensionPoint.java b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXAttributeProcessorExtensionPoint.java
index 3cdcddc976..789752fd17 100644
--- a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXAttributeProcessorExtensionPoint.java
+++ b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXAttributeProcessorExtensionPoint.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.contribution.processor;
@@ -43,11 +43,11 @@ import org.apache.tuscany.sca.monitor.Problem.Severity;
/**
* The default implementation of an extension point for StAX artifact processors.
- *
+ *
* @version $Rev$ $Date$
*/
public class DefaultStAXAttributeProcessorExtensionPoint extends
- DefaultArtifactProcessorExtensionPoint<StAXAttributeProcessor> implements StAXAttributeProcessorExtensionPoint {
+ DefaultArtifactProcessorExtensionPoint<StAXAttributeProcessor<?>> implements StAXAttributeProcessorExtensionPoint {
private ExtensionPointRegistry extensionPoints;
private FactoryExtensionPoint modelFactories;
@@ -66,26 +66,33 @@ public class DefaultStAXAttributeProcessorExtensionPoint extends
UtilityExtensionPoint utilities = this.extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
if (monitorFactory != null) {
- this.monitor = monitorFactory.createMonitor();
+ this.monitor = monitorFactory.createMonitor();
}
- this.extensibleStAXAttributeProcessor = new ExtensibleStAXAttributeProcessor(this, inputFactory, outputFactory, this.monitor);
+ this.extensibleStAXAttributeProcessor =
+ new ExtensibleStAXAttributeProcessor(this, inputFactory, outputFactory, this.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(), "contribution-validation-messages", Severity.ERROR, model, message, ex);
- monitor.problem(problem);
- }
+ Problem problem =
+ monitor.createProblem(this.getClass().getName(),
+ "contribution-validation-messages",
+ Severity.ERROR,
+ model,
+ message,
+ ex);
+ monitor.problem(problem);
+ }
}
- public void addArtifactProcessor(StAXAttributeProcessor artifactProcessor) {
+ public void addArtifactProcessor(StAXAttributeProcessor<?> artifactProcessor) {
if (artifactProcessor.getArtifactType() != null) {
processorsByArtifactType.put((Object)artifactProcessor.getArtifactType(), artifactProcessor);
}
@@ -94,7 +101,7 @@ public class DefaultStAXAttributeProcessorExtensionPoint extends
}
}
- public void removeArtifactProcessor(StAXAttributeProcessor artifactProcessor) {
+ public void removeArtifactProcessor(StAXAttributeProcessor<?> artifactProcessor) {
if (artifactProcessor.getArtifactType() != null) {
processorsByArtifactType.remove((Object)artifactProcessor.getArtifactType());
}
@@ -104,13 +111,13 @@ public class DefaultStAXAttributeProcessorExtensionPoint extends
}
@Override
- public StAXAttributeProcessor getProcessor(Class<?> modelType) {
+ public <T> StAXAttributeProcessor<T> getProcessor(Class<T> modelType) {
loadArtifactProcessors();
- return super.getProcessor(modelType);
+ return (StAXAttributeProcessor<T>)super.getProcessor(modelType);
}
@Override
- public StAXAttributeProcessor getProcessor(Object artifactType) {
+ public StAXAttributeProcessor<?> getProcessor(Object artifactType) {
loadArtifactProcessors();
return super.getProcessor(artifactType);
}
@@ -118,7 +125,7 @@ public class DefaultStAXAttributeProcessorExtensionPoint extends
/**
* Returns a QName object from a QName expressed as {ns}name
* or ns#name.
- *
+ *
* @param qname
* @return
*/
@@ -138,7 +145,7 @@ public class DefaultStAXAttributeProcessorExtensionPoint extends
return new QName(qname.substring(0, h), qname.substring(h + 1));
}
}
- throw new IllegalArgumentException("Invalid qname: "+qname);
+ throw new IllegalArgumentException("Invalid qname: " + qname);
}
/**
@@ -151,10 +158,11 @@ public class DefaultStAXAttributeProcessorExtensionPoint extends
// Get the processor service declarations
Set<ServiceDeclaration> processorDeclarations;
try {
- processorDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations(StAXAttributeProcessor.class.getName());
+ processorDeclarations =
+ ServiceDiscovery.getInstance().getServiceDeclarations(StAXAttributeProcessor.class.getName());
} catch (IOException e) {
- IllegalStateException ie = new IllegalStateException(e);
- error("IllegalStateException", extensibleStAXAttributeProcessor, ie);
+ IllegalStateException ie = new IllegalStateException(e);
+ error("IllegalStateException", extensibleStAXAttributeProcessor, ie);
throw ie;
}
@@ -169,14 +177,14 @@ public class DefaultStAXAttributeProcessorExtensionPoint extends
// Get the model class name
String modelTypeName = attributes.get("model");
- // Get the model factory class name
+ // Get the model factory class name
String factoryName = attributes.get("factory");
// Create a processor wrapper and register it
- StAXAttributeProcessor processor =
- new LazyStAXAttributeProcessor(artifactType, modelTypeName, factoryName,
- processorDeclaration, extensionPoints, modelFactories,
- extensibleStAXAttributeProcessor, monitor);
+ StAXAttributeProcessor<?> processor =
+ new LazyStAXAttributeProcessor(artifactType, modelTypeName, factoryName, processorDeclaration,
+ extensionPoints, modelFactories, extensibleStAXAttributeProcessor,
+ monitor);
addArtifactProcessor(processor);
}
@@ -194,19 +202,19 @@ public class DefaultStAXAttributeProcessorExtensionPoint extends
private String modelTypeName;
private String factoryName;
private ServiceDeclaration processorDeclaration;
- private StAXAttributeProcessor processor;
+ private StAXAttributeProcessor<?> processor;
private Class<?> modelType;
private StAXAttributeProcessor<Object> extensionProcessor;
private Monitor monitor;
LazyStAXAttributeProcessor(QName artifactType,
- String modelTypeName,
- String factoryName,
- ServiceDeclaration processorDeclaration,
- ExtensionPointRegistry extensionPoints,
- FactoryExtensionPoint modelFactories,
- StAXAttributeProcessor<Object> extensionProcessor,
- Monitor monitor) {
+ String modelTypeName,
+ String factoryName,
+ ServiceDeclaration processorDeclaration,
+ ExtensionPointRegistry extensionPoints,
+ FactoryExtensionPoint modelFactories,
+ StAXAttributeProcessor<Object> extensionProcessor,
+ Monitor monitor) {
this.extensionPoints = extensionPoints;
this.artifactType = artifactType;
@@ -220,12 +228,18 @@ public class DefaultStAXAttributeProcessorExtensionPoint extends
public QName getArtifactType() {
return artifactType;
}
-
+
private void error(String message, Object model, Exception ex) {
if (monitor != null) {
- Problem problem = monitor.createProblem(this.getClass().getName(), "contribution-validation-messages", Severity.ERROR, model, message, ex);
- monitor.problem(problem);
- }
+ Problem problem =
+ monitor.createProblem(this.getClass().getName(),
+ "contribution-validation-messages",
+ Severity.ERROR,
+ model,
+ message,
+ ex);
+ monitor.problem(problem);
+ }
}
@SuppressWarnings("unchecked")
@@ -242,49 +256,56 @@ public class DefaultStAXAttributeProcessorExtensionPoint extends
processorClass.getConstructor(FactoryExtensionPoint.class, Monitor.class);
processor = constructor.newInstance(modelFactories, monitor);
} catch (NoSuchMethodException e) {
- try {
- Constructor<StAXAttributeProcessor> constructor =
- processorClass.getConstructor(ExtensionPointRegistry.class, Monitor.class);
- processor = constructor.newInstance(extensionPoints, monitor);
- } catch (NoSuchMethodException e1) {
try {
Constructor<StAXAttributeProcessor> constructor =
- processorClass.getConstructor(FactoryExtensionPoint.class, StAXArtifactProcessor.class, Monitor.class);
- processor = constructor.newInstance(modelFactories, extensionProcessor, monitor);
- } catch (NoSuchMethodException e2) {
+ processorClass.getConstructor(ExtensionPointRegistry.class, Monitor.class);
+ processor = constructor.newInstance(extensionPoints, monitor);
+ } catch (NoSuchMethodException e1) {
try {
Constructor<StAXAttributeProcessor> constructor =
- processorClass.getConstructor(ExtensionPointRegistry.class, StAXArtifactProcessor.class, Monitor.class);
- processor = constructor.newInstance(extensionPoints, extensionProcessor, monitor);
- } catch (NoSuchMethodException e3) {
+ processorClass.getConstructor(FactoryExtensionPoint.class,
+ StAXArtifactProcessor.class,
+ Monitor.class);
+ processor = constructor.newInstance(modelFactories, extensionProcessor, monitor);
+ } catch (NoSuchMethodException e2) {
try {
Constructor<StAXAttributeProcessor> constructor =
- processorClass.getConstructor(FactoryExtensionPoint.class);
- processor = constructor.newInstance(modelFactories);
- } catch (NoSuchMethodException e4) {
- try {
- Constructor<StAXAttributeProcessor> constructor =
- processorClass.getConstructor(ExtensionPointRegistry.class);
- processor = constructor.newInstance(extensionPoints);
- } catch (NoSuchMethodException e4a) {
+ processorClass.getConstructor(ExtensionPointRegistry.class,
+ StAXArtifactProcessor.class,
+ Monitor.class);
+ processor = constructor.newInstance(extensionPoints, extensionProcessor, monitor);
+ } catch (NoSuchMethodException e3) {
try {
Constructor<StAXAttributeProcessor> constructor =
- processorClass.getConstructor(FactoryExtensionPoint.class, StAXArtifactProcessor.class);
- processor = constructor.newInstance(modelFactories, extensionProcessor);
- } catch (NoSuchMethodException e5) {
- Constructor<StAXAttributeProcessor> constructor =
- processorClass.getConstructor(ExtensionPointRegistry.class, StAXArtifactProcessor.class);
- processor = constructor.newInstance(extensionPoints, extensionProcessor);
+ processorClass.getConstructor(FactoryExtensionPoint.class);
+ processor = constructor.newInstance(modelFactories);
+ } catch (NoSuchMethodException e4) {
+ try {
+ Constructor<StAXAttributeProcessor> constructor =
+ processorClass.getConstructor(ExtensionPointRegistry.class);
+ processor = constructor.newInstance(extensionPoints);
+ } catch (NoSuchMethodException e4a) {
+ try {
+ Constructor<StAXAttributeProcessor> constructor =
+ processorClass.getConstructor(FactoryExtensionPoint.class,
+ StAXArtifactProcessor.class);
+ processor = constructor.newInstance(modelFactories, extensionProcessor);
+ } catch (NoSuchMethodException e5) {
+ Constructor<StAXAttributeProcessor> constructor =
+ processorClass.getConstructor(ExtensionPointRegistry.class,
+ StAXArtifactProcessor.class);
+ processor =
+ constructor.newInstance(extensionPoints, extensionProcessor);
+ }
+ }
}
- }
}
}
}
- }
}
} catch (Exception e) {
- IllegalStateException ie = new IllegalStateException(e);
- error("IllegalStateException", processor, ie);
+ IllegalStateException ie = new IllegalStateException(e);
+ error("IllegalStateException", processor, ie);
throw ie;
}
@@ -292,12 +313,14 @@ public class DefaultStAXAttributeProcessorExtensionPoint extends
return processor;
}
- public Object read(QName attributeName, XMLStreamReader inputSource) throws ContributionReadException, XMLStreamException {
+ public Object read(QName attributeName, XMLStreamReader inputSource) throws ContributionReadException,
+ XMLStreamException {
return getProcessor().read(attributeName, inputSource);
}
@SuppressWarnings("unchecked")
- public void write(Object model, XMLStreamWriter outputSource) throws ContributionWriteException, XMLStreamException {
+ public void write(Object model, XMLStreamWriter outputSource) throws ContributionWriteException,
+ XMLStreamException {
getProcessor().write(model, outputSource);
}
@@ -306,8 +329,8 @@ public class DefaultStAXAttributeProcessorExtensionPoint extends
try {
modelType = processorDeclaration.loadClass(modelTypeName);
} catch (Exception e) {
- IllegalStateException ie = new IllegalStateException(e);
- error("IllegalStateException", processorDeclaration, ie);
+ IllegalStateException ie = new IllegalStateException(e);
+ error("IllegalStateException", processorDeclaration, ie);
throw ie;
}
}
diff --git a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java
index 99b5b3d8b0..f318525bce 100644
--- a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java
+++ b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java
@@ -22,6 +22,10 @@ import java.io.IOException;
import java.lang.reflect.Constructor;
import java.net.URI;
import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
@@ -46,7 +50,7 @@ import org.apache.tuscany.sca.monitor.Problem.Severity;
* @version $Rev$ $Date$
*/
public class DefaultURLArtifactProcessorExtensionPoint extends
- DefaultArtifactProcessorExtensionPoint<URLArtifactProcessor> implements URLArtifactProcessorExtensionPoint {
+ DefaultArtifactProcessorExtensionPoint<URLArtifactProcessor<?>> implements URLArtifactProcessorExtensionPoint {
private ExtensionPointRegistry extensionPoints;
private StAXArtifactProcessor<?> staxProcessor;
@@ -90,7 +94,7 @@ public class DefaultURLArtifactProcessorExtensionPoint extends
}
}
- public void addArtifactProcessor(URLArtifactProcessor artifactProcessor) {
+ public void addArtifactProcessor(URLArtifactProcessor<?> artifactProcessor) {
if (artifactProcessor.getArtifactType() != null) {
Pattern pattern = Pattern.compile(wildcard2regex(artifactProcessor.getArtifactType()));
processorsByArtifactType.put(pattern, artifactProcessor);
@@ -100,7 +104,7 @@ public class DefaultURLArtifactProcessorExtensionPoint extends
}
}
- public void removeArtifactProcessor(URLArtifactProcessor artifactProcessor) {
+ public void removeArtifactProcessor(URLArtifactProcessor<?> artifactProcessor) {
if (artifactProcessor.getArtifactType() != null) {
String regex = wildcard2regex(artifactProcessor.getArtifactType());
for (Object key : processorsByArtifactType.keySet()) {
@@ -116,38 +120,47 @@ public class DefaultURLArtifactProcessorExtensionPoint extends
}
@Override
- public URLArtifactProcessor getProcessor(Class<?> modelType) {
+ public <T> URLArtifactProcessor<T> getProcessor(Class<T> modelType) {
loadProcessors();
- return super.getProcessor(modelType);
+ return (URLArtifactProcessor<T>)super.getProcessor(modelType);
}
- @Override
- public URLArtifactProcessor getProcessor(Object artifactType) {
+ public Collection<URLArtifactProcessor<?>> getProcessors(Object artifactType) {
loadProcessors();
- URLArtifactProcessor processor = null;
String uri = (String)artifactType;
if (uri.endsWith("/")) {
// Ignore directories
- return null;
+ return Collections.emptyList();
}
if (!uri.startsWith("/")) {
uri = "/" + uri;
}
- for (Object key : processorsByArtifactType.keySet()) {
- Pattern pattern = (Pattern)key;
+ List<URLArtifactProcessor<?>> processors = new ArrayList<URLArtifactProcessor<?>>();
+ for (Map.Entry<Object, URLArtifactProcessor<?>> e : processorsByArtifactType.entrySet()) {
+ Pattern pattern = (Pattern)e.getKey();
if (pattern.matcher(uri).matches()) {
- return processorsByArtifactType.get(key);
+ processors.add(e.getValue());
}
}
- return processor;
+ return processors;
+ }
+
+ public URLArtifactProcessor<?> getProcessor(Object artifactType) {
+ Collection<URLArtifactProcessor<?>> processors = getProcessors(artifactType);
+ return processors.isEmpty() ? null : processors.iterator().next();
}
- private String wildcard2regex(String wildcard) {
+ private static String wildcard2regex(String pattern) {
+ String wildcard = pattern;
+ if (wildcard.endsWith("/")) {
+ // Directory: xyz/ --> xyz/**
+ wildcard = wildcard + "**";
+ }
if (wildcard.startsWith(".")) {
- // File extension
+ // File extension: .xyz --> **/*.xyz
wildcard = "**/*" + wildcard;
} else if (wildcard.indexOf('/') == -1) {
- // file name
+ // File name: abc.txt --> **/abc.txt
wildcard = "**/" + wildcard;
} else if (!(wildcard.startsWith("/") || wildcard.startsWith("**"))) {
wildcard = '/' + wildcard;
@@ -158,9 +171,22 @@ public class DefaultURLArtifactProcessorExtensionPoint extends
switch (chars[i]) {
case '*':
if (i < chars.length - 1 && chars[i + 1] == '*') {
- regex.append(".*");
- i++; // Skip next *
+ // Next char is '*'
+ if (i < chars.length - 2) {
+ if (chars[i + 2] == '/') {
+ // The wildcard is **/, it matches zero or more directories
+ regex.append("(.*/)*");
+ i += 2; // Skip */
+ } else {
+ // ** can only be followed by /
+ throw new IllegalArgumentException("** can only be used as the name for a directory");
+ }
+ } else {
+ regex.append(".*");
+ i++; // Skip next *
+ }
} else {
+ // Non-directory
regex.append("[^/]*");
}
break;
diff --git a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/StAXArtifactProcessorExtensionPoint.java b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/StAXArtifactProcessorExtensionPoint.java
index 9700e2bc60..0cfcf004b2 100644
--- a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/StAXArtifactProcessorExtensionPoint.java
+++ b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/StAXArtifactProcessorExtensionPoint.java
@@ -6,24 +6,51 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.contribution.processor;
/**
* An extension point for StAX artifact processors.
- *
+ *
* @version $Rev$ $Date$
*/
-public interface StAXArtifactProcessorExtensionPoint extends
- ArtifactProcessorExtensionPoint<StAXArtifactProcessor> {
+public interface StAXArtifactProcessorExtensionPoint {
+ /**
+ * Add an artifact processor.
+ *
+ * @param artifactProcessor The artifact processor to add
+ */
+ void addArtifactProcessor(StAXArtifactProcessor<?> artifactProcessor);
+ /**
+ * Remove an artifact processor.
+ *
+ * @param artifactProcessor The artifact processor to remove
+ */
+ void removeArtifactProcessor(StAXArtifactProcessor<?> artifactProcessor);
+
+ /**
+ * Returns the processor associated with the given artifact type.
+ *
+ * @param artifactType An artifact type
+ * @return The processor associated with the given artifact type
+ */
+ <T> StAXArtifactProcessor<T> getProcessor(Object artifactType);
+
+ /**
+ * Returns the processor associated with the given model type.
+ *
+ * @param modelType A model type
+ * @return The processor associated with the given model type
+ */
+ <T> StAXArtifactProcessor<T> getProcessor(Class<T> modelType);
}
diff --git a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/StAXAttributeProcessorExtensionPoint.java b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/StAXAttributeProcessorExtensionPoint.java
index ebad243c1c..dbc0a2c7bc 100644
--- a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/StAXAttributeProcessorExtensionPoint.java
+++ b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/StAXAttributeProcessorExtensionPoint.java
@@ -6,24 +6,51 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.contribution.processor;
/**
* An extension point for StAX artifact processors.
- *
+ *
* @version $Rev$ $Date$
*/
-public interface StAXAttributeProcessorExtensionPoint extends
- ArtifactProcessorExtensionPoint<StAXAttributeProcessor> {
+public interface StAXAttributeProcessorExtensionPoint {
+ /**
+ * Add an artifact processor.
+ *
+ * @param artifactProcessor The artifact processor to add
+ */
+ void addArtifactProcessor(StAXAttributeProcessor<?> artifactProcessor);
+ /**
+ * Remove an artifact processor.
+ *
+ * @param artifactProcessor The artifact processor to remove
+ */
+ void removeArtifactProcessor(StAXAttributeProcessor<?> artifactProcessor);
+
+ /**
+ * Returns the processor associated with the given artifact type.
+ *
+ * @param artifactType An artifact type
+ * @return The processor associated with the given artifact type
+ */
+ <T> StAXAttributeProcessor<T> getProcessor(Object artifactType);
+
+ /**
+ * Returns the processor associated with the given model type.
+ *
+ * @param modelType A model type
+ * @return The processor associated with the given model type
+ */
+ <T> StAXAttributeProcessor<T> getProcessor(Class<T> modelType);
}
diff --git a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/URLArtifactProcessorExtensionPoint.java b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/URLArtifactProcessorExtensionPoint.java
index 7714586951..4806d443eb 100644
--- a/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/URLArtifactProcessorExtensionPoint.java
+++ b/branches/sca-java-2.0-M2/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/URLArtifactProcessorExtensionPoint.java
@@ -6,24 +6,60 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.contribution.processor;
+import java.util.Collection;
+
/**
* An extension point for URL artifact processors.
- *
+ *
* @version $Rev$ $Date$
*/
-public interface URLArtifactProcessorExtensionPoint extends
- ArtifactProcessorExtensionPoint<URLArtifactProcessor> {
-
+public interface URLArtifactProcessorExtensionPoint {
+ /**
+ * Add an artifact processor.
+ *
+ * @param artifactProcessor The artifact processor to add
+ */
+ void addArtifactProcessor(URLArtifactProcessor<?> artifactProcessor);
+
+ /**
+ * Remove an artifact processor.
+ *
+ * @param artifactProcessor The artifact processor to remove
+ */
+ void removeArtifactProcessor(URLArtifactProcessor<?> artifactProcessor);
+
+ /**
+ * Returns the processor associated with the given artifact type.
+ *
+ * @param artifactType An artifact type
+ * @return The processor associated with the given artifact type
+ */
+ <T> URLArtifactProcessor<T> getProcessor(Object artifactType);
+
+ /**
+ * Returns the processor associated with the given model type.
+ *
+ * @param modelType A model type
+ * @return The processor associated with the given model type
+ */
+ <T> URLArtifactProcessor<T> getProcessor(Class<T> modelType);
+
+ /**
+ * Return a collection of artifact processors that match the artifactType
+ * @param artifactType
+ * @return A collection of processors
+ */
+ Collection<URLArtifactProcessor<?>> getProcessors(Object artifactType);
}
diff --git a/branches/sca-java-2.0-M2/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java b/branches/sca-java-2.0-M2/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
index 4068ef272f..7e2d39f182 100644
--- a/branches/sca-java-2.0-M2/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
+++ b/branches/sca-java-2.0-M2/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.extensibility.equinox;
@@ -118,7 +118,7 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
}
}
-
+
/**
* Empty static method to trigger the activation of this bundle.
*/
@@ -154,7 +154,7 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
/**
* Parse a service declaration in the form class;attr=value,attr=value and
* return a map of attributes
- *
+ *
* @param declaration
* @return a map of attributes
*/
@@ -185,7 +185,7 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
}
return attributes;
}
-
+
public ServiceDeclaration getFirstServiceDeclaration(String name) throws IOException {
Set<ServiceDeclaration> declarations = getServiceDeclarations(name);
if (declarations.isEmpty()) {
@@ -203,6 +203,7 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
boolean isPropertyFile = "javax.xml.xpath.XPathFactory".equals(serviceName);
serviceName = "META-INF/services/" + serviceName;
+ Set<URL> visited = new HashSet<URL>();
for (Bundle bundle : context.getBundles()) {
if (bundle.getBundleId() == 0 || bundle.getHeaders().get(Constants.FRAGMENT_HOST) != null) {
// Skip system bundle as it has access to the application classloader
@@ -214,7 +215,7 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
// Use getResources to find resources on the classpath of the bundle
// Please note there are cases that getResources will return null even
// the bundle containing such entries:
- // 1. There is a match on Import-Package or DynamicImport-Package, and another
+ // 1. There is a match on Import-Package or DynamicImport-Package, and another
// bundle exports the resource package, there is a possiblity that it doesn't
// find the containing entry
// 2. The bundle cannot be resolved, then getResources will return null
@@ -240,6 +241,11 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
while (urls.hasMoreElements()) {
final URL url = urls.nextElement();
+ if (!visited.add(url)) {
+ // The URL has already been processed
+ continue;
+ }
+
if (debug) {
logger.fine("Reading service provider file: " + url.toExternalForm());
}
diff --git a/branches/sca-java-2.0-M2/modules/host-jetty/META-INF/MANIFEST.MF b/branches/sca-java-2.0-M2/modules/host-jetty/META-INF/MANIFEST.MF
index deac071675..9d58231746 100644
--- a/branches/sca-java-2.0-M2/modules/host-jetty/META-INF/MANIFEST.MF
+++ b/branches/sca-java-2.0-M2/modules/host-jetty/META-INF/MANIFEST.MF
@@ -16,15 +16,15 @@ Import-Package: javax.net.ssl;resolution:=optional,
org.apache.tuscany.sca.core;version="2.0.0",
org.apache.tuscany.sca.host.http;version="2.0.0",
org.apache.tuscany.sca.work;version="2.0.0",
- org.mortbay.component;version="6.1.7",
- org.mortbay.jetty;version="6.1.7",
- org.mortbay.jetty.handler;version="6.1.7",
- org.mortbay.jetty.nio;version="6.1.7",
- org.mortbay.jetty.security;version="6.1.7",
- org.mortbay.jetty.servlet;version="6.1.7",
- org.mortbay.log;version="6.1.7",
- org.mortbay.resource;version="6.1.7",
- org.mortbay.thread;version="6.1.7"
+ org.mortbay.component;version="6.1.15",
+ org.mortbay.jetty;version="6.1.15",
+ org.mortbay.jetty.handler;version="6.1.15",
+ org.mortbay.jetty.nio;version="6.1.15",
+ org.mortbay.jetty.security;version="6.1.15",
+ org.mortbay.jetty.servlet;version="6.1.15",
+ org.mortbay.log;version="6.1.15",
+ org.mortbay.resource;version="6.1.15",
+ org.mortbay.thread;version="6.1.15"
Bundle-SymbolicName: org.apache.tuscany.sca.host.jetty
Bundle-DocURL: http://www.apache.org/
diff --git a/branches/sca-java-2.0-M2/modules/implementation-bpel/pom.xml b/branches/sca-java-2.0-M2/modules/implementation-bpel/pom.xml
index 2498412360..3430063eb4 100644
--- a/branches/sca-java-2.0-M2/modules/implementation-bpel/pom.xml
+++ b/branches/sca-java-2.0-M2/modules/implementation-bpel/pom.xml
@@ -74,9 +74,9 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
- <version>3.8.1</version>
+ <version>4.5</version>
<scope>test</scope>
</dependency>
</dependencies>
-
+
</project>
diff --git a/branches/sca-java-2.0-M2/modules/implementation-web-runtime/pom.xml b/branches/sca-java-2.0-M2/modules/implementation-web-runtime/pom.xml
index fc26d47953..f20f9101c6 100644
--- a/branches/sca-java-2.0-M2/modules/implementation-web-runtime/pom.xml
+++ b/branches/sca-java-2.0-M2/modules/implementation-web-runtime/pom.xml
@@ -69,15 +69,23 @@
<scope>provided</scope>
</dependency>
+ <!-- provided scope doesn't pull in transitive dependencies -->
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-el_1.0_spec</artifactId>
+ <version>1.0.1</version>
+ <scope>provided</scope>
+ </dependency>
+
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-sca-api</artifactId>
<version>2.0-M2-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
-
+
<dependency>
- <groupId>junit</groupId>
+ <groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.5</version>
<scope>test</scope>
diff --git a/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java b/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java
index 1ad7a8f370..24f23e255d 100644
--- a/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java
+++ b/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/Interface.java
@@ -6,19 +6,20 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.interfacedef;
import java.util.List;
+import java.util.Map;
import org.apache.tuscany.sca.policy.PolicySubject;
@@ -33,35 +34,35 @@ public interface Interface extends Cloneable, PolicySubject {
/**
* Returns true if the interface is a remotable interface..
- *
+ *
* @return true if the interface is a remotable interface
*/
boolean isRemotable();
/**
* Sets whether the interface is a remotable or local interface.
- *
+ *
* @param remotable indicates whether the interface is remotable or local
*/
void setRemotable(boolean remotable);
-
-
+
+
// FIXME: [rfeng] We need to re-consider the conversational as an intent
/**
* Test if the interface is conversational
* @return
*/
boolean isConversational();
-
+
/**
- * Set whether the interface is conversational
+ * Set whether the interface is conversational
* @param conversational
*/
void setConversational(boolean conversational);
/**
* Returns the operations defined on this interface.
- *
+ *
* @return the operations defined on this interface
*/
List<Operation> getOperations();
@@ -73,7 +74,7 @@ public interface Interface extends Cloneable, PolicySubject {
*/
@Deprecated
void setDefaultDataBinding(String dataBinding);
-
+
/**
* Reset the databinding for the interface
* @param dataBinding
@@ -82,12 +83,18 @@ public interface Interface extends Cloneable, PolicySubject {
/**
* Returns true if the Interface is dynamic.
- *
+ *
* @return true if the Interface is dynamic.
*/
boolean isDynamic();
/**
+ * Get a map of attributes assoicated with the interface
+ * @return A map of attributes
+ */
+ Map<Object, Object> getAttributes();
+
+ /**
* Implementations must support cloning.
*/
Object clone() throws CloneNotSupportedException;
diff --git a/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java b/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java
index e278fe1457..55f00b82c8 100644
--- a/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java
+++ b/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.interfacedef;
@@ -35,28 +35,28 @@ import org.apache.tuscany.sca.policy.PolicySubject;
public interface Operation extends Cloneable, PolicySubject {
/**
* Returns the name of the operation.
- *
+ *
* @return the name of the operation
*/
String getName();
/**
* Sets the name of the operation.
- *
+ *
* @param name the name of the operation
*/
void setName(String name);
/**
* Returns true if the model element is unresolved.
- *
+ *
* @return true if the model element is unresolved.
*/
boolean isUnresolved();
/**
* Sets whether the model element is unresolved.
- *
+ *
* @param unresolved whether the model element is unresolved
*/
void setUnresolved(boolean unresolved);
@@ -64,11 +64,11 @@ public interface Operation extends Cloneable, PolicySubject {
/**
* Get the data type that represents the input of this operation. The logic
* type is a list of data types and each element represents a parameter
- *
+ *
* @return the inputType
*/
DataType<List<DataType>> getInputType();
-
+
/**
* @param inputType
*/
@@ -76,11 +76,11 @@ public interface Operation extends Cloneable, PolicySubject {
/**
* Get the data type for the output
- *
+ *
* @return the outputType
*/
DataType getOutputType();
-
+
/**
* @param outputType
*/
@@ -88,51 +88,51 @@ public interface Operation extends Cloneable, PolicySubject {
/**
* Get a list of data types to represent the faults/exceptions
- *
+ *
* @return the faultTypes
*/
List<DataType> getFaultTypes();
-
+
/**
* @param faultTypes
*/
void setFaultTypes(List<DataType> faultTypes);
-
+
/**
* Get the owning interface
* @return
*/
Interface getInterface();
-
+
/**
* Set the owning interface
* @param interfaze
*/
void setInterface(Interface interfaze);
-
+
/**
* Get the sequence of the conversation
* @return
*/
ConversationSequence getConversationSequence();
-
+
/**
* Set the sequence of conversation for the operation
* @param sequence
*/
void setConversationSequence(ConversationSequence sequence);
-
+
/**
* Indicate if the operation is non-blocking
* @return
*/
boolean isNonBlocking();
-
+
/**
* Set the operation to be non-blocking
*/
void setNonBlocking(boolean nonBlocking);
-
+
/**
* @return the wrapperInfo
*/
@@ -152,7 +152,7 @@ public interface Operation extends Cloneable, PolicySubject {
* @param wrapperStyle the wrapperStyle to set
*/
void setWrapperStyle(boolean wrapperStyle);
-
+
/**
* @deprecated This should be the WrapperInfo.getDataBinding()
* Get the databinding for the operation
@@ -160,7 +160,7 @@ public interface Operation extends Cloneable, PolicySubject {
*/
@Deprecated
String getDataBinding();
-
+
/**
* @deprecated This should be the WrapperInfo.setDataBinding()
* Set the databinding for the operation
@@ -168,10 +168,10 @@ public interface Operation extends Cloneable, PolicySubject {
*/
@Deprecated
void setDataBinding(String dataBinding);
-
+
/**
* Returns true if the operation is dynamic.
- *
+ *
* @return true if the operation is dynamic otherwise false
*/
boolean isDynamic();
@@ -184,11 +184,11 @@ public interface Operation extends Cloneable, PolicySubject {
/**
* Get the synthesized fault beans for this operation
- *
+ *
* @return the fault beans
*/
Map<QName, List<DataType<XMLType>>> getFaultBeans();
-
+
/**
* Set the synthesized fault beans for this operation
* @param faultBeans
@@ -196,8 +196,14 @@ public interface Operation extends Cloneable, PolicySubject {
void setFaultBeans(Map<QName, List<DataType<XMLType>>> faultBeans);
/**
+ * Get a map of attributes assoicated with the operation
+ * @return A map of attributes
+ */
+ Map<Object, Object> getAttributes();
+
+ /**
* Implementations must support cloning.
*/
Object clone() throws CloneNotSupportedException;
-
+
}
diff --git a/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java b/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java
index 0890ca1664..966e1358de 100644
--- a/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java
+++ b/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/InterfaceImpl.java
@@ -6,33 +6,35 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.interfacedef.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import org.apache.tuscany.sca.interfacedef.DataType;
import org.apache.tuscany.sca.interfacedef.Interface;
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.interfacedef.util.WrapperInfo;
-import org.apache.tuscany.sca.policy.Intent;
import org.apache.tuscany.sca.policy.ExtensionType;
+import org.apache.tuscany.sca.policy.Intent;
import org.apache.tuscany.sca.policy.PolicySet;
/**
* Represents a service interface.
- *
+ *
* @version $Rev$ $Date$
*/
public class InterfaceImpl implements Interface {
@@ -42,11 +44,10 @@ public class InterfaceImpl implements Interface {
private OperationList operations = new OperationList();
private boolean unresolved;
- private List<PolicySet> applicablePolicySets = new ArrayList<PolicySet>();
private ExtensionType type;
private List<PolicySet> policySets = new ArrayList<PolicySet>();
private List<Intent> requiredIntents = new ArrayList<Intent>();
-
+ private Map<Object, Object> attributes = new ConcurrentHashMap<Object, Object>();
public boolean isRemotable() {
return remotable;
@@ -221,10 +222,6 @@ public class InterfaceImpl implements Interface {
public boolean isDynamic() {
return false;
}
-
- public List<PolicySet> getApplicablePolicySets() {
- return applicablePolicySets;
- }
public List<PolicySet> getPolicySets() {
return policySets;
@@ -250,6 +247,8 @@ public class InterfaceImpl implements Interface {
Operation clonedOperation = (Operation)operation.clone();
copy.operations.add(clonedOperation);
}
+ copy.attributes = new ConcurrentHashMap<Object, Object>();
+ copy.attributes.putAll(attributes);
return copy;
}
@@ -293,4 +292,8 @@ public class InterfaceImpl implements Interface {
return true;
}
+ public Map<Object, Object> getAttributes() {
+ return attributes;
+ }
+
}
diff --git a/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java b/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java
index 2e0902e1bb..5074afc84b 100644
--- a/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java
+++ b/branches/sca-java-2.0-M2/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.interfacedef.impl;
@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import javax.xml.namespace.QName;
@@ -31,13 +32,13 @@ import org.apache.tuscany.sca.interfacedef.Interface;
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.interfacedef.util.WrapperInfo;
import org.apache.tuscany.sca.interfacedef.util.XMLType;
-import org.apache.tuscany.sca.policy.Intent;
import org.apache.tuscany.sca.policy.ExtensionType;
+import org.apache.tuscany.sca.policy.Intent;
import org.apache.tuscany.sca.policy.PolicySet;
/**
* Represents an operation on a service interface.
- *
+ *
* @version $Rev$ $Date$
*/
public class OperationImpl implements Operation {
@@ -53,8 +54,11 @@ public class OperationImpl implements Operation {
private boolean wrapperStyle;
private WrapperInfo wrapper;
private boolean dynamic;
+
+ private Map<Object, Object> attributes = new ConcurrentHashMap<Object, Object>();
+
private Map<QName, List<DataType<XMLType>>> faultBeans;
-
+
private List<PolicySet> applicablePolicySets = new ArrayList<PolicySet>();
private List<PolicySet> policySets = new ArrayList<PolicySet>();
private List<Intent> requiredIntents = new ArrayList<Intent>();
@@ -280,11 +284,11 @@ public class OperationImpl implements Operation {
public void setDynamic(boolean b) {
this.dynamic = b;
}
-
+
public Map<QName, List<DataType<XMLType>>> getFaultBeans() {
return faultBeans;
}
-
+
public void setFaultBeans(Map<QName, List<DataType<XMLType>>> faultBeans) {
this.faultBeans = faultBeans;
}
@@ -292,7 +296,7 @@ public class OperationImpl implements Operation {
@Override
public OperationImpl clone() throws CloneNotSupportedException {
OperationImpl copy = (OperationImpl) super.clone();
-
+
final List<DataType> clonedFaultTypes = new ArrayList<DataType>(this.faultTypes.size());
for (DataType t : this.faultTypes) {
clonedFaultTypes.add((DataType) t.clone());
@@ -308,11 +312,14 @@ public class OperationImpl implements Operation {
new DataTypeImpl<List<DataType>>(inputType.getPhysical(), clonedLogicalTypes);
clonedInputType.setDataBinding(inputType.getDataBinding());
copy.inputType = clonedInputType;
-
+
if (this.outputType != null) {
copy.outputType = (DataType) this.outputType.clone();
}
-
+
+ copy.attributes = new ConcurrentHashMap<Object, Object>();
+ copy.attributes.putAll(attributes);
+
return copy;
}
@@ -335,5 +342,9 @@ public class OperationImpl implements Operation {
public void setType(ExtensionType type) {
this.type = type;
}
-
+
+ public Map<Object, Object> getAttributes() {
+ return attributes;
+ }
+
}