You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2015/09/01 16:58:08 UTC
tapestry-5 git commit: TAP5-2495: Report an error if an
EnumSelectModel is created for property conduit that does not return an enum
type.
Repository: tapestry-5
Updated Branches:
refs/heads/master fb1d26825 -> 40d8cb13d
TAP5-2495: Report an error if an EnumSelectModel is created for property conduit that does not return an enum type.
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/40d8cb13
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/40d8cb13
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/40d8cb13
Branch: refs/heads/master
Commit: 40d8cb13de3b44345e2cbe3de84c61ed185a59fe
Parents: fb1d268
Author: Jochen Kemnade <jo...@eddyson.de>
Authored: Tue Sep 1 16:56:12 2015 +0200
Committer: Jochen Kemnade <jo...@eddyson.de>
Committed: Tue Sep 1 16:56:12 2015 +0200
----------------------------------------------------------------------
.../corelib/pages/PropertyEditBlocks.java | 8 +++++++-
.../apache/tapestry5/util/EnumSelectModel.java | 5 +++++
.../tapestry5/util/EnumSelectModelTest.java | 19 ++++++++++++++++++-
3 files changed, 30 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/40d8cb13/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java
index 19326cc..e1627af 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java
@@ -172,6 +172,12 @@ public class PropertyEditBlocks
@SuppressWarnings("unchecked")
public SelectModel getSelectModelForProperty()
{
- return new EnumSelectModel(context.getPropertyType(), context.getContainerMessages());
+ Class propertyType = context.getPropertyType();
+ if (!Enum.class.isAssignableFrom(propertyType))
+ {
+ throw new IllegalStateException("Cannot create a select model for property " + context.getPropertyId()
+ + ". The property type is " + propertyType + " which is not an enum class.");
+ }
+ return new EnumSelectModel(propertyType, context.getContainerMessages());
}
}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/40d8cb13/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumSelectModel.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumSelectModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumSelectModel.java
index e8596ba..ef3f89b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumSelectModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumSelectModel.java
@@ -45,6 +45,11 @@ public final class EnumSelectModel extends AbstractSelectModel implements Serial
{
assert enumClass != null;
assert messages != null;
+ if (!Enum.class.isAssignableFrom(enumClass))
+ {
+ throw new IllegalArgumentException("Cannot create " + this.getClass().getSimpleName()
+ + " from " + enumClass.getName() + ", not an enum class.");
+ }
String prefix = enumClass.getSimpleName();
for (T value : values)
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/40d8cb13/tapestry-core/src/test/java/org/apache/tapestry5/util/EnumSelectModelTest.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/util/EnumSelectModelTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/util/EnumSelectModelTest.java
index ee3abe1..cc438c5 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/util/EnumSelectModelTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/util/EnumSelectModelTest.java
@@ -97,8 +97,25 @@ public class EnumSelectModelTest extends TapestryTestCase
verify();
}
+
+ @Test
+ //TAP5-2495
+ public void error_on_invalid_class()
+ {
+ Messages messages = mockMessages();
+
+ replay();
+ Class c = String.class;
+ try {
+ SelectModel model = new EnumSelectModel(c, messages);
+ fail("should have thrown an exception");
+ } catch (IllegalArgumentException e){
+ assertMessageContains(e, "not an enum class");
+ }
+ verify();
+ }
- private void checkOption(List<OptionModel> options, int i, String label, Stooge value)
+ private void checkOption(final List<OptionModel> options, final int i, final String label, final Stooge value)
{
OptionModel model = options.get(i);