23
23
import java .util .function .Function ;
24
24
import java .util .function .Supplier ;
25
25
26
+ import org .springframework .core .KotlinDetector ;
26
27
import org .springframework .lang .Nullable ;
27
28
import org .springframework .util .ReflectionUtils ;
28
29
@@ -98,12 +99,13 @@ public abstract class ClassUtils {
98
99
PRIMITIVE_WRAPPER_TYPE_MAP .put (Long .class , long .class );
99
100
PRIMITIVE_WRAPPER_TYPE_MAP .put (Short .class , short .class );
100
101
102
+ ClassLoader defaultClassLoader = org .springframework .util .ClassUtils .getDefaultClassLoader ();
103
+
101
104
Class <?> genericSelectorClass = null ;
102
105
try {
103
106
genericSelectorClass =
104
107
org .springframework .util .ClassUtils .forName (
105
- "org.springframework.integration.core.GenericSelector" ,
106
- org .springframework .util .ClassUtils .getDefaultClassLoader ());
108
+ "org.springframework.integration.core.GenericSelector" , defaultClassLoader );
107
109
}
108
110
catch (ClassNotFoundException e ) {
109
111
ReflectionUtils .rethrowRuntimeException (e );
@@ -115,8 +117,7 @@ public abstract class ClassUtils {
115
117
try {
116
118
genericTransformerClass =
117
119
org .springframework .util .ClassUtils .forName (
118
- "org.springframework.integration.transformer.GenericTransformer" ,
119
- org .springframework .util .ClassUtils .getDefaultClassLoader ());
120
+ "org.springframework.integration.transformer.GenericTransformer" , defaultClassLoader );
120
121
}
121
122
catch (ClassNotFoundException e ) {
122
123
ReflectionUtils .rethrowRuntimeException (e );
@@ -129,54 +130,59 @@ public abstract class ClassUtils {
129
130
try {
130
131
genericHandlerClass =
131
132
org .springframework .util .ClassUtils .forName (
132
- "org.springframework.integration.handler.GenericHandler" ,
133
- org .springframework .util .ClassUtils .getDefaultClassLoader ());
133
+ "org.springframework.integration.handler.GenericHandler" , defaultClassLoader );
134
134
}
135
135
catch (ClassNotFoundException e ) {
136
136
ReflectionUtils .rethrowRuntimeException (e );
137
137
}
138
138
139
139
HANDLER_HANDLE_METHOD = ReflectionUtils .findMethod (genericHandlerClass , "handle" , (Class <?>[]) null );
140
140
141
- Class <?> kotlinClass = null ;
142
- Method kotlinMethod = null ;
143
- try {
144
- kotlinClass = org .springframework .util .ClassUtils .forName ("kotlin.jvm.functions.Function0" ,
145
- org .springframework .util .ClassUtils .getDefaultClassLoader ());
141
+ if (KotlinDetector .isKotlinPresent ()) {
142
+ Class <?> kotlinClass = null ;
143
+ Method kotlinMethod = null ;
144
+ try {
145
+ kotlinClass = org .springframework .util .ClassUtils .forName ("kotlin.jvm.functions.Function0" ,
146
+ defaultClassLoader );
146
147
147
- kotlinMethod = ReflectionUtils .findMethod (kotlinClass , "invoke" , (Class <?>[]) null );
148
- }
149
- catch (ClassNotFoundException e ) {
150
- //Ignore: assume no Kotlin in classpath
151
- }
152
- finally {
153
- KOTLIN_FUNCTION_0_CLASS = kotlinClass ;
154
- KOTLIN_FUNCTION_0_INVOKE_METHOD = kotlinMethod ;
155
- }
148
+ kotlinMethod = ReflectionUtils .findMethod (kotlinClass , "invoke" , (Class <?>[]) null );
149
+ }
150
+ catch (ClassNotFoundException e ) {
151
+ //Ignore: assume no Kotlin in classpath
152
+ }
153
+ finally {
154
+ KOTLIN_FUNCTION_0_CLASS = kotlinClass ;
155
+ KOTLIN_FUNCTION_0_INVOKE_METHOD = kotlinMethod ;
156
+ }
156
157
157
- kotlinClass = null ;
158
- kotlinMethod = null ;
159
- try {
160
- kotlinClass = org .springframework .util .ClassUtils .forName ("kotlin.jvm.functions.Function1" ,
161
- org .springframework .util .ClassUtils .getDefaultClassLoader ());
162
- }
163
- catch (ClassNotFoundException e ) {
164
- //Ignore: assume no Kotlin in classpath
165
- }
166
- finally {
167
- KOTLIN_FUNCTION_1_CLASS = kotlinClass ;
168
- }
158
+ kotlinClass = null ;
159
+ try {
160
+ kotlinClass = org .springframework .util .ClassUtils .forName ("kotlin.jvm.functions.Function1" ,
161
+ defaultClassLoader );
162
+ }
163
+ catch (ClassNotFoundException e ) {
164
+ //Ignore: assume no Kotlin in classpath
165
+ }
166
+ finally {
167
+ KOTLIN_FUNCTION_1_CLASS = kotlinClass ;
168
+ }
169
169
170
- kotlinClass = null ;
171
- try {
172
- kotlinClass = org .springframework .util .ClassUtils .forName ("kotlin.Unit" ,
173
- org .springframework .util .ClassUtils .getDefaultClassLoader ());
174
- }
175
- catch (ClassNotFoundException e ) {
176
- //Ignore: assume no Kotlin in classpath
170
+ kotlinClass = null ;
171
+ try {
172
+ kotlinClass = org .springframework .util .ClassUtils .forName ("kotlin.Unit" , defaultClassLoader );
173
+ }
174
+ catch (ClassNotFoundException e ) {
175
+ //Ignore: assume no Kotlin in classpath
176
+ }
177
+ finally {
178
+ KOTLIN_UNIT_CLASS = kotlinClass ;
179
+ }
177
180
}
178
- finally {
179
- KOTLIN_UNIT_CLASS = kotlinClass ;
181
+ else {
182
+ KOTLIN_FUNCTION_0_CLASS = null ;
183
+ KOTLIN_FUNCTION_0_INVOKE_METHOD = null ;
184
+ KOTLIN_FUNCTION_1_CLASS = null ;
185
+ KOTLIN_UNIT_CLASS = null ;
180
186
}
181
187
}
182
188
@@ -245,18 +251,6 @@ public static boolean isLambda(Class<?> aClass) {
245
251
|| aClass .getName ().contains ("$inlined$" ); // for Kotlin lambdas
246
252
}
247
253
248
- /**
249
- * Check if class is {@code kotlin.jvm.functions.Function0}.
250
- * @param aClass the {@link Class} to check.
251
- * @return true if class is a {@code kotlin.jvm.functions.Function0} implementation.
252
- * @since 5.2
253
- * @deprecated since 5.5.14 in favor of {@link #isKotlinFunction0(Class)}
254
- */
255
- @ Deprecated
256
- public static boolean isKotlinFaction0 (Class <?> aClass ) {
257
- return KOTLIN_FUNCTION_0_CLASS != null && KOTLIN_FUNCTION_0_CLASS .isAssignableFrom (aClass );
258
- }
259
-
260
254
/**
261
255
* Check if class is {@code kotlin.jvm.functions.Function0}.
262
256
* @param aClass the {@link Class} to check.
@@ -267,18 +261,6 @@ public static boolean isKotlinFunction0(Class<?> aClass) {
267
261
return KOTLIN_FUNCTION_0_CLASS != null && KOTLIN_FUNCTION_0_CLASS .isAssignableFrom (aClass );
268
262
}
269
263
270
- /**
271
- * Check if class is {@code kotlin.jvm.functions.Function1}.
272
- * @param aClass the {@link Class} to check.
273
- * @return true if class is a {@code kotlin.jvm.functions.Function1} implementation.
274
- * @since 5.2
275
- * @deprecated since 5.5.14 in favor of {@link #isKotlinFunction1(Class)}
276
- */
277
- @ Deprecated
278
- public static boolean isKotlinFaction1 (Class <?> aClass ) {
279
- return KOTLIN_FUNCTION_1_CLASS != null && KOTLIN_FUNCTION_1_CLASS .isAssignableFrom (aClass );
280
- }
281
-
282
264
/**
283
265
* Check if class is {@code kotlin.jvm.functions.Function1}.
284
266
* @param aClass the {@link Class} to check.
@@ -289,7 +271,6 @@ public static boolean isKotlinFunction1(Class<?> aClass) {
289
271
return KOTLIN_FUNCTION_1_CLASS != null && KOTLIN_FUNCTION_1_CLASS .isAssignableFrom (aClass );
290
272
}
291
273
292
-
293
274
/**
294
275
* Check if class is {@code kotlin.Unit}.
295
276
* @param aClass the {@link Class} to check.
0 commit comments