01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17: package org.apache.cocoon.acting;
18:
19: import org.apache.avalon.framework.configuration.Configurable;
20: import org.apache.avalon.framework.configuration.Configuration;
21: import org.apache.avalon.framework.configuration.ConfigurationException;
22: import org.apache.cocoon.util.HashMap;
23:
24: /**
25: * AbstractConfigurableAction gives you the infrastructure for easily
26: * deploying more Actions that take default parameters.
27: *
28: * @author <a href="mailto:haul@apache.org">Christian Haul</a>
29: * @version CVS $Id: AbstractConfigurableAction.java 433543 2006-08-22 06:22:54Z crossley $
30: */
31: public abstract class AbstractConfigurableAction extends AbstractAction
32: implements Configurable {
33:
34: /**
35: * Stores (global) configuration parameters as <code>key</code> /
36: * <code>value</code> pairs.
37: */
38: protected HashMap settings = null;
39:
40: /**
41: * Configures the Action.
42: *
43: * Takes the children from the <code>Configuration</code> and stores them
44: * them as key (configuration name) and value (configuration value)
45: * in <code>settings</code>.
46: * <br/>
47: * This automates parsing of flat string-only configurations.
48: * For nested configurations, override this function in your action.
49: */
50: public void configure(Configuration conf)
51: throws ConfigurationException {
52: Configuration[] parameters = conf.getChildren();
53: this .settings = new HashMap(parameters.length);
54: for (int i = 0; i < parameters.length; i++) {
55: String key = parameters[i].getName();
56: String val = parameters[i].getValue(null);
57: this.settings.put(key, val);
58: }
59: }
60: }
|