diff options
Diffstat (limited to 'sca-java-2.x/trunk/modules/core-spi/src/main/java/org')
2 files changed, 21 insertions, 0 deletions
diff --git a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java index 8621baca2e..6aad6786e3 100644 --- a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java +++ b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/DefaultProviderFactoryExtensionPoint.java @@ -102,6 +102,17 @@ public class DefaultProviderFactoryExtensionPoint implements ProviderFactoryExte loadProviderFactories(); return policyProviderFactories; } + + public <P extends ProviderFactory> Collection<P> getProviderFactories(Class<P> factoryType) { + loadProviderFactories(); + List<P> factories = new ArrayList<P>(); + for (ProviderFactory pf : providerFactories.values()) { + if (factoryType.isInstance(pf)) { + factories.add(factoryType.cast(pf)); + } + } + return factories; + } /** * Load provider factories declared under META-INF/services. diff --git a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/ProviderFactoryExtensionPoint.java b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/ProviderFactoryExtensionPoint.java index d8f9973338..54dd6cc912 100644 --- a/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/ProviderFactoryExtensionPoint.java +++ b/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/provider/ProviderFactoryExtensionPoint.java @@ -19,6 +19,7 @@ package org.apache.tuscany.sca.provider; +import java.util.Collection; import java.util.List; @@ -60,4 +61,13 @@ public interface ProviderFactoryExtensionPoint { */ List<PolicyProviderFactory> getPolicyProviderFactories(); + /** + * Get a collection of provider factories by the factory type + * @param <P> + * @param factoryType The factory type such as BindingProviderFactory + * @return a collection of provider factories of the factory type + */ + <P extends ProviderFactory> Collection<P> getProviderFactories(Class<P> factoryType); + + } |