bruno 2004/04/10 06:40:27
Modified: src/blocks/forms/java/org/apache/cocoon/forms/datatype Datatype.java src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor Convertor.java DummyStringConvertor.java EnumConvertor.java FormattingDateConvertor.java FormattingDecimalConvertor.java MillisDateConvertor.java PlainBooleanConvertor.java PlainDecimalConvertor.java PlainDoubleConvertor.java PlainFloatConvertor.java PlainIntegerConvertor.java PlainLongConvertor.java src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl AbstractDatatype.java Log: Added generateSaxFragment() method to datatypes and convertors to allow them to generate some info about themselves for inclusion in the widget instance output XML. Revision Changes Path 1.3 +8 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/Datatype.java Index: Datatype.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/Datatype.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Datatype.java 9 Mar 2004 14:58:45 -0000 1.2 +++ Datatype.java 10 Apr 2004 13:40:27 -0000 1.3 @@ -18,6 +18,8 @@ import org.outerj.expression.ExpressionContext; import org.apache.cocoon.forms.datatype.convertor.Convertor; import org.apache.cocoon.forms.validation.ValidationError; +import org.xml.sax.SAXException; +import org.xml.sax.ContentHandler; import java.util.Locale; @@ -102,4 +104,9 @@ * Returns the factory that built this datatype. */ DatatypeBuilder getBuilder(); + + /** + * Generates a bit of information about this datatype. + */ + void generateSaxFragment(ContentHandler contentHandler, Locale locale) throws SAXException; } 1.2 +9 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/Convertor.java Index: Convertor.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/Convertor.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Convertor.java 9 Mar 2004 10:34:06 -0000 1.1 +++ Convertor.java 10 Apr 2004 13:40:27 -0000 1.2 @@ -15,6 +15,9 @@ */ package org.apache.cocoon.forms.datatype.convertor; +import org.xml.sax.SAXException; +import org.xml.sax.ContentHandler; + import java.util.Locale; /** @@ -44,6 +47,11 @@ String convertToString(Object value, Locale locale, FormatCache formatCache); Class getTypeClass(); + + /** + * Generates a bit of information about this convertor (optional). + */ + void generateSaxFragment(ContentHandler contentHandler, Locale locale) throws SAXException; public interface FormatCache { public Object get(); 1.2 +8 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/DummyStringConvertor.java Index: DummyStringConvertor.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/DummyStringConvertor.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DummyStringConvertor.java 9 Mar 2004 10:34:06 -0000 1.1 +++ DummyStringConvertor.java 10 Apr 2004 13:40:27 -0000 1.2 @@ -15,6 +15,9 @@ */ package org.apache.cocoon.forms.datatype.convertor; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; + import java.util.Locale; /** @@ -34,5 +37,9 @@ public Class getTypeClass() { return String.class; + } + + public void generateSaxFragment(ContentHandler contentHandler, Locale locale) throws SAXException { + // intentionally empty } } 1.3 +7 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/EnumConvertor.java Index: EnumConvertor.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/EnumConvertor.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- EnumConvertor.java 9 Mar 2004 11:31:12 -0000 1.2 +++ EnumConvertor.java 10 Apr 2004 13:40:27 -0000 1.3 @@ -21,6 +21,8 @@ import java.util.Locale; import org.apache.avalon.framework.CascadingRuntimeException; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; /** * A [EMAIL PROTECTED] org.apache.cocoon.forms.datatype.convertor.Convertor Convertor} @@ -108,5 +110,9 @@ */ public Class getTypeClass() { return clazz; + } + + public void generateSaxFragment(ContentHandler contentHandler, Locale locale) throws SAXException { + // intentionally empty } } 1.2 +20 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/FormattingDateConvertor.java Index: FormattingDateConvertor.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/FormattingDateConvertor.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- FormattingDateConvertor.java 9 Mar 2004 10:34:06 -0000 1.1 +++ FormattingDateConvertor.java 10 Apr 2004 13:40:27 -0000 1.2 @@ -17,6 +17,10 @@ import org.outerj.i18n.DateFormat; import org.outerj.i18n.I18nSupport; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; +import org.apache.cocoon.forms.Constants; +import org.apache.cocoon.xml.AttributesImpl; import java.util.Locale; import java.util.Date; @@ -137,5 +141,20 @@ public void setNonLocalizedPattern(String pattern) { this.nonLocalizedPattern = pattern; + } + + private static final String CONVERTOR_EL = "convertor"; + + public void generateSaxFragment(ContentHandler contentHandler, Locale locale) throws SAXException { + String pattern = (String)localizedPatterns.get(locale); + if (pattern == null) + pattern = nonLocalizedPattern; + + if (pattern != null) { + AttributesImpl attrs = new AttributesImpl(); + attrs.addCDATAAttribute("pattern", pattern); + contentHandler.startElement(Constants.INSTANCE_NS, CONVERTOR_EL, Constants.INSTANCE_PREFIX_COLON + CONVERTOR_EL, attrs); + contentHandler.endElement(Constants.INSTANCE_NS, CONVERTOR_EL, Constants.INSTANCE_PREFIX_COLON + CONVERTOR_EL); + } } } 1.3 +7 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/FormattingDecimalConvertor.java Index: FormattingDecimalConvertor.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/FormattingDecimalConvertor.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- FormattingDecimalConvertor.java 28 Mar 2004 20:51:23 -0000 1.2 +++ FormattingDecimalConvertor.java 10 Apr 2004 13:40:27 -0000 1.3 @@ -17,6 +17,8 @@ import org.outerj.i18n.I18nSupport; import org.outerj.i18n.DecimalFormat; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; import java.util.Locale; import java.text.ParseException; @@ -148,5 +150,9 @@ public Class getTypeClass() { return java.math.BigDecimal.class; + } + + public void generateSaxFragment(ContentHandler contentHandler, Locale locale) throws SAXException { + // intentionally empty } } 1.2 +8 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/MillisDateConvertor.java Index: MillisDateConvertor.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/MillisDateConvertor.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- MillisDateConvertor.java 9 Mar 2004 10:34:06 -0000 1.1 +++ MillisDateConvertor.java 10 Apr 2004 13:40:27 -0000 1.2 @@ -15,6 +15,9 @@ */ package org.apache.cocoon.forms.datatype.convertor; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; + import java.util.Locale; import java.util.Date; @@ -41,5 +44,9 @@ public Class getTypeClass() { return Date.class; + } + + public void generateSaxFragment(ContentHandler contentHandler, Locale locale) throws SAXException { + // intentionally empty } } 1.2 +8 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/PlainBooleanConvertor.java Index: PlainBooleanConvertor.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/PlainBooleanConvertor.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- PlainBooleanConvertor.java 9 Mar 2004 10:34:06 -0000 1.1 +++ PlainBooleanConvertor.java 10 Apr 2004 13:40:27 -0000 1.2 @@ -15,6 +15,9 @@ */ package org.apache.cocoon.forms.datatype.convertor; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; + import java.util.Locale; /** @@ -33,5 +36,9 @@ public Class getTypeClass() { return Boolean.class; + } + + public void generateSaxFragment(ContentHandler contentHandler, Locale locale) throws SAXException { + // intentionally empty } } 1.2 +8 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/PlainDecimalConvertor.java Index: PlainDecimalConvertor.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/PlainDecimalConvertor.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- PlainDecimalConvertor.java 9 Mar 2004 10:34:06 -0000 1.1 +++ PlainDecimalConvertor.java 10 Apr 2004 13:40:27 -0000 1.2 @@ -15,6 +15,9 @@ */ package org.apache.cocoon.forms.datatype.convertor; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; + import java.util.Locale; import java.math.BigDecimal; @@ -39,5 +42,9 @@ public Class getTypeClass() { return BigDecimal.class; + } + + public void generateSaxFragment(ContentHandler contentHandler, Locale locale) throws SAXException { + // intentionally empty } } 1.2 +8 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/PlainDoubleConvertor.java Index: PlainDoubleConvertor.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/PlainDoubleConvertor.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- PlainDoubleConvertor.java 18 Mar 2004 11:45:55 -0000 1.1 +++ PlainDoubleConvertor.java 10 Apr 2004 13:40:27 -0000 1.2 @@ -15,6 +15,9 @@ */ package org.apache.cocoon.forms.datatype.convertor; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; + import java.util.Locale; /** @@ -38,5 +41,9 @@ public Class getTypeClass() { return Double.class; + } + + public void generateSaxFragment(ContentHandler contentHandler, Locale locale) throws SAXException { + // intentionally empty } } 1.2 +8 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/PlainFloatConvertor.java Index: PlainFloatConvertor.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/PlainFloatConvertor.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- PlainFloatConvertor.java 9 Mar 2004 10:34:06 -0000 1.1 +++ PlainFloatConvertor.java 10 Apr 2004 13:40:27 -0000 1.2 @@ -15,6 +15,9 @@ */ package org.apache.cocoon.forms.datatype.convertor; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; + import java.util.Locale; /** @@ -38,5 +41,9 @@ public Class getTypeClass() { return Float.class; + } + + public void generateSaxFragment(ContentHandler contentHandler, Locale locale) throws SAXException { + // intentionally empty } } 1.2 +8 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/PlainIntegerConvertor.java Index: PlainIntegerConvertor.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/PlainIntegerConvertor.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- PlainIntegerConvertor.java 9 Mar 2004 10:34:06 -0000 1.1 +++ PlainIntegerConvertor.java 10 Apr 2004 13:40:27 -0000 1.2 @@ -15,6 +15,9 @@ */ package org.apache.cocoon.forms.datatype.convertor; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; + import java.util.Locale; /** @@ -39,5 +42,9 @@ public Class getTypeClass() { return Integer.class; + } + + public void generateSaxFragment(ContentHandler contentHandler, Locale locale) throws SAXException { + // intentionally empty } } 1.2 +8 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/PlainLongConvertor.java Index: PlainLongConvertor.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/PlainLongConvertor.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- PlainLongConvertor.java 9 Mar 2004 10:34:06 -0000 1.1 +++ PlainLongConvertor.java 10 Apr 2004 13:40:27 -0000 1.2 @@ -15,6 +15,9 @@ */ package org.apache.cocoon.forms.datatype.convertor; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; + import java.util.Locale; /** @@ -38,5 +41,9 @@ public Class getTypeClass() { return Long.class; + } + + public void generateSaxFragment(ContentHandler contentHandler, Locale locale) throws SAXException { + // intentionally empty } } 1.4 +15 -1 cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl/AbstractDatatype.java Index: AbstractDatatype.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl/AbstractDatatype.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- AbstractDatatype.java 24 Mar 2004 18:57:26 -0000 1.3 +++ AbstractDatatype.java 10 Apr 2004 13:40:27 -0000 1.4 @@ -25,7 +25,11 @@ import org.apache.cocoon.forms.datatype.ValidationRule; import org.apache.cocoon.forms.datatype.convertor.Convertor; import org.apache.cocoon.forms.validation.ValidationError; +import org.apache.cocoon.forms.Constants; +import org.apache.cocoon.xml.AttributesImpl; import org.outerj.expression.ExpressionContext; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; /** * Abstract base class for Datatype implementations. Most concreate datatypes @@ -87,5 +91,15 @@ public String convertToString(Object value, Locale locale) { return getConvertor().convertToString(value, locale, null); + } + + private static final String DATATYPE_EL = "datatype"; + + public void generateSaxFragment(ContentHandler contentHandler, Locale locale) throws SAXException { + AttributesImpl attrs = new AttributesImpl(); + attrs.addCDATAAttribute("type", getDescriptiveName()); + contentHandler.startElement(Constants.INSTANCE_NS, DATATYPE_EL, Constants.INSTANCE_PREFIX_COLON + DATATYPE_EL, attrs); + getConvertor().generateSaxFragment(contentHandler, locale); + contentHandler.endElement(Constants.INSTANCE_NS, DATATYPE_EL, Constants.INSTANCE_PREFIX_COLON + DATATYPE_EL); } }