Skip to content

Commit e8715a5

Browse files
committed
Minor refactoring, to move resolver out (no need to be inner class); remove unneeded annotations
1 parent 070ab62 commit e8715a5

File tree

2 files changed

+85
-92
lines changed

2 files changed

+85
-92
lines changed

src/main/java/com/fasterxml/jackson/module/jsonSchema/JsonSchema.java

Lines changed: 5 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,12 @@
11
package com.fasterxml.jackson.module.jsonSchema;
22

3-
import com.fasterxml.jackson.annotation.JsonGetter;
4-
import com.fasterxml.jackson.annotation.JsonIgnore;
5-
import com.fasterxml.jackson.annotation.JsonInclude;
6-
import com.fasterxml.jackson.annotation.JsonInclude.Include;
7-
import com.fasterxml.jackson.annotation.JsonProperty;
8-
import com.fasterxml.jackson.annotation.JsonSetter;
9-
import com.fasterxml.jackson.annotation.JsonTypeInfo;
3+
import com.fasterxml.jackson.annotation.*;
104
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
115
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
126
import com.fasterxml.jackson.databind.BeanProperty;
13-
import com.fasterxml.jackson.databind.JavaType;
147
import com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver;
158
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatTypes;
16-
import com.fasterxml.jackson.databind.jsontype.TypeIdResolver;
17-
import com.fasterxml.jackson.databind.type.TypeFactory;
18-
import com.fasterxml.jackson.module.jsonSchema.types.AnySchema;
19-
import com.fasterxml.jackson.module.jsonSchema.types.ArraySchema;
20-
import com.fasterxml.jackson.module.jsonSchema.types.BooleanSchema;
21-
import com.fasterxml.jackson.module.jsonSchema.types.ContainerTypeSchema;
22-
import com.fasterxml.jackson.module.jsonSchema.types.IntegerSchema;
23-
import com.fasterxml.jackson.module.jsonSchema.types.NullSchema;
24-
import com.fasterxml.jackson.module.jsonSchema.types.NumberSchema;
25-
import com.fasterxml.jackson.module.jsonSchema.types.ObjectSchema;
26-
import com.fasterxml.jackson.module.jsonSchema.types.SimpleTypeSchema;
27-
import com.fasterxml.jackson.module.jsonSchema.types.StringSchema;
28-
import com.fasterxml.jackson.module.jsonSchema.types.UnionTypeSchema;
29-
import com.fasterxml.jackson.module.jsonSchema.types.ValueTypeSchema;
9+
import com.fasterxml.jackson.module.jsonSchema.types.*;
3010

