1
7 package org.hibernate.validator.internal.metadata.aggregated;
8
9 import static org.hibernate.validator.internal.util.CollectionHelper.newHashSet;
10
11 import java.util.Collections;
12 import java.util.Map;
13 import java.util.Map.Entry;
14 import java.util.Set;
15
16 import javax.validation.metadata.GroupConversionDescriptor;
17
18 import org.hibernate.validator.internal.metadata.descriptor.GroupConversionDescriptorImpl;
19 import org.hibernate.validator.internal.util.CollectionHelper;
20 import org.hibernate.validator.internal.util.stereotypes.Immutable;
21
22
27 public class GroupConversionHelper {
28
29 static final GroupConversionHelper EMPTY = new GroupConversionHelper( Collections.emptyMap() );
30
31 @Immutable
32 private final Map<Class<?>, Class<?>> groupConversions;
33
34 private GroupConversionHelper(Map<Class<?>, Class<?>> groupConversions) {
35 this.groupConversions = CollectionHelper.toImmutableMap( groupConversions );
36 }
37
38 public static GroupConversionHelper of(Map<Class<?>, Class<?>> groupConversions) {
39 if ( groupConversions.isEmpty() ) {
40 return GroupConversionHelper.EMPTY;
41 }
42 else {
43 return new GroupConversionHelper( groupConversions );
44 }
45 }
46
47
57 public Class<?> convertGroup(Class<?> from) {
58 Class<?> to = groupConversions.get( from );
59 return to != null ? to : from;
60 }
61
62
69 public Set<GroupConversionDescriptor> asDescriptors() {
70 Set<GroupConversionDescriptor> descriptors = newHashSet( groupConversions.size() );
71
72 for ( Entry<Class<?>, Class<?>> conversion : groupConversions.entrySet() ) {
73 descriptors.add(
74 new GroupConversionDescriptorImpl(
75 conversion.getKey(),
76 conversion.getValue()
77 )
78 );
79 }
80
81 return CollectionHelper.toImmutableSet( descriptors );
82 }
83
84 boolean isEmpty() {
85 return groupConversions.isEmpty();
86 }
87
88 @Override
89 public String toString() {
90 StringBuilder sb = new StringBuilder();
91 sb.append( getClass().getSimpleName() );
92 sb.append( " [" );
93 sb.append( "groupConversions=" ).append( groupConversions );
94 sb.append( "]" );
95 return sb.toString();
96 }
97 }
98