From d7bbc71818aabd9cb96ee3bf38e220ed8f3e2a66 Mon Sep 17 00:00:00 2001 From: Gunnar Morling Date: Fri, 12 Feb 2016 12:07:39 +0100 Subject: [PATCH] HV-1055 Avoiding some object allocations --- .../internal/engine/groups/ValidationOrderGenerator.java | 6 +++--- .../internal/metadata/aggregated/BeanMetaDataImpl.java | 8 ++++++-- .../groups/validationorder/ValidationOrderTest.java | 8 ++++---- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/groups/ValidationOrderGenerator.java b/engine/src/main/java/org/hibernate/validator/internal/engine/groups/ValidationOrderGenerator.java index b485034374..ebd9dd993b 100644 --- a/engine/src/main/java/org/hibernate/validator/internal/engine/groups/ValidationOrderGenerator.java +++ b/engine/src/main/java/org/hibernate/validator/internal/engine/groups/ValidationOrderGenerator.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; + import javax.validation.GroupSequence; import javax.validation.groups.Default; @@ -43,7 +44,7 @@ public class ValidationOrderGenerator { public ValidationOrderGenerator() { validationOrderForDefaultGroup = new DefaultValidationOrder(); - validationOrderForDefaultGroup.insertGroup( new Group( Default.class ) ); + validationOrderForDefaultGroup.insertGroup( Group.DEFAULT_GROUP ); } /** @@ -73,8 +74,7 @@ public ValidationOrder getValidationOrder(Collection> groups) { DefaultValidationOrder validationOrder = new DefaultValidationOrder(); for ( Class clazz : groups ) { if ( Default.class.equals( clazz ) ) { // HV-621 - Group group = new Group( clazz ); - validationOrder.insertGroup( group ); + validationOrder.insertGroup( Group.DEFAULT_GROUP ); } else if ( isGroupSequence( clazz ) ) { insertSequence( clazz, validationOrder ); diff --git a/engine/src/main/java/org/hibernate/validator/internal/metadata/aggregated/BeanMetaDataImpl.java b/engine/src/main/java/org/hibernate/validator/internal/metadata/aggregated/BeanMetaDataImpl.java index 4a2d3ab500..9c01a42977 100644 --- a/engine/src/main/java/org/hibernate/validator/internal/metadata/aggregated/BeanMetaDataImpl.java +++ b/engine/src/main/java/org/hibernate/validator/internal/metadata/aggregated/BeanMetaDataImpl.java @@ -20,7 +20,6 @@ import java.lang.reflect.Member; import java.lang.reflect.Method; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -70,6 +69,11 @@ public final class BeanMetaDataImpl implements BeanMetaData { private static final Log log = LoggerFactory.make(); + /** + * Represents the "sequence" of just Default.class. + */ + private static final List> DEFAULT_GROUP_SEQUENCE = Collections.>singletonList( Default.class ); + /** * The root bean class for this meta data. */ @@ -310,7 +314,7 @@ else if ( defaultGroupSequence != null && !defaultGroupSequence.isEmpty() ) { setDefaultGroupSequence( defaultGroupSequence ); } else { - setDefaultGroupSequence( Arrays.>asList( beanClass ) ); + this.defaultGroupSequence = DEFAULT_GROUP_SEQUENCE; } } diff --git a/engine/src/test/java/org/hibernate/validator/test/internal/engine/groups/validationorder/ValidationOrderTest.java b/engine/src/test/java/org/hibernate/validator/test/internal/engine/groups/validationorder/ValidationOrderTest.java index f2dba45010..c79fb3b658 100644 --- a/engine/src/test/java/org/hibernate/validator/test/internal/engine/groups/validationorder/ValidationOrderTest.java +++ b/engine/src/test/java/org/hibernate/validator/test/internal/engine/groups/validationorder/ValidationOrderTest.java @@ -2,14 +2,14 @@ import java.util.ArrayList; import java.util.List; + import javax.validation.GroupDefinitionException; import javax.validation.groups.Default; -import org.testng.annotations.Test; - import org.hibernate.validator.internal.engine.groups.DefaultValidationOrder; import org.hibernate.validator.internal.engine.groups.Group; import org.hibernate.validator.internal.engine.groups.Sequence; +import org.testng.annotations.Test; import static org.testng.FileAssert.fail; @@ -23,7 +23,7 @@ public void testAssertDefaultGroupSequenceIsExpandableWithDefaultAtEndOfSequence Group a = new Group( GroupA.class ); Group b = new Group( GroupB.class ); Group c = new Group( GroupC.class ); - Group defaultGroup = new Group( Default.class ); + Group defaultGroup = Group.DEFAULT_GROUP; List sequence = new ArrayList(); sequence.add( a ); @@ -81,7 +81,7 @@ public void testAssertDefaultGroupSequenceIsExpandableWithDefaultAtBeginningOfSe Group a = new Group( GroupA.class ); Group b = new Group( GroupB.class ); Group c = new Group( GroupC.class ); - Group defaultGroup = new Group( Default.class ); + Group defaultGroup = Group.DEFAULT_GROUP; List sequence = new ArrayList(); sequence.add( defaultGroup );