cziegeler 2002/11/20 01:19:16
Modified: src/java/org/apache/cocoon/components/source/impl
SitemapSource.java
src/java/org/apache/cocoon/components
CocoonComponentManager.java
Log:
Improvement for RequestLifecycleComponents
Revision Changes Path
1.22 +3 -2
xml-cocoon2/src/java/org/apache/cocoon/components/source/impl/SitemapSource.java
Index: SitemapSource.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/source/impl/SitemapSource.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- SitemapSource.java 16 Nov 2002 21:01:54 -0000 1.21
+++ SitemapSource.java 20 Nov 2002 09:19:16 -0000 1.22
@@ -396,6 +396,7 @@
// Preserve original exception
throw e;
} catch (Exception e) {
+ e.printStackTrace();
throw new SAXException("Exception during processing of "
+ this.systemId, e);
} finally {
@@ -404,11 +405,11 @@
}
private void reset() {
+ if (this.processingPipeline != null) this.processingPipeline.release();
if (this.processKey != null) {
CocoonComponentManager.endProcessing(this.processKey);
this.processKey = null;
}
- if (this.processingPipeline != null) this.processingPipeline.release();
this.processingPipeline = null;
this.sourceValidity = null;
if (this.redirectSource != null)
this.environment.release(this.redirectSource);
1.37 +21 -57
xml-cocoon2/src/java/org/apache/cocoon/components/CocoonComponentManager.java
Index: CocoonComponentManager.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/CocoonComponentManager.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- CocoonComponentManager.java 16 Nov 2002 21:01:54 -0000 1.36
+++ CocoonComponentManager.java 20 Nov 2002 09:19:16 -0000 1.37
@@ -65,6 +65,7 @@
import org.apache.avalon.framework.component.ComponentSelector;
import org.apache.avalon.framework.component.Recomposable;
import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.DefaultConfiguration;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.Processor;
import org.apache.cocoon.environment.Environment;
@@ -90,12 +91,10 @@
private static final String PROCESS_KEY =
"org.apache.cocoon.components.CocoonComponentManager";
+
/** The environment information */
private static InheritableThreadLocal environmentStack = new
InheritableThreadLocal();
- /** The processing information */
- private static InheritableThreadLocal processList = new
InheritableThreadLocal();
-
/** The configured <code>SourceResolver</code> */
private SourceResolver sourceResolver;
@@ -138,7 +137,7 @@
final Stack stack = (Stack)environmentStack.get();
stack.push(new Object[] {env, processor});
- EnvironmentDescription desc = getDescription(objectModel);
+ EnvironmentDescription desc =
(EnvironmentDescription)objectModel.get(PROCESS_KEY);
if ( null != desc ) {
desc.addSitemapConfiguration(processor.getComponentConfigurations());
}
@@ -151,6 +150,10 @@
final Stack stack = (Stack)environmentStack.get();
if (null != stack && !stack.empty()) {
final Object[] objects = (Object[])stack.pop();
+ EnvironmentDescription desc =
(EnvironmentDescription)((Environment)objects[0]).getObjectModel().get(PROCESS_KEY);
+ if ( null != desc ) {
+ desc.removeLastSitemapConfiguration();
+ }
}
}
@@ -161,23 +164,9 @@
* @return A unique key within this thread.
*/
public static Object startProcessing(Environment env) {
- Map processes = (Map)processList.get();
-
- if (processes == null) {
- processes = new HashMap(4);
- processList.set(processes);
- }
EnvironmentDescription desc = new EnvironmentDescription(env);
- Object key = new Long(System.currentTimeMillis());
- // unique test (this is currently a sanity check
- // perhaps it's not needed - if it's needed we
- // have to improve it for performance
- while (processes.containsKey(key)) {
- key = "A" + key;
- }
- processes.put(key, desc);
- env.getObjectModel().put(PROCESS_KEY, key);
- return key;
+ env.getObjectModel().put(PROCESS_KEY, desc);
+ return desc;
}
/**
@@ -188,14 +177,8 @@
* {@link startProcessing(Environment)}.
*/
public static void endProcessing(Object key) {
- Map processes = (Map)processList.get();
- if ( null != processes ) {
- EnvironmentDescription desc =
(EnvironmentDescription)processes.get(key);
- if ( null != desc ) {
- desc.release();
- processes.remove(key);
- }
- }
+ EnvironmentDescription desc = (EnvironmentDescription)key;
+ desc.release();
}
/**
@@ -246,7 +229,7 @@
if ( null != stack && !stack.empty()) {
final Object[] objects = (Object[])stack.peek();
final Map objectModel = ((Environment)objects[0]).getObjectModel();
- EnvironmentDescription desc = getDescription(objectModel);
+ EnvironmentDescription desc =
(EnvironmentDescription)objectModel.get(PROCESS_KEY);
if ( null != desc ) {
final Component component = desc.getRequestLifecycleComponent(role);
if (null != component) {
@@ -262,7 +245,7 @@
}
final Object[] objects = (Object[]) stack.peek();
final Map objectModel = ((Environment)objects[0]).getObjectModel();
- EnvironmentDescription desc = getDescription(objectModel);
+ EnvironmentDescription desc =
(EnvironmentDescription)objectModel.get(PROCESS_KEY);
if ( null != desc ) {
// first test if the parent CM has already initialized this
component
@@ -335,7 +318,7 @@
if ( null != stack && !stack.empty()) {
final Object[] objects = (Object[])stack.firstElement();
final Map objectModel = ((Environment)objects[0]).getObjectModel();
- EnvironmentDescription desc = getDescription(objectModel);
+ EnvironmentDescription desc =
(EnvironmentDescription)objectModel.get(PROCESS_KEY);
if ( null != desc ) {
desc.addToAutoRelease(selector, component, manager);
}
@@ -354,7 +337,7 @@
if ( null != stack && !stack.empty()) {
final Object[] objects = (Object[])stack.firstElement();
final Map objectModel = ((Environment)objects[0]).getObjectModel();
- EnvironmentDescription desc = getDescription(objectModel);
+ EnvironmentDescription desc =
(EnvironmentDescription)objectModel.get(PROCESS_KEY);
if ( null != desc ) {
desc.addToAutoRelease(manager, component);
}
@@ -372,7 +355,7 @@
if ( null != stack && !stack.empty()) {
final Object[] objects = (Object[])stack.firstElement();
final Map objectModel = ((Environment)objects[0]).getObjectModel();
- EnvironmentDescription desc = getDescription(objectModel);
+ EnvironmentDescription desc =
(EnvironmentDescription)objectModel.get(PROCESS_KEY);
if ( null != desc ) {
desc.removeFromAutoRelease(component);
}
@@ -424,26 +407,17 @@
this.sourceResolver.release( source );
}
- private static EnvironmentDescription getDescription(Map objectModel) {
- Object processKey = objectModel.get(PROCESS_KEY);
- if ( null != processKey) {
- Map processes = (Map)CocoonComponentManager.processList.get();
- if ( null != processes) {
- return (EnvironmentDescription)processes.get(processKey);
- }
- }
- return null;
- }
-
}
final class EnvironmentDescription {
+ private static final Configuration EMPTY_CONFIGURATION =
+ new DefaultConfiguration("config", "");
+
Environment environment;
Map objectModel;
Map requestLifecycleComponents = new HashMap(5);
List autoreleaseComponents = new ArrayList(2);
- List sitemapConfigurations = new ArrayList(4);
/**
* Constructor
@@ -549,15 +523,5 @@
throw new ProcessingException("Unable to remove component from
automatic release: component not found.");
}
}
-
- void addSitemapConfiguration(Configuration conf) {
- if (conf != null) {
- this.sitemapConfigurations.add(conf);
- }
- }
-
- List getSitemapConfigurations() {
- return this.sitemapConfigurations;
- }
-
+
}
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]