1
1
package org.utbot.framework.plugin.api.util
2
2
3
+ import mu.KotlinLogging
3
4
import org.utbot.common.tryLoadClass
4
5
import org.utbot.common.withToStringThreadLocalReentrancyGuard
5
6
import org.utbot.framework.plugin.api.isNotNull
@@ -17,6 +18,8 @@ import org.utbot.framework.plugin.api.mapper.UtModelDeepMapper
17
18
import org.utbot.framework.plugin.api.mapper.mapModels
18
19
import java.util.Optional
19
20
21
+ private val logger = KotlinLogging .logger {}
22
+
20
23
object SpringModelUtils {
21
24
val autowiredClassId = ClassId (" org.springframework.beans.factory.annotation.Autowired" )
22
25
@@ -55,6 +58,10 @@ object SpringModelUtils {
55
58
private val persistentLibraries = listOf (" javax.persistence" , " jakarta.persistence" )
56
59
private fun persistentClassIds (simpleName : String ) = getClassIdFromEachAvailablePackage(persistentLibraries, simpleName)
57
60
61
+ // the library in which Cookie is stored depends on the version of Spring
62
+ private val cookiesLibraries = listOf (" javax.servlet.http" , " jakarta.servlet.http" )
63
+ private val cookieClassIds = getClassIdFromEachAvailablePackage(cookiesLibraries, " Cookie" )
64
+
58
65
val entityClassIds get() = persistentClassIds(" Entity" )
59
66
val generatedValueClassIds get() = persistentClassIds(" GeneratedValue" )
60
67
val idClassIds get() = persistentClassIds(" Id" )
@@ -171,7 +178,6 @@ object SpringModelUtils {
171
178
private val httpHeaderClassId = ClassId (" org.springframework.http.HttpHeaders" )
172
179
173
180
private val objectMapperClassId = ClassId (" com.fasterxml.jackson.databind.ObjectMapper" )
174
- private val cookieClassId = ClassId (" javax.servlet.http.Cookie" )
175
181
176
182
// as of Spring 6.0 `NestedServletException` is deprecated in favor of standard `ServletException` nesting
177
183
val nestedServletExceptionClassIds = listOf (
@@ -207,13 +213,12 @@ object SpringModelUtils {
207
213
parameters = listOf (httpHeaderClassId)
208
214
)
209
215
210
- // // TODO uncomment when #2542 is fixed
211
- // private val mockHttpServletCookieMethodId = MethodId(
212
- // classId = mockHttpServletRequestBuilderClassId,
213
- // name = "cookie",
214
- // returnType = mockHttpServletRequestBuilderClassId,
215
- // parameters = listOf(getArrayClassIdByElementClassId(cookieClassId))
216
- // )
216
+ private fun mockHttpServletCookieMethodId (cookieClassId : ClassId ) = MethodId (
217
+ classId = mockHttpServletRequestBuilderClassId,
218
+ name = " cookie" ,
219
+ returnType = mockHttpServletRequestBuilderClassId,
220
+ parameters = listOf (getArrayClassIdByElementClassId(cookieClassId))
221
+ )
217
222
218
223
private val mockHttpServletContentTypeMethodId = MethodId (
219
224
classId = mockHttpServletRequestBuilderClassId,
@@ -359,7 +364,7 @@ object SpringModelUtils {
359
364
pathVariableClassId,
360
365
requestParamClassId,
361
366
requestHeaderClassId,
362
- // cookieValueClassId, // TODO uncomment when #2542 is fixed
367
+ cookieValueClassId,
363
368
requestAttributesClassId,
364
369
sessionAttributesClassId,
365
370
modelAttributesClassId,
@@ -446,10 +451,11 @@ object SpringModelUtils {
446
451
val headersContentModel = createHeadersContentModel(methodId, arguments, idGenerator)
447
452
requestBuilderModel = addHeadersToRequestBuilderModel(headersContentModel, requestBuilderModel, idGenerator)
448
453
449
- // // TODO uncomment when #2542 is fixed
450
- // val cookieValuesModel = createCookieValuesModel(methodId, arguments, idGenerator)
451
- // requestBuilderModel =
452
- // addCookiesToRequestBuilderModel(cookieValuesModel, requestBuilderModel, idGenerator)
454
+ cookieClassIds.singleOrNull()?.let { cookieClassId ->
455
+ val cookieValuesModel = createCookieValuesModel(cookieClassId, methodId, arguments, idGenerator)
456
+ requestBuilderModel =
457
+ addCookiesToRequestBuilderModel(cookieClassId, cookieValuesModel, requestBuilderModel, idGenerator)
458
+ } ? : logger.warn { " Cookie library not found" }
453
459
454
460
val requestAttributes = collectArgumentsWithAnnotationModels(methodId, requestAttributesClassId, arguments)
455
461
requestBuilderModel =
@@ -526,29 +532,29 @@ object SpringModelUtils {
526
532
return requestBuilderModel
527
533
}
528
534
529
- // // TODO uncomment when #2542 is fixed
530
- // private fun addCookiesToRequestBuilderModel(
531
- // cookieValuesModel: UtArrayModel,
532
- // requestBuilderModel: UtAssembleModel,
533
- // idGenerator: () -> Int
534
- // ): UtAssembleModel {
535
- // @Suppress("NAME_SHADOWING")
536
- // var requestBuilderModel = requestBuilderModel
537
- //
538
- // if(cookieValuesModel.length > 0) {
539
- // requestBuilderModel = UtAssembleModel(
540
- // id = idGenerator(),
541
- // classId = mockHttpServletRequestBuilderClassId,
542
- // modelName = "requestBuilder",
543
- // instantiationCall = UtExecutableCallModel(
544
- // instance = requestBuilderModel,
545
- // executable = mockHttpServletCookieMethodId,
546
- // params = listOf(cookieValuesModel)
547
- // )
548
- // )
549
- // }
550
- // return requestBuilderModel
551
- // }
535
+ private fun addCookiesToRequestBuilderModel (
536
+ cookieClassId : ClassId ,
537
+ cookieValuesModel : UtArrayModel ,
538
+ requestBuilderModel : UtAssembleModel ,
539
+ idGenerator : () -> Int
540
+ ): UtAssembleModel {
541
+ @Suppress(" NAME_SHADOWING" )
542
+ var requestBuilderModel = requestBuilderModel
543
+
544
+ if (cookieValuesModel.length > 0 ) {
545
+ requestBuilderModel = UtAssembleModel (
546
+ id = idGenerator(),
547
+ classId = mockHttpServletRequestBuilderClassId,
548
+ modelName = " requestBuilder" ,
549
+ instantiationCall = UtExecutableCallModel (
550
+ instance = requestBuilderModel,
551
+ executable = mockHttpServletCookieMethodId(cookieClassId) ,
552
+ params = listOf (cookieValuesModel)
553
+ )
554
+ )
555
+ }
556
+ return requestBuilderModel
557
+ }
552
558
553
559
private fun addHeadersToRequestBuilderModel (
554
560
headersContentModel : UtAssembleModel ,
@@ -676,6 +682,7 @@ object SpringModelUtils {
676
682
}
677
683
678
684
private fun createCookieValuesModel (
685
+ cookieClassId : ClassId ,
679
686
methodId : MethodId ,
680
687
arguments : List <UtModel >,
681
688
idGenerator : () -> Int ,
0 commit comments