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>