You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2007/02/13 02:59:51 UTC
svn commit: r506801 - in /tapestry/tapestry5/tapestry-core/trunk/src:
main/java/org/apache/tapestry/beaneditor/
main/java/org/apache/tapestry/corelib/components/
main/java/org/apache/tapestry/grid/
main/java/org/apache/tapestry/internal/beaneditor/ mai...
Author: hlship
Date: Mon Feb 12 17:59:49 2007
New Revision: 506801
URL: http://svn.apache.org/viewvc?view=rev&rev=506801
Log:
Consolidate BeanEditModel and GridDataModel into a single interface: BeanModel (and PropertyModel).
Added:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/BeanModel.java
- copied, changed from r506764, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/BeanEditorModel.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/PropertyModel.java
- copied, changed from r506764, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/PropertyEditModel.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/BeanModelImpl.java
- copied, changed from r506764, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/BeanEditorModelImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/PropertyModelImpl.java
- copied, changed from r506764, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/PropertyEditModelImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BeanModelSourceImpl.java
- copied, changed from r506764, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BeanEditorModelSourceImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/BeanModelSource.java
- copied, changed from r506764, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/BeanEditorModelSource.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/BeanModelSourceImplTest.java
- copied, changed from r506764, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/BeanEditorModelSourceImplTest.java
Removed:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/BeanEditorModel.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/PropertyEditModel.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/grid/ColumnModel.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/grid/GridDataModel.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/BeanEditorModelImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/PropertyEditModelImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/grid/ColumnModelImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/grid/GridDataModelImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/grid/GridMessages.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BeanEditorModelSourceImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/GridDataModelSourceImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/BeanEditorModelSource.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/GridDataModelSource.java
tapestry/tapestry5/tapestry-core/trunk/src/main/resources/org/apache/tapestry/internal/grid/GridStrings.properties
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/BeanEditorModelSourceImplTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/GridDataModelSourceImplTest.java
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/BeanEditForm.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Grid.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridCell.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridColumns.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridRows.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/grid/GridModelProvider.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ReadOnlyBean.java
Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/BeanModel.java (from r506764, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/BeanEditorModel.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/BeanModel.java?view=diff&rev=506801&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/BeanEditorModel.java&r1=506764&p2=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/BeanModel.java&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/BeanEditorModel.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/BeanModel.java Mon Feb 12 17:59:49 2007
@@ -16,18 +16,23 @@
import java.util.List;
+import org.apache.tapestry.services.BeanModelSource;
+
/**
- * Provides the information necessary to build a user interface to create or edit an instance of a
- * particular type.
+ * Provides the information necessary to build a user interface to view, create or edit an instance
+ * of a particular type.
* <p>
- * BeanEditorModels are not threadsafe, they are also not serializable.
+ * BeanModels are not threadsafe, they are also not serializable.
+ *
+ * @see BeanModelSource
*/
-public interface BeanEditorModel
+public interface BeanModel
{
+ /** Returns the type of bean for which this model was initially created. */
+ Class getBeanType();
+
/**
* Returns a list of the editable properties of the bean, in <em>presentation</em> order.
- *
- * @return
*/
List<String> getPropertyNames();
@@ -40,7 +45,7 @@
* @throws RuntimeException
* if the bean editor model does not have a property model for the provided name
*/
- PropertyEditModel get(String propertyName);
+ PropertyModel get(String propertyName);
/**
* Adds a new property to the model, returning its mutable model for further refinement.
@@ -51,5 +56,5 @@
* @throws RuntimeException
* if the property already exists
*/
- PropertyEditModel add(String propertyName);
+ PropertyModel add(String propertyName);
}
Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/PropertyModel.java (from r506764, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/PropertyEditModel.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/PropertyModel.java?view=diff&rev=506801&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/PropertyEditModel.java&r1=506764&p2=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/PropertyModel.java&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/PropertyEditModel.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/beaneditor/PropertyModel.java Mon Feb 12 17:59:49 2007
@@ -17,12 +17,11 @@
import org.apache.tapestry.PropertyConduit;
/**
- * Part of a {@link BeanEditorModel} that defines the attributes of a single edittable property of a
- * bean.
+ * Part of a {@link BeanModel} that defines the attributes of a single property of a bean.
*/
-public interface PropertyEditModel
+public interface PropertyModel
{
- /** Returns the name of the property. */
+ /** Returns the name of the property (which may, in fact, be a property expression). */
String getPropertyName();
/**
@@ -52,7 +51,7 @@
* @param editorType
* @return the property edit model, for further changes
*/
- PropertyEditModel editorType(String editorType);
+ PropertyModel editorType(String editorType);
/**
* Returns an object used to read or update the property. For virtual properties (properties
@@ -68,14 +67,14 @@
* new label for property
* @return the property edit model, for further changes
*/
- PropertyEditModel label(String label);
+ PropertyModel label(String label);
/**
* Changes the order for the property. The properties are sorted by order (and then by name for
* identical orders) when building the user interface.
*/
- PropertyEditModel order(int order);
+ PropertyModel order(int order);
/** Returns the containing model, often used for "fluent" construction of the model. */
- BeanEditorModel model();
+ BeanModel model();
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/BeanEditForm.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/BeanEditForm.java?view=diff&rev=506801&r1=506800&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/BeanEditForm.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/BeanEditForm.java Mon Feb 12 17:59:49 2007
@@ -29,10 +29,10 @@
import org.apache.tapestry.annotations.Inject;
import org.apache.tapestry.annotations.Parameter;
import org.apache.tapestry.annotations.SupportsInformalParameters;
-import org.apache.tapestry.beaneditor.BeanEditorModel;
-import org.apache.tapestry.beaneditor.PropertyEditModel;
+import org.apache.tapestry.beaneditor.BeanModel;
+import org.apache.tapestry.beaneditor.PropertyModel;
import org.apache.tapestry.ioc.Messages;
-import org.apache.tapestry.services.BeanEditorModelSource;
+import org.apache.tapestry.services.BeanModelSource;
import org.apache.tapestry.services.FieldValidatorDefaultSource;
import org.apache.tapestry.services.TranslatorDefaultSource;
@@ -52,8 +52,8 @@
* This component is likely to change more than any other thing in Tapestry! What's available now is
* a very limited preview of its eventual functionality.
*
- * @see BeanEditorModel
- * @see BeanEditorModelSource
+ * @see BeanModel
+ * @see BeanModelSource
*/
@SupportsInformalParameters
public class BeanEditForm
@@ -68,8 +68,8 @@
@Inject
private ComponentResources _resources;
- @Inject("infrastructure:BeanEditorModelSource")
- private BeanEditorModelSource _modelSource;
+ @Inject("infrastructure:BeanModelSource")
+ private BeanModelSource _modelSource;
@Inject("infrastructure:TranslatorDefaultSource")
private TranslatorDefaultSource _translatorDefaultSource;
@@ -112,19 +112,19 @@
private Locale _locale;
@Parameter
- private BeanEditorModel _model;
+ private BeanModel _model;
// Values that change with each change to the current property:
private String _propertyName;
- private PropertyEditModel _propertyEditModel;
+ private PropertyModel _propertyEditModel;
private Block _blockForProperty;
private Field _fieldForProperty;
- public BeanEditorModel getModel()
+ public BeanModel getModel()
{
return _model;
}
@@ -188,7 +188,7 @@
{
Class<? extends Object> beanType = _object.getClass();
- _model = _modelSource.create(beanType, _resources.getContainerResources());
+ _model = _modelSource.create(beanType, true, _resources.getContainerResources());
}
return true; // abort the form's prepare event
@@ -210,7 +210,7 @@
_propertyEditModel.getConduit());
}
- public PropertyEditModel getPropertyEditModel()
+ public PropertyModel getPropertyEditModel()
{
return _propertyEditModel;
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Grid.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Grid.java?view=diff&rev=506801&r1=506800&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Grid.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Grid.java Mon Feb 12 17:59:49 2007
@@ -22,12 +22,12 @@
import org.apache.tapestry.annotations.Parameter;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.annotations.SupportsInformalParameters;
-import org.apache.tapestry.grid.GridDataModel;
+import org.apache.tapestry.beaneditor.BeanModel;
import org.apache.tapestry.grid.GridDataSource;
import org.apache.tapestry.grid.GridModelProvider;
import org.apache.tapestry.internal.bindings.AbstractBinding;
import org.apache.tapestry.ioc.services.TypeCoercer;
-import org.apache.tapestry.services.GridDataModelSource;
+import org.apache.tapestry.services.BeanModelSource;
/**
* A grid presents tabular data. It is a composite component, created in terms of several
@@ -50,7 +50,7 @@
private Object _row;
@Parameter
- private GridDataModel _model;
+ private BeanModel _model;
@Parameter(value = "block:empty")
private Block _empty;
@@ -58,8 +58,8 @@
@Inject
private ComponentResources _resources;
- @Inject("infrastructure:GridDataModelSource")
- private GridDataModelSource _modelSource;
+ @Inject("infrastructure:BeanModelSource")
+ private BeanModelSource _modelSource;
@Inject("infrastructure:TypeCoercer")
private TypeCoercer _typeCoercer;
@@ -77,19 +77,24 @@
"row=row" })
private GridRows _rows;
+ @SuppressWarnings("unused")
@Component(parameters =
{ "source=dataSource", "rowsPerPage=rowsPerPage", "currentPage=currentPage" })
private GridPager _pager;
+ /**
+ * Dynamically computes the model based on the row type (determined from the
+ * {@link GridDataSource#getRowType() data model).
+ */
static class ModelBinding extends AbstractBinding
{
private final Grid _grid;
- private final GridDataModelSource _modelSource;
+ private final BeanModelSource _modelSource;
private final ComponentResources _containerResources;
- public ModelBinding(final Grid grid, final GridDataModelSource modelSource,
+ public ModelBinding(final Grid grid, final BeanModelSource modelSource,
final ComponentResources containerResources)
{
_grid = grid;
@@ -106,18 +111,30 @@
if (rowType == null)
throw new RuntimeException("xxx -- no source to determine list type from");
- return _modelSource.create(rowType, _containerResources);
+ // Properties do not have to be read/write
+
+ return _modelSource.create(rowType, false, _containerResources);
}
+ /**
+ * Returns false. This may be overkill, but it basically exists because the model is
+ * inherently mutable and therefore may contain client-specific state and needs to be
+ * discard at the end of the request. If the model were immutable, then we could leave
+ * invariant as true.
+ */
@Override
public boolean isInvariant()
{
return false;
}
+
}
Binding defaultModel()
{
+ // This should be done as an inner class, but Javassist has been barfing on that
+ // for some reason. This could be a problem!
+
return new ModelBinding(this, _modelSource, _resources.getContainerResources());
}
@@ -144,7 +161,7 @@
return null;
}
- public GridDataModel getDataModel()
+ public BeanModel getDataModel()
{
return _model;
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridCell.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridCell.java?view=diff&rev=506801&r1=506800&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridCell.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridCell.java Mon Feb 12 17:59:49 2007
@@ -18,13 +18,13 @@
import org.apache.tapestry.ComponentResources;
import org.apache.tapestry.MarkupWriter;
import org.apache.tapestry.annotations.Parameter;
-import org.apache.tapestry.grid.ColumnModel;
+import org.apache.tapestry.beaneditor.PropertyModel;
public class GridCell
{
/** Model for property displayed by the cell. */
@Parameter(required = true)
- private ColumnModel _model;
+ private PropertyModel _model;
/** Resources used to search for overrides. */
@Parameter(required = true)
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridColumns.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridColumns.java?view=diff&rev=506801&r1=506800&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridColumns.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridColumns.java Mon Feb 12 17:59:49 2007
@@ -17,7 +17,7 @@
import java.util.List;
import org.apache.tapestry.annotations.Parameter;
-import org.apache.tapestry.grid.ColumnModel;
+import org.apache.tapestry.beaneditor.PropertyModel;
import org.apache.tapestry.grid.GridModelProvider;
/**
@@ -29,14 +29,14 @@
@Parameter(value = "componentResources.container", required = true)
private GridModelProvider _dataProvider;
- private ColumnModel _columnModel;
+ private PropertyModel _columnModel;
public List<String> getColumnNames()
{
return _dataProvider.getDataModel().getPropertyNames();
}
- public ColumnModel getColumnModel()
+ public PropertyModel getColumnModel()
{
return _columnModel;
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridRows.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridRows.java?view=diff&rev=506801&r1=506800&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridRows.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/GridRows.java Mon Feb 12 17:59:49 2007
@@ -17,7 +17,7 @@
import java.util.List;
import org.apache.tapestry.annotations.Parameter;
-import org.apache.tapestry.grid.ColumnModel;
+import org.apache.tapestry.beaneditor.PropertyModel;
import org.apache.tapestry.grid.GridDataSource;
import org.apache.tapestry.grid.GridModelProvider;
@@ -50,7 +50,7 @@
private String _propertyName;
- private ColumnModel _columnModel;
+ private PropertyModel _columnModel;
public String getRowClass()
{
@@ -117,7 +117,7 @@
return _row;
}
- public ColumnModel getColumnModel()
+ public PropertyModel getColumnModel()
{
return _columnModel;
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/grid/GridModelProvider.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/grid/GridModelProvider.java?view=diff&rev=506801&r1=506800&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/grid/GridModelProvider.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/grid/GridModelProvider.java Mon Feb 12 17:59:49 2007
@@ -14,6 +14,7 @@
package org.apache.tapestry.grid;
+import org.apache.tapestry.beaneditor.BeanModel;
import org.apache.tapestry.corelib.components.Grid;
/**
@@ -26,7 +27,7 @@
* Returns the data model, which defines the columns (in terms of properties of the row type),
* and provides access to actual values for a given row instance.
*/
- GridDataModel getDataModel();
+ BeanModel getDataModel();
/** Returns the source for the data to be presented in the Grid. */
GridDataSource getDataSource();
Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/BeanModelImpl.java (from r506764, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/BeanEditorModelImpl.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/BeanModelImpl.java?view=diff&rev=506801&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/BeanEditorModelImpl.java&r1=506764&p2=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/BeanModelImpl.java&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/BeanEditorModelImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/BeanModelImpl.java Mon Feb 12 17:59:49 2007
@@ -23,14 +23,14 @@
import java.util.Map;
import org.apache.tapestry.PropertyConduit;
-import org.apache.tapestry.beaneditor.BeanEditorModel;
-import org.apache.tapestry.beaneditor.PropertyEditModel;
+import org.apache.tapestry.beaneditor.BeanModel;
+import org.apache.tapestry.beaneditor.PropertyModel;
import org.apache.tapestry.internal.services.CoercingPropertyConduitWrapper;
import org.apache.tapestry.ioc.Messages;
import org.apache.tapestry.ioc.services.TypeCoercer;
import org.apache.tapestry.services.PropertyConduitSource;
-public class BeanEditorModelImpl implements BeanEditorModel, Comparator<PropertyEditModel>
+public class BeanModelImpl implements BeanModel, Comparator<PropertyModel>
{
private final Class _beanType;
@@ -40,9 +40,9 @@
private final Messages _messages;
- private final Map<String, PropertyEditModel> _properties = newCaseInsensitiveMap();
+ private final Map<String, PropertyModel> _properties = newCaseInsensitiveMap();
- public BeanEditorModelImpl(Class beanType, PropertyConduitSource propertyConduitSource,
+ public BeanModelImpl(Class beanType, PropertyConduitSource propertyConduitSource,
TypeCoercer typeCoercer, Messages messages)
{
_beanType = beanType;
@@ -51,7 +51,12 @@
_messages = messages;
}
- public PropertyEditModel add(String propertyName)
+ public Class getBeanType()
+ {
+ return _beanType;
+ }
+
+ public PropertyModel add(String propertyName)
{
if (_properties.containsKey(propertyName))
throw new RuntimeException(BeanEditorMessages.duplicatePropertyName(
@@ -60,7 +65,7 @@
PropertyConduit conduit = createConduit(propertyName);
- PropertyEditModel propertyModel = new PropertyEditModelImpl(this, propertyName, conduit,
+ PropertyModel propertyModel = new PropertyModelImpl(this, propertyName, conduit,
_messages);
_properties.put(propertyName, propertyModel);
@@ -75,9 +80,9 @@
propertyName), _typeCoercer);
}
- public PropertyEditModel get(String propertyName)
+ public PropertyModel get(String propertyName)
{
- PropertyEditModel propertyModel = _properties.get(propertyName);
+ PropertyModel propertyModel = _properties.get(propertyName);
if (propertyModel == null)
throw new RuntimeException(BeanEditorMessages.unknownProperty(
@@ -90,21 +95,21 @@
public List<String> getPropertyNames()
{
- List<PropertyEditModel> propertyModels = newList(_properties.values());
+ List<PropertyModel> propertyModels = newList(_properties.values());
// Sort the list of models by their order property.
-
+
Collections.sort(propertyModels, this);
List<String> result = newList();
- for (PropertyEditModel propertyModel : propertyModels)
+ for (PropertyModel propertyModel : propertyModels)
result.add(propertyModel.getPropertyName());
return result;
}
- public int compare(PropertyEditModel o1, PropertyEditModel o2)
+ public int compare(PropertyModel o1, PropertyModel o2)
{
int result = o1.getOrder() - o2.getOrder();
Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/PropertyModelImpl.java (from r506764, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/PropertyEditModelImpl.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/PropertyModelImpl.java?view=diff&rev=506801&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/PropertyEditModelImpl.java&r1=506764&p2=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/PropertyModelImpl.java&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/PropertyEditModelImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/beaneditor/PropertyModelImpl.java Mon Feb 12 17:59:49 2007
@@ -17,14 +17,14 @@
import static org.apache.tapestry.ioc.internal.util.Defense.notBlank;
import org.apache.tapestry.PropertyConduit;
-import org.apache.tapestry.beaneditor.BeanEditorModel;
-import org.apache.tapestry.beaneditor.PropertyEditModel;
+import org.apache.tapestry.beaneditor.BeanModel;
+import org.apache.tapestry.beaneditor.PropertyModel;
import org.apache.tapestry.internal.TapestryUtils;
import org.apache.tapestry.ioc.Messages;
-public class PropertyEditModelImpl implements PropertyEditModel
+public class PropertyModelImpl implements PropertyModel
{
- private final BeanEditorModel _model;
+ private final BeanModel _model;
private final String _name;
@@ -38,7 +38,7 @@
private String _editorType;
- public PropertyEditModelImpl(BeanEditorModel model, final String name,
+ public PropertyModelImpl(BeanModel model, final String name,
final PropertyConduit conduit, Messages messages)
{
_model = model;
@@ -67,7 +67,7 @@
return _conduit;
}
- public PropertyEditModel label(String label)
+ public PropertyModel label(String label)
{
notBlank(label, "label");
@@ -91,19 +91,19 @@
return _order;
}
- public PropertyEditModel order(int order)
+ public PropertyModel order(int order)
{
_order = order;
return this;
}
- public BeanEditorModel model()
+ public BeanModel model()
{
return _model;
}
- public PropertyEditModel editorType(String editorType)
+ public PropertyModel editorType(String editorType)
{
_editorType = editorType;
Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BeanModelSourceImpl.java (from r506764, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BeanEditorModelSourceImpl.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BeanModelSourceImpl.java?view=diff&rev=506801&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BeanEditorModelSourceImpl.java&r1=506764&p2=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BeanModelSourceImpl.java&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BeanEditorModelSourceImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/BeanModelSourceImpl.java Mon Feb 12 17:59:49 2007
@@ -21,10 +21,10 @@
import java.util.Map;
import org.apache.tapestry.ComponentResources;
-import org.apache.tapestry.beaneditor.BeanEditorModel;
+import org.apache.tapestry.beaneditor.BeanModel;
import org.apache.tapestry.events.InvalidationListener;
import org.apache.tapestry.internal.TapestryUtils;
-import org.apache.tapestry.internal.beaneditor.BeanEditorModelImpl;
+import org.apache.tapestry.internal.beaneditor.BeanModelImpl;
import org.apache.tapestry.ioc.Messages;
import org.apache.tapestry.ioc.services.ClassFactory;
import org.apache.tapestry.ioc.services.ClassPropertyAdapter;
@@ -32,10 +32,10 @@
import org.apache.tapestry.ioc.services.PropertyAdapter;
import org.apache.tapestry.ioc.services.TypeCoercer;
import org.apache.tapestry.ioc.util.StrategyRegistry;
-import org.apache.tapestry.services.BeanEditorModelSource;
+import org.apache.tapestry.services.BeanModelSource;
import org.apache.tapestry.services.PropertyConduitSource;
-public class BeanEditorModelSourceImpl implements BeanEditorModelSource, InvalidationListener
+public class BeanModelSourceImpl implements BeanModelSource, InvalidationListener
{
private final TypeCoercer _typeCoercer;
@@ -47,7 +47,7 @@
private final StrategyRegistry<String> _registry;
- public BeanEditorModelSourceImpl(final TypeCoercer typeCoercer,
+ public BeanModelSourceImpl(final TypeCoercer typeCoercer,
final PropertyAccess propertyAccess, final PropertyConduitSource propertyConduitSource,
ClassFactory classFactory, Map<Class, String> configuration)
{
@@ -64,7 +64,8 @@
_registry.clearCache();
}
- public BeanEditorModel create(Class beanClass, ComponentResources resources)
+ public BeanModel create(Class beanClass, boolean filterReadOnlyProperties,
+ ComponentResources resources)
{
notNull(beanClass, "beanClass");
notNull(resources, "resources");
@@ -73,7 +74,7 @@
ClassPropertyAdapter adapter = _propertyAccess.getAdapter(beanClass);
- BeanEditorModel model = new BeanEditorModelImpl(beanClass, _propertyConduitSource,
+ BeanModel model = new BeanModelImpl(beanClass, _propertyConduitSource,
_typeCoercer, messages);
List<String> propertyNames = newList();
@@ -82,19 +83,22 @@
{
PropertyAdapter pa = adapter.getPropertyAdapter(propertyName);
- if (pa.isRead() && pa.isUpdate())
- {
- String editorType = _registry.get(pa.getType());
+ if (!pa.isRead())
+ continue;
- // If an unregistered type, then ignore the property.
+ if (filterReadOnlyProperties && !pa.isUpdate())
+ continue;
- if (editorType.equals(""))
- continue;
+ String editorType = _registry.get(pa.getType());
- model.add(propertyName).editorType(editorType);
+ // If an unregistered type, then ignore the property.
- propertyNames.add(propertyName);
- }
+ if (editorType.equals(""))
+ continue;
+
+ model.add(propertyName).editorType(editorType);
+
+ propertyNames.add(propertyName);
}
// Set default property order for properties that are not explicit.
Copied: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/BeanModelSource.java (from r506764, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/BeanEditorModelSource.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/BeanModelSource.java?view=diff&rev=506801&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/BeanEditorModelSource.java&r1=506764&p2=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/BeanModelSource.java&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/BeanEditorModelSource.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/BeanModelSource.java Mon Feb 12 17:59:49 2007
@@ -15,14 +15,14 @@
package org.apache.tapestry.services;
import org.apache.tapestry.ComponentResources;
-import org.apache.tapestry.beaneditor.BeanEditorModel;
+import org.apache.tapestry.beaneditor.BeanModel;
import org.apache.tapestry.beaneditor.Order;
/**
- * Used by a component to create a default {@link BeanEditorModel} for a particular bean class. Also
+ * Used by a component to create a default {@link BeanModel} for a particular bean class. Also
* provides support to the model by generating validation information for individual fields.
*/
-public interface BeanEditorModelSource
+public interface BeanModelSource
{
/**
* Creates a new model used for editting the indicated bean class. The model will represent all
@@ -36,10 +36,15 @@
*
* @param beanClass
* class of object to be editted
+ * @param filterReadOnlyProperties
+ * if true, then properties that are read-only will be skipped (leaving only
+ * read-write properties). If false, then both read-only and read-write properties
+ * will be included.
* @param resources
* used when resolving resources, especially component messages (used to access
* labels)
* @return a model
*/
- BeanEditorModel create(Class beanClass, ComponentResources resources);
+ BeanModel create(Class beanClass, boolean filterReadOnlyProperties,
+ ComponentResources resources);
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java?view=diff&rev=506801&r1=506800&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java Mon Feb 12 17:59:49 2007
@@ -67,7 +67,7 @@
import org.apache.tapestry.internal.services.ApplicationStateWorker;
import org.apache.tapestry.internal.services.AssetDispatcher;
import org.apache.tapestry.internal.services.AssetSourceImpl;
-import org.apache.tapestry.internal.services.BeanEditorModelSourceImpl;
+import org.apache.tapestry.internal.services.BeanModelSourceImpl;
import org.apache.tapestry.internal.services.BindingSourceImpl;
import org.apache.tapestry.internal.services.ClasspathAssetAliasManagerImpl;
import org.apache.tapestry.internal.services.CommonResourcesInjectionProvider;
@@ -94,7 +94,6 @@
import org.apache.tapestry.internal.services.FieldValidatorDefaultSourceImpl;
import org.apache.tapestry.internal.services.FieldValidatorSourceImpl;
import org.apache.tapestry.internal.services.FlashPersistentFieldStrategy;
-import org.apache.tapestry.internal.services.GridDataModelSourceImpl;
import org.apache.tapestry.internal.services.HeartbeatImpl;
import org.apache.tapestry.internal.services.InfrastructureImpl;
import org.apache.tapestry.internal.services.InfrastructureManagerImpl;
@@ -550,7 +549,7 @@
ApplicationStateManager.class,
ApplicationStatePersistenceStrategySource.class,
AssetSource.class,
- BeanEditorModelSource.class,
+ BeanModelSource.class,
BindingSource.class,
ClasspathAssetAliasManager.class,
ComponentClassResolver.class,
@@ -560,7 +559,6 @@
Environment.class,
FieldValidatorDefaultSource.class,
FieldValidatorSource.class,
- GridDataModelSource.class,
MarkupWriterFactory.class,
MetaDataLocator.class,
PersistentFieldManager.class,
@@ -1320,18 +1318,18 @@
}
/**
- * The configurationof the model source is a mapping from type to string. The types are property
- * types and the values, the strings, represent different type of editors.
+ * The configuration of the model source is a mapping from type to string. The types are
+ * property types and the values, the strings, represent different type of editors.
*/
- public BeanEditorModelSource buildBeanEditorModelSource(
+ public BeanModelSource buildBeanModelSource(
@Inject("infrastructure:TypeCoercer")
TypeCoercer typeCoercer,
Map<Class, String> configuration)
{
- BeanEditorModelSourceImpl service = new BeanEditorModelSourceImpl(typeCoercer,
- _propertyAccess, _propertyConduitSource, _componentClassFactory, configuration);
+ BeanModelSourceImpl service = new BeanModelSourceImpl(typeCoercer, _propertyAccess,
+ _propertyConduitSource, _componentClassFactory, configuration);
_componentInstantiatorSource.addInvalidationListener(service);
@@ -1347,7 +1345,7 @@
* <li>Boolean --> checkbox
* </ul>
*/
- public static void contributeBeanEditorModelSource(
+ public static void contributeBeanModelSource(
MappedConfiguration<Class, String> configuration)
{
configuration.add(Object.class, "");
@@ -1396,12 +1394,6 @@
_componentInstantiatorSource.addInvalidationListener(service);
return service;
- }
-
- public GridDataModelSource buildGridDataModelSource()
- {
- return new GridDataModelSourceImpl(_propertyAccess, _componentClassFactory,
- _propertyConduitSource);
}
public MetaDataLocator buildMetaDataLocator(@Inject("infrastructure:ComponentClassResolver")
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java?view=diff&rev=506801&r1=506800&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java Mon Feb 12 17:59:49 2007
@@ -49,7 +49,7 @@
import org.apache.tapestry.Validator;
import org.apache.tapestry.annotations.Inject;
import org.apache.tapestry.annotations.Parameter;
-import org.apache.tapestry.beaneditor.PropertyEditModel;
+import org.apache.tapestry.beaneditor.PropertyModel;
import org.apache.tapestry.ioc.Location;
import org.apache.tapestry.ioc.Messages;
import org.apache.tapestry.ioc.Resource;
@@ -777,7 +777,7 @@
expect(provider.getAnnotation(annotationClass)).andReturn(annotation).atLeastOnce();
}
- protected final void train_getConduit(PropertyEditModel model, PropertyConduit conduit)
+ protected final void train_getConduit(PropertyModel model, PropertyConduit conduit)
{
expect(model.getConduit()).andReturn(conduit).atLeastOnce();
}
@@ -787,9 +787,9 @@
return newMock(PropertyConduit.class);
}
- protected final PropertyEditModel newPropertyEditModel()
+ protected final PropertyModel newPropertyEditModel()
{
- return newMock(PropertyEditModel.class);
+ return newMock(PropertyModel.class);
}
protected final AnnotationProvider newAnnotationProvider()
Copied: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/BeanModelSourceImplTest.java (from r506764, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/BeanEditorModelSourceImplTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/BeanModelSourceImplTest.java?view=diff&rev=506801&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/BeanEditorModelSourceImplTest.java&r1=506764&p2=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/BeanModelSourceImplTest.java&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/BeanEditorModelSourceImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/BeanModelSourceImplTest.java Mon Feb 12 17:59:49 2007
@@ -19,24 +19,24 @@
import org.apache.tapestry.ComponentResources;
import org.apache.tapestry.PropertyConduit;
-import org.apache.tapestry.beaneditor.BeanEditorModel;
-import org.apache.tapestry.beaneditor.PropertyEditModel;
+import org.apache.tapestry.beaneditor.BeanModel;
+import org.apache.tapestry.beaneditor.PropertyModel;
import org.apache.tapestry.internal.test.InternalBaseTestCase;
import org.apache.tapestry.ioc.Messages;
-import org.apache.tapestry.services.BeanEditorModelSource;
+import org.apache.tapestry.services.BeanModelSource;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/** Tests for the bean editor model source itself, as well as the model classes. */
-public class BeanEditorModelSourceImplTest extends InternalBaseTestCase
+public class BeanModelSourceImplTest extends InternalBaseTestCase
{
- private BeanEditorModelSource _source;
+ private BeanModelSource _source;
@BeforeClass
public void setup()
{
- _source = getObject("infrastructure:BeanEditorModelSource", BeanEditorModelSource.class);
+ _source = getObject("infrastructure:BeanModelSource", BeanModelSource.class);
}
@AfterClass
@@ -57,19 +57,21 @@
replay();
- BeanEditorModel model = _source.create(SimpleBean.class, resources);
+ BeanModel model = _source.create(SimpleBean.class, true, resources);
+
+ assertSame(model.getBeanType(), SimpleBean.class);
// Based on order of the getter methods (no longer alphabetical)
assertEquals(model.getPropertyNames(), Arrays.asList("firstName", "lastName", "age"));
- PropertyEditModel age = model.get("age");
+ PropertyModel age = model.get("age");
assertEquals(age.getLabel(), "Age");
assertSame(age.getPropertyType(), int.class);
assertEquals(age.getEditorType(), "text");
- PropertyEditModel firstName = model.get("firstName");
+ PropertyModel firstName = model.get("firstName");
assertEquals(firstName.getLabel(), "First Name");
assertEquals(firstName.getPropertyType(), String.class);
@@ -99,6 +101,28 @@
}
@Test
+ public void filtering_out_read_only_properties()
+ {
+ ComponentResources resources = newComponentResources();
+ Messages messages = newMessages();
+
+ train_getMessages(resources, messages);
+ stub_contains(messages, false);
+
+ replay();
+
+ BeanModel model = _source.create(ReadOnlyBean.class, true, resources);
+
+ assertEquals(model.getPropertyNames(), Arrays.asList("value"));
+
+ model = _source.create(ReadOnlyBean.class, false, resources);
+
+ assertEquals(model.getPropertyNames(), Arrays.asList("value", "readOnly"));
+
+ verify();
+ }
+
+ @Test
public void non_text_property()
{
ComponentResources resources = newComponentResources();
@@ -109,7 +133,7 @@
replay();
- BeanEditorModel model = _source.create(EnumBean.class, resources);
+ BeanModel model = _source.create(EnumBean.class, true, resources);
assertEquals(model.getPropertyNames(), Arrays.asList("token"));
@@ -129,7 +153,7 @@
replay();
- BeanEditorModel model = _source.create(SimpleBean.class, resources);
+ BeanModel model = _source.create(SimpleBean.class, true, resources);
try
{
@@ -157,7 +181,7 @@
replay();
- BeanEditorModel model = _source.create(SimpleBean.class, resources);
+ BeanModel model = _source.create(SimpleBean.class, true, resources);
try
{
@@ -186,7 +210,7 @@
replay();
- BeanEditorModel model = _source.create(StoogeBean.class, resources);
+ BeanModel model = _source.create(StoogeBean.class, true, resources);
assertEquals(model.getPropertyNames(), Arrays.asList("larry", "moe", "shemp", "curly"));
@@ -204,7 +228,7 @@
replay();
- BeanEditorModel model = _source.create(SimpleBean.class, resources).get("age").label(
+ BeanModel model = _source.create(SimpleBean.class, true, resources).get("age").label(
"Decrepitude").model();
assertEquals(model.get("age").getLabel(), "Decrepitude");
@@ -226,7 +250,7 @@
replay();
- BeanEditorModel model = _source.create(SimpleBean.class, resources);
+ BeanModel model = _source.create(SimpleBean.class, true, resources);
assertEquals(model.get("age").getLabel(), "Decrepitude");
@@ -244,11 +268,11 @@
replay();
- BeanEditorModel model = _source.create(StringArrayBean.class, resources);
+ BeanModel model = _source.create(StringArrayBean.class, true, resources);
// There's not editor for string arrays yet, so it won't show up normally.
- PropertyEditModel propertyModel = model.add("array");
+ PropertyModel propertyModel = model.add("array");
assertSame(propertyModel.getPropertyType(), String[].class);
@@ -282,7 +306,7 @@
replay();
- BeanEditorModel model = _source.create(CompositeBean.class, resources);
+ BeanModel model = _source.create(CompositeBean.class, true, resources);
// No editor for CompositeBean, so this will be empty.
@@ -290,11 +314,11 @@
// There's not editor for string arrays yet, so it won't show up normally.
- PropertyEditModel firstName = model.add("simple.firstName");
+ PropertyModel firstName = model.add("simple.firstName");
assertEquals(firstName.getLabel(), "First Name");
- PropertyEditModel age = model.add("simple.age");
+ PropertyModel age = model.add("simple.age");
assertEquals(age.getLabel(), "Years of Age");
CompositeBean bean = new CompositeBean();
@@ -308,6 +332,24 @@
bean.getSimple().setAge(24);
assertEquals(age.getConduit().get(bean), new Integer(24));
+
+ verify();
+ }
+
+ @Test
+ public void default_properties_exclude_write_only()
+ {
+ ComponentResources resources = newComponentResources();
+ Messages messages = newMessages();
+
+ train_getMessages(resources, messages);
+ stub_contains(messages, false);
+
+ replay();
+
+ BeanModel model = _source.create(WriteOnlyBean.class, false, resources);
+
+ assertEquals(model.getPropertyNames(), Arrays.asList("readOnly", "readWrite"));
verify();
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ReadOnlyBean.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ReadOnlyBean.java?view=diff&rev=506801&r1=506800&r2=506801
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ReadOnlyBean.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/ReadOnlyBean.java Mon Feb 12 17:59:49 2007
@@ -1,4 +1,4 @@
-// Copyright 2006 The Apache Software Foundation
+// Copyright 2006, 2007 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.
@@ -12,20 +12,24 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.internal.services;
-
-public class ReadOnlyBean
-{
- private String _value;
-
- public String getValue()
- {
- return _value;
- }
-
- public void setValue(String value)
- {
- _value = value;
- }
-
-}
+package org.apache.tapestry.internal.services;
+
+public class ReadOnlyBean
+{
+ private String _value;
+
+ public String getValue()
+ {
+ return _value;
+ }
+
+ public void setValue(String value)
+ {
+ _value = value;
+ }
+
+ public String getReadOnly()
+ {
+ return null;
+ }
+}