joerg 2004/02/09 13:26:40
Modified: src/java/org/apache/cocoon/components/language/programming/java
JavaLanguage.java
Log:
bug 26791: release of ClassLoaderManager fixed, thanks to Marco Rolappe
Revision Changes Path
1.5 +25 -19
cocoon-2.1/src/java/org/apache/cocoon/components/language/programming/java/JavaLanguage.java
Index: JavaLanguage.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/language/programming/java/JavaLanguage.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- JavaLanguage.java 7 Feb 2004 15:20:09 -0000 1.4
+++ JavaLanguage.java 9 Feb 2004 21:26:40 -0000 1.5
@@ -92,6 +92,8 @@
/** Classpath */
private String classpath;
+ private String classLoaderClass;
+
/**
* Return the language's canonical source file extension.
*
@@ -115,39 +117,39 @@
* sitemap-specified <code>ClassLoaderManager</code>
*
* @param params The configuration parameters
- * @exception ParameterException If the class loader manager cannot be
instantiated
+ * @throws ParameterException If the class loader manager cannot be
+ * instantiated or looked up.
*/
public void parameterize(Parameters params) throws ParameterException {
super.parameterize(params);
- String classLoaderClass = params.getParameter("class-loader",null);
- if (classLoaderClass != null) {
+ this.classLoaderClass = params.getParameter("class-loader", null);
+ if (this.classLoaderClass != null) {
try {
- this.classLoaderManager = (ClassLoaderManager)
ClassUtils.newInstance(classLoaderClass);
+ this.classLoaderManager = (ClassLoaderManager)
+ ClassUtils.newInstance(this.classLoaderClass);
} catch (Exception e) {
- throw new ParameterException("Unable to load class loader: "
+ classLoaderClass, e);
+ throw new ParameterException("Unable to load class loader: "
+ + this.classLoaderClass, e);
+ }
+ } else {
+ try {
+ getLogger().debug("Looking up " + ClassLoaderManager.ROLE);
+ this.classLoaderManager = (ClassLoaderManager)
+ manager.lookup(ClassLoaderManager.ROLE);
+ } catch (ServiceException e) {
+ throw new ParameterException("Lookup of ClassLoaderManager
failed", e);
}
}
}
/**
- * Set the global service manager. This methods initializes the class
- * loader manager if it was not (successfully) specified in the language
- * parameters
+ * Set the global service manager.
*
* @param manager The global service manager
*/
public void service(ServiceManager manager) throws ServiceException {
this.manager = manager;
- if (this.classLoaderManager == null) {
- try {
- getLogger().debug("Looking up " + ClassLoaderManager.ROLE);
- this.classLoaderManager =
- (ClassLoaderManager)
manager.lookup(ClassLoaderManager.ROLE);
- } catch (Exception e) {
- getLogger().error("Could not find component", e);
- }
- }
}
public void initialize() throws Exception {
@@ -299,6 +301,7 @@
}
}
}
+
return buffer.toString();
}
@@ -306,6 +309,9 @@
* dispose
*/
public void dispose() {
- manager.release(this.classLoaderManager);
+ if (this.classLoaderClass == null && this.classLoaderManager !=
null) {
+ manager.release(this.classLoaderManager);
+ this.classLoaderManager = null;
+ }
}
}