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>