You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by rs...@apache.org on 2002/08/22 17:20:43 UTC

cvs commit: jakarta-commons/discovery/src/java/org/apache/commons/discovery/strategy DefaultDiscoverStrategy.java LoadStrategy.java DefaultLoadStrategy.java

rsitze      2002/08/22 08:20:42

  Modified:    discovery/src/java/org/apache/commons/discovery
                        DiscoverClass.java ResourceDiscovery.java
                        ServiceDiscoveryTask.java ClassDiscovery.java
                        ServiceDiscovery.java
               discovery/src/java/org/apache/commons/discovery/strategy
                        DefaultDiscoverStrategy.java LoadStrategy.java
                        DefaultLoadStrategy.java
  Log:
  Linking 'tools' to discovery classes.
  
  Revision  Changes    Path
  1.8       +23 -10    jakarta-commons/discovery/src/java/org/apache/commons/discovery/DiscoverClass.java
  
  Index: DiscoverClass.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/discovery/src/java/org/apache/commons/discovery/DiscoverClass.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DiscoverClass.java	21 Aug 2002 22:48:45 -0000	1.7
  +++ DiscoverClass.java	22 Aug 2002 15:20:41 -0000	1.8
  @@ -67,7 +67,9 @@
   import org.apache.commons.discovery.base.Environment;
   import org.apache.commons.discovery.base.ImplClass;
   import org.apache.commons.discovery.base.SPInterface;
  +import org.apache.commons.discovery.strategy.DefaultDiscoverStrategy;
   import org.apache.commons.discovery.strategy.DefaultLoadStrategy;
  +import org.apache.commons.discovery.strategy.DiscoverStrategy;
   import org.apache.commons.discovery.strategy.LoadStrategy;
   
   
  @@ -488,8 +490,10 @@
       public static Class find(Environment env, SPInterface spi, Properties properties, ImplClass defaultImpl)
           throws DiscoveryException
       {
  -        LoadStrategy strategy = new DefaultLoadStrategy(env, spi);
  -        return strategy.loadClass(properties, defaultImpl).getImplClass();
  +        LoadStrategy loadStrategy = new DefaultLoadStrategy(env, spi);
  +        DiscoverStrategy discoverStrategy = new DefaultDiscoverStrategy();
  +        String className = discoverStrategy.discoverClassName(env, spi, properties);
  +        return loadStrategy.loadClass(className, defaultImpl).getImplClass();
       }
       
       /**
  @@ -522,9 +526,13 @@
       public static Class find(Environment env, SPInterface spi, String propertiesFileName, ImplClass defaultImpl)
           throws DiscoveryException
       {
  -        LoadStrategy strategy = new DefaultLoadStrategy(env, spi);
  -        return strategy.loadClass(strategy.loadProperties(propertiesFileName),
  -                                  defaultImpl).getImplClass();
  +        LoadStrategy loadStrategy = new DefaultLoadStrategy(env, spi);
  +        DiscoverStrategy discoverStrategy = new DefaultDiscoverStrategy();
  +        String className =
  +            discoverStrategy.discoverClassName(env, spi,
  +                    loadStrategy.loadProperties(propertiesFileName));
  +
  +        return loadStrategy.loadClass(className, defaultImpl).getImplClass();
       }
       
       /**
  @@ -768,8 +776,10 @@
                  NoSuchMethodException,
                  InvocationTargetException
       {
  -        LoadStrategy strategy = new DefaultLoadStrategy(env, spi);
  -        return strategy.loadClass(properties, defaultImpl).newInstance();
  +        LoadStrategy loadStrategy = new DefaultLoadStrategy(env, spi);
  +        DiscoverStrategy discoverStrategy = new DefaultDiscoverStrategy();
  +        String className = discoverStrategy.discoverClassName(env, spi, properties);
  +        return loadStrategy.loadClass(className, defaultImpl).newInstance();
       }
       
       /**
  @@ -810,8 +820,11 @@
                  NoSuchMethodException,
                  InvocationTargetException
       {
  -        LoadStrategy strategy = new DefaultLoadStrategy(env, spi);
  -        Properties properties = strategy.loadProperties(propertiesFileName);
  -        return strategy.loadClass(properties, defaultImpl).newInstance();
  +        LoadStrategy loadStrategy = new DefaultLoadStrategy(env, spi);
  +        DiscoverStrategy discoverStrategy = new DefaultDiscoverStrategy();
  +        String className =
  +            discoverStrategy.discoverClassName(env, spi,
  +                    loadStrategy.loadProperties(propertiesFileName));
  +        return loadStrategy.loadClass(className, defaultImpl).newInstance();
       }
   }
  
  
  
  1.6       +0 -9      jakarta-commons/discovery/src/java/org/apache/commons/discovery/ResourceDiscovery.java
  
  Index: ResourceDiscovery.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/discovery/src/java/org/apache/commons/discovery/ResourceDiscovery.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ResourceDiscovery.java	22 Aug 2002 14:23:27 -0000	1.5
  +++ ResourceDiscovery.java	22 Aug 2002 15:20:41 -0000	1.6
  @@ -99,15 +99,6 @@
       }
   
       /**
  -     * @deprecated
  -     */
  -    public static ResourceDiscovery newInstance() {
  -        // This is _not_ singleton.
  -        return new ResourceDiscovery();
  -        // XXX Check if JDK1.1 is used no longer necessary.
  -    }
  -
  -    /**
        * Specify set of class loaders to be used in searching.
        */
       public void setClassLoaders(ClassLoaders loaders) {
  
  
  
  1.8       +1 -1      jakarta-commons/discovery/src/java/org/apache/commons/discovery/ServiceDiscoveryTask.java
  
  Index: ServiceDiscoveryTask.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/discovery/src/java/org/apache/commons/discovery/ServiceDiscoveryTask.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ServiceDiscoveryTask.java	22 Aug 2002 14:23:27 -0000	1.7
  +++ ServiceDiscoveryTask.java	22 Aug 2002 15:20:41 -0000	1.8
  @@ -92,7 +92,7 @@
       public void execute() throws Exception {
           System.out.println("XXX ");
           
  -        ResourceDiscovery disc=ResourceDiscovery.newInstance();
  +        ResourceDiscovery disc = new ResourceDiscovery();
           disc.addClassLoader( JDKHooks.getJDKHooks().getThreadContextClassLoader() );
           disc.addClassLoader( this.getClass().getClassLoader() );
           
  
  
  
  1.2       +1 -1      jakarta-commons/discovery/src/java/org/apache/commons/discovery/ClassDiscovery.java
  
  Index: ClassDiscovery.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/discovery/src/java/org/apache/commons/discovery/ClassDiscovery.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ClassDiscovery.java	22 Aug 2002 14:23:27 -0000	1.1
  +++ ClassDiscovery.java	22 Aug 2002 15:20:41 -0000	1.2
  @@ -81,7 +81,7 @@
       
       /** Construct a new class discoverer
        */
  -    protected ClassDiscovery() {
  +    public ClassDiscovery() {
       }
       
       /** Construct a new class discoverer
  
  
  
  1.6       +1 -1      jakarta-commons/discovery/src/java/org/apache/commons/discovery/ServiceDiscovery.java
  
  Index: ServiceDiscovery.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/discovery/src/java/org/apache/commons/discovery/ServiceDiscovery.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ServiceDiscovery.java	22 Aug 2002 14:23:27 -0000	1.5
  +++ ServiceDiscovery.java	22 Aug 2002 15:20:41 -0000	1.6
  @@ -99,7 +99,7 @@
       
       /** Construct a new service discoverer
        */
  -    protected ServiceDiscovery() {
  +    public ServiceDiscovery() {
           super();
       }
       
  
  
  
  1.2       +18 -54    jakarta-commons/discovery/src/java/org/apache/commons/discovery/strategy/DefaultDiscoverStrategy.java
  
  Index: DefaultDiscoverStrategy.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/discovery/src/java/org/apache/commons/discovery/strategy/DefaultDiscoverStrategy.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultDiscoverStrategy.java	14 Aug 2002 21:46:21 -0000	1.1
  +++ DefaultDiscoverStrategy.java	22 Aug 2002 15:20:42 -0000	1.2
  @@ -61,13 +61,12 @@
   
   package org.apache.commons.discovery.strategy;
   
  -import java.io.BufferedReader;
  -import java.io.IOException;
  -import java.io.InputStream;
  -import java.io.InputStreamReader;
  +import java.util.Enumeration;
   import java.util.Properties;
   import java.util.Vector;
   
  +import org.apache.commons.discovery.ResourceInfo;
  +import org.apache.commons.discovery.ServiceDiscovery;
   import org.apache.commons.discovery.base.Environment;
   import org.apache.commons.discovery.base.SPInterface;
   import org.apache.commons.discovery.tools.ManagedProperties;
  @@ -91,13 +90,6 @@
       implements DiscoverStrategy
   {
       /**
  -     * JDK1.3+ 'Service Provider' specification 
  -     * ( http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html )
  -     */
  -    private static final String SERVICE_HOME = "META-INF/services/";
  -
  -
  -    /**
        * <p>Discover names of SPI implementation Classes.
        * The names are the non-null values, in order, obtained from the following
        * resources:
  @@ -154,10 +146,11 @@
   
           // Last, try to find a service by using the JDK1.3 jar
           // discovery mechanism.
  -        className = getJDK13ClassName(env.getThreadContextClassLoader(), spiName);
  -        if (className != null) return className;
  -
  -        return null;
  +        Enumeration classNames = getJDK13ClassNames(env.getThreadContextClassLoader(), spiName);
  +        if (classNames.hasMoreElements()) {
  +            className = ((ResourceInfo)classNames.nextElement()).getResourceName();
  +        }
  +        return className;
       }
   
       /**
  @@ -217,8 +210,11 @@
   
           // Last, try to find a service by using the JDK1.3 jar
           // discovery mechanism.
  -        className = getJDK13ClassName(env.getThreadContextClassLoader(), spiName);
  -        if (className != null) names.addElement(className);
  +        Enumeration classNames = getJDK13ClassNames(env.getThreadContextClassLoader(), spiName);
  +        while (classNames.hasMoreElements()) {
  +            className = ((ResourceInfo)classNames.nextElement()).getResourceName();
  +            if (className != null) names.addElement(className);
  +        }
   
           String[] results = new String[names.size()];
           names.copyInto(results);        
  @@ -253,42 +249,10 @@
        * placing it in the META-INF/services directory of the webapp
        * (or in CLASSPATH or equivalent).
        */
  -    public static String getJDK13ClassName(ClassLoader classLoader, String spiName) {
  -        String serviceImplName = null;
  -
  -        // Name of J2EE application file that identifies the service implementation.
  -        String servicePropertyFile = SERVICE_HOME + spiName;
  -
  -        InputStream is = (classLoader == null
  -                          ? ClassLoader.getSystemResourceAsStream(servicePropertyFile)
  -                          : classLoader.getResourceAsStream(servicePropertyFile));
  -
  -        if( is != null ) {
  -            try {
  -                try {
  -                    // This code is needed by EBCDIC and other strange systems.
  -                    // It's a fix for bugs reported in xerces
  -                    BufferedReader rd;
  -                    
  -                    try {
  -                        rd = new BufferedReader(new InputStreamReader(is, "UTF-8"));
  -                    } catch (java.io.UnsupportedEncodingException e) {
  -                        rd = new BufferedReader(new InputStreamReader(is));
  -                    }
  -                        
  -                    try {
  -                        serviceImplName = rd.readLine();
  -                    } finally {
  -                        rd.close();
  -                    }
  -                } finally {
  -                    is.close();
  -                }
  -            } catch (IOException ioe) {
  -                ; // ignore
  -            }
  -        }
  -        
  -        return serviceImplName;
  +    public static Enumeration getJDK13ClassNames(ClassLoader classLoader,
  +                                                 String spiName) {
  +        ServiceDiscovery serviceDiscovery = new ServiceDiscovery();
  +        serviceDiscovery.addClassLoader(classLoader);
  +        return serviceDiscovery.findResources(spiName);
       }
   }
  
  
  
  1.4       +1 -1      jakarta-commons/discovery/src/java/org/apache/commons/discovery/strategy/LoadStrategy.java
  
  Index: LoadStrategy.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/discovery/src/java/org/apache/commons/discovery/strategy/LoadStrategy.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- LoadStrategy.java	14 Aug 2002 21:46:21 -0000	1.3
  +++ LoadStrategy.java	22 Aug 2002 15:20:42 -0000	1.4
  @@ -88,7 +88,7 @@
        * @exception DiscoveryException Thrown if the name of a class implementing
        *            the SPI cannot be found, or if the class cannot be loaded.
        */
  -    public ImplClass loadClass(Properties properties, ImplClass defaultImpl)
  +    public ImplClass loadClass(String ClassName, ImplClass defaultImpl)
           throws DiscoveryException;
       
       /**
  
  
  
  1.8       +1 -4      jakarta-commons/discovery/src/java/org/apache/commons/discovery/strategy/DefaultLoadStrategy.java
  
  Index: DefaultLoadStrategy.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/discovery/src/java/org/apache/commons/discovery/strategy/DefaultLoadStrategy.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DefaultLoadStrategy.java	22 Aug 2002 14:55:15 -0000	1.7
  +++ DefaultLoadStrategy.java	22 Aug 2002 15:20:42 -0000	1.8
  @@ -159,12 +159,9 @@
        * @exception DiscoveryException Thrown if the name of a class implementing
        *            the SPI cannot be found, or if the class cannot be loaded.
        */
  -    public ImplClass loadClass(Properties properties, ImplClass defaultImpl)
  +    public ImplClass loadClass(String className, ImplClass defaultImpl)
           throws DiscoveryException
       {
  -        String className =
  -            discoverStrategy.discoverClassName(env, spi, properties);
  -
           ImplClass implClass = null;
   
           if (className != null) {
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>