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 2003/07/16 16:00:31 UTC
cvs commit: cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/util SimpleServiceSelector.java
bruno 2003/07/16 07:00:30
Modified: src/blocks/woody/java/org/apache/cocoon/woody/acting
AbstractWoodyAction.java
HandleFormSubmitAction.java MakeFormAction.java
src/blocks/woody/java/org/apache/cocoon/woody/datatype
DefaultDatatypeManager.java
DynamicSelectionList.java
src/blocks/woody/java/org/apache/cocoon/woody/datatype/typeimpl
AbstractDatatypeBuilder.java
src/blocks/woody/java/org/apache/cocoon/woody/datatype/validationruleimpl
AbstractValidationRuleBuilder.java
src/blocks/woody/java/org/apache/cocoon/woody/formmodel
AbstractWidgetDefinitionBuilder.java
AggregateFieldDefinitionBuilder.java
FormDefinitionBuilder.java
RepeaterDefinitionBuilder.java
src/blocks/woody/java/org/apache/cocoon/woody/util
SimpleServiceSelector.java
Log:
use Serviceable instead of Composable, do some extra disposing here and there
Revision Changes Path
1.3 +10 -12 cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/acting/AbstractWoodyAction.java
Index: AbstractWoodyAction.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/acting/AbstractWoodyAction.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractWoodyAction.java 4 Jul 2003 12:50:11 -0000 1.2
+++ AbstractWoodyAction.java 16 Jul 2003 13:59:06 -0000 1.3
@@ -53,31 +53,29 @@
import org.apache.cocoon.woody.FormManager;
import org.apache.cocoon.acting.Action;
import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.Composable;
import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceException;
/**
* Abstract base class for Woody actions.
*/
public abstract class AbstractWoodyAction
- implements Action, ThreadSafe, Composable, Disposable {
+ implements Action, ThreadSafe, Serviceable, Disposable {
- protected ComponentManager manager;
+ protected ServiceManager manager;
protected FormManager formManager;
- public void compose(ComponentManager componentManager)
- throws ComponentException {
- this.manager = componentManager;
- this.formManager = (FormManager)componentManager.lookup(FormManager.ROLE);
+ public void service(ServiceManager serviceManager) throws ServiceException {
+ this.manager = serviceManager;
+ this.formManager = (FormManager)serviceManager.lookup(FormManager.ROLE);
}
-
+
public void dispose() {
if ( this.manager != null ) {
- this.manager.release( (Component)this.formManager );
+ this.manager.release( this.formManager );
this.manager = null;
this.formManager = null;
}
1.6 +1 -2 cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/acting/HandleFormSubmitAction.java
Index: HandleFormSubmitAction.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/acting/HandleFormSubmitAction.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- HandleFormSubmitAction.java 8 Jul 2003 14:04:41 -0000 1.5
+++ HandleFormSubmitAction.java 16 Jul 2003 13:59:12 -0000 1.6
@@ -52,7 +52,6 @@
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.component.Composable;
import org.apache.cocoon.acting.Action;
import org.apache.cocoon.environment.Redirector;
import org.apache.cocoon.environment.SourceResolver;
@@ -79,7 +78,7 @@
* <li><strong>attribute-name</strong>: name of the request attribute in which the form instance should be stored
* </ul>
*/
-public class HandleFormSubmitAction extends AbstractWoodyAction implements Action, ThreadSafe, Composable {
+public class HandleFormSubmitAction extends AbstractWoodyAction implements Action, ThreadSafe {
public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src, Parameters parameters)
throws Exception {
1.5 +6 -6 cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/acting/MakeFormAction.java
Index: MakeFormAction.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/acting/MakeFormAction.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- MakeFormAction.java 8 Jul 2003 14:04:41 -0000 1.4
+++ MakeFormAction.java 16 Jul 2003 13:59:12 -0000 1.5
@@ -60,9 +60,9 @@
import org.apache.excalibur.source.Source;
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.ComponentException;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceException;
import java.util.Map;
@@ -75,12 +75,12 @@
* <li><strong>attribute-name</strong>: name of the request attribute in which to store the form instance
* </ul>
*/
-public class MakeFormAction implements Action, ThreadSafe, Composable {
+public class MakeFormAction implements Action, ThreadSafe, Serviceable {
FormManager formManager;
- public void compose(ComponentManager componentManager) throws ComponentException {
- formManager = (FormManager)componentManager.lookup(FormManager.ROLE);
+ public void service(ServiceManager serviceManager) throws ServiceException {
+ formManager = (FormManager)serviceManager.lookup(FormManager.ROLE);
}
public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src, Parameters parameters)
1.5 +15 -13 cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/datatype/DefaultDatatypeManager.java
Index: DefaultDatatypeManager.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/datatype/DefaultDatatypeManager.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- DefaultDatatypeManager.java 15 Jul 2003 17:00:32 -0000 1.4
+++ DefaultDatatypeManager.java 16 Jul 2003 13:59:18 -0000 1.5
@@ -51,24 +51,20 @@
package org.apache.cocoon.woody.datatype;
import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.ComponentException;
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.logger.AbstractLogEnabled;
import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.activity.Initializable;
+import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.CascadingException;
import org.apache.cocoon.woody.util.DomHelper;
import org.apache.cocoon.woody.util.SimpleServiceSelector;
-import org.apache.cocoon.components.LifecycleHelper;
import org.w3c.dom.Element;
-import java.util.Map;
-import java.util.HashMap;
-
/**
* Implementation of the {@link DatatypeManager} component.
*
@@ -78,27 +74,28 @@
* become externally configurable in the future.
*
*/
-public class DefaultDatatypeManager extends AbstractLogEnabled implements DatatypeManager, ThreadSafe, Composable, Configurable, Initializable {
+public class DefaultDatatypeManager extends AbstractLogEnabled implements DatatypeManager, ThreadSafe, Serviceable,
+ Configurable, Initializable, Disposable {
private SimpleServiceSelector typeBuilderSelector;
private SimpleServiceSelector validationRuleBuilderSelector;
- private ComponentManager componentManager;
+ private ServiceManager serviceManager;
private Configuration configuration;
public void configure(Configuration configuration) throws ConfigurationException {
this.configuration = configuration;
}
- public void compose(ComponentManager componentManager) throws ComponentException {
- this.componentManager = componentManager;
+ public void service(ServiceManager serviceManager) throws ServiceException {
+ this.serviceManager = serviceManager;
}
public void initialize() throws Exception {
typeBuilderSelector = new SimpleServiceSelector("datatype", DatatypeBuilder.class);
- typeBuilderSelector.compose(componentManager);
+ typeBuilderSelector.service(serviceManager);
typeBuilderSelector.configure(configuration.getChild("datatypes"));
validationRuleBuilderSelector = new SimpleServiceSelector("validation-rule", ValidationRuleBuilder.class);
- validationRuleBuilderSelector.compose(componentManager);
+ validationRuleBuilderSelector.service(serviceManager);
validationRuleBuilderSelector.configure(configuration.getChild("validation-rules"));
configuration = null;
@@ -124,5 +121,10 @@
throw new CascadingException("Unknown validation rule \"" + name + "\" specified at " + DomHelper.getLocation(validationRuleElement), e);
}
return builder.build(validationRuleElement);
+ }
+
+ public void dispose() {
+ typeBuilderSelector.dispose();
+ validationRuleBuilderSelector.dispose();
}
}
1.3 +6 -6 cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/datatype/DynamicSelectionList.java
Index: DynamicSelectionList.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/datatype/DynamicSelectionList.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DynamicSelectionList.java 15 Jul 2003 14:11:03 -0000 1.2
+++ DynamicSelectionList.java 16 Jul 2003 13:59:18 -0000 1.3
@@ -53,7 +53,7 @@
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import org.xml.sax.Attributes;
-import org.apache.avalon.framework.component.ComponentManager;
+import org.apache.avalon.framework.service.ServiceManager;
import org.apache.excalibur.source.SourceResolver;
import org.apache.excalibur.source.Source;
import org.apache.cocoon.components.source.SourceUtil;
@@ -77,12 +77,12 @@
public class DynamicSelectionList implements SelectionList {
private String src;
private Datatype datatype;
- private ComponentManager componentManager;
+ private ServiceManager serviceManager;
- public DynamicSelectionList(Datatype datatype, String src, ComponentManager componentManager) {
+ public DynamicSelectionList(Datatype datatype, String src, ServiceManager serviceManager) {
this.datatype = datatype;
this.src = src;
- this.componentManager = componentManager;
+ this.serviceManager = serviceManager;
}
public Datatype getDatatype() {
@@ -93,7 +93,7 @@
SourceResolver sourceResolver = null;
Source source = null;
try {
- sourceResolver = (SourceResolver)componentManager.lookup(SourceResolver.ROLE);
+ sourceResolver = (SourceResolver)serviceManager.lookup(SourceResolver.ROLE);
source = sourceResolver.resolveURI(src);
SelectionListHandler handler = new SelectionListHandler(locale);
handler.setContentHandler(contentHandler);
@@ -104,7 +104,7 @@
if (sourceResolver != null) {
if (source != null)
try { sourceResolver.release(source); } catch (Exception e) {}
- componentManager.release(sourceResolver);
+ serviceManager.release(sourceResolver);
}
}
}
1.6 +10 -11 cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/datatype/typeimpl/AbstractDatatypeBuilder.java
Index: AbstractDatatypeBuilder.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/datatype/typeimpl/AbstractDatatypeBuilder.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- AbstractDatatypeBuilder.java 15 Jul 2003 15:13:00 -0000 1.5
+++ AbstractDatatypeBuilder.java 16 Jul 2003 13:59:18 -0000 1.6
@@ -56,13 +56,12 @@
import org.apache.cocoon.woody.util.DomHelper;
import org.apache.cocoon.woody.util.SimpleServiceSelector;
import org.apache.cocoon.woody.Constants;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.ComponentException;
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.service.ServiceException;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceManager;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
import org.w3c.dom.Element;
@@ -75,14 +74,14 @@
* Abstract base class for datatype builders, most concrete datatype builders
* will derive from this class.
*/
-public abstract class AbstractDatatypeBuilder implements DatatypeBuilder, Composable, Configurable {
- protected ComponentManager componentManager;
+public abstract class AbstractDatatypeBuilder implements DatatypeBuilder, Serviceable, Configurable {
+ protected ServiceManager serviceManager;
private SimpleServiceSelector convertorBuilders;
private String defaultConvertorHint;
private Convertor plainConvertor;
- public void compose(ComponentManager componentManager) throws ComponentException {
- this.componentManager = componentManager;
+ public void service(ServiceManager serviceManager) throws ServiceException {
+ this.serviceManager = serviceManager;
}
public void configure(Configuration configuration) throws ConfigurationException {
@@ -127,14 +126,14 @@
return plainConvertor;
}
- protected Source resolve(String src) throws ComponentException, IOException {
+ protected Source resolve(String src) throws IOException, ServiceException {
SourceResolver resolver = null;
try {
- resolver = (SourceResolver)componentManager.lookup(SourceResolver.ROLE);
+ resolver = (SourceResolver)serviceManager.lookup(SourceResolver.ROLE);
return resolver.resolveURI(src);
} finally {
if (resolver != null)
- componentManager.release(resolver);
+ serviceManager.release(resolver);
}
}
@@ -149,7 +148,7 @@
selectionListElement = readSelectionList(src);
selectionList = SelectionListBuilder.build(selectionListElement, datatype);
} else {
- selectionList = new DynamicSelectionList(datatype, src, componentManager);
+ selectionList = new DynamicSelectionList(datatype, src, serviceManager);
}
} else {
// selection list is defined inline
1.2 +13 -6 cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/datatype/validationruleimpl/AbstractValidationRuleBuilder.java
Index: AbstractValidationRuleBuilder.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/datatype/validationruleimpl/AbstractValidationRuleBuilder.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractValidationRuleBuilder.java 22 Apr 2003 12:04:19 -0000 1.1
+++ AbstractValidationRuleBuilder.java 16 Jul 2003 13:59:28 -0000 1.2
@@ -55,9 +55,10 @@
import org.apache.cocoon.woody.Constants;
import org.apache.cocoon.woody.expression.ExpressionManager;
import org.apache.avalon.framework.CascadingException;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.ComponentException;
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceException;
import org.w3c.dom.Element;
import org.outerj.expression.Expression;
import org.outerj.expression.TokenMgrError;
@@ -65,11 +66,13 @@
/**
* Abstract base class for ValidationRuleBuilder implementations.
*/
-public abstract class AbstractValidationRuleBuilder implements ValidationRuleBuilder, Composable {
+public abstract class AbstractValidationRuleBuilder implements ValidationRuleBuilder, Serviceable, Disposable {
protected ExpressionManager expressionManager;
+ protected ServiceManager serviceManager;
- public void compose(ComponentManager componentManager) throws ComponentException {
- expressionManager = (ExpressionManager)componentManager.lookup(ExpressionManager.ROLE);
+ public void service(ServiceManager serviceManager) throws ServiceException {
+ this.serviceManager = serviceManager;
+ expressionManager = (ExpressionManager)serviceManager.lookup(ExpressionManager.ROLE);
}
/**
@@ -95,5 +98,9 @@
} catch (Exception e) {
throw new CascadingException("Error in expression \"" + exprString + "\" in attribute \"" + attrName + "\" at " + DomHelper.getLocation(element), e);
}
+ }
+
+ public void dispose() {
+ serviceManager.release(expressionManager);
}
}
1.3 +31 -10 cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/formmodel/AbstractWidgetDefinitionBuilder.java
Index: AbstractWidgetDefinitionBuilder.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/formmodel/AbstractWidgetDefinitionBuilder.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractWidgetDefinitionBuilder.java 26 Jun 2003 09:13:14 -0000 1.2
+++ AbstractWidgetDefinitionBuilder.java 16 Jul 2003 13:59:36 -0000 1.3
@@ -53,26 +53,30 @@
import org.w3c.dom.Element;
import org.apache.cocoon.woody.util.DomHelper;
import org.apache.cocoon.woody.Constants;
-import org.apache.cocoon.woody.FormManager;
import org.apache.cocoon.woody.expression.ExpressionManager;
import org.apache.cocoon.woody.datatype.DatatypeManager;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.ComponentException;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceSelector;
+import org.apache.avalon.framework.CascadingException;
+import org.apache.avalon.framework.activity.Disposable;
/**
* Abstract base class for WidgetDefinitionBuilders. Provides functionality
* common to many implementations.
*/
-public abstract class AbstractWidgetDefinitionBuilder implements WidgetDefinitionBuilder, Composable {
- protected FormManager formManager;
+public abstract class AbstractWidgetDefinitionBuilder implements WidgetDefinitionBuilder, Serviceable, Disposable {
+ protected ServiceSelector widgetDefinitionBuilderSelector;
protected DatatypeManager datatypeManager;
protected ExpressionManager expressionManager;
+ protected ServiceManager serviceManager;
- public void compose(ComponentManager componentManager) throws ComponentException {
- formManager = (FormManager)componentManager.lookup(FormManager.ROLE);
- datatypeManager = (DatatypeManager)componentManager.lookup(DatatypeManager.ROLE);
- expressionManager = (ExpressionManager)componentManager.lookup(ExpressionManager.ROLE);
+ public void service(ServiceManager serviceManager) throws ServiceException {
+ this.serviceManager = serviceManager;
+ widgetDefinitionBuilderSelector = (ServiceSelector)serviceManager.lookup( WidgetDefinitionBuilder.class.getName() + "Selector");
+ datatypeManager = (DatatypeManager)serviceManager.lookup(DatatypeManager.ROLE);
+ expressionManager = (ExpressionManager)serviceManager.lookup(ExpressionManager.ROLE);
}
protected void setId(Element widgetElement, AbstractWidgetDefinition widgetDefinition) throws Exception {
@@ -88,5 +92,22 @@
Object label = DomHelper.compileElementContent(labelElement);
widgetDefinition.setLabel(label);
}
+ }
+
+ protected WidgetDefinition buildAnotherWidgetDefinition(Element widgetDefinition) throws Exception {
+ String widgetName = widgetDefinition.getLocalName();
+ WidgetDefinitionBuilder builder = null;
+ try {
+ builder = (WidgetDefinitionBuilder)widgetDefinitionBuilderSelector.select(widgetName);
+ } catch (ServiceException e) {
+ throw new CascadingException("Unkown kind of widget \"" + widgetName + "\" specified at " + DomHelper.getLocation(widgetDefinition), e);
+ }
+ return builder.buildWidgetDefinition(widgetDefinition);
+ }
+
+ public void dispose() {
+ serviceManager.release(widgetDefinitionBuilderSelector);
+ serviceManager.release(datatypeManager);
+ serviceManager.release(expressionManager);
}
}
1.2 +1 -1 cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/formmodel/AggregateFieldDefinitionBuilder.java
Index: AggregateFieldDefinitionBuilder.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/formmodel/AggregateFieldDefinitionBuilder.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AggregateFieldDefinitionBuilder.java 26 Jun 2003 09:09:59 -0000 1.1
+++ AggregateFieldDefinitionBuilder.java 16 Jul 2003 13:59:41 -0000 1.2
@@ -74,7 +74,7 @@
Element childrenElement = DomHelper.getChildElement(widgetElement, Constants.WD_NS, "children", true);
Element[] fieldElements = DomHelper.getChildElements(childrenElement, Constants.WD_NS, "field");
for (int i = 0; i < fieldElements.length; i++) {
- FieldDefinition fieldDefinition = (FieldDefinition)formManager.buildWidgetDefinition(fieldElements[i]);
+ FieldDefinition fieldDefinition = (FieldDefinition)buildAnotherWidgetDefinition(fieldElements[i]);
if (!String.class.isAssignableFrom(fieldDefinition.getDatatype().getTypeClass()))
throw new Exception("An aggregatefield can only contain fields with datatype string, at " + DomHelper.getLocation(fieldElements[i]));
definition.addWidgetDefinition(fieldDefinition);
1.2 +1 -1 cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/formmodel/FormDefinitionBuilder.java
Index: FormDefinitionBuilder.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/formmodel/FormDefinitionBuilder.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- FormDefinitionBuilder.java 22 Apr 2003 12:04:19 -0000 1.1
+++ FormDefinitionBuilder.java 16 Jul 2003 13:59:45 -0000 1.2
@@ -70,7 +70,7 @@
Element[] widgetElements = DomHelper.getChildElements(formElement, Constants.WD_NS);
for (int i = 0; i < widgetElements.length; i++) {
Element widgetElement = widgetElements[i];
- WidgetDefinition widgetDefinition = formManager.buildWidgetDefinition(widgetElement);
+ WidgetDefinition widgetDefinition = buildAnotherWidgetDefinition(widgetElement);
formDefinition.addWidgetDefinition(widgetDefinition);
}
1.2 +1 -1 cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/formmodel/RepeaterDefinitionBuilder.java
Index: RepeaterDefinitionBuilder.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/formmodel/RepeaterDefinitionBuilder.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RepeaterDefinitionBuilder.java 22 Apr 2003 12:04:19 -0000 1.1
+++ RepeaterDefinitionBuilder.java 16 Jul 2003 13:59:45 -0000 1.2
@@ -67,7 +67,7 @@
// the children of the repeater element are widget configuration elements
Element[] widgetElements = DomHelper.getChildElements(widgetElement, Constants.WD_NS);
for (int i = 0; i < widgetElements.length; i++) {
- WidgetDefinition widgetDefinition = formManager.buildWidgetDefinition(widgetElements[i]);
+ WidgetDefinition widgetDefinition = buildAnotherWidgetDefinition(widgetElements[i]);
repeaterDefinition.addWidget(widgetDefinition);
}
1.2 +24 -8 cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/util/SimpleServiceSelector.java
Index: SimpleServiceSelector.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/util/SimpleServiceSelector.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SimpleServiceSelector.java 15 Jul 2003 14:06:16 -0000 1.1
+++ SimpleServiceSelector.java 16 Jul 2003 14:00:20 -0000 1.2
@@ -52,35 +52,37 @@
import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceManager;
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.logger.LogEnabled;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.ComponentException;
+import org.apache.avalon.framework.activity.Disposable;
import org.apache.cocoon.components.LifecycleHelper;
import java.util.Map;
import java.util.HashMap;
+import java.util.Iterator;
/**
* A very simple ServiceSelector for ThreadSafe services.
*/
-public class SimpleServiceSelector extends AbstractLogEnabled implements ServiceSelector, Configurable, LogEnabled, Composable {
+public class SimpleServiceSelector extends AbstractLogEnabled implements ServiceSelector, Configurable, LogEnabled,
+ Serviceable, Disposable {
private final String hintShortHand;
private final Class componentClass;
private Map components = new HashMap();
- private ComponentManager componentManager;
+ private ServiceManager serviceManager;
public SimpleServiceSelector(String hintShortHand, Class componentClass) {
this.hintShortHand = hintShortHand;
this.componentClass = componentClass;
}
- public void compose(ComponentManager componentManager) throws ComponentException {
- this.componentManager = componentManager;
+ public void service(ServiceManager serviceManager) throws ServiceException {
+ this.serviceManager = serviceManager;
}
public void configure(Configuration configuration) throws ConfigurationException {
@@ -102,7 +104,7 @@
Object component = null;
try {
component = clazz.newInstance();
- LifecycleHelper lifecycleHelper = new LifecycleHelper(getLogger(), null, componentManager, null, null, componentConfs[i]);
+ LifecycleHelper lifecycleHelper = new LifecycleHelper(getLogger(), null, serviceManager, null, null, componentConfs[i]);
lifecycleHelper.setupComponent(component);
} catch (Exception e) {
throw new ConfigurationException("Error creating " + hintShortHand + " declared at " + componentConfs[i], e);
@@ -125,5 +127,19 @@
}
public void release(Object o) {
+ }
+
+ public void dispose() {
+ Iterator serviceIt = components.values().iterator();
+ while (serviceIt.hasNext()) {
+ Object service = serviceIt.next();
+ if (service instanceof Disposable) {
+ try {
+ ((Disposable)service).dispose();
+ } catch (Exception e) {
+ getLogger().error("Error disposing service " + service, e);
+ }
+ }
+ }
}
}