summaryrefslogtreecommitdiffstats
path: root/java/sca/modules
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-05-20 16:46:55 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-05-20 16:46:55 +0000
commitb099739d69690535623b126b37f47bfdfecf040f (patch)
tree252ab5e26d6e6f2c804c43744ff22d68ce3b353f /java/sca/modules
parentf1863df3c7da7a4632ef3ca70d430d62ed387bad (diff)
Refactoring a few methods on the ServiceDiscover
Adding an OSGi service registry based ExtensionPointRegistry implementation git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@776759 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules')
-rw-r--r--java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultCompositeBuilderExtensionPoint.java20
-rw-r--r--java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java4
-rw-r--r--java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXAttributeProcessorExtensionPoint.java4
-rw-r--r--java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java3
-rw-r--r--java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java4
-rw-r--r--java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtendedArtifactProcessor.java1
-rw-r--r--java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java4
-rw-r--r--java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/scanner/DefaultContributionScannerExtensionPoint.java4
-rw-r--r--java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/DefaultContextFactoryExtensionPoint.java2
-rw-r--r--java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultDefinitionsProviderExtensionPoint.java4
-rw-r--r--java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java4
-rw-r--r--java/sca/modules/core-spi/src/test/java/org/apache/tuscany/sca/context/DefaultContextFactoryExtensionPointTestCase.java1
-rw-r--r--java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/impl/PhaseManager.java3
-rw-r--r--java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java4
-rw-r--r--java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java4
-rw-r--r--java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/DOMNode2JavaBeanTransformer.java1
-rw-r--r--java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/DataBindingTestCase.java3
-rw-r--r--java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefaultDefinitionsExtensionPoint.java4
-rw-r--r--java/sca/modules/extensibility-equinox/META-INF/MANIFEST.MF4
-rw-r--r--java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java13
-rw-r--r--java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/OSGiExtensionPointRegistry.java86
-rw-r--r--java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java8
-rw-r--r--java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java52
-rw-r--r--java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java2
-rw-r--r--java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java25
-rw-r--r--java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityExtensionPoint.java2
-rw-r--r--java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java22
-rw-r--r--java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java6
-rw-r--r--java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java45
-rw-r--r--java/sca/modules/extensibility/src/test/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscovererTestCase.java20
-rw-r--r--java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java4
-rw-r--r--java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/JavaInterface.java1
-rw-r--r--java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceImpl.java1
-rw-r--r--java/sca/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java15
-rw-r--r--java/sca/modules/node-impl-osgi/META-INF/MANIFEST.MF1
-rw-r--r--java/sca/modules/node-impl-osgi/pom.xml1
-rw-r--r--java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/OSGiNodeFactoryImpl.java6
-rw-r--r--java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java14
-rw-r--r--java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/builder/DefaultContributionBuilderExtensionPoint.java4
39 files changed, 271 insertions, 135 deletions
diff --git a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultCompositeBuilderExtensionPoint.java b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultCompositeBuilderExtensionPoint.java
index d9b9763475..80b95189ec 100644
--- a/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultCompositeBuilderExtensionPoint.java
+++ b/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/builder/DefaultCompositeBuilderExtensionPoint.java
@@ -6,23 +6,23 @@
* 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.assembly.builder;
import java.lang.reflect.Constructor;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
-import java.util.Set;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
@@ -68,14 +68,14 @@ public class DefaultCompositeBuilderExtensionPoint implements CompositeBuilderEx
private synchronized void loadBuilders() {
if (loaded)
return;
-
+
FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class);
-
+
UtilityExtensionPoint utils = registry.getExtensionPoint(UtilityExtensionPoint.class);
InterfaceContractMapper mapper = utils.getUtility(InterfaceContractMapper.class);
-
+
// Get the provider factory service declarations
- Set<ServiceDeclaration> builderDeclarations;
+ Collection<ServiceDeclaration> builderDeclarations;
ServiceDiscovery serviceDiscovery = ServiceDiscovery.getInstance();
try {
builderDeclarations = serviceDiscovery.getServiceDeclarations(CompositeBuilder.class.getName());
@@ -113,11 +113,11 @@ public class DefaultCompositeBuilderExtensionPoint implements CompositeBuilderEx
this.factories = factories;
this.mapper = mapper;
}
-
+
public String getID() {
return id;
}
-
+
public void build(Composite composite, Definitions definitions, Monitor monitor) throws CompositeBuilderException {
getBuilder().build(composite, definitions, monitor);
}
diff --git a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java
index d1443f1162..0d2c7714ee 100644
--- a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java
+++ b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXArtifactProcessorExtensionPoint.java
@@ -20,8 +20,8 @@ package org.apache.tuscany.sca.contribution.processor;
import java.io.IOException;
import java.lang.reflect.Constructor;
+import java.util.Collection;
import java.util.Map;
-import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLInputFactory;
@@ -162,7 +162,7 @@ public class DefaultStAXArtifactProcessorExtensionPoint extends
return;
// Get the processor service declarations
- Set<ServiceDeclaration> processorDeclarations;
+ Collection<ServiceDeclaration> processorDeclarations;
try {
processorDeclarations =
ServiceDiscovery.getInstance().getServiceDeclarations(StAXArtifactProcessor.class.getName());
diff --git a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXAttributeProcessorExtensionPoint.java b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXAttributeProcessorExtensionPoint.java
index 789752fd17..314f8ebf07 100644
--- a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXAttributeProcessorExtensionPoint.java
+++ b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultStAXAttributeProcessorExtensionPoint.java
@@ -20,8 +20,8 @@ package org.apache.tuscany.sca.contribution.processor;
import java.io.IOException;
import java.lang.reflect.Constructor;
+import java.util.Collection;
import java.util.Map;
-import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLInputFactory;
@@ -156,7 +156,7 @@ public class DefaultStAXAttributeProcessorExtensionPoint extends
return;
// Get the processor service declarations
- Set<ServiceDeclaration> processorDeclarations;
+ Collection<ServiceDeclaration> processorDeclarations;
try {
processorDeclarations =
ServiceDiscovery.getInstance().getServiceDeclarations(StAXAttributeProcessor.class.getName());
diff --git a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java
index fc04d7494b..3c7c2f1430 100644
--- a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java
+++ b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultURLArtifactProcessorExtensionPoint.java
@@ -27,7 +27,6 @@ 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;
import javax.xml.stream.XMLInputFactory;
@@ -227,7 +226,7 @@ public class DefaultURLArtifactProcessorExtensionPoint extends
return;
// Get the processor service declarations
- Set<ServiceDeclaration> processorDeclarations;
+ Collection<ServiceDeclaration> processorDeclarations;
try {
processorDeclarations =
ServiceDiscovery.getInstance().getServiceDeclarations(URLArtifactProcessor.class.getName());
diff --git a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java
index d278aae06a..920afbef5a 100644
--- a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java
+++ b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultValidationSchemaExtensionPoint.java
@@ -23,9 +23,9 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
@@ -57,7 +57,7 @@ public class DefaultValidationSchemaExtensionPoint implements ValidationSchemaEx
return;
// Get the schema declarations
- Set<ServiceDeclaration> schemaDeclarations;
+ Collection<ServiceDeclaration> schemaDeclarations;
try {
schemaDeclarations =
ServiceDiscovery.getInstance()
diff --git a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtendedArtifactProcessor.java b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtendedArtifactProcessor.java
index ba8844b41a..98d3fcca88 100644
--- a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtendedArtifactProcessor.java
+++ b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtendedArtifactProcessor.java
@@ -18,7 +18,6 @@
*/
package org.apache.tuscany.sca.contribution.processor;
-import org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
/**
diff --git a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java
index 33e252830a..7cbf8d5528 100644
--- a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java
+++ b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolverExtensionPoint.java
@@ -19,9 +19,9 @@
package org.apache.tuscany.sca.contribution.resolver;
import java.io.IOException;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
-import java.util.Set;
import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
@@ -95,7 +95,7 @@ public class DefaultModelResolverExtensionPoint implements ModelResolverExtensio
loadedResolvers = new HashMap<String, ServiceDeclaration>();
// Get the model resolver service declarations
- Set<ServiceDeclaration> modelResolverDeclarations;
+ Collection<ServiceDeclaration> modelResolverDeclarations;
try {
modelResolverDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations(ModelResolver.class.getName());
} catch (IOException e) {
diff --git a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/scanner/DefaultContributionScannerExtensionPoint.java b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/scanner/DefaultContributionScannerExtensionPoint.java
index 163f887bbc..2a288e1708 100644
--- a/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/scanner/DefaultContributionScannerExtensionPoint.java
+++ b/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/scanner/DefaultContributionScannerExtensionPoint.java
@@ -22,10 +22,10 @@ package org.apache.tuscany.sca.contribution.scanner;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.net.URL;
+import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
@@ -62,7 +62,7 @@ public class DefaultContributionScannerExtensionPoint implements ContributionSca
return;
// Get the scanner service declarations
- Set<ServiceDeclaration> scannerDeclarations;
+ Collection<ServiceDeclaration> scannerDeclarations;
try {
scannerDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations(ContributionScanner.class.getName());
} catch (IOException e) {
diff --git a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/DefaultContextFactoryExtensionPoint.java b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/DefaultContextFactoryExtensionPoint.java
index 7a35036f03..3c4be9cd55 100644
--- a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/DefaultContextFactoryExtensionPoint.java
+++ b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/context/DefaultContextFactoryExtensionPoint.java
@@ -94,7 +94,7 @@ public class DefaultContextFactoryExtensionPoint implements ContextFactoryExtens
// Dynamically load a factory class declared under META-INF/services
try {
- ServiceDeclaration factoryDeclaration = ServiceDiscovery.getInstance().getFirstServiceDeclaration(factoryInterface.getName());
+ ServiceDeclaration factoryDeclaration = ServiceDiscovery.getInstance().getServiceDeclaration(factoryInterface.getName());
if (factoryDeclaration != null) {
Class<?> factoryClass = factoryDeclaration.loadClass();
diff --git a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultDefinitionsProviderExtensionPoint.java b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultDefinitionsProviderExtensionPoint.java
index fc1c2ed5af..b68a485e55 100644
--- a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultDefinitionsProviderExtensionPoint.java
+++ b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultDefinitionsProviderExtensionPoint.java
@@ -21,8 +21,8 @@ package org.apache.tuscany.sca.provider;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
-import java.util.Set;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
@@ -63,7 +63,7 @@ public class DefaultDefinitionsProviderExtensionPoint implements
return;
}
// Get the provider service declarations
- Set<ServiceDeclaration> defnProviderDecls;
+ Collection<ServiceDeclaration> defnProviderDecls;
DefinitionsProvider aProvider = null;
Class<?> providerClass = null;
Constructor<?> constructor = null;
diff --git a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java
index 518927939f..84e000ab10 100644
--- a/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java
+++ b/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java
@@ -21,10 +21,10 @@ package org.apache.tuscany.sca.provider;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import org.apache.tuscany.sca.assembly.Binding;
import org.apache.tuscany.sca.assembly.Implementation;
@@ -128,7 +128,7 @@ public class DefaultProviderFactoryExtensionPoint implements ProviderFactoryExte
private List<ProviderFactory> loadProviderFactories(Class<?> factoryClass) {
// Get the provider factory service declarations
- Set<ServiceDeclaration> factoryDeclarations;
+ Collection<ServiceDeclaration> factoryDeclarations;
ServiceDiscovery serviceDiscovery = ServiceDiscovery.getInstance();
try {
factoryDeclarations = serviceDiscovery.getServiceDeclarations(factoryClass.getName());
diff --git a/java/sca/modules/core-spi/src/test/java/org/apache/tuscany/sca/context/DefaultContextFactoryExtensionPointTestCase.java b/java/sca/modules/core-spi/src/test/java/org/apache/tuscany/sca/context/DefaultContextFactoryExtensionPointTestCase.java
index 3a27569a3b..6486a5ed4f 100644
--- a/java/sca/modules/core-spi/src/test/java/org/apache/tuscany/sca/context/DefaultContextFactoryExtensionPointTestCase.java
+++ b/java/sca/modules/core-spi/src/test/java/org/apache/tuscany/sca/context/DefaultContextFactoryExtensionPointTestCase.java
@@ -20,7 +20,6 @@ package org.apache.tuscany.sca.context;
import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-
import org.junit.Assert;
import org.junit.Test;
diff --git a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/impl/PhaseManager.java b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/impl/PhaseManager.java
index 602958ab5e..c9024fecef 100644
--- a/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/impl/PhaseManager.java
+++ b/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/impl/PhaseManager.java
@@ -39,6 +39,7 @@ import static org.apache.tuscany.sca.invocation.Phase.SERVICE_POLICY;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -173,7 +174,7 @@ public class PhaseManager {
}
init();
- Set<ServiceDeclaration> services;
+ Collection<ServiceDeclaration> services;
try {
services = ServiceDiscovery.getInstance().getServiceDeclarations(pattern);
} catch (IOException e) {
diff --git a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
index 6ebfc29121..c8ad274316 100644
--- a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
+++ b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultDataBindingExtensionPoint.java
@@ -21,10 +21,10 @@ package org.apache.tuscany.sca.databinding;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -103,7 +103,7 @@ public class DefaultDataBindingExtensionPoint implements DataBindingExtensionPoi
return;
// Get the databinding service declarations
- Set<ServiceDeclaration> dataBindingDeclarations;
+ Collection<ServiceDeclaration> dataBindingDeclarations;
try {
dataBindingDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations(DataBinding.class.getName());
} catch (IOException e) {
diff --git a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java
index 2583270b3d..fc8b89c5b9 100644
--- a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java
+++ b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/DefaultTransformerExtensionPoint.java
@@ -21,9 +21,9 @@ package org.apache.tuscany.sca.databinding;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -112,7 +112,7 @@ public class DefaultTransformerExtensionPoint implements TransformerExtensionPoi
private synchronized void loadTransformers(Class<?> transformerClass) {
// Get the transformer service declarations
- Set<ServiceDeclaration> transformerDeclarations;
+ Collection<ServiceDeclaration> transformerDeclarations;
try {
transformerDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations(transformerClass.getName());
diff --git a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/DOMNode2JavaBeanTransformer.java b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/DOMNode2JavaBeanTransformer.java
index 2f95c2a9c6..f86d1b29e0 100644
--- a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/DOMNode2JavaBeanTransformer.java
+++ b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/DOMNode2JavaBeanTransformer.java
@@ -21,6 +21,7 @@ package org.apache.tuscany.sca.databinding.javabeans;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+
import javax.xml.namespace.QName;
import org.w3c.dom.Document;
diff --git a/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/DataBindingTestCase.java b/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/DataBindingTestCase.java
index 9f5ead2ea5..c5d6dbbcc1 100644
--- a/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/DataBindingTestCase.java
+++ b/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/impl/DataBindingTestCase.java
@@ -18,10 +18,11 @@
*/
package org.apache.tuscany.sca.databinding.impl;
+import static org.junit.Assert.assertEquals;
+
import java.lang.reflect.Method;
import org.apache.tuscany.sca.databinding.annotation.DataBinding;
-import static org.junit.Assert.assertEquals;
/**
*
diff --git a/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefaultDefinitionsExtensionPoint.java b/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefaultDefinitionsExtensionPoint.java
index 1fb9cf8fdc..aa244ba274 100644
--- a/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefaultDefinitionsExtensionPoint.java
+++ b/java/sca/modules/definitions-xml/src/main/java/org/apache/tuscany/sca/definitions/xml/DefaultDefinitionsExtensionPoint.java
@@ -24,8 +24,8 @@ import java.io.IOException;
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
-import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -72,7 +72,7 @@ public class DefaultDefinitionsExtensionPoint implements DefinitionsExtensionPoi
return;
// Get the definitions declarations
- Set<ServiceDeclaration> definitionsDeclarations;
+ Collection<ServiceDeclaration> definitionsDeclarations;
try {
definitionsDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations(DEFINITIONS_FILE);
} catch (IOException e) {
diff --git a/java/sca/modules/extensibility-equinox/META-INF/MANIFEST.MF b/java/sca/modules/extensibility-equinox/META-INF/MANIFEST.MF
index 15d36e331c..06764168e6 100644
--- a/java/sca/modules/extensibility-equinox/META-INF/MANIFEST.MF
+++ b/java/sca/modules/extensibility-equinox/META-INF/MANIFEST.MF
@@ -16,9 +16,11 @@ Bundle-ManifestVersion: 2
Bundle-Description: Apache Tuscany SCA Extensibility for Eclipse Equin
ox
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Import-Package: org.apache.tuscany.sca.extensibility;version="2.0.0",
+Import-Package: org.apache.tuscany.sca.core;version="2.0.0",
+ org.apache.tuscany.sca.extensibility;version="2.0.0",
org.eclipse.core.runtime.adaptor;resolution:=optional,
org.osgi.framework;version="1.4"
Bundle-SymbolicName: org.apache.tuscany.sca.extensibility.equinox
Bundle-DocURL: http://www.apache.org/
Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6
+Export-Package: org.apache.tuscany.sca.extensibility.equinox;version="2.0.0"
diff --git a/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java b/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
index 7e2d39f182..930b308dfc 100644
--- a/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
+++ b/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
@@ -28,6 +28,7 @@ import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
+import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
@@ -117,6 +118,10 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
return sb.toString();
}
+ public Bundle getBundle() {
+ return bundle;
+ }
+
}
/**
@@ -186,8 +191,8 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
return attributes;
}
- public ServiceDeclaration getFirstServiceDeclaration(String name) throws IOException {
- Set<ServiceDeclaration> declarations = getServiceDeclarations(name);
+ public ServiceDeclaration getServiceDeclaration(String name) throws IOException {
+ Collection<ServiceDeclaration> declarations = getServiceDeclarations(name);
if (declarations.isEmpty()) {
return null;
} else {
@@ -195,9 +200,9 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer {
}
}
- public Set<ServiceDeclaration> getServiceDeclarations(String serviceName) throws IOException {
+ public Collection<ServiceDeclaration> getServiceDeclarations(String serviceName) throws IOException {
boolean debug = logger.isLoggable(Level.FINE);
- Set<ServiceDeclaration> descriptors = new HashSet<ServiceDeclaration>();
+ Collection<ServiceDeclaration> descriptors = new HashSet<ServiceDeclaration>();
// http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/xpath/XPathFactory.html
boolean isPropertyFile = "javax.xml.xpath.XPathFactory".equals(serviceName);
diff --git a/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/OSGiExtensionPointRegistry.java b/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/OSGiExtensionPointRegistry.java
new file mode 100644
index 0000000000..07bf4dc18e
--- /dev/null
+++ b/java/sca/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/OSGiExtensionPointRegistry.java
@@ -0,0 +1,86 @@
+/*
+ * 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.extensibility.equinox;
+
+import java.util.Dictionary;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+
+/**
+ *
+ */
+public class OSGiExtensionPointRegistry extends DefaultExtensionPointRegistry {
+ private Map<Class<?>, ServiceRegistration> services = new ConcurrentHashMap<Class<?>, ServiceRegistration>();
+ private BundleContext bundleContext;
+
+ public OSGiExtensionPointRegistry(BundleContext bundleContext) {
+ super();
+ this.bundleContext = bundleContext;
+ }
+
+ @Override
+ protected <T> Object findExtensionPoint(Class<T> extensionPointType) {
+ ServiceRegistration registration = services.get(extensionPointType);
+ if (registration != null) {
+ ServiceReference ref = registration.getReference();
+ if (ref != null) {
+ return ref.getBundle().getBundleContext().getService(ref);
+ }
+ }
+ /*
+ else {
+ ServiceReference ref = bundleContext.getServiceReference(extensionPointType.getName());
+ if (ref != null) {
+ return bundleContext.getService(ref);
+ }
+ }
+ */
+ return null;
+ }
+
+ @Override
+ protected void registerExtensionPoint(Class<?> i, Object extensionPoint, ServiceDeclaration declaration) {
+ BundleContext context = bundleContext;
+ if (declaration instanceof EquinoxServiceDiscoverer.ServiceDeclarationImpl) {
+ EquinoxServiceDiscoverer.ServiceDeclarationImpl declarationImpl =
+ (EquinoxServiceDiscoverer.ServiceDeclarationImpl)declaration;
+ context = declarationImpl.getBundle().getBundleContext();
+ }
+ Dictionary<Object, Object> props = new java.util.Hashtable<Object, Object>();
+ ServiceRegistration registration = context.registerService(i.getName(), extensionPoint, props);
+ services.put(i, registration);
+ }
+
+ @Override
+ protected void unregisterExtensionPoint(Class<?> i) {
+ ServiceRegistration registration = services.get(i);
+ if (registration != null) {
+ registration.unregister();
+ }
+ services.remove(i);
+ }
+
+}
diff --git a/java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java b/java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java
index 642bad0b2b..8010ead253 100644
--- a/java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java
+++ b/java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java
@@ -26,8 +26,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
-import java.util.Set;
import java.util.jar.JarInputStream;
import java.util.jar.Manifest;
@@ -134,7 +134,7 @@ public class EquinoxServiceDiscovererTestCase {
@Test
public void testDiscovery() throws IOException {
- Set<ServiceDeclaration> descriptors = discoverer.getServiceDeclarations("test.TestService");
+ Collection<ServiceDeclaration> descriptors = discoverer.getServiceDeclarations("test.TestService");
Assert.assertEquals(1, descriptors.size());
descriptors = discoverer.getServiceDeclarations("notthere");
Assert.assertEquals(0, descriptors.size());
@@ -142,9 +142,9 @@ public class EquinoxServiceDiscovererTestCase {
@Test
public void testDiscoveryFirst() throws IOException {
- ServiceDeclaration descriptor = discoverer.getFirstServiceDeclaration("test.TestService");
+ ServiceDeclaration descriptor = discoverer.getServiceDeclaration("test.TestService");
Assert.assertNotNull(descriptor);
- descriptor = discoverer.getFirstServiceDeclaration("notthere");
+ descriptor = discoverer.getServiceDeclaration("notthere");
Assert.assertNull(descriptor);
}
diff --git a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java
index 12979723b1..3ed134dcec 100644
--- a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java
+++ b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.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.core;
@@ -41,9 +41,9 @@ import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
*/
public class DefaultExtensionPointRegistry implements ExtensionPointRegistry {
private Map<Class<?>, Object> extensionPoints = new HashMap<Class<?>, Object>();
-
+
/**
- * Constructs a new registry.
+ * Constructs a new registry.
*/
public DefaultExtensionPointRegistry() {
}
@@ -56,17 +56,25 @@ public class DefaultExtensionPointRegistry implements ExtensionPointRegistry {
*
* @throws IllegalArgumentException if extensionPoint is null
*/
- public void addExtensionPoint(Object extensionPoint) {
+ public synchronized void addExtensionPoint(Object extensionPoint) {
+ addExtensionPoint(extensionPoint, null);
+ }
+
+ public synchronized void addExtensionPoint(Object extensionPoint, ServiceDeclaration declaration) {
if (extensionPoint == null) {
throw new IllegalArgumentException("Cannot register null as an ExtensionPoint");
}
Set<Class<?>> interfaces = getAllInterfaces(extensionPoint.getClass());
for (Class<?> i : interfaces) {
- extensionPoints.put(i, extensionPoint);
+ registerExtensionPoint(i, extensionPoint, declaration);
}
}
-
+
+ protected void registerExtensionPoint(Class<?> i, Object extensionPoint, ServiceDeclaration declaration) {
+ extensionPoints.put(i, extensionPoint);
+ }
+
private Constructor<?> getConstructor(Constructor<?>[] constructors, Class<?>[] paramTypes) {
for (Constructor<?> c : constructors) {
Class<?>[] types = c.getParameterTypes();
@@ -94,20 +102,20 @@ public class DefaultExtensionPointRegistry implements ExtensionPointRegistry {
*
* @throws IllegalArgumentException if extensionPointType is null
*/
- public <T> T getExtensionPoint(Class<T> extensionPointType) {
+ public synchronized <T> T getExtensionPoint(Class<T> extensionPointType) {
if (extensionPointType == null) {
throw new IllegalArgumentException("Cannot lookup ExtensionPoint of type null");
}
- Object extensionPoint = extensionPoints.get(extensionPointType);
+ Object extensionPoint = findExtensionPoint(extensionPointType);
if (extensionPoint == null) {
-
- // Dynamically load an extension point class declared under META-INF/services
+
+ // Dynamically load an extension point class declared under META-INF/services
try {
- ServiceDeclaration extensionPointDeclaration = ServiceDiscovery.getInstance().getFirstServiceDeclaration(extensionPointType.getName());
+ ServiceDeclaration extensionPointDeclaration = ServiceDiscovery.getInstance().getServiceDeclaration(extensionPointType.getName());
if (extensionPointDeclaration != null) {
Class<?> extensionPointClass = extensionPointDeclaration.loadClass();
-
+
// Construct the extension point
Constructor<?>[] constructors = extensionPointClass.getConstructors();
Constructor<?> constructor = getConstructor(constructors, new Class<?>[] {ExtensionPointRegistry.class});
@@ -122,9 +130,9 @@ public class DefaultExtensionPointRegistry implements ExtensionPointRegistry {
"No valid constructor is found for " + extensionPointClass);
}
}
-
+
// Cache the loaded extension point
- addExtensionPoint(extensionPoint);
+ addExtensionPoint(extensionPoint, extensionPointDeclaration);
}
} catch (InvocationTargetException e) {
throw new IllegalArgumentException(e);
@@ -141,6 +149,10 @@ public class DefaultExtensionPointRegistry implements ExtensionPointRegistry {
return extensionPointType.cast(extensionPoint);
}
+ protected <T> Object findExtensionPoint(Class<T> extensionPointType) {
+ return extensionPoints.get(extensionPointType);
+ }
+
/**
* Remove an extension point based on the interface that it implements
*
@@ -148,17 +160,21 @@ public class DefaultExtensionPointRegistry implements ExtensionPointRegistry {
*
* @throws IllegalArgumentException if extensionPoint is null
*/
- public void removeExtensionPoint(Object extensionPoint) {
+ public synchronized void removeExtensionPoint(Object extensionPoint) {
if (extensionPoint == null) {
throw new IllegalArgumentException("Cannot remove null as an ExtensionPoint");
}
Set<Class<?>> interfaces = getAllInterfaces(extensionPoint.getClass());
for (Class<?> i : interfaces) {
- extensionPoints.remove(i);
+ unregisterExtensionPoint(i);
}
}
+ protected void unregisterExtensionPoint(Class<?> i) {
+ extensionPoints.remove(i);
+ }
+
/**
* Returns the set of interfaces implemented by the given class and its
* ancestors or a blank set if none
diff --git a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java
index 80c4e2b69d..54d0d118bb 100644
--- a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java
+++ b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java
@@ -109,7 +109,7 @@ public class DefaultFactoryExtensionPoint implements FactoryExtensionPoint {
// Dynamically load a factory class declared under META-INF/services
try {
ServiceDeclaration factoryDeclaration =
- ServiceDiscovery.getInstance().getFirstServiceDeclaration(factoryInterface.getName());
+ ServiceDiscovery.getInstance().getServiceDeclaration(factoryInterface.getName());
if (factoryDeclaration != null) {
Class<?> factoryClass = factoryDeclaration.loadClass();
try {
diff --git a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java
index f5aced9b50..c19949d77f 100644
--- a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java
+++ b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java
@@ -6,23 +6,23 @@
* 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.core;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
-import java.util.Set;
import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
@@ -35,9 +35,9 @@ import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
public class DefaultModuleActivatorExtensionPoint implements ModuleActivatorExtensionPoint {
private List<ModuleActivator> activators = new ArrayList<ModuleActivator>();
private boolean loadedActivators;
-
+
/**
- * Constructs a new extension point.
+ * Constructs a new extension point.
*/
public DefaultModuleActivatorExtensionPoint() {
}
@@ -45,12 +45,12 @@ public class DefaultModuleActivatorExtensionPoint implements ModuleActivatorExte
public void addModuleActivator(ModuleActivator activator) {
activators.add(activator);
}
-
+
public List<ModuleActivator> getModuleActivators() {
loadModuleActivators();
return activators;
}
-
+
public void removeModuleActivator(Object activator) {
activators.remove(activator);
}
@@ -63,13 +63,14 @@ public class DefaultModuleActivatorExtensionPoint implements ModuleActivatorExte
return;
// Get the activator service declarations
- Set<ServiceDeclaration> activatorDeclarations;
+ Collection<ServiceDeclaration> activatorDeclarations;
try {
- activatorDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations(ModuleActivator.class.getName());
+ // Load the module activators by ranking
+ activatorDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations(ModuleActivator.class.getName(), true);
} catch (IOException e) {
throw new IllegalStateException(e);
}
-
+
// Load and instantiate module activators
for (ServiceDeclaration activatorDeclaration: activatorDeclarations) {
ModuleActivator activator;
@@ -85,7 +86,7 @@ public class DefaultModuleActivatorExtensionPoint implements ModuleActivatorExte
}
addModuleActivator(activator);
}
-
+
loadedActivators = true;
}
diff --git a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityExtensionPoint.java b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityExtensionPoint.java
index fd85c5afa0..e059a55ad0 100644
--- a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityExtensionPoint.java
+++ b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityExtensionPoint.java
@@ -153,7 +153,7 @@ public class DefaultUtilityExtensionPoint implements UtilityExtensionPoint {
// Dynamically load a utility class declared under META-INF/services/"utilityType"
try {
- ServiceDeclaration utilityDeclaration =ServiceDiscovery.getInstance().getFirstServiceDeclaration(utilityType.getName());
+ ServiceDeclaration utilityDeclaration =ServiceDiscovery.getInstance().getServiceDeclaration(utilityType.getName());
if (utilityDeclaration != null) {
Class<?> utilityClass = utilityDeclaration.loadClass();
diff --git a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java
index 41764f35b9..13f967c053 100644
--- a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java
+++ b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.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;
@@ -30,13 +30,13 @@ import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
-import java.util.Set;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -129,7 +129,7 @@ public class ContextClassLoaderServiceDiscoverer 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
*/
@@ -161,8 +161,8 @@ public class ContextClassLoaderServiceDiscoverer implements ServiceDiscoverer {
return attributes;
}
- public ServiceDeclaration getFirstServiceDeclaration(String name) throws IOException {
- Set<ServiceDeclaration> declarations = getServiceDeclarations(name);
+ public ServiceDeclaration getServiceDeclaration(String name) throws IOException {
+ Collection<ServiceDeclaration> declarations = getServiceDeclarations(name);
if (declarations.isEmpty()) {
return null;
} else {
@@ -170,8 +170,8 @@ public class ContextClassLoaderServiceDiscoverer implements ServiceDiscoverer {
}
}
- public Set<ServiceDeclaration> getServiceDeclarations(String serviceName) {
- Set<ServiceDeclaration> descriptors = new HashSet<ServiceDeclaration>();
+ public Collection<ServiceDeclaration> getServiceDeclarations(String serviceName) {
+ Collection<ServiceDeclaration> descriptors = new HashSet<ServiceDeclaration>();
// http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/xpath/XPathFactory.html
boolean isPropertyFile = "javax.xml.xpath.XPathFactory".equals(serviceName);
@@ -192,9 +192,9 @@ public class ContextClassLoaderServiceDiscoverer implements ServiceDiscoverer {
URLConnection connection = url.openConnection();
// TUSCANY-2539
// Don't cache connections by default to stop Tuscany locking contribution jar files
- // done here as this is one of the first places we open a stream and the only way to
+ // done here as this is one of the first places we open a stream and the only way to
// set the default is to set it on an instance of URLConnection
- connection.setDefaultUseCaches(false);
+ connection.setDefaultUseCaches(false);
connection.setUseCaches(false);
return url.openStream();
}
diff --git a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java
index 6adf083411..9b939e8228 100644
--- a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java
+++ b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscoverer.java
@@ -20,7 +20,7 @@
package org.apache.tuscany.sca.extensibility;
import java.io.IOException;
-import java.util.Set;
+import java.util.Collection;
/**
* A SPI that allows different implementations of discovering service declarations
@@ -34,7 +34,7 @@ public interface ServiceDiscoverer {
* @return set of service declarations
* @throws IOException
*/
- public Set<ServiceDeclaration> getServiceDeclarations(String name) throws IOException;
+ public Collection<ServiceDeclaration> getServiceDeclarations(String name) throws IOException;
/**
* Get first service declaration class for the given interface
@@ -44,6 +44,6 @@ public interface ServiceDiscoverer {
* @throws IOException
* @throws ClassNotFoundException
*/
- public ServiceDeclaration getFirstServiceDeclaration(String name) throws IOException;
+ public ServiceDeclaration getServiceDeclaration(String name) throws IOException;
}
diff --git a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java
index 131c2b5041..3857151bec 100644
--- a/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java
+++ b/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java
@@ -21,11 +21,10 @@ package org.apache.tuscany.sca.extensibility;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
-import java.util.Set;
-import java.util.logging.Logger;
/**
* Service discovery for Tuscany based on J2SE Jar service provider spec.
@@ -36,8 +35,6 @@ import java.util.logging.Logger;
* @version $Rev$ $Date$
*/
public final class ServiceDiscovery implements ServiceDiscoverer {
- private static final Logger logger = Logger.getLogger(ServiceDiscovery.class.getName());
-
private final static ServiceDiscovery INSTANCE = new ServiceDiscovery();
private ServiceDiscoverer discoverer;
@@ -60,7 +57,7 @@ public final class ServiceDiscovery implements ServiceDiscoverer {
return discoverer;
}
try {
- //FIXME Remove that upside-down dependency
+ // FIXME: This is a hack to trigger the activation of the extensibility-equinox bundle in OSGi
Class.forName("org.apache.tuscany.sca.extensibility.equinox.EquinoxServiceDiscoverer");
if (discoverer != null) {
return discoverer;
@@ -78,26 +75,46 @@ public final class ServiceDiscovery implements ServiceDiscoverer {
discoverer = sd;
}
- public Set<ServiceDeclaration> getServiceDeclarations(String name) throws IOException {
- Set<ServiceDeclaration> services = getServiceDiscoverer().getServiceDeclarations(name);
- return services;
+ public Collection<ServiceDeclaration> getServiceDeclarations(String name) throws IOException {
+ return getServiceDeclarations(name, false);
+ }
+
+ public Collection<ServiceDeclaration> getServiceDeclarations(String name, boolean byRanking) throws IOException {
+ Collection<ServiceDeclaration> declarations = getServiceDiscoverer().getServiceDeclarations(name);
+ if (!byRanking) {
+ return declarations;
+ }
+ if (!declarations.isEmpty()) {
+ List<ServiceDeclaration> declarationList = new ArrayList<ServiceDeclaration>(declarations);
+ Collections.sort(declarationList, ServiceComparator.DESCENDING_ORDER);
+ return declarationList;
+ } else {
+ return Collections.emptyList();
+ }
}
- public ServiceDeclaration getFirstServiceDeclaration(final String name) throws IOException {
+ /**
+ * Get the service declaration. If there are more than one services, the one with highest ranking will
+ * be returned.
+ */
+ public ServiceDeclaration getServiceDeclaration(final String name) throws IOException {
// ServiceDeclaration service = getServiceDiscoverer().getFirstServiceDeclaration(name);
// return service;
- Set<ServiceDeclaration> declarations = getServiceDeclarations(name);
+ Collection<ServiceDeclaration> declarations = getServiceDeclarations(name);
if (!declarations.isEmpty()) {
List<ServiceDeclaration> declarationList = new ArrayList<ServiceDeclaration>(declarations);
- Collections.sort(declarationList, ServiceComparator.INSTANCE);
- return declarationList.get(declarationList.size() - 1);
+ Collections.sort(declarationList, ServiceComparator.DESCENDING_ORDER);
+ return declarationList.get(0);
} else {
return null;
}
}
+ /**
+ * Compare service declarations by ranking
+ */
private static class ServiceComparator implements Comparator<ServiceDeclaration> {
- private final static ServiceComparator INSTANCE = new ServiceComparator();
+ private final static Comparator<ServiceDeclaration> DESCENDING_ORDER = new ServiceComparator();
public int compare(ServiceDeclaration o1, ServiceDeclaration o2) {
int rank1 = 0;
@@ -110,7 +127,7 @@ public final class ServiceDiscovery implements ServiceDiscoverer {
if (r2 != null) {
rank2 = Integer.parseInt(r2);
}
- return rank1 - rank2;
+ return rank2 - rank1; // descending
}
}
diff --git a/java/sca/modules/extensibility/src/test/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscovererTestCase.java b/java/sca/modules/extensibility/src/test/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscovererTestCase.java
index cfab64bef7..c0aac21596 100644
--- a/java/sca/modules/extensibility/src/test/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscovererTestCase.java
+++ b/java/sca/modules/extensibility/src/test/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscovererTestCase.java
@@ -6,21 +6,21 @@
* 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;
import java.io.IOException;
-import java.util.Set;
+import java.util.Collection;
import org.junit.AfterClass;
import org.junit.Assert;
@@ -43,26 +43,26 @@ public class ContextClassLoaderServiceDiscovererTestCase {
@Test
public void testDiscovery() {
- Set<ServiceDeclaration> discriptors =
+ Collection<ServiceDeclaration> discriptors =
discover.getServiceDeclarations("org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint");
Assert.assertEquals(1, discriptors.size());
discriptors =
discover.getServiceDeclarations("notthere");
Assert.assertEquals(0, discriptors.size());
}
-
+
@Test
public void testDiscoveryFirst() throws IOException {
ServiceDeclaration descriptor =
- discover.getFirstServiceDeclaration("org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint");
+ discover.getServiceDeclaration("org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint");
Assert.assertNotNull(descriptor);
- descriptor = discover.getFirstServiceDeclaration("notthere");
+ descriptor = discover.getServiceDeclaration("notthere");
Assert.assertNull(descriptor);
}
-
+
@Test
public void testXPathFactory() {
- Set<ServiceDeclaration> discriptors = discover.getServiceDeclarations("javax.xml.xpath.XPathFactory");
+ Collection<ServiceDeclaration> discriptors = discover.getServiceDeclarations("javax.xml.xpath.XPathFactory");
if (!discriptors.isEmpty()) {
ServiceDeclaration d = discriptors.iterator().next();
Assert.assertNotNull(d.getClassName());
diff --git a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java
index 97513fefd9..41cf08d771 100644
--- a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java
+++ b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/DefaultJavaInterfaceFactory.java
@@ -19,8 +19,8 @@
package org.apache.tuscany.sca.interfacedef.java;
import java.io.IOException;
+import java.util.Collection;
import java.util.List;
-import java.util.Set;
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
@@ -68,7 +68,7 @@ public class DefaultJavaInterfaceFactory extends JavaInterfaceFactoryImpl implem
}
// Get the databinding service declarations
- Set<ServiceDeclaration> visitorDeclarations;
+ Collection<ServiceDeclaration> visitorDeclarations;
try {
visitorDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations(JavaInterfaceVisitor.class.getName());
} catch (IOException e) {
diff --git a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/JavaInterface.java b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/JavaInterface.java
index 9c09ef50c2..0a2edb02c7 100644
--- a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/JavaInterface.java
+++ b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/JavaInterface.java
@@ -19,6 +19,7 @@
package org.apache.tuscany.sca.interfacedef.java;
import javax.xml.namespace.QName;
+
import org.apache.tuscany.sca.assembly.Base;
import org.apache.tuscany.sca.interfacedef.Interface;
diff --git a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceImpl.java b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceImpl.java
index 42e45317b7..294127910f 100644
--- a/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceImpl.java
+++ b/java/sca/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/impl/JavaInterfaceImpl.java
@@ -19,6 +19,7 @@
package org.apache.tuscany.sca.interfacedef.java.impl;
import javax.xml.namespace.QName;
+
import org.apache.tuscany.sca.interfacedef.impl.InterfaceImpl;
import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
diff --git a/java/sca/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java b/java/sca/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java
index c9d4efe451..a4b3c6e84d 100644
--- a/java/sca/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java
+++ b/java/sca/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java
@@ -160,8 +160,6 @@ public abstract class NodeFactory extends DefaultNodeConfigurationFactory {
return nodeFactory;
}
- NodeFactory scaNodeFactory = null;
-
try {
// final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
// Use reflection APIs to call ServiceDiscovery to avoid hard dependency to tuscany-extensibility
@@ -169,14 +167,13 @@ public abstract class NodeFactory extends DefaultNodeConfigurationFactory {
Class<?> discoveryClass = Class.forName("org.apache.tuscany.sca.extensibility.ServiceDiscovery");
Object instance = discoveryClass.getMethod("getInstance").invoke(null);
Object factoryDeclaration =
- discoveryClass.getMethod("getFirstServiceDeclaration", String.class).invoke(instance,
- NodeFactory.class
- .getName());
+ discoveryClass.getMethod("getServiceDeclaration", String.class).invoke(instance,
+ NodeFactory.class.getName());
if (factoryDeclaration != null) {
Class<?> factoryImplClass =
(Class<?>)factoryDeclaration.getClass().getMethod("loadClass").invoke(factoryDeclaration);
- scaNodeFactory = (NodeFactory)factoryImplClass.newInstance();
- return scaNodeFactory;
+ nodeFactory = (NodeFactory)factoryImplClass.newInstance();
+ return nodeFactory;
}
} catch (ClassNotFoundException e) {
// Ignore
@@ -186,8 +183,8 @@ public abstract class NodeFactory extends DefaultNodeConfigurationFactory {
String className = "org.apache.tuscany.sca.node.impl.NodeFactoryImpl";
Class<?> cls = Class.forName(className);
- scaNodeFactory = (NodeFactory)cls.newInstance();
- return scaNodeFactory;
+ nodeFactory = (NodeFactory)cls.newInstance();
+ return nodeFactory;
} catch (Exception e) {
throw new ServiceRuntimeException(e);
diff --git a/java/sca/modules/node-impl-osgi/META-INF/MANIFEST.MF b/java/sca/modules/node-impl-osgi/META-INF/MANIFEST.MF
index e055ec9afe..9ef9fb5a07 100644
--- a/java/sca/modules/node-impl-osgi/META-INF/MANIFEST.MF
+++ b/java/sca/modules/node-impl-osgi/META-INF/MANIFEST.MF
@@ -21,6 +21,7 @@ Import-Package: javax.xml.namespace,
org.apache.tuscany.sca.definitions;version="2.0.0",
org.apache.tuscany.sca.definitions.util;version="2.0.0",
org.apache.tuscany.sca.definitions.xml;version="2.0.0",
+ org.apache.tuscany.sca.extensibility.equinox;version="2.0.0",
org.apache.tuscany.sca.implementation.node;version="2.0.0",
org.apache.tuscany.sca.monitor;version="2.0.0",
org.apache.tuscany.sca.node;version="2.0.0",
diff --git a/java/sca/modules/node-impl-osgi/pom.xml b/java/sca/modules/node-impl-osgi/pom.xml
index 5e84c4c2bd..1987a833e1 100644
--- a/java/sca/modules/node-impl-osgi/pom.xml
+++ b/java/sca/modules/node-impl-osgi/pom.xml
@@ -74,7 +74,6 @@
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-extensibility-equinox</artifactId>
<version>2.0-SNAPSHOT</version>
- <scope>runtime</scope>
</dependency>
<dependency>
diff --git a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/OSGiNodeFactoryImpl.java b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/OSGiNodeFactoryImpl.java
index 1a4befb3e3..4dfa7ace90 100644
--- a/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/OSGiNodeFactoryImpl.java
+++ b/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/OSGiNodeFactoryImpl.java
@@ -25,6 +25,7 @@ import java.util.Dictionary;
import java.util.Hashtable;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.extensibility.equinox.OSGiExtensionPointRegistry;
import org.apache.tuscany.sca.node.configuration.NodeConfiguration;
import org.apache.tuscany.sca.node.configuration.NodeConfigurationFactory;
import org.apache.tuscany.sca.node.impl.NodeFactoryImpl;
@@ -104,4 +105,9 @@ public class OSGiNodeFactoryImpl extends NodeFactoryImpl {
return configuration.getExtensions().get(0);
}
+ @Override
+ protected ExtensionPointRegistry createExtensionPointRegistry() {
+ return new OSGiExtensionPointRegistry(bundleContext);
+ }
+
}
diff --git a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
index 51a1a6579c..6bca9fc9e7 100644
--- a/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
+++ b/java/sca/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
@@ -149,7 +149,7 @@ public class NodeFactoryImpl extends NodeFactory {
* @throws Exception
*/
private <T> T getFactory(Class<T> factory) throws Exception {
- ServiceDeclaration sd = ServiceDiscovery.getInstance().getFirstServiceDeclaration(factory.getName());
+ ServiceDeclaration sd = ServiceDiscovery.getInstance().getServiceDeclaration(factory.getName());
if (sd != null) {
return factory.cast(sd.loadClass().newInstance());
} else {
@@ -188,9 +188,9 @@ public class NodeFactoryImpl extends NodeFactory {
node.destroy();
}
nodes.clear();
- // Stop the runtime modules
- for (ModuleActivator moduleActivator : moduleActivators) {
- moduleActivator.stop(extensionPoints);
+ // Stop the runtime modules in the reverse order
+ for (int i = moduleActivators.size() - 1; i >= 0; i--) {
+ moduleActivators.get(i).stop(extensionPoints);
}
// Stop and destroy the work manager
@@ -356,7 +356,7 @@ public class NodeFactoryImpl extends NodeFactory {
long start = currentTimeMillis();
// Create extension point registry
- extensionPoints = new DefaultExtensionPointRegistry();
+ extensionPoints = createExtensionPointRegistry();
// Enable schema validation only of the logger level is FINE or higher
ValidationSchemaExtensionPoint schemas =
@@ -471,6 +471,10 @@ public class NodeFactoryImpl extends NodeFactory {
}
}
+ protected ExtensionPointRegistry createExtensionPointRegistry() {
+ return new DefaultExtensionPointRegistry();
+ }
+
Composite configureNode(NodeConfiguration configuration) throws Exception {
List<Contribution> contributions = new ArrayList<Contribution>();
diff --git a/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/builder/DefaultContributionBuilderExtensionPoint.java b/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/builder/DefaultContributionBuilderExtensionPoint.java
index 8ce6f53f20..c94601be67 100644
--- a/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/builder/DefaultContributionBuilderExtensionPoint.java
+++ b/java/sca/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/builder/DefaultContributionBuilderExtensionPoint.java
@@ -20,9 +20,9 @@
package org.apache.tuscany.sca.workspace.builder;
import java.lang.reflect.Constructor;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
-import java.util.Set;
import org.apache.tuscany.sca.contribution.Contribution;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
@@ -70,7 +70,7 @@ public class DefaultContributionBuilderExtensionPoint implements ContributionBui
FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class);
// Get the provider factory service declarations
- Set<ServiceDeclaration> builderDeclarations;
+ Collection<ServiceDeclaration> builderDeclarations;
ServiceDiscovery serviceDiscovery = ServiceDiscovery.getInstance();
try {
builderDeclarations = serviceDiscovery.getServiceDeclarations(ContributionBuilder.class.getName());