Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit be89709

Browse files
committed
Merge branch 'cbornet-jsr310_support'
2 parents a723cfe + 74066e5 commit be89709

11 files changed

Lines changed: 105 additions & 1441 deletions

File tree

springfox-schema/src/test/groovy/springfox/documentation/schema/alternates/AlternatePropertiesSpec.groovy

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,12 @@
2020
package springfox.documentation.schema.alternates
2121

2222
import com.google.common.collect.ImmutableSet
23-
import org.joda.time.LocalDate
2423
import org.springframework.http.ResponseEntity
2524
import spock.lang.Specification
2625
import springfox.documentation.schema.*
2726
import springfox.documentation.schema.mixins.ModelProviderSupport
2827
import springfox.documentation.schema.mixins.TypesForTestingSupport
2928

30-
import static springfox.documentation.schema.AlternateTypeRules.*
3129
import static springfox.documentation.spi.DocumentationType.*
3230
import static springfox.documentation.spi.schema.contexts.ModelContext.*
3331

@@ -37,7 +35,6 @@ class AlternatePropertiesSpec extends Specification {
3735
def "Nested properties that have alternate types defined are rendered correctly" () {
3836
given:
3937
def provider = alternateTypeProvider()
40-
provider.addRule(newRule(LocalDate, String))
4138
ModelProvider modelProvider = defaultModelProvider()
4239
Model model = modelProvider.modelFor(inputParam(
4340
typeWithAlternateProperty(),
@@ -49,10 +46,10 @@ class AlternatePropertiesSpec extends Specification {
4946
model.getName() == "TypeWithAlternateProperty"
5047
model.getProperties().containsKey("localDate")
5148
def modelProperty = model.getProperties().get("localDate")
52-
modelProperty.type.erasedType == String
53-
modelProperty.getQualifiedType() == "java.lang.String"
49+
modelProperty.type.erasedType == java.sql.Date
50+
modelProperty.getQualifiedType() == "java.sql.Date"
5451
def item = modelProperty.getModelRef()
55-
item.type == "string"
52+
item.type == "date"
5653
!item.collection
5754
item.itemType == null
5855
}

springfox-spi/src/main/java/springfox/documentation/spi/service/contexts/Defaults.java

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -115,20 +115,41 @@ public List<AlternateTypeRule> defaultRules(TypeResolver typeResolver) {
115115
rules.add(newRule(typeResolver.resolve(HttpEntity.class, WildcardType.class),
116116
typeResolver.resolve(WildcardType.class)));
117117
rules.add(newRule(typeResolver.resolve(Optional.class, WildcardType.class), WildcardType.class));
118-
maybeAddJdk8Optional(typeResolver, rules);
118+
119+
maybeAddRuleForClassName(typeResolver, rules, "java.util.Optional", WildcardType.class);
120+
121+
maybeAddRuleForClassName(typeResolver, rules, "java.time.LocalDate", java.sql.Date.class);
122+
maybeAddRuleForClassName(typeResolver, rules, "java.time.LocalDateTime", java.util.Date.class);
123+
maybeAddRuleForClassName(typeResolver, rules, "java.time.Instant", java.util.Date.class);
124+
maybeAddRuleForClassName(typeResolver, rules, "java.time.OffsetDateTime", java.util.Date.class);
125+
maybeAddRuleForClassName(typeResolver, rules, "java.time.ZonedDateTime", java.util.Date.class);
126+
127+
maybeAddRuleForClassName(typeResolver, rules, "org.threeten.bp.LocalDate", java.sql.Date.class);
128+
maybeAddRuleForClassName(typeResolver, rules, "org.threeten.bp.LocalDateTime", java.util.Date.class);
129+
maybeAddRuleForClassName(typeResolver, rules, "org.threeten.bp.Instant", java.util.Date.class);
130+
maybeAddRuleForClassName(typeResolver, rules, "org.threeten.bp.OffsetDateTime", java.util.Date.class);
131+
maybeAddRuleForClassName(typeResolver, rules, "org.threeten.bp.ZonedDateTime", java.util.Date.class);
132+
133+
maybeAddRuleForClassName(typeResolver, rules, "org.joda.time.LocalDate", java.sql.Date.class);
134+
maybeAddRuleForClassName(typeResolver, rules, "org.joda.time.LocalDateTime", java.util.Date.class);
135+
maybeAddRuleForClassName(typeResolver, rules, "org.joda.time.Instant", java.util.Date.class);
136+
maybeAddRuleForClassName(typeResolver, rules, "org.joda.time.DateTime", java.util.Date.class);
137+
maybeAddRuleForClassName(typeResolver, rules, "org.joda.time.ReadableDateTime", java.util.Date.class);
138+
maybeAddRuleForClassName(typeResolver, rules, "org.joda.time.ReadableInstant", java.util.Date.class);
139+
maybeAddRuleForClassName(typeResolver, rules, "org.joda.time.DateMidnight", java.util.Date.class);
140+
119141
return rules;
120142
}
121143

122-
void maybeAddJdk8Optional(TypeResolver typeResolver, List<AlternateTypeRule> rules) {
123-
Optional<? extends Class> optionClazz = ClassSupport.classByName("java.util.Optional");
124-
if (optionClazz.isPresent()) {
144+
void maybeAddRuleForClassName(TypeResolver typeResolver, List<AlternateTypeRule> rules, String className, Class clazz ) {
145+
Optional<? extends Class> fromClazz = ClassSupport.classByName(className);
146+
if (fromClazz.isPresent()) {
125147
rules.add(newRule(
126-
typeResolver.resolve(optionClazz.get(), WildcardType.class),
127-
WildcardType.class));
148+
typeResolver.resolve(fromClazz.get()),
149+
typeResolver.resolve(clazz)));
128150
}
129151
}
130152

131-
132153
private void init() {
133154
initIgnorableTypes();
134155
initResponseMessages();

springfox-spring-web/src/test/groovy/springfox/documentation/spring/web/plugins/DocketSpec.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ class DocketSpec extends DocumentationContextSpec {
151151
def "Model substitution registers new rules"() {
152152
when:
153153
def isjdk8 = System.getProperty("java.version").startsWith("1.8")
154-
def jdk8RuleCount = (isjdk8 ? 1 : 0)
154+
def jdk8RuleCount = (isjdk8 ? 6 : 0)
155155
new Docket(DocumentationType.SWAGGER_12)
156156
."${method}"(*args)
157157
.configure(contextBuilder)
@@ -160,8 +160,8 @@ class DocketSpec extends DocumentationContextSpec {
160160

161161
where:
162162
method | args | expectedSize
163-
'genericModelSubstitutes' | [ResponseEntity.class, List.class] | 8
164-
'directModelSubstitute' | [LocalDate.class, Date.class] | 7
163+
'genericModelSubstitutes' | [ResponseEntity.class, List.class] | 15
164+
'directModelSubstitute' | [LocalDate.class, Date.class] | 14
165165
}
166166

167167

springfox-swagger1/src/test/groovy/springfox/documentation/swagger1/integration/DocketSpec.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ class DocketSpec extends DocumentationContextSpec {
143143
def swaggerDefault = new SwaggerDefaultConfiguration(new Defaults(), new TypeResolver(), Mock(ServletContext))
144144
.create(DocumentationType.SWAGGER_12)
145145
def isjdk8 = System.getProperty("java.version").startsWith("1.8")
146-
def jdk8RuleCount = (isjdk8 ? 1 : 0)
146+
def jdk8RuleCount = (isjdk8 ? 6 : 0)
147147
and:
148148
new Docket(DocumentationType.SWAGGER_12)
149149
."${method}"(*args)
@@ -153,8 +153,8 @@ class DocketSpec extends DocumentationContextSpec {
153153

154154
where:
155155
method | args | expectedSize
156-
'genericModelSubstitutes' | [ResponseEntity.class, List.class] | 10
157-
'directModelSubstitute' | [LocalDate.class, Date.class] | 9
156+
'genericModelSubstitutes' | [ResponseEntity.class, List.class] | 17
157+
'directModelSubstitute' | [LocalDate.class, Date.class] | 16
158158
}
159159

160160
def "Basic property checks"() {

swagger-contract-tests/src/test/resources/contract/swagger/declaration-business-service.json

Lines changed: 2 additions & 211 deletions
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,8 @@
389389
},
390390
"inception": {
391391
"required": false,
392-
"type": "LocalDate"
392+
"format": "date",
393+
"type": "string"
393394
},
394395
"name": {
395396
"required": false,
@@ -405,216 +406,6 @@
405406
"type": "string"
406407
}
407408
}
408-
},
409-
"DurationFieldType": {
410-
"description": "",
411-
"id": "DurationFieldType",
412-
"properties": {
413-
"name": {
414-
"required": false,
415-
"type": "string"
416-
}
417-
}
418-
},
419-
"DateTimeFieldType": {
420-
"description": "",
421-
"id": "DateTimeFieldType",
422-
"properties": {
423-
"durationType": {
424-
"required": false,
425-
"type": "DurationFieldType"
426-
},
427-
"name": {
428-
"required": false,
429-
"type": "string"
430-
},
431-
"rangeDurationType": {
432-
"required": false,
433-
"type": "DurationFieldType"
434-
}
435-
}
436-
},
437-
"Chronology": {
438-
"description": "",
439-
"id": "Chronology",
440-
"properties": {
441-
"zone": {
442-
"required": false,
443-
"type": "DateTimeZone"
444-
}
445-
}
446-
},
447-
"DateTimeField": {
448-
"description": "",
449-
"id": "DateTimeField",
450-
"properties": {
451-
"durationField": {
452-
"required": false,
453-
"type": "DurationField"
454-
},
455-
"leapDurationField": {
456-
"required": false,
457-
"type": "DurationField"
458-
},
459-
"lenient": {
460-
"required": false,
461-
"type": "boolean"
462-
},
463-
"maximumValue": {
464-
"required": false,
465-
"format": "int32",
466-
"type": "integer"
467-
},
468-
"minimumValue": {
469-
"required": false,
470-
"format": "int32",
471-
"type": "integer"
472-
},
473-
"name": {
474-
"required": false,
475-
"type": "string"
476-
},
477-
"rangeDurationField": {
478-
"required": false,
479-
"type": "DurationField"
480-
},
481-
"supported": {
482-
"required": false,
483-
"type": "boolean"
484-
},
485-
"type": {
486-
"required": false,
487-
"type": "DateTimeFieldType"
488-
}
489-
}
490-
},
491-
"LocalDate": {
492-
"description": "",
493-
"id": "LocalDate",
494-
"properties": {
495-
"centuryOfEra": {
496-
"required": false,
497-
"format": "int32",
498-
"type": "integer"
499-
},
500-
"chronology": {
501-
"required": false,
502-
"type": "Chronology"
503-
},
504-
"dayOfMonth": {
505-
"required": false,
506-
"format": "int32",
507-
"type": "integer"
508-
},
509-
"dayOfWeek": {
510-
"required": false,
511-
"format": "int32",
512-
"type": "integer"
513-
},
514-
"dayOfYear": {
515-
"required": false,
516-
"format": "int32",
517-
"type": "integer"
518-
},
519-
"era": {
520-
"required": false,
521-
"format": "int32",
522-
"type": "integer"
523-
},
524-
"fieldTypes": {
525-
"required": false,
526-
"items": {
527-
"type": "DateTimeFieldType"
528-
},
529-
"type": "array"
530-
},
531-
"fields": {
532-
"required": false,
533-
"items": {
534-
"type": "DateTimeField"
535-
},
536-
"type": "array"
537-
},
538-
"monthOfYear": {
539-
"required": false,
540-
"format": "int32",
541-
"type": "integer"
542-
},
543-
"values": {
544-
"required": false,
545-
"items": {
546-
"format": "int32",
547-
"type": "integer"
548-
},
549-
"type": "array"
550-
},
551-
"weekOfWeekyear": {
552-
"required": false,
553-
"format": "int32",
554-
"type": "integer"
555-
},
556-
"weekyear": {
557-
"required": false,
558-
"format": "int32",
559-
"type": "integer"
560-
},
561-
"year": {
562-
"required": false,
563-
"format": "int32",
564-
"type": "integer"
565-
},
566-
"yearOfCentury": {
567-
"required": false,
568-
"format": "int32",
569-
"type": "integer"
570-
},
571-
"yearOfEra": {
572-
"required": false,
573-
"format": "int32",
574-
"type": "integer"
575-
}
576-
}
577-
},
578-
"DurationField": {
579-
"description": "",
580-
"id": "DurationField",
581-
"properties": {
582-
"name": {
583-
"required": false,
584-
"type": "string"
585-
},
586-
"precise": {
587-
"required": false,
588-
"type": "boolean"
589-
},
590-
"supported": {
591-
"required": false,
592-
"type": "boolean"
593-
},
594-
"type": {
595-
"required": false,
596-
"type": "DurationFieldType"
597-
},
598-
"unitMillis": {
599-
"required": false,
600-
"format": "int64",
601-
"type": "integer"
602-
}
603-
}
604-
},
605-
"DateTimeZone": {
606-
"description": "",
607-
"id": "DateTimeZone",
608-
"properties": {
609-
"fixed": {
610-
"required": false,
611-
"type": "boolean"
612-
},
613-
"id": {
614-
"required": false,
615-
"type": "string"
616-
}
617-
}
618409
}
619410
},
620411
"produces": [

0 commit comments

Comments
 (0)