cziegeler 2004/03/11 01:14:32
Modified: src/java/org/apache/cocoon/bean CocoonBean.java
Added: src/java/org/apache/cocoon/util NullOutputStream.java
src/java/org/apache/cocoon/acting PropagatorAction.java
Removed: src/java/org/apache/cocoon/servlet
ParanoidCocoonServlet.java BootstrapServlet.java
ParanoidClassLoader.java
Log:
Remove classes from paranoid block
Add two classes from 2.1 that were missing
Revision Changes Path
1.1
cocoon-2.2/src/java/org/apache/cocoon/util/NullOutputStream.java
Index: NullOutputStream.java
===================================================================
/*
* Copyright 1999-2004 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.cocoon.util;
import java.io.OutputStream;
/**
* @author <a href="http://apache.org/~reinhard">Reinhard Poetz</a>
* @version CVS $Id: NullOutputStream.java,v 1.1 2004/03/11 09:14:32
cziegeler Exp $
*
* @since 2.1.4
*/
public final class NullOutputStream extends OutputStream {
public void write(byte b[]) {
}
public void write(byte b[], int off, int len) {
}
public void write(int b) {
}
}
1.52 +0 -1
cocoon-2.2/src/java/org/apache/cocoon/bean/CocoonBean.java
Index: CocoonBean.java
===================================================================
RCS file:
/home/cvs/cocoon-2.2/src/java/org/apache/cocoon/bean/CocoonBean.java,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -r1.51 -r1.52
--- CocoonBean.java 10 Mar 2004 17:58:04 -0000 1.51
+++ CocoonBean.java 11 Mar 2004 09:14:32 -0000 1.52
@@ -34,7 +34,6 @@
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.ModifiableProcessor;
-import org.apache.cocoon.Processor;
import org.apache.cocoon.Constants;
import org.apache.cocoon.components.container.CocoonContainer;
import org.apache.cocoon.components.container.ComponentContext;
1.1
cocoon-2.2/src/java/org/apache/cocoon/acting/PropagatorAction.java
Index: PropagatorAction.java
===================================================================
/*
* Copyright 1999-2004 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.cocoon.acting;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.cocoon.components.modules.output.OutputModule;
import org.apache.cocoon.environment.Redirector;
import org.apache.cocoon.environment.SourceResolver;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* This is the action used to propagate parameters into a store using an
* [EMAIL PROTECTED]
org.apache.cocoon.components.modules.output.OutputModule}. It
* simply propagates given expression. Additionaly it will make all
propagated values
* available via returned Map.
*
* <p>Example configuration:</p>
* <pre>
* <map:action type="...." name="...." logger="...">
* <output-module name="session-attr">
* <!-- optional configuration for output module -->
* </output-module>
* <store-empty-parameters>true</store-empty-parameters>
* <defaults>
* <default name="..." value="...."/>
* <default name="..." value="..."/>
* </defaults>
* </map:action>
* </pre>
*
* <p>Example use:</p>
* <pre>
* <map:act type="session-propagator">
* <paramater name="example" value="{example}"/>
* <paramater name="example1" value="xxx"/>
* <parameter name="PropagatorAction:store-empty-parameters"
value="true"/>
* <parameter name="PropagatorAction:output-module"
value="session-attr"/>
* </map:act>
* </pre>
*
* <h3>Configuration</h3>
* <table><tbody>
* <tr>
* <th>output-module</th>
* <td>Nested element configuring output to use. Name attribute holds
* output module hint.</td>
* <td></td><td>XML</td><td><code>request-attr</code></td>
* </tr>
* <tr>
* <th>store-empty-parameters</th>
* <td>Propagate parameters with empty values.</td>
* <td></td><td>boolean</td><td><code>true</code></td>
* </tr>
* <tr>
* <th>defaults</th>
* <td>Parent for default parameters to propagate.</td>
* <td></td><td>XML</td><td></td>
* </tr>
* <tr>
* <th>defaults/default</th>
* <td>Name attribute holds parameter name, value attribute holds
* parameter value. Will be used when not set on use.</td>
* <td></td><td>parameter</td><td></td>
* </tr>
* </tbody></table>
*
*<h3>Parameters</h3>
* <table><tbody>
* <tr>
* <th>PropagatorAction:output-module</th>
* <td>Alternative output module hint to use. A <code>null</code>
configuration
* will be passed to a module selected this way.</td>
* <td></td><td>String</td><td>as determined by configuration</td>
* </tr>
* <tr>
* <th>PropagatorAction:store-empty-parameters</th>
* <td>Propagate parameters with empty values.</td>
* <td></td><td>boolean</td><td>as determined by configuration</td>
* </tr>
* <tr>
* <th>any other</th>
* <td>Any other parameter will be propagated.</td>
* <td></td><td>String</td><td></td>
* </tr>
* </tbody></table>
*
* @author <a href="mailto:[EMAIL PROTECTED]">Christian Haul</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Martin Man</a>
* @version CVS $Id: PropagatorAction.java,v 1.1 2004/03/11 09:14:32
cziegeler Exp $
*/
public class PropagatorAction
extends ServiceableAction
implements Configurable, ThreadSafe {
/** Role name for output modules. */
private static final String OUTPUT_MODULE_ROLE = OutputModule.ROLE;
/** Selector name for output modules. */
private static final String OUTPUT_MODULE_SELECTOR = OUTPUT_MODULE_ROLE +
"Selector";
/** Prefix for sitemap parameters targeted at this action. */
private static final String ACTION_PREFIX = "PropagatorAction:";
/** Configuration parameter name. */
private static final String CONFIG_STORE_EMPTY =
"store-empty-parameters";
/** Configuration parameter name. */
private static final String CONFIG_OUTPUT_MODULE = "output-module";
/** Should empty parameter values be propagated? */
private boolean storeEmpty = true;
/** Configuration object for output module. */
private Configuration outputConf = null;
/** Name of output module to use. */
private String outputName = null;
/** Default output module name. */
private static final String outputHint = "request-attr"; // default to
request attributes
/** List of [EMAIL PROTECTED] Entry}s holding default values. */
private List defaults = null;
/**
* A private helper holding default parameter entries.
*
*/
private class Entry {
public String key = null;
public String value = null;
public Entry(String key, String value) {
this.key = key;
this.value = value;
}
}
/*
* (non-Javadoc)
* @see
org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
*/
public void configure(Configuration config) throws
ConfigurationException {
this.outputConf = config.getChild(CONFIG_OUTPUT_MODULE);
this.outputName = this.outputConf.getAttribute("name",
outputHint);
this.storeEmpty =
config.getChild(CONFIG_STORE_EMPTY).getValueAsBoolean(this.storeEmpty);
Configuration[] dflts =
config.getChild("defaults").getChildren("default");
if (dflts != null) {
this.defaults = new ArrayList(dflts.length);
for (int i = 0; i < dflts.length; i++) {
this.defaults.add(
new Entry(
dflts[i].getAttribute("name"),
dflts[i].getAttribute("value")));
}
} else {
this.defaults = new ArrayList(0);
}
}
/**
* Read parameters and remove configuration for this action.
*
* @param param
* @return
*/
private Object[] readParameters(Parameters param) {
String outputName =
param.getParameter(ACTION_PREFIX +
CONFIG_OUTPUT_MODULE, null);
Boolean storeEmpty =
new Boolean(
param.getParameterAsBoolean(
ACTION_PREFIX + CONFIG_STORE_EMPTY,
this.storeEmpty));
param.removeParameter(ACTION_PREFIX + CONFIG_OUTPUT_MODULE);
param.removeParameter(ACTION_PREFIX + CONFIG_STORE_EMPTY);
return new Object[] { outputName, storeEmpty };
}
/*
* (non-Javadoc)
* @see
org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector,
org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String,
org.apache.avalon.framework.parameters.Parameters)
*/
public Map act(
Redirector redirector,
SourceResolver resolver,
Map objectModel,
String source,
Parameters parameters)
throws Exception {
// general setup
OutputModule output = null;
ServiceSelector outputSelector = null;
// I don't like this. Have a better idea to return two values.
Object[] obj = this.readParameters(parameters);
String outputName = (String) obj[0];
boolean storeEmpty = ((Boolean) obj[1]).booleanValue();
Configuration outputConf = null;
if (outputName == null) {
outputName = this.outputName;
outputConf = this.outputConf;
}
Map actionMap = new HashMap();
try {
outputSelector =
(ServiceSelector)
this.manager.lookup(OUTPUT_MODULE_SELECTOR);
if (outputName != null
&& outputSelector != null
&& outputSelector.isSelectable(outputName)) {
output = (OutputModule)
outputSelector.select(outputName);
String[] names = parameters.getNames();
// parameters
for (int i = 0; i < names.length; i++) {
String sessionParamName = names[i];
String value =
parameters.getParameter(sessionParamName);
if (storeEmpty || (value != null &&
!value.equals(""))) {
if
(getLogger().isDebugEnabled()) {
getLogger().debug(
"Propagating
value "
+ value
+ " to
output module"
+
sessionParamName);
}
output.setAttribute(
outputConf,
objectModel,
sessionParamName,
value);
actionMap.put(sessionParamName,
value);
}
}
// defaults, that are not overridden
for (Iterator i = defaults.iterator();
i.hasNext();) {
Entry entry = (Entry) i.next();
if (!actionMap.containsKey(entry.key)) {
if
(getLogger().isDebugEnabled()) {
getLogger().debug(
"Propagating
default value "
+
entry.value
+ " to
session attribute "
+
entry.key);
}
output.setAttribute(
outputConf,
objectModel,
entry.key,
entry.value);
actionMap.put(entry.key,
entry.value);
}
}
output.commit(outputConf, objectModel);
}
} catch (Exception e) {
if (output != null) {
output.rollback(outputConf, objectModel, e);
}
throw e;
} finally {
if (outputSelector != null) {
if (output != null)
outputSelector.release(output);
this.manager.release(outputSelector);
}
}
return Collections.unmodifiableMap(actionMap);
}
}