3111
/**
3212
* The type wraps the json schema specification at :
@@ -88,9 +68,9 @@
8868
*
8969
* @author jphelan
9070
*/
91-
@JsonInclude(Include.NON_EMPTY)
71+
@JsonInclude(JsonInclude.Include.NON_EMPTY)
9272
@JsonTypeInfo(use = Id.CUSTOM, include = As.PROPERTY, property = "type")
93-
@JsonTypeIdResolver(JsonSchema.JsonSchemaIdResolver.class)
73+
@JsonTypeIdResolver(JsonSchemaIdResolver.class)
9474
public abstract class JsonSchema {
9575

9676
/**
@@ -146,8 +126,8 @@ public abstract class JsonSchema {
146126
* "properties":{"deprecated":{"type": "boolean"}},
147127
* "extends":"http://json-schema.org/draft-03/schema" }
148128
*/
149-
@JsonIgnore
150129
private JsonSchema[] extendsextends;
130+
151131
/**
152132
* This attribute defines the current URI of this schema (this attribute is
153133
* effectively a "self" link). This URI MAY be relative or absolute. If the
@@ -299,7 +279,6 @@ public JsonSchema[] getDisallow() {
299279
return disallow;
300280
}
301281

302-
@JsonGetter("extends")
303282
public JsonSchema[] getExtends() {
304283
return extendsextends;
305284
}
@@ -449,7 +428,6 @@ public void setDisallow(JsonSchema[] disallow) {
449428
this.disallow = disallow;
450429
}
451430

452-
@JsonSetter("extends")
453431
public void setExtends(JsonSchema[] extendsextends) {
454432
this.extendsextends = extendsextends;
455433
}
@@ -497,69 +475,4 @@ public static JsonSchema minimalForFormat(JsonFormatTypes format) {
497475
return new AnySchema();
498476
}
499477
}
500-
501-
public static class JsonSchemaIdResolver implements TypeIdResolver
502-
{
503-
/* This is Wrong: should not use defaultInstance() for anything.
504-
* But has to work for now...
505-
*/
506-
private static JavaType any = TypeFactory.defaultInstance().constructType(AnySchema.class);
507-
private static JavaType array = TypeFactory.defaultInstance().constructType(ArraySchema.class);
508-
private static JavaType booleanboolean = TypeFactory.defaultInstance().constructType(BooleanSchema.class);
509-
private static JavaType integer = TypeFactory.defaultInstance().constructType(IntegerSchema.class);
510-
private static JavaType nullnull = TypeFactory.defaultInstance().constructType(NullSchema.class);
511-
private static JavaType number = TypeFactory.defaultInstance().constructType(NumberSchema.class);
512-
private static JavaType object = TypeFactory.defaultInstance().constructType(ObjectSchema.class);
513-
private static JavaType string = TypeFactory.defaultInstance().constructType(StringSchema.class);
514-
515-
public JsonSchemaIdResolver() { }
516-
517-
/* (non-Javadoc)
518-
* @see com.fasterxml.jackson.databind.jsontype.TypeIdResolver#idFromValue(java.lang.Object)
519-
*/
520-
@Override
521-
public String idFromValue(Object value) {
522-
if ( value instanceof JsonSchema) {
523-
return ((JsonSchema)value).getType().value();
524-
}
525-
return null;
526-
}
527-
528-
/* (non-Javadoc)
529-
* @see com.fasterxml.jackson.databind.jsontype.TypeIdResolver#idFromValueAndType(java.lang.Object, java.lang.Class)
530-
*/
531-
@Override
532-
public String idFromValueAndType(Object value, Class<?> suggestedType) {
533-
return idFromValue(value);
534-
}
535-
536-
@Override
537-
public JavaType typeFromId(String id) {
538-
switch (JsonFormatTypes.forValue(id)) {
539-
case ANY: return any;
540-
case ARRAY: return array;
541-
case BOOLEAN: return booleanboolean;
542-
case INTEGER: return integer;
543-
case NULL: return nullnull;
544-
case NUMBER: return number;
545-
case OBJECT: return object;
546-
case STRING: return string;
547-
default:
548-
return null;
549-
}
550-
}
551-
552-
@Override
553-
public Id getMechanism() {
554-
return Id.CUSTOM;
555-
}
556-
557-
@Override
558-
public void init(JavaType baseType) { }
559-
560-
@Override
561-
public String idFromBaseType() {
562-
return null;
563-
}
564-
}
565478
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package com.fasterxml.jackson.module.jsonSchema;
2+
3+
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
4+
import com.fasterxml.jackson.databind.JavaType;
5+
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatTypes;
6+
import com.fasterxml.jackson.databind.jsontype.TypeIdResolver;
7+
import com.fasterxml.jackson.databind.type.TypeFactory;
8+
import com.fasterxml.jackson.module.jsonSchema.types.AnySchema;
9+
import com.fasterxml.jackson.module.jsonSchema.types.ArraySchema;
10+
import com.fasterxml.jackson.module.jsonSchema.types.BooleanSchema;
11+
import com.fasterxml.jackson.module.jsonSchema.types.IntegerSchema;
12+
import com.fasterxml.jackson.module.jsonSchema.types.NullSchema;
13+
import com.fasterxml.jackson.module.jsonSchema.types.NumberSchema;
14+
import com.fasterxml.jackson.module.jsonSchema.types.ObjectSchema;
15+
import com.fasterxml.jackson.module.jsonSchema.types.StringSchema;
16+
17+
public class JsonSchemaIdResolver implements TypeIdResolver
18+
{
19+
/* This is Wrong: should not use defaultInstance() for anything.
20+
* But has to work for now...
21+
*/
22+
private static JavaType any = TypeFactory.defaultInstance().constructType(AnySchema.class);
23+
private static JavaType array = TypeFactory.defaultInstance().constructType(ArraySchema.class);
24+
private static JavaType booleanboolean = TypeFactory.defaultInstance().constructType(BooleanSchema.class);
25+
private static JavaType integer = TypeFactory.defaultInstance().constructType(IntegerSchema.class);
26+
private static JavaType nullnull = TypeFactory.defaultInstance().constructType(NullSchema.class);
27+
private static JavaType number = TypeFactory.defaultInstance().constructType(NumberSchema.class);
28+
private static JavaType object = TypeFactory.defaultInstance().constructType(ObjectSchema.class);
29+
private static JavaType string = TypeFactory.defaultInstance().constructType(StringSchema.class);
30+
31+
public JsonSchemaIdResolver() { }
32+
33+
/* (non-Javadoc)
34+
* @see com.fasterxml.jackson.databind.jsontype.TypeIdResolver#idFromValue(java.lang.Object)
35+
*/
36+
@Override
37+
public String idFromValue(Object value) {
38+
if ( value instanceof JsonSchema) {
39+
return ((JsonSchema)value).getType().value();
40+
}
41+
return null;
42+
}
43+
44+
/* (non-Javadoc)
45+
* @see com.fasterxml.jackson.databind.jsontype.TypeIdResolver#idFromValueAndType(java.lang.Object, java.lang.Class)
46+
*/
47+
@Override
48+
public String idFromValueAndType(Object value, Class<?> suggestedType) {
49+
return idFromValue(value);
50+
}
51+
52+
@Override
53+
public JavaType typeFromId(String id) {
54+
switch (JsonFormatTypes.forValue(id)) {
55+
case ANY: return any;
56+
case ARRAY: return array;
57+
case BOOLEAN: return booleanboolean;
58+
case INTEGER: return integer;
59+
case NULL: return nullnull;
60+
case NUMBER: return number;
61+
case OBJECT: return object;
62+
case STRING: return string;
63+
default:
64+
return null;
65+
}
66+
}
67+
68+
@Override
69+
public Id getMechanism() {
70+
return Id.CUSTOM;
71+
}
72+
73+
@Override
74+
public void init(JavaType baseType) { }
75+
76+
@Override
77+
public String idFromBaseType() {
78+
return null;
79+
}
80+
}

0 commit comments

Comments
 (0)