You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by gi...@apache.org on 2007/09/28 13:33:18 UTC

svn commit: r580312 [3/5] - in /cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl: ./ src/main/java/org/apache/cocoon/forms/ src/main/java/org/apache/cocoon/forms/binding/ src/main/java/org/apache/cocoon/forms/binding/library/ src/main/java/org/apache...

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/HtmlCleaningConvertorBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/HtmlCleaningConvertorBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/HtmlCleaningConvertorBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/HtmlCleaningConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -15,14 +15,10 @@
  */
 package org.apache.cocoon.forms.datatype.convertor;
 
-import org.apache.cocoon.forms.datatype.convertor.ConvertorBuilder;
 import org.apache.cocoon.forms.datatype.convertor.Convertor;
 import org.apache.cocoon.forms.util.DomHelper;
 import org.apache.cocoon.forms.CacheManager;
 import org.apache.cocoon.components.source.SourceUtil;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceException;
 import org.apache.excalibur.source.SourceResolver;
 import org.apache.excalibur.source.Source;
 import org.w3c.dom.Element;
@@ -33,22 +29,16 @@
 /**
  * Builds {@link HtmlCleaningConvertor}s.
  */
-public class HtmlCleaningConvertorBuilder implements ConvertorBuilder, Serviceable {
-    private ServiceManager serviceManager;
-
-    public void service(ServiceManager serviceManager) throws ServiceException {
-        this.serviceManager = serviceManager;
-    }
+public class HtmlCleaningConvertorBuilder implements StringConvertorBuilder {
 
+    private CacheManager cacheManager;
+    private SourceResolver sourceResolver;
+    
     public Convertor build(Element element) throws Exception {
         String config = DomHelper.getAttribute(element, "config");
 
         Source source = null;
-        SourceResolver sourceResolver = null;
-        CacheManager cacheManager = null;
         try {
-            cacheManager = (CacheManager)serviceManager.lookup(CacheManager.ROLE);
-            sourceResolver = (SourceResolver)serviceManager.lookup(SourceResolver.ROLE);
             source = sourceResolver.resolveURI(config);
 
             String prefix = HtmlCleanerTemplate.class.getName();
@@ -64,10 +54,14 @@
         } finally {
             if (source != null)
                 sourceResolver.release(source);
-            if (sourceResolver != null)
-                serviceManager.release(sourceResolver);
-            if (cacheManager != null)
-                serviceManager.release(cacheManager);
         }
+    }
+    public void setCacheManager( CacheManager cacheManager )
+    {
+        this.cacheManager = cacheManager;
+    }
+    public void setSourceResolver( SourceResolver sourceResolver )
+    {
+        this.sourceResolver = sourceResolver;
     }
 }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/Icu4jDateConvertorBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/Icu4jDateConvertorBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/Icu4jDateConvertorBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/Icu4jDateConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -30,7 +30,7 @@
  *
  * @version $Id$
  */
-public class Icu4jDateConvertorBuilder implements ConvertorBuilder {
+public class Icu4jDateConvertorBuilder implements DateConvertorBuilder {
     public Convertor build(Element configElement) throws Exception {
         Icu4jDateConvertor convertor = new Icu4jDateConvertor();
 

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/IntegerConvertorBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/IntegerConvertorBuilder.java?rev=580312&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/IntegerConvertorBuilder.java (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/IntegerConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.forms.datatype.convertor;
+
+public interface IntegerConvertorBuilder
+    extends ConvertorBuilder
+{
+}

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/IntegerConvertorBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/IntegerConvertorBuilder.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/LongConvertorBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/LongConvertorBuilder.java?rev=580312&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/LongConvertorBuilder.java (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/LongConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.forms.datatype.convertor;
+
+public interface LongConvertorBuilder
+    extends ConvertorBuilder
+{
+}

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/LongConvertorBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/LongConvertorBuilder.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/MillisDateConvertorBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/MillisDateConvertorBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/MillisDateConvertorBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/MillisDateConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -23,7 +23,7 @@
  *
  * @version $Id$
  */
-public class MillisDateConvertorBuilder implements ConvertorBuilder {
+public class MillisDateConvertorBuilder implements DateConvertorBuilder {
     public Convertor build(Element configElement) {
         return new MillisDateConvertor();
     }

Copied: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainBeanConvertorBuilder.java (from r574825, cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainBeanConvertorBuilder.java?p2=cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainBeanConvertorBuilder.java&p1=cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java&r1=574825&r2=580312&rev=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainBeanConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -38,8 +38,8 @@
  *
  * @version $Id$
  */
-public class BeanConvertorBuilder
-    implements ConvertorBuilder
+public class PlainBeanConvertorBuilder
+    implements BeanConvertorBuilder
 {
     //~ Methods ----------------------------------------------------------------
 

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainBooleanConvertorBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainBooleanConvertorBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainBooleanConvertorBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainBooleanConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -23,7 +23,7 @@
  *
  * @version $Id$
  */
-public class PlainBooleanConvertorBuilder implements ConvertorBuilder {
+public class PlainBooleanConvertorBuilder implements BooleanConvertorBuilder {
     public Convertor build(Element configElement) throws Exception {
         return new PlainBooleanConvertor();
     }

Copied: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainCharConvertorBuilder.java (from r574825, cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/CharConvertorBuilder.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainCharConvertorBuilder.java?p2=cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainCharConvertorBuilder.java&p1=cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/CharConvertorBuilder.java&r1=574825&r2=580312&rev=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/CharConvertorBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainCharConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -25,7 +25,7 @@
  *
  * @version $Id$
  */
-public class CharConvertorBuilder implements ConvertorBuilder {
+public class PlainCharConvertorBuilder implements CharConvertorBuilder {
     public Convertor build(Element configElement) throws Exception {
         return new CharConvertor();
     }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainDecimalConvertorBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainDecimalConvertorBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainDecimalConvertorBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainDecimalConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -22,7 +22,7 @@
  *
  * @version $Id$
  */
-public class PlainDecimalConvertorBuilder implements ConvertorBuilder {
+public class PlainDecimalConvertorBuilder implements DecimalConvertorBuilder {
     public Convertor build(Element configElement) throws Exception {
         return new PlainDecimalConvertor();
     }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainDoubleConvertorBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainDoubleConvertorBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainDoubleConvertorBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainDoubleConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -22,7 +22,7 @@
  *
  * @version $Id$
  */
-public class PlainDoubleConvertorBuilder implements ConvertorBuilder {
+public class PlainDoubleConvertorBuilder implements DoubleConvertorBuilder {
     public Convertor build(Element configElement) throws Exception {
         return new PlainDoubleConvertor();
     }

Copied: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainEnumConvertorBuilder.java (from r574825, cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/EnumConvertorBuilder.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainEnumConvertorBuilder.java?p2=cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainEnumConvertorBuilder.java&p1=cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/EnumConvertorBuilder.java&r1=574825&r2=580312&rev=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/EnumConvertorBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainEnumConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -25,7 +25,7 @@
  * 
  * @version $Id$
  */
-public class EnumConvertorBuilder implements ConvertorBuilder {
+public class PlainEnumConvertorBuilder implements EnumConvertorBuilder {
 
     /* (non-Javadoc)
      * @see org.apache.cocoon.form.datatype.convertor.ConvertorBuilder#build(org.w3c.dom.Element)

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainFloatConvertorBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainFloatConvertorBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainFloatConvertorBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainFloatConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -22,7 +22,7 @@
  *
  * @version $Id$
  */
-public class PlainFloatConvertorBuilder implements ConvertorBuilder {
+public class PlainFloatConvertorBuilder implements FloatConvertorBuilder {
     public Convertor build(Element configElement) throws Exception {
         return new PlainFloatConvertor();
     }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainIntegerConvertorBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainIntegerConvertorBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainIntegerConvertorBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainIntegerConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -23,7 +23,7 @@
  * 
  * @version $Id$
  */
-public class PlainIntegerConvertorBuilder implements ConvertorBuilder {
+public class PlainIntegerConvertorBuilder implements IntegerConvertorBuilder {
     public Convertor build(Element configElement) throws Exception {
         return new PlainIntegerConvertor();
     }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainLongConvertorBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainLongConvertorBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainLongConvertorBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/PlainLongConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -23,7 +23,7 @@
  *
  * @version $Id$
  */
-public class PlainLongConvertorBuilder implements ConvertorBuilder {
+public class PlainLongConvertorBuilder implements LongConvertorBuilder {
     public Convertor build(Element configElement) throws Exception {
         return new PlainLongConvertor();
     }

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/StringConvertorBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/StringConvertorBuilder.java?rev=580312&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/StringConvertorBuilder.java (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/StringConvertorBuilder.java Fri Sep 28 04:33:12 2007
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.forms.datatype.convertor;
+
+public interface StringConvertorBuilder
+    extends ConvertorBuilder
+{
+}

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/StringConvertorBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/StringConvertorBuilder.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/typeimpl/AbstractDatatypeBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/typeimpl/AbstractDatatypeBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/typeimpl/AbstractDatatypeBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/typeimpl/AbstractDatatypeBuilder.java Fri Sep 28 04:33:12 2007
@@ -16,17 +16,6 @@
  */
 package org.apache.cocoon.forms.datatype.typeimpl;
 
-import org.apache.avalon.framework.activity.Disposable;
-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.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.avalon.framework.logger.AbstractLogEnabled;
 import org.apache.cocoon.forms.FormsConstants;
 import org.apache.cocoon.forms.datatype.DatatypeBuilder;
 import org.apache.cocoon.forms.datatype.DatatypeManager;
@@ -34,60 +23,19 @@
 import org.apache.cocoon.forms.datatype.convertor.Convertor;
 import org.apache.cocoon.forms.datatype.convertor.ConvertorBuilder;
 import org.apache.cocoon.forms.util.DomHelper;
-import org.apache.cocoon.forms.util.SimpleServiceSelector;
 import org.w3c.dom.Element;
 
+import java.util.Map;
+
 /**
  * Abstract base class for datatype builders, most concrete datatype builders
  * will derive from this class.
  * @version $Id$
  */
-public abstract class AbstractDatatypeBuilder extends AbstractLogEnabled implements DatatypeBuilder, Serviceable, Configurable, Contextualizable, Disposable {
-    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.enableLogging(getLogger());
-            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");
-
-        String plainConvertorHint = convertorsConf.getAttribute("plain");
-        ConvertorBuilder plainConvertorBuilder;
-        try {
-            plainConvertorBuilder = (ConvertorBuilder)convertorBuilders.select(plainConvertorHint);
-        } catch (ServiceException e) {
-            throw new ConfigurationException("Convertor defined in plain attribute unavailable.", e);
-        }
-
-        try {
-            plainConvertor = plainConvertorBuilder.build(null);
-        } catch (Exception e) {
-            throw new ConfigurationException("Error create plain convertor.", e);
-        }
-    }
-
-    public void dispose() {
-	convertorBuilders.dispose();
-    }
+public abstract class AbstractDatatypeBuilder implements DatatypeBuilder {
+    private Map convertorBuilders;
+    private String defaultConvertorName;
+    private String plainConvertorName;
 
     public void buildConvertor(Element datatypeEl, AbstractDatatype datatype) throws Exception {
         Element convertorEl = DomHelper.getChildElement(datatypeEl, FormsConstants.DEFINITION_NS, "convertor", false);
@@ -101,13 +49,16 @@
         if (convertorEl != null)
             type = convertorEl.getAttribute("type");
         if (type == null || type.length() == 0)
-            type = defaultConvertorHint;
-        ConvertorBuilder convertorBuilder = (ConvertorBuilder)convertorBuilders.select(type);
+            type = defaultConvertorName;
+        ConvertorBuilder convertorBuilder = (ConvertorBuilder)convertorBuilders.get(type);
+        if (convertorBuilder == null) {
+            throw new IllegalArgumentException("Undefined ConvertorBuild: " + type);
+        }
         return convertorBuilder.build(convertorEl);
     }
 
     public Convertor getPlainConvertor() {
-        return plainConvertor;
+        return (Convertor)convertorBuilders.get(plainConvertorName);
     }
 
     protected void buildValidationRules(Element datatypeElement, AbstractDatatype datatype, DatatypeManager datatypeManager) throws Exception {
@@ -123,5 +74,20 @@
                 }
             }
         }
+    }
+
+    public void setConvertorBuilders( Map convertorBuilders )
+    {
+        this.convertorBuilders = convertorBuilders;
+    }
+
+    public void setDefaultConvertorName( String defaultConvertorName )
+    {
+        this.defaultConvertorName = defaultConvertorName;
+    }
+
+    public void setPlainConvertorName( String plainConvertorName )
+    {
+        this.plainConvertorName = plainConvertorName;
     }
 }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/validationruleimpl/AbstractValidationRuleBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/validationruleimpl/AbstractValidationRuleBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/validationruleimpl/AbstractValidationRuleBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/validationruleimpl/AbstractValidationRuleBuilder.java Fri Sep 28 04:33:12 2007
@@ -20,11 +20,6 @@
 import org.apache.cocoon.forms.datatype.ValidationRuleBuilder;
 import org.apache.cocoon.forms.expression.ExpressionManager;
 import org.apache.cocoon.forms.util.DomHelper;
-import org.apache.avalon.framework.CascadingException;
-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.apache.excalibur.xml.sax.XMLizable;
 import org.w3c.dom.Element;
 import org.outerj.expression.Expression;
@@ -36,18 +31,9 @@
  * @version $Id$
  */
 public abstract class AbstractValidationRuleBuilder 
-    implements ValidationRuleBuilder, Serviceable, Disposable {
+    implements ValidationRuleBuilder {
 
     protected ExpressionManager expressionManager;
-    protected ServiceManager serviceManager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager serviceManager) throws ServiceException {
-        this.serviceManager = serviceManager;
-        this.expressionManager = (ExpressionManager)serviceManager.lookup(ExpressionManager.ROLE);
-    }
 
     /**
      * Checks if the validation rule configuration contains a custom failmessage, and if so,
@@ -68,15 +54,14 @@
         try {
             return expressionManager.parse(exprString);
         } catch (TokenMgrError e) {
-            throw new CascadingException("Error in expression \"" + exprString + "\" in attribute \"" + attrName + "\" at " + DomHelper.getLocation(element), e);
+            throw new Exception("Error in expression \"" + exprString + "\" in attribute \"" + attrName + "\" at " + DomHelper.getLocation(element), e);
         } catch (Exception e) {
-            throw new CascadingException("Error in expression \"" + exprString + "\" in attribute \"" + attrName + "\" at " + DomHelper.getLocation(element), e);
+            throw new Exception("Error in expression \"" + exprString + "\" in attribute \"" + attrName + "\" at " + DomHelper.getLocation(element), e);
         }
     }
 
-    public void dispose() {
-        this.serviceManager.release(this.expressionManager);
-        this.expressionManager = null;
-        this.serviceManager = null;
+    public void setExpressionManager( ExpressionManager expressionManager )
+    {
+        this.expressionManager = expressionManager;
     }
 }

Added: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/ConfigurableWidgetListener.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/ConfigurableWidgetListener.java?rev=580312&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/ConfigurableWidgetListener.java (added)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/ConfigurableWidgetListener.java Fri Sep 28 04:33:12 2007
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.forms.event;
+
+import org.w3c.dom.Element;
+
+/**
+ * A {@link WidgetListener} that can recieve a configuration {@link Element}
+ * 
+ * @version $Id$
+ */
+public interface ConfigurableWidgetListener extends WidgetListener {
+
+    /**
+     * Set the configuration Element
+     */
+    void setConfiguration(Element element) throws Exception;
+}

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/ConfigurableWidgetListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/ConfigurableWidgetListener.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaClassWidgetListenerBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaClassWidgetListenerBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaClassWidgetListenerBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaClassWidgetListenerBuilder.java Fri Sep 28 04:33:12 2007
@@ -16,66 +16,72 @@
  */
 package org.apache.cocoon.forms.event.impl;
 
-import org.apache.cocoon.components.LifecycleHelper;
+import org.apache.cocoon.forms.FormsException;
+import org.apache.cocoon.forms.event.ConfigurableWidgetListener;
 import org.apache.cocoon.forms.event.WidgetListener;
 import org.apache.cocoon.forms.event.WidgetListenerBuilder;
 import org.apache.cocoon.forms.util.DomHelper;
-import org.apache.cocoon.util.ClassUtils;
-import org.apache.cocoon.util.ConfigurationUtil;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-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.thread.ThreadSafe;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.BeanFactoryAware;
 import org.w3c.dom.Element;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 /**
- * A {@link WidgetListenerBuilder} that creates java classes.
+ * A {@link WidgetListenerBuilder} that uses Spring beans.
  * <p>
  * The syntax for this listener is as follows :<br/>
  * <pre>
- *   &lt;java class="com.my.SuperListener"/&gt;
+ *   &lt;java ref="spring-bean-id"&gt;
+ *     ...
+ *   &lt;/java&gt;
  * </pre>
+ * 
+ * The {@link Element} node denoted by upper snippet is passed to the bean at a 
+ * method configure(Element e) if it exists.
  *
  * @version $Id$
  */
 public class JavaClassWidgetListenerBuilder
-    extends AbstractLogEnabled
-    implements WidgetListenerBuilder, ThreadSafe, Contextualizable, Serviceable {
+    implements WidgetListenerBuilder, BeanFactoryAware {
 
-    protected ServiceManager manager;
-
-    protected Context context;
-
-	/**
-	 * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
-	 */
-	public void contextualize(Context context) throws ContextException {
-        this.context = context;
+    private static Log LOG = LogFactory.getLog( JavaClassWidgetListenerBuilder.class );
+    
+    private BeanFactory beanFactory;
+
+    public void setBeanFactory( BeanFactory beanFactory)
+                                                  throws BeansException
+    {
+        this.beanFactory = beanFactory;
     }
 
-    /**
-	 * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-	 */
-	public void service(ServiceManager manager) throws ServiceException {
-		this.manager = manager;
-	}
-
 	/**
 	 * @see org.apache.cocoon.forms.event.WidgetListenerBuilder#buildListener(org.w3c.dom.Element, java.lang.Class)
 	 */
 	public WidgetListener buildListener(Element element, Class listenerClass) throws Exception {
-        String name = DomHelper.getAttribute(element, "class");
-
-        Object listener = ClassUtils.newInstance(name);
-        if (listenerClass.isAssignableFrom(listener.getClass())) {
-            LifecycleHelper.setupComponent(listener, this.getLogger(), this.context, manager, ConfigurationUtil.toConfiguration(element));
-            return (WidgetListener)listener;
-        } else {
-            throw new Exception("Class " + listener.getClass() + " is not a " + listenerClass);
+	    
+	    // hard way deprecation
+	    if (DomHelper.getAttribute(element, "class", null) != null) {
+                throw new RuntimeException("The 'class' attribute is not supported anymore at "
+                                           + DomHelper.getLocationObject( element )
+                                           + ". Use a 'ref' attribute to address a Spring bean");
+	    }
+	    
+        String name = DomHelper.getAttribute(element, "ref");
+
+        try {
+            Object listener = beanFactory.getBean( name );
+            if (listener != null && listenerClass.isAssignableFrom(listener.getClass())) {
+                if (listener instanceof ConfigurableWidgetListener) {
+                    ((ConfigurableWidgetListener)listener).setConfiguration( element );
+                }
+                return (WidgetListener)listener;
+            } else {
+                throw new FormsException("Bean referenced by " + name + " is not a " + listenerClass.getName(), DomHelper.getLocationObject( element ));
+            }
+        } catch(BeansException be) {
+            throw new FormsException("Bean referenced by " + name + " doesn't exist in Spring context", be, DomHelper.getLocationObject( element ));
         }
     }
 }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaScriptWidgetListener.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaScriptWidgetListener.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaScriptWidgetListener.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaScriptWidgetListener.java Fri Sep 28 04:33:12 2007
@@ -18,9 +18,6 @@
 
 import java.util.Map;
 
-import org.apache.avalon.framework.CascadingRuntimeException;
-import org.apache.avalon.framework.context.Context;
-import org.apache.cocoon.components.ContextHelper;
 import org.apache.cocoon.forms.event.ActionEvent;
 import org.apache.cocoon.forms.event.ActionListener;
 import org.apache.cocoon.forms.event.CreateEvent;
@@ -36,6 +33,7 @@
 import org.apache.cocoon.forms.formmodel.tree.TreeSelectionEvent;
 import org.apache.cocoon.forms.formmodel.tree.TreeSelectionListener;
 import org.apache.cocoon.forms.util.JavaScriptHelper;
+import org.apache.cocoon.processing.ProcessInfoProvider;
 import org.mozilla.javascript.Function;
 
 /**
@@ -46,11 +44,12 @@
 public abstract class JavaScriptWidgetListener {
     
     private Function func;
-    private Context context;
 
-    public JavaScriptWidgetListener(Function func, Context context) {
+    private ProcessInfoProvider processInfoProvider;
+    
+    public JavaScriptWidgetListener(Function func, ProcessInfoProvider processInfoProvider) {
         this.func = func;
-        this.context = context;
+        this.processInfoProvider = processInfoProvider;
     }
     
     /**
@@ -60,21 +59,21 @@
         try {
             //FIXME(SW) it would be nice to have "this" be the widget, but I don't know how to define
             //the "this" object for a script (this is easy for a function)
-            Map objectModel = ContextHelper.getObjectModel(context);
+            Map objectModel = processInfoProvider.getObjectModel();
             Widget w = event.getSourceWidget();
             JavaScriptHelper.callFunction(this.func, w, new Object[]{w, event}, objectModel);
         } catch(RuntimeException re) {
             // rethrow
             throw re;
         } catch(Exception e) {
-            throw new CascadingRuntimeException("Error invoking JavaScript event handler", e);
+            throw new RuntimeException("Error invoking JavaScript event handler", e);
         }
     }
     
     public static class JSActionListener extends JavaScriptWidgetListener implements ActionListener {
 
-        public JSActionListener(Function func, Context context) {
-            super(func, context);
+        public JSActionListener(Function func, ProcessInfoProvider processInfoProvider) {
+            super(func, processInfoProvider);
         }
 
         public void actionPerformed(ActionEvent event) {
@@ -84,8 +83,8 @@
     
     public static class JSValueChangedListener extends JavaScriptWidgetListener implements ValueChangedListener {
 
-        public JSValueChangedListener(Function func, Context context) {
-            super(func, context);
+        public JSValueChangedListener(Function func, ProcessInfoProvider processInfoProvider) {
+            super(func, processInfoProvider);
         }
 
         public void valueChanged(ValueChangedEvent event) {
@@ -95,8 +94,8 @@
     
     public static class JSCreateListener extends JavaScriptWidgetListener implements CreateListener {
 
-        public JSCreateListener(Function func, Context context) {
-            super(func, context);
+        public JSCreateListener(Function func, ProcessInfoProvider processInfoProvider) {
+            super(func, processInfoProvider);
         }
 
         public void widgetCreated(CreateEvent event) {
@@ -106,8 +105,8 @@
     
     public static class JSTreeSelectionListener extends JavaScriptWidgetListener implements TreeSelectionListener {
 
-        public JSTreeSelectionListener(Function func, Context context) {
-            super(func, context);
+        public JSTreeSelectionListener(Function func, ProcessInfoProvider processInfoProvider) {
+            super(func, processInfoProvider);
         }
 
         public void selectionChanged(TreeSelectionEvent event) {
@@ -117,8 +116,8 @@
 
     public static class JSProcessingPhaseListener extends JavaScriptWidgetListener implements ProcessingPhaseListener {
 
-        public JSProcessingPhaseListener(Function func, Context context) {
-            super(func, context);
+        public JSProcessingPhaseListener(Function func, ProcessInfoProvider processInfoProvider) {
+            super(func, processInfoProvider);
         }
 
         public void phaseEnded(ProcessingPhaseEvent event) {
@@ -129,14 +128,13 @@
     
     public static class JSRepeaterListener extends JavaScriptWidgetListener implements RepeaterListener {
 
-        public JSRepeaterListener(Function func, Context context) {
-            super(func, context);
+        public JSRepeaterListener(Function func, ProcessInfoProvider processInfoProvider) {
+            super(func, processInfoProvider);
         }
 
         public void repeaterModified(RepeaterEvent event) {
             super.callScript(event);
         }
-    }
-    
+    }    
 }
 

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaScriptWidgetListenerBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaScriptWidgetListenerBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaScriptWidgetListenerBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/JavaScriptWidgetListenerBuilder.java Fri Sep 28 04:33:12 2007
@@ -16,10 +16,6 @@
  */
 package org.apache.cocoon.forms.event.impl;
 
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.thread.ThreadSafe;
 import org.apache.cocoon.forms.event.ActionListener;
 import org.apache.cocoon.forms.event.CreateListener;
 import org.apache.cocoon.forms.event.ProcessingPhaseListener;
@@ -29,6 +25,7 @@
 import org.apache.cocoon.forms.event.WidgetListenerBuilder;
 import org.apache.cocoon.forms.formmodel.tree.TreeSelectionListener;
 import org.apache.cocoon.forms.util.JavaScriptHelper;
+import org.apache.cocoon.processing.ProcessInfoProvider;
 import org.mozilla.javascript.Function;
 import org.w3c.dom.Element;
 
@@ -47,32 +44,33 @@
  *
  * @version $Id$
  */
-public class JavaScriptWidgetListenerBuilder implements WidgetListenerBuilder, ThreadSafe, Contextualizable {
+public class JavaScriptWidgetListenerBuilder implements WidgetListenerBuilder {
 
-    private Context context;
-
-    public void contextualize(Context context) throws ContextException {
-        this.context = context;
-    }
+    private ProcessInfoProvider processInfoProvider;
 
     public WidgetListener buildListener(Element element, Class listenerClass) throws Exception {
 
         Function func = JavaScriptHelper.buildFunction(element, "handleEvent", new String[]{"widget", "event"});
 
         if (listenerClass == ActionListener.class) {
-            return new JavaScriptWidgetListener.JSActionListener(func, context);
+            return new JavaScriptWidgetListener.JSActionListener(func, processInfoProvider);
         } else if (listenerClass == CreateListener.class) {
-            return new JavaScriptWidgetListener.JSCreateListener(func, context);
+            return new JavaScriptWidgetListener.JSCreateListener(func, processInfoProvider);
         } else if (listenerClass == ValueChangedListener.class) {
-            return new JavaScriptWidgetListener.JSValueChangedListener(func, context);
+            return new JavaScriptWidgetListener.JSValueChangedListener(func, processInfoProvider);
         } else if (listenerClass == TreeSelectionListener.class) {
-            return new JavaScriptWidgetListener.JSTreeSelectionListener(func, context);
+            return new JavaScriptWidgetListener.JSTreeSelectionListener(func, processInfoProvider);
         } else if (listenerClass == ProcessingPhaseListener.class) {
-            return new JavaScriptWidgetListener.JSProcessingPhaseListener(func, context);
+            return new JavaScriptWidgetListener.JSProcessingPhaseListener(func, processInfoProvider);
         } else if (listenerClass == RepeaterListener.class) {
-            return new JavaScriptWidgetListener.JSRepeaterListener(func, context);
+            return new JavaScriptWidgetListener.JSRepeaterListener(func, processInfoProvider);
         } else {
             throw new Exception("Unkonwn event class: " + listenerClass);
         }
+    }
+
+    public void setProcessInfoProvider( ProcessInfoProvider processInfoProvider )
+    {
+        this.processInfoProvider = processInfoProvider;
     }
 }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/RequiredControl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/RequiredControl.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/RequiredControl.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/event/impl/RequiredControl.java Fri Sep 28 04:33:12 2007
@@ -20,14 +20,16 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.cocoon.forms.event.ConfigurableWidgetListener;
 import org.apache.cocoon.forms.event.ProcessingPhase;
 import org.apache.cocoon.forms.event.ProcessingPhaseEvent;
 import org.apache.cocoon.forms.event.ProcessingPhaseListener;
 import org.apache.cocoon.forms.formmodel.Field;
 import org.apache.cocoon.forms.formmodel.Widget;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 /**
  * This processing phase listener can be used to dynamically change the
@@ -38,27 +40,51 @@
  * @version $Id$
  */
 public class RequiredControl
-    implements ProcessingPhaseListener, Configurable {
+    implements ProcessingPhaseListener, ConfigurableWidgetListener {
 
     protected final List descriptions = new ArrayList();
 
     /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+     * This method will be called with the {@link Element} node of its configuration
      */
-    public void configure(Configuration config) throws ConfigurationException {
-        final Configuration[] children = config.getChildren("required");
-        for(int i=0; i<children.length; i++) {
-            final Configuration current = children[i];
-            RequiredDescription desc;
-            final String refId = current.getAttribute("widget-id");
-            if ( current.getAttribute("submit-id", null) != null ) {
-                desc = new RequiredDescription(refId, current.getAttribute("submit-id"));
-            } else {
-                final String path = current.getAttribute("widget-path");
-                final String value = current.getAttribute("widget-value");
-                desc = new RequiredDescription(refId, path, value);
+    public void setConfiguration(Element element) throws Exception {
+        
+        final NodeList nodes = element.getChildNodes();
+        final int count = nodes.getLength();
+
+        for( int i = 0; i < count; i++ ) {
+            final Node node = nodes.item( i );
+            if( node instanceof Element ) {
+                if (node.getLocalName().equals("required")) {
+                    final NamedNodeMap attributes = node.getAttributes();
+                    RequiredDescription desc = null;
+                    String refId = null;
+                    String submitId = null;
+                    String widgetPath = null;
+                    String widgetValue = null;
+                    final int length = attributes.getLength();
+                    for( int j = 0; j < length; j++ ) {
+                        final Node attr = attributes.item( j );
+                        final String name = attr.getNodeName();
+                        if ("widget-id".equals(name)) {
+                            refId = attr.getNodeValue();
+                        } else if ("submit-id".equals(name)) {
+                            submitId = attr.getNodeValue();
+                        } else if ("widget-path".equals(name)) {
+                            widgetPath = attr.getNodeValue();
+                        } else if ("widget-value".equals(name)) {
+                            widgetValue = attr.getNodeValue();
+                        }
+                    }
+                    
+                    if (submitId != null) {
+                        desc = new RequiredDescription(refId, submitId);
+                    } else {
+                        desc = new RequiredDescription(refId, widgetPath, widgetValue);
+                    }
+                    this.descriptions.add(desc);
+                }
             }
-            this.descriptions.add(desc);
         }
     }
 

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/expression/DefaultExpressionManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/expression/DefaultExpressionManager.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/expression/DefaultExpressionManager.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/expression/DefaultExpressionManager.java Fri Sep 28 04:33:12 2007
@@ -17,13 +17,11 @@
 
 package org.apache.cocoon.forms.expression;
 
+import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
-import org.apache.avalon.framework.component.Component;
-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.thread.ThreadSafe;
+import org.apache.commons.collections.iterators.EntrySetMapIterator;
 import org.outerj.expression.DefaultFunctionFactory;
 import org.outerj.expression.Expression;
 import org.outerj.expression.ExpressionException;
@@ -41,25 +39,10 @@
  * @version $Id$
  */
 public class DefaultExpressionManager
-        implements ExpressionManager, Component, Configurable, ThreadSafe {
+        implements ExpressionManager {
 // FIXME: Component is there to allow this block to also run in the 2.1 branch
 
-    private DefaultFunctionFactory factory;
-
-    public void configure(Configuration config) throws ConfigurationException {
-        factory = new DefaultFunctionFactory();
-
-        Configuration[] functions = config.getChildren("function");
-        for (int i = 0; i < functions.length; i++) {
-            String name = functions[i].getAttribute("name");
-            String clazz = functions[i].getAttribute("class");
-            try {
-                factory.registerFunction(name, Thread.currentThread().getContextClassLoader().loadClass(clazz));
-            } catch (ClassNotFoundException e) {
-                throw new ConfigurationException("Can not find class " + clazz + " for function " + name + ": " + e);
-            }
-        }
-    }
+    private DefaultFunctionFactory factory = new DefaultFunctionFactory();
 
     public Expression parse(String expressionString) throws ParseException, ExpressionException {
         FormulaParser parser = new FormulaParser(new java.io.StringReader(expressionString), factory);
@@ -75,6 +58,16 @@
         FormulaParser parser = new FormulaParser(new java.io.StringReader(expressionString), factory);
         parser.parse();
         return parser.getVariables();
+    }
+
+    public void setFunctions( Map functions )
+    {
+        for (final Iterator i = functions.entrySet().iterator(); i.hasNext();) {
+            final Map.Entry entry = (Map.Entry)i.next();
+            String name = (String)entry.getKey();
+            Class clazz = ((Expression)entry.getValue()).getClass();
+            factory.registerFunction(name, clazz);
+        }
     }
 
 }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/AbstractDatatypeWidgetDefinition.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/AbstractDatatypeWidgetDefinition.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/AbstractDatatypeWidgetDefinition.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/AbstractDatatypeWidgetDefinition.java Fri Sep 28 04:33:12 2007
@@ -16,9 +16,6 @@
  */
 package org.apache.cocoon.forms.formmodel;
 
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
 import org.apache.cocoon.forms.datatype.Datatype;
 import org.apache.cocoon.forms.datatype.DynamicSelectionList;
 import org.apache.cocoon.forms.datatype.FlowJXPathSelectionList;
@@ -28,26 +25,24 @@
 import org.apache.cocoon.forms.event.WidgetEventMulticaster;
 import org.apache.cocoon.forms.FormsException;
 import org.apache.cocoon.forms.FormsRuntimeException;
+import org.apache.cocoon.processing.ProcessInfoProvider;
+import org.apache.excalibur.source.SourceResolver;
+import org.apache.excalibur.xmlizer.XMLizer;
 
 /**
  * Base class for WidgetDefinitions that use a Datatype and SelectionList.
  *
  * @version $Id$
  */
-public abstract class AbstractDatatypeWidgetDefinition extends AbstractWidgetDefinition
-                                                       implements Serviceable {
+public abstract class AbstractDatatypeWidgetDefinition extends AbstractWidgetDefinition {
 
     private Datatype datatype;
     private Object initialValue;
     private SelectionList selectionList;
     private ValueChangedListener listener;
-    private ServiceManager manager;
-
-
-    public void service(ServiceManager manager) throws ServiceException {
-        checkMutable();
-        this.manager = manager;
-    }
+    private XMLizer xmlizer;
+    private SourceResolver sourceResolver;
+    private ProcessInfoProvider processInfoProvider; 
 
     /**
      * checks definition's completeness
@@ -77,6 +72,9 @@
         this.initialValue = other.initialValue;
         this.selectionList = other.selectionList;
         this.listener = other.listener;
+        this.xmlizer = other.xmlizer;
+        this.sourceResolver = other.sourceResolver;
+        this.processInfoProvider = other.processInfoProvider; 
     }
 
     public Datatype getDatatype() {
@@ -113,7 +111,7 @@
      * @param uri The URI of the source.
      */
     public SelectionList buildSelectionList(String uri) {
-        return new DynamicSelectionList(datatype, uri, this.manager);
+        return new DynamicSelectionList(datatype, uri, this.xmlizer, this.sourceResolver, this.processInfoProvider);
     }
 
     /**
@@ -149,5 +147,20 @@
 
     public ValueChangedListener getValueChangedListener() {
         return this.listener;
+    }
+
+    public void setSourceResolver( SourceResolver sourceResolver )
+    {
+        this.sourceResolver = sourceResolver;
+    }
+
+    public void setXmlizer( XMLizer xmlizer )
+    {
+        this.xmlizer = xmlizer;
+    }
+
+    public void setProcessInfoProvider( ProcessInfoProvider processInfoProvider )
+    {
+        this.processInfoProvider = processInfoProvider;
     }
 }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/AbstractDatatypeWidgetDefinitionBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/AbstractDatatypeWidgetDefinitionBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/AbstractDatatypeWidgetDefinitionBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/AbstractDatatypeWidgetDefinitionBuilder.java Fri Sep 28 04:33:12 2007
@@ -18,8 +18,7 @@
 
 import java.util.Iterator;
 import java.util.Locale;
-
-import org.apache.avalon.framework.service.ServiceSelector;
+import java.util.Map;
 
 import org.apache.cocoon.forms.FormsConstants;
 import org.apache.cocoon.forms.FormsException;
@@ -30,6 +29,9 @@
 import org.apache.cocoon.forms.event.ValueChangedListener;
 import org.apache.cocoon.forms.util.DomHelper;
 import org.apache.cocoon.i18n.I18nUtils;
+import org.apache.cocoon.processing.ProcessInfoProvider;
+import org.apache.excalibur.source.SourceResolver;
+import org.apache.excalibur.xmlizer.XMLizer;
 
 import org.w3c.dom.Element;
 
@@ -40,6 +42,12 @@
  */
 public abstract class AbstractDatatypeWidgetDefinitionBuilder extends AbstractWidgetDefinitionBuilder {
 
+    private Map selectionListBuilders;
+    private String defaultSelectionListBuilder;
+    private XMLizer xmlizer;
+    private SourceResolver sourceResolver;
+    private ProcessInfoProvider processInfoProvider; 
+
     protected void setupDefinition(Element widgetElement,
                                    AbstractDatatypeWidgetDefinition definition)
     throws Exception {
@@ -50,6 +58,9 @@
                                    AbstractDatatypeWidgetDefinition definition,
                                    boolean isArrayType)
     throws Exception {
+        definition.setProcessInfoProvider( processInfoProvider );
+        definition.setSourceResolver( sourceResolver );
+        definition.setXmlizer( xmlizer );
         super.setupDefinition(widgetElement, definition);
         // parse "label", "hint", etc.
         setDisplayData(widgetElement, definition);
@@ -87,7 +98,7 @@
         //---- parse "selection-list"
         // FIXME: pass the manager to the definition as a side effect. Should be removed
         // when definition are managed like components.
-        definition.service(this.serviceManager);
+        definition.checkMutable();
 
         SelectionList list = buildSelectionList(widgetElement, definition, "selection-list");
         if (list != null) {
@@ -110,24 +121,47 @@
             return null;
         }
 
+        // listType can be null, meaning we will use the default selection list
+        String listType = selectionListElement.getAttribute("type");
+        if ("".equals(listType)) {
+            listType = defaultSelectionListBuilder;
+        }
+
         // Get an appropriate list builder
-        ServiceSelector builderSelector = (ServiceSelector) this.serviceManager.lookup(SelectionListBuilder.ROLE + "Selector");
-        SelectionListBuilder builder = null;
-        try {
-            // listType can be null, meaning we will use the default selection list
-            String listType = selectionListElement.getAttribute("type");
-            if ("".equals(listType)) {
-                listType = null;
-            }
+        SelectionListBuilder builder = (SelectionListBuilder)selectionListBuilders.get(listType);
+        if( builder == null) {
+            throw new FormsException("Unknown selection list builder: " + listType);
+        }
+        return builder.build(selectionListElement, definition.getDatatype());
+    }
 
-            builder = (SelectionListBuilder)builderSelector.select(listType);
-            return builder.build(selectionListElement, definition.getDatatype());
+    public void setSelectionListBuilders( Map selectionListBuilders )
+    {
+        this.selectionListBuilders = selectionListBuilders;
+    }
 
-        } finally {
-            if (builder != null) {
-                builderSelector.release(builder);
-            }
-            this.serviceManager.release(builderSelector);
-        }
+    public void setXmlizer( XMLizer xmlizer )
+    {
+        this.xmlizer = xmlizer;
+    }
+
+    public void setSourceResolver( SourceResolver sourceResolver )
+    {
+        this.sourceResolver = sourceResolver;
+    }
+
+    public void setProcessInfoProvider( ProcessInfoProvider processInfoProvider )
+    {
+        this.processInfoProvider = processInfoProvider;
+    }
+
+    protected ProcessInfoProvider getProcessInfoProvider()
+    {
+        return processInfoProvider;
+    }
+
+    public void setDefaultSelectionListBuilder( String defaultSelectionListBuilder )
+    {
+        this.defaultSelectionListBuilder = defaultSelectionListBuilder;
     }
 }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/AbstractWidgetDefinitionBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/AbstractWidgetDefinitionBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/AbstractWidgetDefinitionBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/AbstractWidgetDefinitionBuilder.java Fri Sep 28 04:33:12 2007
@@ -23,11 +23,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.avalon.framework.service.Serviceable;
 import org.apache.excalibur.xml.sax.XMLizable;
 
 import org.apache.cocoon.forms.FormsConstants;
@@ -50,39 +45,16 @@
  *
  * @version $Id$
  */
-public abstract class AbstractWidgetDefinitionBuilder implements WidgetDefinitionBuilder, Serviceable, Disposable {
+public abstract class AbstractWidgetDefinitionBuilder implements WidgetDefinitionBuilder {
 
-    protected ServiceSelector widgetDefinitionBuilderSelector;
-    protected ServiceSelector widgetValidatorBuilderSelector;
-    protected ServiceSelector widgetListenerBuilderSelector;
+    protected Map widgetDefinitionBuilders;
+    protected Map widgetValidatorBuilders;
+    protected Map widgetListenerBuilders;
     protected DatatypeManager datatypeManager;
     protected ExpressionManager expressionManager;
-    protected ServiceManager serviceManager;
-
     protected WidgetDefinitionBuilderContext context;
 
 
-    public void service(ServiceManager serviceManager) throws ServiceException {
-        this.serviceManager = serviceManager;
-        this.widgetDefinitionBuilderSelector = (ServiceSelector) serviceManager.lookup(WidgetDefinitionBuilder.class.getName() + "Selector");
-        this.datatypeManager = (DatatypeManager) serviceManager.lookup(DatatypeManager.ROLE);
-        this.expressionManager = (ExpressionManager) serviceManager.lookup(ExpressionManager.ROLE);
-        this.widgetValidatorBuilderSelector = (ServiceSelector) serviceManager.lookup(WidgetValidatorBuilder.ROLE + "Selector");
-        this.widgetListenerBuilderSelector = (ServiceSelector) serviceManager.lookup(WidgetListenerBuilder.ROLE + "Selector");
-    }
-
-    public void dispose() {
-        this.serviceManager.release(this.widgetDefinitionBuilderSelector);
-        this.widgetDefinitionBuilderSelector = null;
-        this.serviceManager.release(this.datatypeManager);
-        this.datatypeManager = null;
-        this.serviceManager.release(this.expressionManager);
-        this.expressionManager = null;
-        this.serviceManager.release(this.widgetValidatorBuilderSelector);
-        this.widgetValidatorBuilderSelector = null;
-        this.serviceManager = null;
-    }
-
     public WidgetDefinition buildWidgetDefinition(Element widgetElement, WidgetDefinitionBuilderContext context)
     throws Exception {
         // so changes don't pollute upper levels
@@ -167,12 +139,10 @@
     protected WidgetDefinition buildAnotherWidgetDefinition(Element widgetDefinition)
     throws Exception {
         String widgetName = widgetDefinition.getLocalName();
-        WidgetDefinitionBuilder builder;
-        try {
-            builder = (WidgetDefinitionBuilder)widgetDefinitionBuilderSelector.select(widgetName);
-        } catch (ServiceException e) {
+        WidgetDefinitionBuilder builder = (WidgetDefinitionBuilder)widgetDefinitionBuilders.get(widgetName);
+        if (builder == null) {
             throw new FormsException("Unknown kind of widget '" + widgetName + "'.",
-                                     e, DomHelper.getLocationObject(widgetDefinition));
+                                     DomHelper.getLocationObject(widgetDefinition));
         }
 
         return builder.buildWidgetDefinition(widgetDefinition, this.context);
@@ -187,15 +157,12 @@
             for (int i = 0; i < list.getLength(); i++) {
                 if (list.item(i).getNodeType() == Node.ELEMENT_NODE) {
                     Element listenerElement = (Element)list.item(i);
-                    WidgetListenerBuilder builder;
-                    try {
-                        builder = (WidgetListenerBuilder) widgetListenerBuilderSelector.select(listenerElement.getLocalName());
-                    } catch (ServiceException e) {
-                        throw new FormsException("Unknown kind of eventlistener '" + listenerElement.getLocalName() + "'.", e,
+                    WidgetListenerBuilder builder = (WidgetListenerBuilder) widgetListenerBuilders.get(listenerElement.getLocalName());
+                    if (builder == null) {
+                        throw new FormsException("Unknown kind of eventlistener '" + listenerElement.getLocalName() + "'.",
                                                  DomHelper.getLocationObject(listenerElement));
                     }
                     WidgetListener listener = builder.buildListener(listenerElement, listenerClass);
-                    widgetListenerBuilderSelector.release(builder);
                     if (result == null) {
                         result = new ArrayList();
                     }
@@ -235,16 +202,13 @@
                 if (list.item(i).getNodeType() == Node.ELEMENT_NODE) {
                     Element element = (Element)list.item(i);
                     String name = element.getLocalName();
-                    WidgetValidatorBuilder builder;
-                    try {
-                        builder = (WidgetValidatorBuilder)this.widgetValidatorBuilderSelector.select(name);
-                    } catch(ServiceException e) {
+                    WidgetValidatorBuilder builder = (WidgetValidatorBuilder)this.widgetValidatorBuilders.get(name);
+                    if (builder == null) {
                         throw new FormsException("Unknown kind of validator '" + name + "'.",
-                                                 e, DomHelper.getLocationObject(element));
+                                                 DomHelper.getLocationObject(element));
                     }
 
                     widgetDefinition.addValidator(builder.build(element, widgetDefinition));
-                    widgetValidatorBuilderSelector.release(builder);
                 }
             }
         }
@@ -256,5 +220,30 @@
         while (i.hasNext()) {
             widgetDefinition.addCreateListener((CreateListener)i.next());
         }
+    }
+
+    public void setWidgetDefinitionBuilders( Map widgetDefinitionBuilders )
+    {
+        this.widgetDefinitionBuilders = widgetDefinitionBuilders;
+    }
+
+    public void setWidgetValidatorBuilders( Map widgetValidatorBuilders )
+    {
+        this.widgetValidatorBuilders = widgetValidatorBuilders;
+    }
+
+    public void setWidgetListenerBuilders( Map widgetListenerBuilders )
+    {
+        this.widgetListenerBuilders = widgetListenerBuilders;
+    }
+
+    public void setDatatypeManager( DatatypeManager datatypeManager )
+    {
+        this.datatypeManager = datatypeManager;
+    }
+
+    public void setExpressionManager( ExpressionManager expressionManager )
+    {
+        this.expressionManager = expressionManager;
     }
 }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CalculatedFieldDefinitionBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CalculatedFieldDefinitionBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CalculatedFieldDefinitionBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CalculatedFieldDefinitionBuilder.java Fri Sep 28 04:33:12 2007
@@ -16,11 +16,12 @@
  */
 package org.apache.cocoon.forms.formmodel;
 
-import org.apache.avalon.framework.service.ServiceSelector;
 import org.apache.cocoon.forms.FormsConstants;
 import org.apache.cocoon.forms.util.DomHelper;
 import org.w3c.dom.Element;
 
+import java.util.Map;
+
 /**
  * Builder for {@link CalculatedField}s.
  * 
@@ -46,6 +47,9 @@
  */
 public class CalculatedFieldDefinitionBuilder extends FieldDefinitionBuilder {
 
+    private Map calculatedFieldAlgorithmBuilders;
+    private String defaultCalculatedFieldAlgorithmBuilder;
+    
     public WidgetDefinition buildWidgetDefinition(Element widgetElement) throws Exception {
         CalculatedFieldDefinition definition = new CalculatedFieldDefinition();
         setupDefinition(widgetElement, definition);
@@ -57,18 +61,23 @@
         super.setupDefinition(widgetElement, definition);
 
         Element algorithmElement = DomHelper.getChildElement(widgetElement, FormsConstants.DEFINITION_NS, "value");
-        ServiceSelector builderSelector = (ServiceSelector)this.serviceManager.lookup(CalculatedFieldAlgorithmBuilder.ROLE + "Selector");
-        CalculatedFieldAlgorithmBuilder builder = null;
-        try {
-            String algorithmType = algorithmElement.getAttribute("type");
-            if (algorithmType.length() == 0) algorithmType = null;
-            builder = (CalculatedFieldAlgorithmBuilder)builderSelector.select(algorithmType);
-            definition.setAlgorithm(builder.build(algorithmElement));
-        } finally {
-            if (builder != null) {
-                builderSelector.release(builder);
-            }
-            this.serviceManager.release(builderSelector);
+        String algorithmType = algorithmElement.getAttribute("type");
+        if (algorithmType.length() == 0) algorithmType = defaultCalculatedFieldAlgorithmBuilder;
+        CalculatedFieldAlgorithmBuilder builder = (CalculatedFieldAlgorithmBuilder)calculatedFieldAlgorithmBuilders.get(algorithmType);
+        if (builder == null ) {
+            throw new Exception("Unknown algorightm " + algorithmType);
         }
+        definition.setAlgorithm(builder.build(algorithmElement));
+    }
+
+    public void setCalculatedFieldAlgorithmBuilders(
+                                                       Map calculatedFieldAlgorithmBuilders )
+    {
+        this.calculatedFieldAlgorithmBuilders = calculatedFieldAlgorithmBuilders;
+    }
+
+    public void setDefaultCalculatedFieldAlgorithmBuilder( String defaultCalculatedFieldAlgorithmBuilder )
+    {
+        this.defaultCalculatedFieldAlgorithmBuilder = defaultCalculatedFieldAlgorithmBuilder;
     }
 }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CaptchaDefinitionBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CaptchaDefinitionBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CaptchaDefinitionBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CaptchaDefinitionBuilder.java Fri Sep 28 04:33:12 2007
@@ -16,10 +16,6 @@
  */
 package org.apache.cocoon.forms.formmodel;
 
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.thread.ThreadSafe;
 import org.apache.cocoon.forms.util.DomHelper;
 import org.w3c.dom.Element;
 
@@ -29,16 +25,10 @@
  * @see <a href="http://www.captcha.net">www.captcha.net</a>
  * @version $Id$
  */
-public class CaptchaDefinitionBuilder extends AbstractDatatypeWidgetDefinitionBuilder implements Contextualizable, ThreadSafe {
-    
-    private Context avalonContext;
-    
-    public void contextualize(Context context) throws ContextException {
-        this.avalonContext = context;
-    }
+public class CaptchaDefinitionBuilder extends AbstractDatatypeWidgetDefinitionBuilder {
 
     public WidgetDefinition buildWidgetDefinition(Element widgetElement) throws Exception {
-        FieldDefinition definition = new CaptchaFieldDefinition(avalonContext);
+        FieldDefinition definition = new CaptchaFieldDefinition(getProcessInfoProvider());
         setupDefinition(widgetElement, definition);
         definition.makeImmutable();
         return definition;

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CaptchaField.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CaptchaField.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CaptchaField.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CaptchaField.java Fri Sep 28 04:33:12 2007
@@ -19,15 +19,11 @@
 import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
 import java.util.Locale;
-import java.util.Map;
 
 import javax.servlet.http.HttpSession;
 
-import org.apache.avalon.framework.CascadingRuntimeException;
-import org.apache.avalon.framework.context.Context;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.forms.FormsConstants;
+import org.apache.cocoon.processing.ProcessInfoProvider;
 import org.apache.cocoon.xml.AttributesImpl;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
@@ -60,8 +56,8 @@
     private static final String SECRET_CHARS = "abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
     private static final int SESSION_ATTR_NAME_LENGTH = 6;
 
-    private Context avalonContext;
     private int length;
+    private ProcessInfoProvider processInfoProvider;
 
     /**
      * Random number generator used to create session attribute name.
@@ -77,7 +73,7 @@
             try {
                 sr = SecureRandom.getInstance("IBMSecureRandom");
             } catch (NoSuchAlgorithmException e) {
-                throw new CascadingRuntimeException("No random number generator available", e);
+                throw new RuntimeException("No random number generator available", e);
             }
         } finally {
             random = sr;
@@ -85,10 +81,10 @@
         random.setSeed(System.currentTimeMillis());
     }
 
-    public CaptchaField(CaptchaFieldDefinition fieldDefinition, Context avalonContext) {
+    public CaptchaField(CaptchaFieldDefinition fieldDefinition, ProcessInfoProvider processInfoProvider) {
         super(fieldDefinition);
-        this.avalonContext = avalonContext;
         this.length = fieldDefinition.getLength();
+        this.processInfoProvider = processInfoProvider;
     }
 
     private String generateSecret() {
@@ -111,8 +107,7 @@
             result[2 * i + 1] = Character.forDigit(Math.abs(ch & 0x0f), 16);
         }
         String id = new String(result);
-        Map objectModel = ContextHelper.getObjectModel(this.avalonContext);
-        HttpSession session = ObjectModelHelper.getRequest(objectModel).getSession(true);
+        HttpSession session = processInfoProvider.getRequest().getSession( true );
         String secret = generateSecret();
         session.setAttribute(SESSION_ATTR_PREFIX + id, secret);
         this.setAttribute("secret", secret);

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CaptchaFieldDefinition.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CaptchaFieldDefinition.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CaptchaFieldDefinition.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/CaptchaFieldDefinition.java Fri Sep 28 04:33:12 2007
@@ -16,9 +16,8 @@
  */
 package org.apache.cocoon.forms.formmodel;
 
-import org.apache.avalon.framework.context.Context;
-
 import org.apache.cocoon.forms.FormsException;
+import org.apache.cocoon.processing.ProcessInfoProvider;
 
 /**
  * A {@link FieldDefinition} for {@link CaptchaField}s.
@@ -28,11 +27,11 @@
  */
 public class CaptchaFieldDefinition extends FieldDefinition {
 
-    private Context avalonContext;
     private int length;
+    private ProcessInfoProvider processInfoProvider;
 
-    public CaptchaFieldDefinition(Context avalonContext) {
-        this.avalonContext = avalonContext;
+    public CaptchaFieldDefinition(ProcessInfoProvider processInfoProvider) {
+        this.processInfoProvider = processInfoProvider;
     }
 
     /**
@@ -52,7 +51,7 @@
     }
 
     public Widget createInstance() {
-        return new CaptchaField(this, avalonContext);
+        return new CaptchaField(this, processInfoProvider);
     }
 
     public int getLength() {

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/FormDefinitionBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/FormDefinitionBuilder.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/FormDefinitionBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/FormDefinitionBuilder.java Fri Sep 28 04:33:12 2007
@@ -18,8 +18,6 @@
 
 import java.util.Iterator;
 
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.forms.event.ProcessingPhaseListener;
 import org.apache.cocoon.forms.formmodel.library.LibraryManager;
 import org.apache.cocoon.util.location.LocationAttributes;
@@ -34,11 +32,6 @@
 
     protected LibraryManager libraryManager;
 
-    public void service(ServiceManager manager) throws ServiceException {
-        super.service(manager);
-        libraryManager = (LibraryManager) serviceManager.lookup(LibraryManager.ROLE);
-    }
-
     public WidgetDefinition buildWidgetDefinition(Element widgetElement, WidgetDefinitionBuilderContext context)
     throws Exception {
         throw new UnsupportedOperationException("Please use the other signature without WidgetDefinitionBuilderContext!");
@@ -68,5 +61,10 @@
 
         this.context = null;
         return formDefinition;
+    }
+
+    public void setLibraryManager( LibraryManager libraryManager )
+    {
+        this.libraryManager = libraryManager;
     }
 }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinition.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinition.java?rev=580312&r1=580311&r2=580312&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinition.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinition.java Fri Sep 28 04:33:12 2007
@@ -16,7 +16,6 @@
  */
 package org.apache.cocoon.forms.formmodel;
 
-import org.apache.avalon.framework.CascadingRuntimeException;
 import org.apache.cocoon.forms.FormsException;
 import org.apache.cocoon.forms.binding.BindingException;
 import org.apache.cocoon.forms.event.ActionEvent;
@@ -134,7 +133,7 @@
                 try {
                     ((EnhancedRepeater) repeater).refreshPage();
                 } catch (BindingException e) {
-                    throw new CascadingRuntimeException("Error refreshing repeater page", e);
+                    throw new RuntimeException("Error refreshing repeater page", e);
                 }
             }
 
@@ -160,7 +159,7 @@
                     	try {
                             ((EnhancedRepeater) repeater).goToPage(((EnhancedRepeater) repeater).getMaxPage());
                         } catch (BindingException e) {
-							throw new CascadingRuntimeException("Error switching page", e);
+							throw new RuntimeException("Error switching page", e);
 						}
                     }
                     for (int i = 0; i < AddRowActionDefinition.this.insertRows; i++) {
@@ -242,7 +241,7 @@
                             	erep.sortBy(SortActionDefinition.this.field);
                             }
                         } catch (Exception e) {
-                            throw new CascadingRuntimeException("Error switching page", e);
+                            throw new RuntimeException("Error switching page", e);
                         }
                     }
                 }
@@ -304,7 +303,7 @@
                             	erep.goToPage(page);
                             }
                         } catch (Exception e) {
-                            throw new CascadingRuntimeException("Error switching page", e);
+                            throw new RuntimeException("Error switching page", e);
                         }
                     } 
                 }