21
21
22
22
import static capital .scalable .restdocs .constraints .ConstraintAndGroupDescriptionResolver .VALUE ;
23
23
import static capital .scalable .restdocs .constraints .MethodParameterValidatorConstraintResolver .CONSTRAINT_CLASS ;
24
- import static capital .scalable .restdocs .i18n .SnippetTranslationResolver .translate ;
25
24
import static capital .scalable .restdocs .util .FormatUtil .collectionToString ;
26
25
import static java .util .Collections .emptyList ;
27
26
import static java .util .Collections .emptyMap ;
36
35
import java .util .Collections ;
37
36
import java .util .List ;
38
37
38
+ import capital .scalable .restdocs .i18n .SnippetTranslationResolver ;
39
39
import com .fasterxml .jackson .core .JsonProcessingException ;
40
40
import com .fasterxml .jackson .databind .ObjectMapper ;
41
41
import org .apache .commons .lang3 .StringUtils ;
42
42
import org .slf4j .Logger ;
43
43
import org .springframework .core .MethodParameter ;
44
44
import org .springframework .restdocs .constraints .Constraint ;
45
+ import org .springframework .restdocs .constraints .ConstraintDescriptionResolver ;
45
46
import org .springframework .restdocs .constraints .ConstraintDescriptions ;
46
- import org .springframework .restdocs .constraints .ResourceBundleConstraintDescriptionResolver ;
47
47
48
48
public class ConstraintReaderImpl implements ConstraintReader {
49
49
50
50
private static final Logger log = getLogger (ConstraintReaderImpl .class );
51
51
52
- private final ConstraintAndGroupDescriptionResolver constraintDescriptionResolver ;
52
+ private final ConstraintAndGroupDescriptionResolver constraintAndGroupDescriptionResolver ;
53
53
54
54
private final SkippableConstraintResolver skippableConstraintResolver ;
55
55
56
56
private final MethodParameterConstraintResolver constraintResolver ;
57
57
58
58
private final ObjectMapper objectMapper ;
59
59
60
- private ConstraintReaderImpl (MethodParameterConstraintResolver actualResolver , ObjectMapper objectMapper ) {
61
- constraintDescriptionResolver = new ConstraintAndGroupDescriptionResolver (
62
- new ResourceBundleConstraintDescriptionResolver ());
60
+ private final SnippetTranslationResolver translationResolver ;
61
+
62
+ private ConstraintReaderImpl (MethodParameterConstraintResolver actualResolver , ObjectMapper objectMapper , SnippetTranslationResolver translationResolver ,
63
+ ConstraintDescriptionResolver constraintDescriptionResolver ) {
64
+ this .translationResolver = translationResolver ;
65
+ constraintAndGroupDescriptionResolver = new ConstraintAndGroupDescriptionResolver (
66
+ constraintDescriptionResolver , translationResolver );
63
67
skippableConstraintResolver = new SkippableConstraintResolver (
64
- actualResolver , constraintDescriptionResolver );
68
+ actualResolver , constraintAndGroupDescriptionResolver );
65
69
constraintResolver = new HumanReadableConstraintResolver (skippableConstraintResolver );
66
70
this .objectMapper = objectMapper ;
67
71
}
68
72
69
- public static ConstraintReaderImpl create (ObjectMapper objectMapper ) {
70
- return CONSTRAINT_CLASS != null ? createWithValidation (objectMapper ) : createWithoutValidation (objectMapper );
73
+ public static ConstraintReaderImpl create (ObjectMapper objectMapper , SnippetTranslationResolver translationResolver , ConstraintDescriptionResolver constraintDescriptionResolver ) {
74
+ return CONSTRAINT_CLASS != null ? createWithValidation (objectMapper , translationResolver , constraintDescriptionResolver ) : createWithoutValidation (objectMapper , translationResolver , constraintDescriptionResolver );
71
75
}
72
76
73
- static ConstraintReaderImpl createWithoutValidation (ObjectMapper objectMapper ) {
74
- return new ConstraintReaderImpl (new NoOpMethodParameterConstraintResolver (), objectMapper );
77
+ static ConstraintReaderImpl createWithoutValidation (ObjectMapper objectMapper , SnippetTranslationResolver translationResolver , ConstraintDescriptionResolver constraintDescriptionResolver ) {
78
+ return new ConstraintReaderImpl (new NoOpMethodParameterConstraintResolver (), objectMapper , translationResolver , constraintDescriptionResolver );
75
79
}
76
80
77
- static ConstraintReaderImpl createWithValidation (ObjectMapper objectMapper ) {
78
- return new ConstraintReaderImpl (new MethodParameterValidatorConstraintResolver (), objectMapper );
81
+ static ConstraintReaderImpl createWithValidation (ObjectMapper objectMapper , SnippetTranslationResolver translationResolver , ConstraintDescriptionResolver constraintDescriptionResolver ) {
82
+ return new ConstraintReaderImpl (new MethodParameterValidatorConstraintResolver (), objectMapper , translationResolver , constraintDescriptionResolver );
79
83
}
80
84
81
85
@ Override
@@ -85,7 +89,7 @@ public List<String> getOptionalMessages(Class<?> javaBaseClass, String javaField
85
89
86
90
@ Override
87
91
public String getTypeSpecifier (Class <?> javaBaseClass ) {
88
- String message = constraintDescriptionResolver .resolveDescription (
92
+ String message = constraintAndGroupDescriptionResolver .resolveDescription (
89
93
new Constraint (javaBaseClass .getCanonicalName (), emptyMap ()));
90
94
91
95
// fallback
@@ -99,7 +103,7 @@ public String getTypeSpecifier(Class<?> javaBaseClass) {
99
103
@ Override
100
104
public List <String > getConstraintMessages (Class <?> javaBaseClass , String javaFieldName ) {
101
105
ConstraintDescriptions constraints = new ConstraintDescriptions (javaBaseClass ,
102
- constraintResolver , constraintDescriptionResolver );
106
+ constraintResolver , constraintAndGroupDescriptionResolver );
103
107
List <String > constraintMessages = new ArrayList <>();
104
108
constraintMessages .addAll (constraints .descriptionsForProperty (javaFieldName ));
105
109
constraintMessages .addAll (getEnumConstraintMessage (javaBaseClass , javaFieldName ));
@@ -112,7 +116,7 @@ public List<String> getConstraintMessages(MethodParameter param) {
112
116
List <String > constraintMessages = new ArrayList <>();
113
117
for (Constraint constraint : constraints ) {
114
118
constraintMessages .add (
115
- constraintDescriptionResolver .resolveDescription (constraint ));
119
+ constraintAndGroupDescriptionResolver .resolveDescription (constraint ));
116
120
}
117
121
constraintMessages .addAll (getEnumConstraintMessage (param ));
118
122
Collections .sort (constraintMessages );
@@ -154,12 +158,12 @@ private List<String> getEnumConstraintMessage(Class<?> rawClass) {
154
158
155
159
String value = collectionToString (serializedEnumValues );
156
160
String enumName = enumClass .getCanonicalName ();
157
- String message = constraintDescriptionResolver .resolveDescription (
161
+ String message = constraintAndGroupDescriptionResolver .resolveDescription (
158
162
new Constraint (enumName , singletonMap (VALUE , (Object ) value )));
159
163
160
164
// fallback
161
165
if (isBlank (message ) || message .equals (enumName )) {
162
- message = translate ("constraints-enum" , value );
166
+ message = translationResolver . translate ("constraints-enum" , value );
163
167
}
164
168
return singletonList (message );
165
169
}
0 commit comments