@@ -72,7 +72,6 @@ public final class RequestMappingInfo implements RequestCondition<RequestMapping
72
72
private static final RequestConditionHolder EMPTY_CUSTOM = new RequestConditionHolder (null );
73
73
74
74
75
-
76
75
@ Nullable
77
76
private final String name ;
78
77
@@ -90,6 +89,8 @@ public final class RequestMappingInfo implements RequestCondition<RequestMapping
90
89
91
90
private final RequestConditionHolder customConditionHolder ;
92
91
92
+ private final int hashCode ;
93
+
93
94
94
95
public RequestMappingInfo (@ Nullable String name , @ Nullable PatternsRequestCondition patterns ,
95
96
@ Nullable RequestMethodsRequestCondition methods , @ Nullable ParamsRequestCondition params ,
@@ -104,6 +105,10 @@ public RequestMappingInfo(@Nullable String name, @Nullable PatternsRequestCondit
104
105
this .consumesCondition = (consumes != null ? consumes : EMPTY_CONSUMES );
105
106
this .producesCondition = (produces != null ? produces : EMPTY_PRODUCES );
106
107
this .customConditionHolder = (custom != null ? new RequestConditionHolder (custom ) : EMPTY_CUSTOM );
108
+
109
+ this .hashCode = calculateHashCode (
110
+ this .patternsCondition , this .methodsCondition , this .paramsCondition , this .headersCondition ,
111
+ this .consumesCondition , this .producesCondition , this .customConditionHolder );
107
112
}
108
113
109
114
/**
@@ -125,7 +130,6 @@ public RequestMappingInfo(RequestMappingInfo info, @Nullable RequestCondition<?>
125
130
info .consumesCondition , info .producesCondition , customRequestCondition );
126
131
}
127
132
128
-
129
133
/**
130
134
* Return the name for this mapping, or {@code null}.
131
135
*/
@@ -336,10 +340,17 @@ public boolean equals(@Nullable Object other) {
336
340
337
341
@ Override
338
342
public int hashCode () {
339
- return (this .patternsCondition .hashCode () * 31 + // primary differentiation
340
- this .methodsCondition .hashCode () + this .paramsCondition .hashCode () +
341
- this .headersCondition .hashCode () + this .consumesCondition .hashCode () +
342
- this .producesCondition .hashCode () + this .customConditionHolder .hashCode ());
343
+ return this .hashCode ;
344
+ }
345
+
346
+ private static int calculateHashCode (
347
+ PatternsRequestCondition patterns , RequestMethodsRequestCondition methods ,
348
+ ParamsRequestCondition params , HeadersRequestCondition headers ,
349
+ ConsumesRequestCondition consumes , ProducesRequestCondition produces ,
350
+ RequestConditionHolder custom ) {
351
+
352
+ return patterns .hashCode () * 31 + methods .hashCode () + params .hashCode () +
353
+ headers .hashCode () + consumes .hashCode () + produces .hashCode () + custom .hashCode ();
343
354
}
344
355
345
356
@ Override
0 commit comments