Author: cziegeler
Date: Fri Apr 8 05:56:58 2005
New Revision: 160553
URL: http://svn.apache.org/viewcvs?view=rev&rev=160553
Log:
Cleanup
Modified:
cocoon/trunk/src/core/java/org/apache/cocoon/core/CoreUtil.java
Modified: cocoon/trunk/src/core/java/org/apache/cocoon/core/CoreUtil.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/core/CoreUtil.java?view=diff&r1=160552&r2=160553
==============================================================================
--- cocoon/trunk/src/core/java/org/apache/cocoon/core/CoreUtil.java (original)
+++ cocoon/trunk/src/core/java/org/apache/cocoon/core/CoreUtil.java Fri Apr 8
05:56:58 2005
@@ -82,7 +82,7 @@
protected final Settings settings;
/** The parent service manager TODO This will be made protected*/
- public final ServiceManager parentManager;
+ public ServiceManager parentManager;
/** TODO This will be made protected */
public Logger log;
@@ -243,11 +243,11 @@
// set class loader
this.appContext.put(Constants.CONTEXT_CLASS_LOADER,
this.env.getInitClassLoader());
- // create parent service manager
- final ServiceManager parent = this.getParentServiceManager();
+ // create the Core object
+ final Core core = this.createCore();
- // create a service manager
- this.parentManager = new RootServiceManager(parent, this.createCore());
+ // create parent service manager
+ this.parentManager = this.getParentServiceManager(core);
}
public Core getCore() {
@@ -272,7 +272,7 @@
*
* @return the parent service manager, or <code>null</code>.
*/
- protected ServiceManager getParentServiceManager() {
+ protected ServiceManager getParentServiceManager(Core core) {
String parentServiceManagerClass =
this.settings.getParentServiceManagerClassName();
String parentServiceManagerInitParam = null;
if (parentServiceManagerClass != null) {
@@ -298,8 +298,8 @@
this.log.error("Could not initialize parent component
manager.", e);
}
}
- }
- return parentServiceManager;
+ }
+ return new RootServiceManager(parentServiceManager, core);
}
/**
@@ -625,10 +625,12 @@
ContainerUtil.enableLogging(c, getCocoonLogger());
// TODO: c.setLoggerManager(this.loggerManager);
ContainerUtil.contextualize(c, this.appContext);
- final ServiceManager parent = this.getParentServiceManager();
- if (parent != null) {
- ContainerUtil.service(c, parent);
- }
+
+ // create the Core object
+ final Core core = this.createCore();
+ this.parentManager = this.getParentServiceManager(core);
+ ContainerUtil.service(c, this.parentManager);
+
ContainerUtil.initialize(c);
this.creationTime = System.currentTimeMillis();
@@ -685,6 +687,8 @@
ContainerUtil.dispose(this.cocoon);
this.cocoon = null;
}
+ ContainerUtil.dispose(this.parentManager);
+ this.parentManager = null;
}
protected Logger getCocoonLogger() {
@@ -763,6 +767,26 @@
*/
protected void updateEnvironment() throws Exception {
// can be overridden
+ }
+
+ /**
+ * Dispose Cocoon when servlet is destroyed
+ */
+ public void destroy() {
+ if (this.settings.isInitClassloader()) {
+ try {
+
Thread.currentThread().setContextClassLoader(this.env.getInitClassLoader());
+ } catch (Exception e) {
+ // ignore this
+ }
+ }
+
+ if (this.cocoon != null) {
+ if (this.log.isDebugEnabled()) {
+ this.log.debug("Servlet destroyed - disposing Cocoon");
+ }
+ this.disposeCocoon();
+ }
}
}