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/09 21:42:04 UTC

cvs commit: jakarta-commons/discovery/src/java/org/apache/commons/discovery/load Loaders.java ClassLoaderUtils.java

rsitze      2002/08/09 12:42:04

  Modified:    discovery/src/java/org/apache/commons/discovery/load
                        Loaders.java ClassLoaderUtils.java
  Log:
  Work around for Class.getPackage() returning null.
  Unpredictably, this is acceptable behavior.
  
  Revision  Changes    Path
  1.2       +1 -1      jakarta-commons/discovery/src/java/org/apache/commons/discovery/load/Loaders.java
  
  Index: Loaders.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/discovery/src/java/org/apache/commons/discovery/load/Loaders.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Loaders.java	9 Aug 2002 14:58:00 -0000	1.1
  +++ Loaders.java	9 Aug 2002 19:42:04 -0000	1.2
  @@ -156,7 +156,7 @@
       public InputStream loadResourceAsStream(String resourceName)
           throws DiscoveryException
       {
  -        String packageName = spiContext.getSPI().getPackage().getName();
  +        String packageName = ClassLoaderUtils.getPackageName(spiContext.getSPI());
   
           InputStream stream =
               (spiContext.getGroupContext() == null)
  
  
  
  1.2       +19 -0     jakarta-commons/discovery/src/java/org/apache/commons/discovery/load/ClassLoaderUtils.java
  
  Index: ClassLoaderUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/discovery/src/java/org/apache/commons/discovery/load/ClassLoaderUtils.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ClassLoaderUtils.java	9 Aug 2002 14:58:00 -0000	1.1
  +++ ClassLoaderUtils.java	9 Aug 2002 19:42:04 -0000	1.2
  @@ -88,6 +88,25 @@
       private static final boolean debug = false;
       
       /**
  +     * Get package name.
  +     * Not all class loaders 'keep' package information,
  +     * in which case Class.getPackage() returns null.
  +     * This means that calling Class.getPackage().getName()
  +     * is unreliable at best.
  +     */
  +    public static String getPackageName(Class clazz) {
  +        Package clazzPackage = clazz.getPackage();
  +        String packageName;
  +        if (clazzPackage != null) {
  +            packageName = clazzPackage.getName();
  +        } else {
  +            String clazzName = clazz.getName();
  +            packageName = new String(clazzName.toCharArray(), 0, clazzName.lastIndexOf('.'));
  +        }
  +        return packageName;
  +    }
  +    
  +    /**
        * Load the class <code>serviceImplName</code>, no safety checking
        * 
        * @param serviceImplName The name of the class to load.
  
  
  

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