You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2011/04/09 21:37:55 UTC

svn commit: r1090658 - /commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/SPInterface.java

Author: simonetripodi
Date: Sat Apr  9 19:37:55 2011
New Revision: 1090658

URL: http://svn.apache.org/viewvc?rev=1090658&view=rev
Log:
added 'shortcuts' static methods to create SPInterface instances, writing 'new SPInterface<MyType>(MyType.class)' is redundant

Modified:
    commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/SPInterface.java

Modified: commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/SPInterface.java
URL: http://svn.apache.org/viewvc/commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/SPInterface.java?rev=1090658&r1=1090657&r2=1090658&view=diff
==============================================================================
--- commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/SPInterface.java (original)
+++ commons/proper/discovery/trunk/src/java/org/apache/commons/discovery/tools/SPInterface.java Sat Apr  9 19:37:55 2011
@@ -34,6 +34,75 @@ import org.apache.commons.discovery.Disc
 public class SPInterface<T> {
 
     /**
+     * Construct object representing Class {@code provider}.
+     *
+     * @param <T> The SPI type
+     * @param provider The SPI class
+     * @return A new object representing Class {@code provider}
+     * @since 0.5
+     */
+    public static <T> SPInterface<T> newSPInterface(Class<T> provider) {
+        return newSPInterface(provider, provider.getName());
+    }
+
+    /**
+     * Construct object representing Class {@code provider}.
+     *
+     * @param <T> The SPI type
+     * @param provider The SPI class
+     * @param propertyName when looking for the name of a class implementing
+     *        the provider class, a discovery strategy may involve looking for
+     *        (system or other) properties having either the name of the class
+     *        (provider) or the <code>propertyName</code>.
+     * @return A new object representing Class {@code provider}
+     * @since 0.5
+     */
+    public static <T> SPInterface<T> newSPInterface(Class<T> provider, String propertyName) {
+        return new SPInterface<T>(provider, propertyName);
+    }
+
+    /**
+     * Construct object representing Class {@code provider}.
+     *
+     * @param <T> The SPI type
+     * @param provider The SPI class
+     * @param constructorParamClasses classes representing the
+     *        constructor argument types
+     * @param constructorParams objects representing the
+     *        constructor arguments
+     * @return A new object representing Class {@code provider}
+     * @since 0.5
+     */
+    public static <T> SPInterface<T> newSPInterface(Class<T> provider,
+            Class<?> constructorParamClasses[],
+            Object constructorParams[]) {
+        return newSPInterface(provider, provider.getName(), constructorParamClasses, constructorParams);
+    }
+
+    /**
+     * Construct object representing Class {@code provider}.
+     *
+     * @param <T> The SPI type
+     * @param provider The SPI class
+     * @param propertyName when looking for the name of a class implementing
+     *        the provider class, a discovery strategy may involve looking for
+     *        (system or other) properties having either the name of the class
+     *        (provider) or the <code>propertyName</code>.
+     * @param constructorParamClasses classes representing the
+     *        constructor argument types
+     * @param constructorParams objects representing the
+     *        constructor arguments
+     * @return A new object representing Class {@code provider}
+     * @since 0.5
+     */
+    public static <T> SPInterface<T> newSPInterface(Class<T> provider,
+            String propertyName,
+            Class<?> constructorParamClasses[],
+            Object constructorParams[]) {
+        return new SPInterface<T>(provider, propertyName, constructorParamClasses, constructorParams);
+    }
+
+    /**
      * The service programming interface: intended to be
      * an interface or abstract class, but not limited
      * to those two.