Author: cziegeler
Date: Thu Feb 3 12:53:57 2005
New Revision: 151228
URL: http://svn.apache.org/viewcvs?view=rev&rev=151228
Log:
Remove unused ProcesorWrapper
Start using proxies for poolable components (not finished yet)
Removed:
cocoon/trunk/src/java/org/apache/cocoon/ProcessorWrapper.java
Modified:
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/AbstractComponentHandler.java
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/PoolableComponentHandler.java
cocoon/trunk/src/java/org/apache/cocoon/Cocoon.java
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java
Modified:
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/AbstractComponentHandler.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/AbstractComponentHandler.java?view=diff&r1=151227&r2=151228
==============================================================================
---
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/AbstractComponentHandler.java
(original)
+++
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/AbstractComponentHandler.java
Thu Feb 3 12:53:57 2005
@@ -97,8 +97,10 @@
if( Poolable.class.isAssignableFrom( componentClass ) ) {
numInterfaces++;
- // FIXME - change this later on to MODEL_POOLED
- info.setModel(ComponentInfo.MODEL_NON_THREAD_SAFE_POOLED);
+ info.setModel(ComponentInfo.MODEL_POOLED);
+ if (
"non-thread-safe-pooled".equals(info.getConfiguration().getAttribute("model",
null))) {
+ info.setModel(ComponentInfo.MODEL_NON_THREAD_SAFE_POOLED);
+ }
}
if( numInterfaces > 1 ) {
Modified:
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/PoolableComponentHandler.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/PoolableComponentHandler.java?view=diff&r1=151227&r2=151228
==============================================================================
---
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/PoolableComponentHandler.java
(original)
+++
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/PoolableComponentHandler.java
Thu Feb 3 12:53:57 2005
@@ -61,6 +61,9 @@
public class PoolableComponentHandler
extends NonThreadSafePoolableComponentHandler {
+ /** All the interfaces for the proxy */
+ protected final Class[] interfaces;
+
/**
* Create a PoolableComponentHandler which manages a pool of Components
* created by the specified factory object.
@@ -75,6 +78,7 @@
final Configuration config )
throws Exception {
super(info, logger, factory, config);
+ this.interfaces = this.guessWorkInterfaces(factory.getCreatedClass());
}
/* (non-Javadoc)
@@ -97,7 +101,7 @@
protected Object createProxy() {
return
Proxy.newProxyInstance(this.factory.getCreatedClass().getClassLoader(),
-
this.guessWorkInterfaces(this.factory.getCreatedClass()),
+ this.interfaces,
new ProxyHandler(this));
}
@@ -183,7 +187,13 @@
*/
public void invoke() {
try {
- this.handler.putIntoPool(this.componentHolder.get());
+ final Object o = this.componentHolder.get();
+ /*if ( o == null ) {
+ System.out.println("Releasing null for " +
this.handler.factory.getCreatedClass());
+ } else {
+ System.out.println("Releasing: " + o);
+ }*/
+ this.handler.putIntoPool(o);
} catch (Exception ignore) {
// we ignore this
}
Modified: cocoon/trunk/src/java/org/apache/cocoon/Cocoon.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/Cocoon.java?view=diff&r1=151227&r2=151228
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/Cocoon.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/Cocoon.java Thu Feb 3 12:53:57 2005
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2004 The Apache Software Foundation.
+ * Copyright 1999-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -94,8 +94,8 @@
/** active request count */
private volatile int activeRequestCount = 0;
- /** the Processor if it is ThreadSafe */
- private Processor threadSafeProcessor;
+ /** the Processor */
+ private Processor processor;
/** The source resolver */
protected SourceResolver sourceResolver;
@@ -177,14 +177,12 @@
* @exception Exception if an error occurs
*/
public void initialize() throws Exception {
-//long start = System.currentTimeMillis();
-
this.serviceManager = new
CocoonServiceManager(this.parentServiceManager);
ContainerUtil.enableLogging(this.serviceManager,
getLogger().getChildLogger("manager"));
ContainerUtil.contextualize(this.serviceManager, this.context);
if (getLogger().isDebugEnabled()) {
- getLogger().debug("New Cocoon object.");
+ getLogger().debug("Initializing new Cocoon object.");
}
// Log the System Properties.
@@ -196,21 +194,8 @@
ContainerUtil.initialize(this.serviceManager);
- // Get the Processor and keep it if it's ThreadSafe
- Processor processor =
(Processor)this.serviceManager.lookup(Processor.ROLE);
- if (processor instanceof ThreadSafe) {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Processor of class " +
processor.getClass().getName() +
- " is ThreadSafe");
- }
- this.threadSafeProcessor = processor;
- } else {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Processor of class " +
processor.getClass().getName() +
- " is NOT ThreadSafe -- will be looked up at
each request");
- }
- this.serviceManager.release(processor);
- }
+ // Get the Processor and keep it
+ this.processor = (Processor)this.serviceManager.lookup(Processor.ROLE);
this.environmentHelper = new EnvironmentHelper(
(String) this.context.get(ContextHelper.CONTEXT_ROOT_URL));
@@ -222,8 +207,7 @@
if (this.serviceManager.hasService(RequestListener.ROLE)){
this.requestListener = (RequestListener)
this.serviceManager.lookup(RequestListener.ROLE);
}
-//long delay = System.currentTimeMillis() - start;
-//System.err.println("########## Cocoon.initialize() : " + delay);
+ Core.cleanup();
}
/** Dump System Properties */
@@ -345,11 +329,11 @@
*/
public void dispose() {
if (this.serviceManager != null) {
- if (this.requestListener != null) {
- this.serviceManager.release(this.requestListener);
- }
- this.serviceManager.release(this.threadSafeProcessor);
- this.threadSafeProcessor = null;
+ this.serviceManager.release(this.requestListener);
+ this.requestListener = null;
+
+ this.serviceManager.release(this.processor);
+ this.processor = null;
this.serviceManager.release(this.sourceResolver);
this.sourceResolver = null;
@@ -459,16 +443,11 @@
getLogger().debug(msg.toString());
}
- /**
- * Process the given <code>Environment</code> to produce the output.
- *
- * @param environment an <code>Environment</code> value
- * @return a <code>boolean</code> value
- * @exception Exception if an error occurs
+ /* (non-Javadoc)
+ * @see
org.apache.cocoon.Processor#process(org.apache.cocoon.environment.Environment)
*/
public boolean process(Environment environment)
throws Exception {
-//long start = System.currentTimeMillis();
if (this.disposed) {
throw new IllegalStateException("You cannot process a Disposed
Cocoon engine.");
@@ -493,36 +472,19 @@
}
}
- if (this.threadSafeProcessor != null) {
- result = this.threadSafeProcessor.process(environment);
- if (this.requestListener != null) {
- try {
- requestListener.onRequestEnd(environment);
- } catch (Exception e) {
- getLogger().error("Error encountered monitoring
request start: " + e.getMessage());
- }
- }
- } else {
- Processor processor =
(Processor)this.serviceManager.lookup(Processor.ROLE);
+ result = this.processor.process(environment);
+
+ if (this.requestListener != null) {
try {
- result = processor.process(environment);
- if (this.requestListener != null) {
- try {
- requestListener.onRequestEnd(environment);
- } catch (Exception e) {
- getLogger().error("Error encountered monitoring
request start: " + e.getMessage());
- }
- }
- } finally {
- this.serviceManager.release(processor);
+ requestListener.onRequestEnd(environment);
+ } catch (Exception e) {
+ getLogger().error("Error encountered monitoring request
start: " + e.getMessage());
}
}
+
// commit response on success
environment.commitResponse();
-//long delay = System.currentTimeMillis() - start;
-//System.err.println("########## Cocoon.process() : " + delay);
-
return result;
} catch (Exception any) {
if (this.requestListener != null) {
@@ -541,7 +503,7 @@
if (getLogger().isDebugEnabled()) {
--activeRequestCount;
}
- //Core.cleanup();
+ Core.cleanup();
EnvironmentHelper.checkEnvironment(environmentDepth, getLogger());
}
@@ -562,15 +524,7 @@
this.debug(environment, true);
}
- if (this.threadSafeProcessor != null) {
- return this.threadSafeProcessor.buildPipeline(environment);
- }
- Processor processor =
(Processor)this.serviceManager.lookup(Processor.ROLE);
- try {
- return processor.buildPipeline(environment);
- } finally {
- this.serviceManager.release(processor);
- }
+ return this.processor.buildPipeline(environment);
} finally {
if (getLogger().isDebugEnabled()) {
Modified:
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java?view=diff&r1=151227&r2=151228
==============================================================================
---
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java
(original)
+++
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java
Thu Feb 3 12:53:57 2005
@@ -53,7 +53,7 @@
public class DefaultTreeBuilder
extends AbstractLogEnabled
implements TreeBuilder, Contextualizable, Serviceable,
- Initializable, Recyclable, Disposable {
+ Recyclable, Disposable {
protected Map attributes = new HashMap();
@@ -148,10 +148,6 @@
public void service(ServiceManager manager) throws ServiceException {
this.manager = manager;
}
-
- public void initialize() throws Exception {
- }
-
/**
* Get the location of the treebuilder config file. Can be overridden for
other versions.