You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2004/03/08 13:07:40 UTC
cvs commit: cocoon-2.1/src/java/org/apache/cocoon Constants.java
cziegeler 2004/03/08 04:07:40
Modified: src/java/org/apache/cocoon/components/treeprocessor
DefaultTreeBuilder.java
AbstractProcessingNodeBuilder.java
src/java/org/apache/cocoon/sitemap SitemapParameters.java
src/java/org/apache/cocoon/matching
AbstractWildcardMatcher.java
AbstractRegexpMatcher.java
src/java/org/apache/cocoon/components/treeprocessor/variables
VariableResolver.java
src/java/org/apache/cocoon/components/pipeline
AbstractProcessingPipeline.java
src/java/org/apache/cocoon Constants.java
Log:
Move sitemap location out of the Parameters object again.
First solution for bug 27432
Revision Changes Path
1.8 +5 -7 cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java
Index: DefaultTreeBuilder.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- DefaultTreeBuilder.java 5 Mar 2004 13:02:51 -0000 1.7
+++ DefaultTreeBuilder.java 8 Mar 2004 12:07:39 -0000 1.8
@@ -34,18 +34,16 @@
import org.apache.avalon.framework.context.ContextException;
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.cocoon.Constants;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.components.ExtendedComponentSelector;
import org.apache.cocoon.components.LifecycleHelper;
import org.apache.cocoon.components.source.SourceUtil;
-import org.apache.cocoon.components.treeprocessor.variables.NOPVariableResolver;
import org.apache.cocoon.components.treeprocessor.variables.VariableResolverFactory;
import org.apache.cocoon.sitemap.PatternException;
+import org.apache.cocoon.sitemap.SitemapParameters;
import org.apache.excalibur.source.Source;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -471,11 +469,11 @@
if (children.length == 0) {
// Parameters are only the component's location
- return Collections.singletonMap(new NOPVariableResolver(Constants.SITEMAP_PARAMETERS_LOCATION), new NOPVariableResolver(config.getLocation()));
+ // TODO Optimize this
+ return new SitemapParameters.ExtendedHashMap(config);
}
- Map params = new HashMap();
- params.put(new NOPVariableResolver(Constants.SITEMAP_PARAMETERS_LOCATION), new NOPVariableResolver(config.getLocation()));
+ Map params = new SitemapParameters.ExtendedHashMap(config, children.length+1);
for (int i = 0; i < children.length; i++) {
Configuration child = children[i];
if (true) { // FIXME : check namespace
1.4 +5 -8 cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/AbstractProcessingNodeBuilder.java
Index: AbstractProcessingNodeBuilder.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/AbstractProcessingNodeBuilder.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AbstractProcessingNodeBuilder.java 5 Mar 2004 13:02:51 -0000 1.3
+++ AbstractProcessingNodeBuilder.java 8 Mar 2004 12:07:39 -0000 1.4
@@ -21,12 +21,10 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.cocoon.Constants;
import org.apache.cocoon.components.treeprocessor.variables.VariableResolverFactory;
import org.apache.cocoon.sitemap.PatternException;
+import org.apache.cocoon.sitemap.SitemapParameters;
-import java.util.Collections;
-import java.util.HashMap;
import java.util.Map;
/**
@@ -75,12 +73,11 @@
if (children.length == 0) {
// Parameters are only the component's location
- return Collections.singletonMap(Constants.SITEMAP_PARAMETERS_LOCATION, config.getLocation());
+ // TODO Optimize this
+ return new SitemapParameters.ExtendedHashMap(config);
}
- Map params = new HashMap(children.length+1);
- // Add the location information as a parameter
- params.put(Constants.SITEMAP_PARAMETERS_LOCATION, config.getLocation());
+ Map params = new SitemapParameters.ExtendedHashMap(config, children.length+1);
for (int i = 0; i < children.length; i++) {
Configuration child = children[i];
if (true) { // FIXME : check namespace
1.2 +45 -2 cocoon-2.1/src/java/org/apache/cocoon/sitemap/SitemapParameters.java
Index: SitemapParameters.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/sitemap/SitemapParameters.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SitemapParameters.java 7 Mar 2004 18:56:17 -0000 1.1
+++ SitemapParameters.java 8 Mar 2004 12:07:39 -0000 1.2
@@ -15,6 +15,9 @@
*/
package org.apache.cocoon.sitemap;
+import java.util.HashMap;
+
+import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.parameters.Parameters;
/**
@@ -32,11 +35,51 @@
return null;
}
*/
- public String getStatementLocation(String name) {
+ public String getStatementLocation() {
return this.statementLocation;
}
public void setStatementLocation(String value) {
this.statementLocation = value;
+ }
+
+ /**
+ * Return the location - if available
+ */
+ public static String getStatementLocation(Parameters param) {
+ String value = null;
+ if ( param instanceof SitemapParameters ) {
+ value = ((SitemapParameters)param).getStatementLocation();
+ }
+ if ( value == null ) {
+ value = "[unknown location]";
+ }
+ return value;
+ }
+
+ public static class ExtendedHashMap extends HashMap {
+
+ protected Configuration configuration;
+
+ public ExtendedHashMap(Configuration conf) {
+ super();
+ this.configuration = conf;
+ }
+
+ public ExtendedHashMap(Configuration conf, int capacity) {
+ super(capacity);
+ this.configuration = conf;
+ }
+
+ public String getLocation() {
+ if ( this.configuration != null ) {
+ return this.configuration.getLocation();
+ }
+ return null;
+ }
+
+ public Configuration getConfiguration() {
+ return this.configuration;
+ }
}
}
1.4 +3 -3 cocoon-2.1/src/java/org/apache/cocoon/matching/AbstractWildcardMatcher.java
Index: AbstractWildcardMatcher.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/matching/AbstractWildcardMatcher.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AbstractWildcardMatcher.java 5 Mar 2004 13:02:56 -0000 1.3
+++ AbstractWildcardMatcher.java 8 Mar 2004 12:07:39 -0000 1.4
@@ -17,9 +17,9 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.Constants;
import org.apache.cocoon.matching.helpers.WildcardHelper;
import org.apache.cocoon.sitemap.PatternException;
+import org.apache.cocoon.sitemap.SitemapParameters;
import java.util.HashMap;
import java.util.Map;
@@ -48,7 +48,7 @@
if(preparedPattern == null) {
throw new PatternException("A pattern is needed at " +
- parameters.getParameter(Constants.SITEMAP_PARAMETERS_LOCATION, "unknown location"));
+ SitemapParameters.getStatementLocation(parameters));
}
String match = getMatchString(objectModel, parameters);
1.4 +3 -4 cocoon-2.1/src/java/org/apache/cocoon/matching/AbstractRegexpMatcher.java
Index: AbstractRegexpMatcher.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/matching/AbstractRegexpMatcher.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AbstractRegexpMatcher.java 5 Mar 2004 13:02:56 -0000 1.3
+++ AbstractRegexpMatcher.java 8 Mar 2004 12:07:39 -0000 1.4
@@ -17,8 +17,8 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.Constants;
import org.apache.cocoon.sitemap.PatternException;
+import org.apache.cocoon.sitemap.SitemapParameters;
import org.apache.regexp.RE;
import org.apache.regexp.RECompiler;
import org.apache.regexp.REProgram;
@@ -74,8 +74,7 @@
public Map preparedMatch(Object preparedPattern, Map objectModel, Parameters parameters) throws PatternException {
if(preparedPattern == null) {
- throw new PatternException("A pattern is needed at " +
- parameters.getParameter(Constants.SITEMAP_PARAMETERS_LOCATION, "unknown location"));
+ throw new PatternException("A pattern is needed at " + SitemapParameters.getStatementLocation(parameters));
}
RE re = new RE((REProgram)preparedPattern);
1.4 +14 -4 cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/variables/VariableResolver.java
Index: VariableResolver.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/variables/VariableResolver.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- VariableResolver.java 5 Mar 2004 13:02:53 -0000 1.3
+++ VariableResolver.java 8 Mar 2004 12:07:39 -0000 1.4
@@ -15,9 +15,11 @@
*/
package org.apache.cocoon.components.treeprocessor.variables;
+import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.components.treeprocessor.InvokeContext;
import org.apache.cocoon.sitemap.PatternException;
+import org.apache.cocoon.sitemap.SitemapParameters;
import java.util.Collections;
import java.util.HashMap;
@@ -88,8 +90,10 @@
return Parameters.EMPTY_PARAMETERS;
}
- Parameters result = new Parameters();
-
+ SitemapParameters result = new SitemapParameters();
+ if ( expressions instanceof SitemapParameters.ExtendedHashMap ) {
+ result.setStatementLocation(((SitemapParameters.ExtendedHashMap)expressions).getLocation());
+ }
Iterator iter = expressions.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry)iter.next();
@@ -114,7 +118,13 @@
return EMPTY_MAP;
}
- Map result = new HashMap(size);
+ Map result;
+ if ( expressions instanceof SitemapParameters.ExtendedHashMap ) {
+ Configuration config = ((SitemapParameters.ExtendedHashMap)expressions).getConfiguration();
+ result = new SitemapParameters.ExtendedHashMap(config, size );
+ } else {
+ result = new HashMap(size);
+ }
Iterator iter = expressions.entrySet().iterator();
while (iter.hasNext()) {
1.20 +10 -3 cocoon-2.1/src/java/org/apache/cocoon/components/pipeline/AbstractProcessingPipeline.java
Index: AbstractProcessingPipeline.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/pipeline/AbstractProcessingPipeline.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- AbstractProcessingPipeline.java 5 Mar 2004 13:02:50 -0000 1.19
+++ AbstractProcessingPipeline.java 8 Mar 2004 12:07:39 -0000 1.20
@@ -25,7 +25,6 @@
import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ConnectionResetException;
-import org.apache.cocoon.Constants;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.components.CocoonComponentManager;
import org.apache.cocoon.environment.Environment;
@@ -35,6 +34,7 @@
import org.apache.cocoon.reading.Reader;
import org.apache.cocoon.serialization.Serializer;
import org.apache.cocoon.sitemap.SitemapModelComponent;
+import org.apache.cocoon.sitemap.SitemapParameters;
import org.apache.cocoon.transformation.Transformer;
import org.apache.cocoon.xml.XMLConsumer;
import org.apache.cocoon.xml.XMLProducer;
@@ -774,6 +774,13 @@
}
protected String getLocation(Parameters param) {
- return param.getParameter(Constants.SITEMAP_PARAMETERS_LOCATION, "[unknown location]");
+ String value = null;
+ if ( param instanceof SitemapParameters ) {
+ value = ((SitemapParameters)param).getStatementLocation();
+ }
+ if ( value == null ) {
+ value = "[unknown location]";
+ }
+ return value;
}
}
1.12 +1 -6 cocoon-2.1/src/java/org/apache/cocoon/Constants.java
Index: Constants.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/Constants.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- Constants.java 5 Mar 2004 13:02:42 -0000 1.11
+++ Constants.java 8 Mar 2004 12:07:40 -0000 1.12
@@ -277,11 +277,6 @@
*/
public static final boolean DESCRIPTOR_RELOADABLE_DEFAULT = true;
- /**
- * The special parameter passed to each sitemap component (matchers, generators, etc) that
- * contains the location of the sitemap statement where this component is used.
- */
- public static final String SITEMAP_PARAMETERS_LOCATION = "org.apache.cocoon.sitemap/Location";
}