cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From vgritse...@apache.org
Subject cvs commit: cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/transformation EffectWidgetReplacingPipe.java
Date Sun, 29 Feb 2004 06:09:46 GMT
vgritsenko    2004/02/28 22:09:46

  Modified:    src/blocks/woody/java/org/apache/cocoon/woody/transformation
                        EffectWidgetReplacingPipe.java
  Log:
  Make handlers consistently protected.
  Fix one FIXME.
  Add support for aggregate-field.
  
  Revision  Changes    Path
  1.9       +70 -39    cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/transformation/EffectWidgetReplacingPipe.java
  
  Index: EffectWidgetReplacingPipe.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/transformation/EffectWidgetReplacingPipe.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- EffectWidgetReplacingPipe.java	4 Feb 2004 17:25:58 -0000	1.8
  +++ EffectWidgetReplacingPipe.java	29 Feb 2004 06:09:46 -0000	1.9
  @@ -50,29 +50,31 @@
   */
   package org.apache.cocoon.woody.transformation;
   
  -import java.util.HashMap;
  -import java.util.LinkedList;
  -import java.util.Locale;
  -import java.util.Map;
  -
   import org.apache.avalon.excalibur.pool.Recyclable;
   import org.apache.cocoon.i18n.I18nUtils;
   import org.apache.cocoon.woody.Constants;
  -import org.apache.cocoon.woody.validation.ValidationError;
  +import org.apache.cocoon.woody.formmodel.AggregateField;
   import org.apache.cocoon.woody.formmodel.Repeater;
   import org.apache.cocoon.woody.formmodel.Struct;
   import org.apache.cocoon.woody.formmodel.Union;
   import org.apache.cocoon.woody.formmodel.Widget;
  -import org.apache.cocoon.woody.formmodel.Field;
  +import org.apache.cocoon.woody.validation.ValidationError;
  +import org.apache.cocoon.woody.validation.ValidationErrorAware;
   import org.apache.cocoon.xml.AbstractXMLPipe;
   import org.apache.cocoon.xml.SaxBuffer;
   import org.apache.commons.jxpath.JXPathException;
  +
   import org.xml.sax.Attributes;
  -import org.xml.sax.SAXException;
   import org.xml.sax.ContentHandler;
  +import org.xml.sax.SAXException;
   import org.xml.sax.ext.LexicalHandler;
   import org.xml.sax.helpers.AttributesImpl;
   
  +import java.util.HashMap;
  +import java.util.LinkedList;
  +import java.util.Locale;
  +import java.util.Map;
  +
   // TODO: Reduce the Element creation and deletion churn by using startElement
   // and endElement methods which do not create or use Elements on the stack.
   // The corresponding TODO in the EffectPipe needs to be completed first.
  @@ -109,6 +111,7 @@
       private static final String REPEATER_SIZE = "repeater-size";
       private static final String REPEATER_WIDGET = "repeater-widget";
       private static final String REPEATER_WIDGET_LABEL = "repeater-widget-label";
  +    private static final String AGGREGATE_WIDGET = "aggregate-widget";
       private static final String STRUCT = "struct";
       private static final String STYLING_EL = "styling";
       private static final String UNION = "union";
  @@ -122,21 +125,22 @@
       protected Widget widget;
       protected Map classes;
   
  -    private final DocHandler                 docHandler            = new DocHandler();
  -    private final FormHandler                formHandler           = new FormHandler();
  -    private final NestedHandler              nestedHandler         = new NestedHandler();
  -    private final WidgetLabelHandler         widgetLabelHandler    = new WidgetLabelHandler();
  -    private final WidgetHandler              widgetHandler         = new WidgetHandler();
  -    private final RepeaterSizeHandler        repeaterSizeHandler   = new RepeaterSizeHandler();
  +    private final DocHandler                 docHandler             = new DocHandler();
  +    private final FormHandler                formHandler            = new FormHandler();
  +    private final NestedHandler              nestedHandler          = new NestedHandler();
  +    private final WidgetLabelHandler         widgetLabelHandler     = new WidgetLabelHandler();
  +    private final WidgetHandler              widgetHandler          = new WidgetHandler();
  +    private final RepeaterSizeHandler        repeaterSizeHandler    = new RepeaterSizeHandler();
       private final RepeaterWidgetLabelHandler repeaterWidgetLabelHandler = new RepeaterWidgetLabelHandler();
  -    private final RepeaterWidgetHandler      repeaterWidgetHandler = new RepeaterWidgetHandler();
  -    private final StructHandler              structHandler         = new StructHandler();
  -    private final UnionHandler               unionHandler          = new UnionHandler();
  -    private final UnionPassThruHandler       unionPassThruHandler  = new UnionPassThruHandler();
  -    private final NewHandler                 newHandler            = new NewHandler();
  -    private final ClassHandler               classHandler          = new ClassHandler();
  -    private final ContinuationIdHandler      continuationIdHandler = new ContinuationIdHandler();
  -    private final StylingContentHandler      stylingHandler        = new StylingContentHandler();
  +    private final RepeaterWidgetHandler      repeaterWidgetHandler  = new RepeaterWidgetHandler();
  +    private final AggregateWidgetHandler     aggregateWidgetHandler = new AggregateWidgetHandler();
  +    private final StructHandler              structHandler          = new StructHandler();
  +    private final UnionHandler               unionHandler           = new UnionHandler();
  +    private final UnionPassThruHandler       unionPassThruHandler   = new UnionPassThruHandler();
  +    private final NewHandler                 newHandler             = new NewHandler();
  +    private final ClassHandler               classHandler           = new ClassHandler();
  +    private final ContinuationIdHandler      continuationIdHandler  = new ContinuationIdHandler();
  +    private final StylingContentHandler      stylingHandler         = new StylingContentHandler();
       private final ValidationErrorHandler     validationErrorHandler = new ValidationErrorHandler();
   
       /**
  @@ -162,6 +166,7 @@
           templates.put(WIDGET, widgetHandler);
           templates.put(WIDGET_LABEL, widgetLabelHandler);
           templates.put(REPEATER_WIDGET, repeaterWidgetHandler);
  +        templates.put(AGGREGATE_WIDGET, aggregateWidgetHandler);
           templates.put(REPEATER_SIZE, repeaterSizeHandler);
           templates.put(REPEATER_WIDGET_LABEL, repeaterWidgetLabelHandler);
           templates.put(STRUCT, structHandler);
  @@ -260,7 +265,7 @@
       // Handler classes to transform Woody templates
       //==============================================
   
  -    public class DocHandler extends Handler {
  +    protected class DocHandler extends Handler {
           public Handler process() throws SAXException {
               switch (event) {
               case EVENT_SET_DOCUMENT_LOCATOR:
  @@ -290,7 +295,7 @@
           }
       }
   
  -    public class FormHandler extends Handler {
  +    protected class FormHandler extends Handler {
           public Handler process() throws SAXException {
               switch(event) {
               case EVENT_START_ELEMENT:
  @@ -354,7 +359,7 @@
           }
       }
   
  -    public class NestedHandler extends Handler {
  +    protected class NestedHandler extends Handler {
           public Handler process() throws SAXException {
               switch(event) {
               case EVENT_ELEMENT:
  @@ -366,7 +371,7 @@
           }
       }
   
  -    public class WidgetLabelHandler extends Handler {
  +    protected class WidgetLabelHandler extends Handler {
           public Handler process() throws SAXException {
               switch (event) {
               case EVENT_START_ELEMENT:
  @@ -386,7 +391,7 @@
           }
       }
   
  -    public class WidgetHandler extends Handler {
  +    protected class WidgetHandler extends Handler {
           public Handler process() throws SAXException {
               switch (event) {
               case EVENT_START_ELEMENT:
  @@ -492,7 +497,31 @@
           }
       }
   
  -    public class StructHandler extends Handler {
  +    protected class AggregateWidgetHandler extends Handler {
  +        public Handler process() throws SAXException {
  +            switch(event) {
  +            case EVENT_START_ELEMENT:
  +                widgetId = getWidgetId(input.attrs);
  +                widget = getWidget(widgetId);
  +                if (!(widget instanceof AggregateField)) {
  +                    throwWrongWidgetType("AggregateWidgetHandler", input.loc, "aggregate");
  +                }
  +                contextWidgets.addFirst(contextWidget);
  +                contextWidget = widget;
  +                return this;
  +            case EVENT_ELEMENT:
  +                return nestedTemplate();
  +            case EVENT_END_ELEMENT:
  +                contextWidget = (Widget)contextWidgets.removeFirst();
  +                return this;
  +            default:
  +                out.copy();
  +                return this;
  +            }
  +        }
  +    }
  +
  +    protected class StructHandler extends Handler {
           public Handler process() throws SAXException {
               switch(event) {
               case EVENT_START_ELEMENT:
  @@ -520,13 +549,15 @@
           }
       }
   
  -    public class UnionHandler extends Handler {
  +    protected class UnionHandler extends Handler {
           public Handler process() throws SAXException {
               switch(event) {
               case EVENT_START_ELEMENT:
                   widgetId = getWidgetId(input.attrs);
                   widget = getWidget(widgetId);
  -                if (!(widget instanceof Union)) throwWrongWidgetType("UnionHandler", input.loc,
"union");
  +                if (!(widget instanceof Union)) {
  +                    throwWrongWidgetType("UnionHandler", input.loc, "union");
  +                }
                   contextWidgets.addFirst(contextWidget);
                   contextWidget = widget;
                   out.element(Constants.WI_PREFIX, Constants.WI_NS, "union");
  @@ -588,14 +619,15 @@
           }
       }
   
  -    public class NewHandler extends Handler {
  +    protected class NewHandler extends Handler {
           public Handler process() throws SAXException {
               switch (event) {
               case EVENT_START_ELEMENT:
                   widgetId = getWidgetId(input.attrs);
                   SaxBuffer classBuffer = (SaxBuffer)classes.get(widgetId);
  -                if (classBuffer == null)
  +                if (classBuffer == null) {
                       throwSAXException("New: Class \"" + widgetId + "\" does not exist.");
  +                }
                   handlers.addFirst(handler);
                   handler = nestedHandler;
                   classBuffer.toSAX(EffectWidgetReplacingPipe.this);
  @@ -612,7 +644,7 @@
           }
       }
   
  -    public class ClassHandler extends Handler {
  +    protected class ClassHandler extends Handler {
           public Handler process() throws SAXException {
               switch (event) {
               case EVENT_START_ELEMENT:
  @@ -664,7 +696,7 @@
        * This ContentHandler helps in inserting SAX events before the closing tag of the
root
        * element.
        */
  -    public class StylingContentHandler extends AbstractXMLPipe implements Recyclable {
  +    protected class StylingContentHandler extends AbstractXMLPipe implements Recyclable
{
           private int elementNesting;
           private SaxBuffer saxBuffer;
   
  @@ -705,7 +737,7 @@
       /**
        * Inserts validation errors (if any) for the Field widgets
        */
  -    public class ValidationErrorHandler extends Handler {
  +    protected class ValidationErrorHandler extends Handler {
           public Handler process() throws SAXException {
               switch (event) {
               case EVENT_START_ELEMENT:
  @@ -718,9 +750,8 @@
                   return bufferHandler;
   
               case EVENT_END_ELEMENT:
  -                // FIXME: Use to-be-introduced interface instead of Field class
  -                if (widget instanceof Field) {
  -                    ValidationError error = ((Field)widget).getValidationError();
  +                if (widget instanceof ValidationErrorAware) {
  +                    ValidationError error = ((ValidationErrorAware)widget).getValidationError();
                       if (error != null) {
                           out.startElement(Constants.WI_NS, VALIDATION_ERROR, Constants.WI_PREFIX_COLON
+ VALIDATION_ERROR, Constants.EMPTY_ATTRS);
                           error.generateSaxFragment(stylingHandler);
  
  
  

Mime
View raw message