Author: giacomo
Date: Wed Mar 23 13:52:41 2005
New Revision: 158837
URL: http://svn.apache.org/viewcvs?view=rev&rev=158837
Log:
added discussed features to flow-jxpath selection list including new 'bean'
Datatype
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanType.java
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanTypeBuilder.java
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/conf/forms-datatype.xconf
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/Constants.java
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionList.java
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListBuilder.java
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/conf/forms-datatype.xconf
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/forms/conf/forms-datatype.xconf?view=diff&r1=158836&r2=158837
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/forms/conf/forms-datatype.xconf
(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/conf/forms-datatype.xconf Wed
Mar 23 13:52:41 2005
@@ -75,6 +75,11 @@
<convertor name="enum"
src="org.apache.cocoon.forms.datatype.convertor.EnumConvertorBuilder"/>
</convertors>
</datatype>
+ <datatype name="bean"
src="org.apache.cocoon.forms.datatype.typeimpl.BeanTypeBuilder">
+ <convertors default="bean" plain="bean">
+ <convertor name="bean"
src="org.apache.cocoon.forms.datatype.convertor.BeanConvertorBuilder"/>
+ </convertors>
+ </datatype>
</datatypes>
<validation-rules>
<!-- old-style datatype validators (deprecated) -->
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/Constants.java
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/Constants.java?view=diff&r1=158836&r2=158837
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/Constants.java
(original)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/Constants.java
Wed Mar 23 13:52:41 2005
@@ -49,5 +49,8 @@
/** I18n catalogue containing the built-in messages. */
public static final String I18N_CATALOGUE = "forms";
+ public static final String I18N_NS = "http://apache.org/cocoon/i18n/2.1";
+ public static final String I18N_PREFIX = "i18n";
+ public static final String I18N_PREFIX_COLON = "i18n:";
}
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java?view=diff&r1=158836&r2=158837
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java
(original)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java
Wed Mar 23 13:52:41 2005
@@ -56,8 +56,6 @@
* @version $Id$
*/
public class EnumSelectionList implements SelectionList {
- public static final String I18N_NS = "http://apache.org/cocoon/i18n/2.1";
- public static final String I18N_PREFIX_COLON = "i18n:";
public static final String TEXT_EL = "text";
private Datatype datatype;
@@ -108,9 +106,9 @@
contentHandler.startElement(Constants.INSTANCE_NS,
ITEM_EL, Constants.INSTANCE_PREFIX_COLON + ITEM_EL, itemAttrs);
contentHandler.startElement(Constants.INSTANCE_NS,
LABEL_EL, Constants.INSTANCE_PREFIX_COLON + LABEL_EL,
XMLUtils.EMPTY_ATTRIBUTES);
// TODO: make i18n element optional
- contentHandler.startElement(I18N_NS, TEXT_EL,
I18N_PREFIX_COLON + TEXT_EL, XMLUtils.EMPTY_ATTRIBUTES);
+ contentHandler.startElement(Constants.I18N_NS, TEXT_EL,
Constants.I18N_PREFIX_COLON + TEXT_EL, XMLUtils.EMPTY_ATTRIBUTES);
contentHandler.characters(stringValue.toCharArray(), 0,
stringValue.length());
- contentHandler.endElement(I18N_NS, TEXT_EL,
I18N_PREFIX_COLON + TEXT_EL);
+ contentHandler.endElement(Constants.I18N_NS, TEXT_EL,
Constants.I18N_PREFIX_COLON + TEXT_EL);
contentHandler.endElement(Constants.INSTANCE_NS, LABEL_EL,
Constants.INSTANCE_PREFIX_COLON + LABEL_EL);
contentHandler.endElement(Constants.INSTANCE_NS, ITEM_EL,
Constants.INSTANCE_PREFIX_COLON + ITEM_EL);
}
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionList.java
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionList.java?view=diff&r1=158836&r2=158837
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionList.java
(original)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionList.java
Wed Mar 23 13:52:41 2005
@@ -22,6 +22,7 @@
import org.apache.cocoon.components.ContextHelper;
import org.apache.cocoon.components.flow.FlowHelper;
import org.apache.cocoon.forms.Constants;
+import org.apache.cocoon.forms.util.I18nMessage;
import org.apache.cocoon.xml.AttributesImpl;
import org.apache.cocoon.xml.XMLUtils;
import org.apache.commons.jxpath.JXPathContext;
@@ -46,13 +47,31 @@
private String labelPath;
private Datatype datatype;
private Object model;
-
- public FlowJXPathSelectionList(Context context, String listPath, String
valuePath, String labelPath, Datatype datatype) {
+ private boolean nullable = false;
+ private String nullText;
+ private boolean nullTextIsI18nKey = false;
+ private String i18nCatalog;
+ private boolean labelIsI18nKey = false;
+
+ public FlowJXPathSelectionList(Context context,
+ String listPath,
+ String valuePath,
+ String labelPath,
+ Datatype datatype,
+ String nullText,
+ boolean nullTextIsI18nKey,
+ String i18nCatalog,
+ boolean labelIsI18nKey) {
this.context = context;
this.listPath = listPath;
this.valuePath = valuePath;
this.labelPath = labelPath;
this.datatype = datatype;
+ this.nullText = nullText;
+ this.nullable = (nullText != null);
+ this.nullTextIsI18nKey = nullTextIsI18nKey;
+ this.i18nCatalog =i18nCatalog;
+ this.labelIsI18nKey = labelIsI18nKey;
}
/**
@@ -100,6 +119,39 @@
// Start the selection-list
contentHandler.startElement(Constants.INSTANCE_NS, SELECTION_LIST_EL,
Constants.INSTANCE_PREFIX_COLON + SELECTION_LIST_EL, XMLUtils.EMPTY_ATTRIBUTES);
+ if( this.nullable ) {
+ final AttributesImpl voidAttrs = new AttributesImpl( );
+ voidAttrs.addCDATAAttribute( "value", "" );
+ contentHandler.startElement( Constants.INSTANCE_NS, ITEM_EL,
+ Constants.INSTANCE_PREFIX_COLON +
+ ITEM_EL, voidAttrs );
+
+ if( this.nullText != null ) {
+ contentHandler.startElement( Constants.INSTANCE_NS, LABEL_EL,
+ Constants.INSTANCE_PREFIX_COLON +
+ LABEL_EL,
XMLUtils.EMPTY_ATTRIBUTES );
+
+ if( this.nullTextIsI18nKey ) {
+ if( ( this.i18nCatalog != null ) &&
+ ( this.i18nCatalog.trim( ).length( ) > 0 ) ) {
+ new I18nMessage( this.nullText, this.i18nCatalog
).toSAX( contentHandler );
+ } else {
+ new I18nMessage( this.nullText ).toSAX( contentHandler
);
+ }
+ } else {
+ contentHandler.characters( this.nullText.toCharArray( ),
0,
+ this.nullText.length( ) );
+ }
+
+ contentHandler.endElement( Constants.INSTANCE_NS, LABEL_EL,
+ Constants.INSTANCE_PREFIX_COLON +
+ LABEL_EL );
+ }
+
+ contentHandler.endElement( Constants.INSTANCE_NS, ITEM_EL,
+ Constants.INSTANCE_PREFIX_COLON +
+ ITEM_EL );
+ }
while(iter.hasNext()) {
String stringValue = "";
@@ -135,6 +187,15 @@
contentHandler.startElement(Constants.INSTANCE_NS, LABEL_EL,
Constants.INSTANCE_PREFIX_COLON + LABEL_EL, XMLUtils.EMPTY_ATTRIBUTES);
if (label instanceof XMLizable) {
((XMLizable)label).toSAX(contentHandler);
+ } else if( this.labelIsI18nKey ) {
+ String stringLabel = label.toString();
+
+ if( ( this.i18nCatalog != null ) &&
+ ( this.i18nCatalog.trim( ).length( ) > 0 ) ) {
+ new I18nMessage( stringLabel, this.i18nCatalog
).toSAX( contentHandler );
+ } else {
+ new I18nMessage( stringLabel ).toSAX( contentHandler );
+ }
} else {
String stringLabel = label.toString();
contentHandler.characters(stringLabel.toCharArray(), 0,
stringLabel.length());
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListBuilder.java
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListBuilder.java?view=diff&r1=158836&r2=158837
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListBuilder.java
(original)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListBuilder.java
Wed Mar 23 13:52:41 2005
@@ -18,9 +18,12 @@
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.context.ContextException;
import org.apache.avalon.framework.context.Contextualizable;
+import org.apache.cocoon.forms.Constants;
import org.apache.cocoon.forms.util.DomHelper;
import org.w3c.dom.Element;
+import java.util.Map;
+
/**
* Builds a selection list that will take its values from the flow page data.
* The items list and, for each item, its value and label, are fetched using
@@ -56,10 +59,37 @@
public SelectionList build(Element selectionListElement, Datatype
datatype) throws Exception {
String listPath = DomHelper.getAttribute(selectionListElement,
"list-path");
- String keyPath = DomHelper.getAttribute(selectionListElement,
"value-path");
- String valuePath = DomHelper.getAttribute(selectionListElement,
"label-path");
-
- return new FlowJXPathSelectionList(context, listPath, keyPath,
valuePath, datatype);
+ String valuePath = DomHelper.getAttribute(selectionListElement,
"value-path");
+ Map nspfx = DomHelper.getInheritedNSDeclarations(selectionListElement);
+ String i18nPfx = (String)nspfx.get( Constants.I18N_NS );
+ String labelPath = DomHelper.getAttribute(selectionListElement,
"label-path", null);
+ boolean labelIsI18nKey = false;
+ if( labelPath == null )
+ {
+ labelPath = DomHelper.getAttribute(selectionListElement, i18nPfx +
":label-path");
+ labelIsI18nKey = true;
+ }
+ String nullText = DomHelper.getAttribute(selectionListElement,
"null-text", null);
+ boolean nullTextIsI18nKey = false;
+ if( nullText == null ) {
+ nullText = DomHelper.getAttribute(selectionListElement, i18nPfx +
":null-text", null);
+ if( nullText != null ) {
+ nullTextIsI18nKey = true;
+ }
+ }
+
+ String i18nCatalog = DomHelper.getAttribute(selectionListElement,
"catalogue", null);
+
+
+ return new FlowJXPathSelectionList(context,
+ listPath,
+ valuePath,
+ labelPath,
+ datatype,
+ nullText,
+ nullTextIsI18nKey,
+ i18nCatalog,
+ labelIsI18nKey);
}
}
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java?view=auto&rev=158837
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java
(added)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java
Wed Mar 23 13:52:41 2005
@@ -0,0 +1,145 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed 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;
+
+import org.apache.avalon.framework.CascadingRuntimeException;
+import org.apache.commons.jxpath.JXPathContext;
+
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+
+import java.util.Locale;
+import java.util.Map;
+import java.util.WeakHashMap;
+
+
+/**
+ * Converts String representation of beans to bean instances and vice versa.
+ *
+ * <p>
+ * Sometimes the toString() method doesn't give a good representation of a
+ * Java Bean suited for selection list IDs. For this an optional
+ * <fd:id-path>jx-path</fd:id-path> attribute can be specified to
+ * have this convertor to use a different string representation.
+ * </p>
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
+ * @version $Id: BeanConvertor.java,v 1.3 2004/12/30 13:37:45 giacomo Exp $
+ */
+public class BeanConvertor
+ implements Convertor
+{
+ //~ Instance fields
--------------------------------------------------------
+
+ private Class m_class;
+
+ private Map m_objects = new WeakHashMap( );
+
+ private String m_idPath;
+
+ //~ Constructors
-----------------------------------------------------------
+
+ /**
+ * Construct a new BeanConvertor for a class
+ *
+ * @param className The package-qualified name of the class implementing
+ * the typesafe enum pattern.
+ * @param idPath Path to the identity field of the bean
+ *
+ * @throws CascadingRuntimeException If the class cannot be found
+ */
+ public BeanConvertor( final String className,
+ final String idPath )
+ {
+ try
+ {
+ m_class = Class.forName( className );
+ }
+ catch( ClassNotFoundException e )
+ {
+ throw new CascadingRuntimeException( "Class " + className +
+ " not found", e );
+ }
+
+ m_idPath = idPath;
+ }
+
+ //~ Methods
----------------------------------------------------------------
+
+ /**
+ * @see org.apache.cocoon.forms.datatype.convertor.Convertor#getTypeClass()
+ */
+ public Class getTypeClass( )
+ {
+ return m_class;
+ }
+
+ /**
+ * @see
org.apache.cocoon.forms.datatype.convertor.Convertor#convertFromString(java.lang.String,
+ * java.util.Locale,
+ * org.apache.cocoon.forms.datatype.convertor.Convertor.FormatCache)
+ */
+ public ConversionResult convertFromString( final String value,
+ final Locale locale,
+ final FormatCache formatCache )
+ {
+ return new ConversionResult( m_objects.get( value ) );
+ }
+
+ /**
+ * @see
org.apache.cocoon.forms.datatype.convertor.Convertor#convertToString(java.lang.Object,
+ * java.util.Locale,
+ * org.apache.cocoon.forms.datatype.convertor.Convertor.FormatCache)
+ */
+ public String convertToString( final Object value,
+ final Locale locale,
+ final FormatCache formatCache )
+ {
+ String idValue = "";
+
+ if( null != value )
+ {
+ if( m_idPath != null )
+ {
+ final JXPathContext ctx = JXPathContext.newContext( value );
+ idValue = ctx.getValue( m_idPath ).toString( );
+ }
+ else
+ {
+ idValue = value.toString( );
+ }
+ }
+
+ m_objects.put( idValue, value );
+
+ return idValue;
+ }
+
+ /**
+ * We do not enerate any SAX events
+ *
+ * @param contentHandler The contentHandler
+ * @param locale The locale
+ *
+ * @throws SAXException Just in case of failure that could never happen
+ */
+ public void generateSaxFragment( final ContentHandler contentHandler,
+ final Locale locale )
+ throws SAXException
+ {
+ // intentionally empty
+ }
+}
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java?view=auto&rev=158837
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java
(added)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java
Wed Mar 23 13:52:41 2005
@@ -0,0 +1,79 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed 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;
+
+import org.apache.cocoon.forms.Constants;
+import org.apache.cocoon.forms.util.DomHelper;
+
+import org.w3c.dom.Element;
+
+
+/**
+ * Creates [EMAIL PROTECTED] BeanConvertor}s
+ *
+ * <p>
+ * The optional <fd:bean>FQCN</fd:bean> attribute is used to give
+ * this convertor a hint of which concrete bean class we are going to work
with.
+ * If this attribute is not specified java.lang.Object is used.
+ * <p>
+ * Sometimes the toString() method doesn't give a good representation of a
+ * Java Bean suited for selection list IDs. For this an optional
+ * <fd:id-path>jx-path</fd:id-path> attribute can be specified to
+ * have this convertor to use a different string representation.
+ * </p>
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
+ * @version $Id: BeanConvertorBuilder.java,v 1.2 2004/12/27 13:30:48 giacomo
Exp $
+ */
+public class BeanConvertorBuilder
+ implements ConvertorBuilder
+{
+ //~ Methods
----------------------------------------------------------------
+
+ /**
+ * Build a [EMAIL PROTECTED] BeanConvertor}
+ *
+ * @param configElement The configuration element
+ *
+ * @return An initialized [EMAIL PROTECTED] Convertor}
+ *
+ * @throws Exception In case of failure
+ */
+ public Convertor build( final Element configElement )
+ throws Exception
+ {
+ if( configElement == null )
+ {
+ return null;
+ }
+
+ final Element beanEl =
+ DomHelper.getChildElement( configElement, Constants.DEFINITION_NS,
+ "bean", false );
+ final String clazz =
+ ( ( beanEl == null ) ? Object.class.getName( )
+ : beanEl.getFirstChild( ).getNodeValue( ) );
+ final Element idPathEl =
+ DomHelper.getChildElement( configElement, Constants.DEFINITION_NS,
+ "id-path", false );
+ final String idPath =
+ ( ( idPathEl != null )
+ ? idPathEl.getFirstChild( ).getNodeValue( ) : null );
+ final BeanConvertor convertor = new BeanConvertor( clazz, idPath );
+
+ return convertor;
+ }
+}
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanType.java
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanType.java?view=auto&rev=158837
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanType.java
(added)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanType.java
Wed Mar 23 13:52:41 2005
@@ -0,0 +1,75 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed 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.typeimpl;
+
+import org.apache.cocoon.forms.datatype.convertor.Convertor;
+
+
+/**
+ * The CForm type of a bean
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
+ * @version $Id: BeanType.java,v 1.1 2004/12/21 14:37:32 giacomo Exp $
+ */
+public class BeanType
+ extends AbstractDatatype
+{
+ //~ Constructors
-----------------------------------------------------------
+
+ /**
+ * Creates a new BeanType object.
+ *
+ * @param arrayType whether it's an array or not
+ * @param builder The [EMAIL PROTECTED] BeanTypeBuilder}
+ */
+ public BeanType( final boolean arrayType,
+ final BeanTypeBuilder builder )
+ {
+ super( );
+ setArrayType( arrayType );
+ setBuilder( builder );
+ }
+
+ //~ Methods
----------------------------------------------------------------
+
+ /**
+ * @see org.apache.cocoon.forms.datatype.Datatype#getDescriptiveName()
+ */
+ public String getDescriptiveName( )
+ {
+ final Class c1 = this.getConvertor( ).getTypeClass( );
+
+ return this.getConvertor( ).getTypeClass( ).getName( );
+ }
+
+ /**
+ * We make sure the plain Convertor is the same
+ *
+ * @return The convertor
+ */
+ public Convertor getPlainConvertor( )
+ {
+ return getConvertor( );
+ }
+
+ /**
+ * @see org.apache.cocoon.forms.datatype.Datatype#getTypeClass()
+ */
+ public Class getTypeClass( )
+ {
+ return this.getConvertor( ).getTypeClass( );
+ }
+}
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanTypeBuilder.java
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanTypeBuilder.java?view=auto&rev=158837
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanTypeBuilder.java
(added)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanTypeBuilder.java
Wed Mar 23 13:52:41 2005
@@ -0,0 +1,49 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed 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.typeimpl;
+
+import org.apache.cocoon.forms.datatype.Datatype;
+import org.apache.cocoon.forms.datatype.DatatypeManager;
+
+import org.w3c.dom.Element;
+
+
+/**
+ * Builder for [EMAIL PROTECTED] BeanType}
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
+ * @version $Id: BeanTypeBuilder.java,v 1.1 2004/12/21 14:37:32 giacomo Exp $
+ */
+public class BeanTypeBuilder
+ extends AbstractDatatypeBuilder
+{
+ //~ Methods
----------------------------------------------------------------
+
+ /**
+ * @see
org.apache.cocoon.forms.datatype.DatatypeBuilder#build(org.w3c.dom.Element,
+ * boolean, org.apache.cocoon.forms.datatype.DatatypeManager)
+ */
+ public Datatype build( final Element datatypeElement,
+ final boolean arrayType,
+ final DatatypeManager datatypeManager )
+ throws Exception
+ {
+ final BeanType type = new BeanType( arrayType, this );
+ buildValidationRules( datatypeElement, type, datatypeManager );
+ buildConvertor( datatypeElement, type );
+ return type;
+ }
+}