Repository: tapestry-5 Updated Branches: refs/heads/master a32af3d85 -> 7368fdc53
TAP5-2565, TAP5-2496: always use name() when coercing enum values to String Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/7368fdc5 Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/7368fdc5 Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/7368fdc5 Branch: refs/heads/master Commit: 7368fdc536d5ddc6c050b05bdbe45fea4d9517e1 Parents: a32af3d Author: Jochen Kemnade <jkemn...@apache.org> Authored: Thu Sep 22 12:05:49 2016 +0200 Committer: Jochen Kemnade <jkemn...@apache.org> Committed: Thu Sep 22 12:05:49 2016 +0200 ---------------------------------------------------------------------- .../ioc/internal/services/TypeCoercerImpl.java | 5 +++++ .../test/groovy/ioc/specs/TypeCoercerSpec.groovy | 7 ++++++- .../src/test/java/com/example/Animal.java | 18 ++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/7368fdc5/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java ---------------------------------------------------------------------- diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java b/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java index 2b157b7..c93655d 100644 --- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java +++ b/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java @@ -495,6 +495,11 @@ public class TypeCoercerImpl extends LockSupport implements TypeCoercer { tuples = extend(tuples, new CoercionTuple(sourceType, targetType, new StringToEnumCoercion(targetType))); } + else if (Enum.class.isAssignableFrom(sourceType) && targetType == String.class) + { + // TAP5-2565 + tuples = extend(tuples, new CoercionTuple(sourceType, targetType, (value)->((Enum) value).name())); + } return tuples; } http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/7368fdc5/tapestry-ioc/src/test/groovy/ioc/specs/TypeCoercerSpec.groovy ---------------------------------------------------------------------- diff --git a/tapestry-ioc/src/test/groovy/ioc/specs/TypeCoercerSpec.groovy b/tapestry-ioc/src/test/groovy/ioc/specs/TypeCoercerSpec.groovy index 9a388fb..985d0e4 100644 --- a/tapestry-ioc/src/test/groovy/ioc/specs/TypeCoercerSpec.groovy +++ b/tapestry-ioc/src/test/groovy/ioc/specs/TypeCoercerSpec.groovy @@ -5,6 +5,9 @@ import org.apache.tapestry5.ioc.annotations.AnnotationUseContext import org.apache.tapestry5.ioc.services.TypeCoercer import org.apache.tapestry5.ioc.util.TimeInterval import org.apache.tapestry5.plastic.PlasticUtils + +import com.example.Animal; + import spock.lang.Unroll class TypeCoercerSpec extends AbstractSharedRegistrySpecification { @@ -97,7 +100,9 @@ class TypeCoercerSpec extends AbstractSharedRegistrySpecification { "mixin" | AnnotationUseContext | AnnotationUseContext.MIXIN 123 | Object[] | [123] as Object[] [1, 2, 3] | Object[] | [1, 2, 3] as Object[] - + // TAP5-2565 + Animal.DOG | String | 'DOG' + 'CAT' | Animal | Animal.CAT inputTypeName = PlasticUtils.toTypeName(input.getClass()) typeName = PlasticUtils.toTypeName(type) http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/7368fdc5/tapestry-ioc/src/test/java/com/example/Animal.java ---------------------------------------------------------------------- diff --git a/tapestry-ioc/src/test/java/com/example/Animal.java b/tapestry-ioc/src/test/java/com/example/Animal.java new file mode 100644 index 0000000..75826ec --- /dev/null +++ b/tapestry-ioc/src/test/java/com/example/Animal.java @@ -0,0 +1,18 @@ +package com.example; + +public enum Animal { + + CAT("Cat"), DOG("Dog"); + + private final String displayName; + + private Animal(String displayName) { + this.displayName = displayName; + } + + @Override + public String toString() { + return displayName; + } + +}