You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by br...@apache.org on 2004/04/15 20:09:04 UTC
cvs commit: cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype DefaultDatatypeManager.java
bruno 2004/04/15 11:09:03
Modified: src/blocks/forms/java/org/apache/cocoon/forms/util
SimpleServiceSelector.java
src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl
AbstractDatatypeBuilder.java
src/blocks/forms/java/org/apache/cocoon/forms/datatype
DefaultDatatypeManager.java
Log:
make sure all datatype- and convertorbuilders are both serviceable and
contextualizable
Revision Changes Path
1.2 +11 -3 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/util/SimpleServiceSelector.java
Index: SimpleServiceSelector.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/util/SimpleServiceSelector.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SimpleServiceSelector.java 9 Mar 2004 10:34:09 -0000 1.1
+++ SimpleServiceSelector.java 15 Apr 2004 18:09:03 -0000 1.2
@@ -29,6 +29,9 @@
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.context.Contextualizable;
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
import org.apache.cocoon.components.LifecycleHelper;
/**
@@ -37,11 +40,12 @@
* @version $Id$
*/
public class SimpleServiceSelector extends AbstractLogEnabled implements ServiceSelector, Configurable, LogEnabled,
- Serviceable, Disposable {
+ Serviceable, Disposable, Contextualizable {
private final String hintShortHand;
private final Class componentClass;
private Map components = new HashMap();
private ServiceManager serviceManager;
+ private Context context;
public SimpleServiceSelector(String hintShortHand, Class componentClass) {
this.hintShortHand = hintShortHand;
@@ -52,6 +56,10 @@
this.serviceManager = serviceManager;
}
+ public void contextualize(Context context) throws ContextException {
+ this.context = context;
+ }
+
public void configure(Configuration configuration) throws ConfigurationException {
Configuration[] componentConfs = configuration.getChildren(hintShortHand);
for (int i = 0; i < componentConfs.length; i++) {
@@ -71,7 +79,7 @@
Object component = null;
try {
component = clazz.newInstance();
- LifecycleHelper lifecycleHelper = new LifecycleHelper(getLogger(), null, serviceManager, null, componentConfs[i]);
+ LifecycleHelper lifecycleHelper = new LifecycleHelper(getLogger(), context, serviceManager, null, componentConfs[i]);
lifecycleHelper.setupComponent(component);
} catch (Exception e) {
throw new ConfigurationException("Error creating " + hintShortHand + " declared at " + componentConfs[i].getLocation(), e);
1.3 +16 -2 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl/AbstractDatatypeBuilder.java
Index: AbstractDatatypeBuilder.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl/AbstractDatatypeBuilder.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractDatatypeBuilder.java 9 Mar 2004 13:08:46 -0000 1.2
+++ AbstractDatatypeBuilder.java 15 Apr 2004 18:09:03 -0000 1.3
@@ -21,6 +21,9 @@
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.context.Contextualizable;
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
import org.apache.cocoon.forms.Constants;
import org.apache.cocoon.forms.datatype.DatatypeBuilder;
import org.apache.cocoon.forms.datatype.DatatypeManager;
@@ -36,18 +39,29 @@
* will derive from this class.
* @version $Id$
*/
-public abstract class AbstractDatatypeBuilder implements DatatypeBuilder, Serviceable, Configurable {
+public abstract class AbstractDatatypeBuilder implements DatatypeBuilder, Serviceable, Configurable, Contextualizable {
protected ServiceManager serviceManager;
private SimpleServiceSelector convertorBuilders;
private String defaultConvertorHint;
private Convertor plainConvertor;
+ private Context context;
public void service(ServiceManager serviceManager) throws ServiceException {
this.serviceManager = serviceManager;
}
+ public void contextualize(Context context) throws ContextException {
+ this.context = context;
+ }
+
public void configure(Configuration configuration) throws ConfigurationException {
convertorBuilders = new SimpleServiceSelector("convertor", ConvertorBuilder.class);
+ try {
+ convertorBuilders.contextualize(context);
+ convertorBuilders.service(serviceManager);
+ } catch (Exception e) {
+ throw new ConfigurationException("Error setting up convertor builder selector.", e);
+ }
Configuration convertorsConf = configuration.getChild("convertors");
convertorBuilders.configure(convertorsConf);
defaultConvertorHint = convertorsConf.getAttribute("default");
1.2 +12 -2 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/DefaultDatatypeManager.java
Index: DefaultDatatypeManager.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/DefaultDatatypeManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultDatatypeManager.java 9 Mar 2004 10:34:00 -0000 1.1
+++ DefaultDatatypeManager.java 15 Apr 2004 18:09:03 -0000 1.2
@@ -26,6 +26,9 @@
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.CascadingException;
+import org.apache.avalon.framework.context.Contextualizable;
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
import org.apache.cocoon.forms.datatype.convertor.Convertor;
import org.apache.cocoon.forms.util.DomHelper;
import org.apache.cocoon.forms.util.SimpleServiceSelector;
@@ -43,11 +46,16 @@
*
*/
public class DefaultDatatypeManager extends AbstractLogEnabled implements DatatypeManager, ThreadSafe, Serviceable,
- Configurable, Initializable, Disposable {
+ Configurable, Initializable, Disposable, Contextualizable {
private SimpleServiceSelector typeBuilderSelector;
private SimpleServiceSelector validationRuleBuilderSelector;
private ServiceManager serviceManager;
private Configuration configuration;
+ private Context context;
+
+ public void contextualize(Context context) throws ContextException {
+ this.context = context;
+ }
public void configure(Configuration configuration) throws ConfigurationException {
this.configuration = configuration;
@@ -59,10 +67,12 @@
public void initialize() throws Exception {
typeBuilderSelector = new SimpleServiceSelector("datatype", DatatypeBuilder.class);
+ typeBuilderSelector.contextualize(context);
typeBuilderSelector.service(serviceManager);
typeBuilderSelector.configure(configuration.getChild("datatypes"));
validationRuleBuilderSelector = new SimpleServiceSelector("validation-rule", ValidationRuleBuilder.class);
+ validationRuleBuilderSelector.contextualize(context);
validationRuleBuilderSelector.service(serviceManager);
validationRuleBuilderSelector.configure(configuration.getChild("validation-rules"));