Skip to content

Commit 0ccf245

Browse files
committed
Merge branch '2.8'
2 parents b3b4887 + cf7d5ea commit 0ccf245

File tree

12 files changed

+217
-165
lines changed

12 files changed

+217
-165
lines changed

avro/src/main/java/com/fasterxml/jackson/dataformat/avro/schema/RecordVisitor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public RecordVisitor(SerializerProvider p, JavaType type, DefinedSchemas schemas
5454
List<Schema> unionSchemas = new ArrayList<>();
5555
try {
5656
for (NamedType subType : subTypes) {
57-
JsonSerializer ser = getProvider().findValueSerializer(subType.getType());
57+
JsonSerializer<?> ser = getProvider().findValueSerializer(subType.getType());
5858
VisitorFormatWrapperImpl visitor = new VisitorFormatWrapperImpl(_schemas, getProvider());
5959
ser.acceptJsonFormatVisitor(visitor, getProvider().getTypeFactory().constructType(subType.getType()));
6060
unionSchemas.add(visitor.getAvroSchema());

avro/src/test/java/com/fasterxml/jackson/dataformat/avro/interop/annotations/AvroMetaTest.java

+11-18
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.fasterxml.jackson.annotation.JsonProperty;
44
import com.fasterxml.jackson.dataformat.avro.interop.InteropTestBase;
55

6-
import lombok.Data;
76
import org.apache.avro.AvroRuntimeException;
87
import org.apache.avro.Schema;
98
import org.apache.avro.reflect.AvroMeta;
@@ -12,66 +11,60 @@
1211

1312
import static org.assertj.core.api.Assertions.assertThat;
1413

15-
import java.io.IOException;
16-
17-
public class AvroMetaTest extends InteropTestBase {
18-
19-
@Data
14+
public class AvroMetaTest extends InteropTestBase
15+
{
2016
@AvroMeta(key = "class-meta", value = "class value")
2117
static class MetaTest {
2218

2319
@AvroMeta(key = "custom Property", value = "Some Value")
24-
private String someProperty;
20+
public String someProperty;
2521

2622
@AvroMeta(key = "required custom Property", value = "Some required Value")
2723
@JsonProperty(required = true)
28-
private String someRequiredProperty;
24+
public String someRequiredProperty;
2925
}
3026

31-
@Data
3227
static class BadMetaTest {
33-
3428
@AvroMeta(key = "name", value = "colliding property")
35-
private String types;
29+
public String types;
3630
}
3731

38-
@Data
3932
@AvroSchema("{\"type\":\"string\"}")
4033
@AvroMeta(key="overridden", value = "true")
4134
static class OverriddenClassSchema {
42-
int field;
35+
public int field;
4336
}
4437

4538
@Test
46-
public void testAnnotationPrecedence() throws IOException {
39+
public void testAnnotationPrecedence() throws Exception {
4740
Schema schema = schemaFunctor.apply(OverriddenClassSchema.class);
4841
//
4942
assertThat(schema.getProp("overridden")).isNull();
5043
}
5144

5245
@Test
53-
public void testOptionalFieldMetaProperty() throws IOException {
46+
public void testOptionalFieldMetaProperty() throws Exception {
5447
Schema schema = schemaFunctor.apply(MetaTest.class);
5548
//
5649
assertThat(schema.getField("someProperty").getProp("custom Property")).isEqualTo("Some Value");
5750
}
5851

5952
@Test
60-
public void testRequiredFieldMetaProperty() throws IOException {
53+
public void testRequiredFieldMetaProperty() throws Exception {
6154
Schema schema = schemaFunctor.apply(MetaTest.class);
6255
//
6356
assertThat(schema.getField("someRequiredProperty").getProp("required custom Property")).isEqualTo("Some required Value");
6457
}
6558

6659
@Test
67-
public void testClassMetaProperty() throws IOException {
60+
public void testClassMetaProperty() throws Exception {
6861
Schema schema = schemaFunctor.apply(MetaTest.class);
6962
//
7063
assertThat(schema.getProp("class-meta")).isEqualTo("class value");
7164
}
7265

7366
@Test(expected = AvroRuntimeException.class)
74-
public void testCollidingMeta() throws IOException {
67+
public void testCollidingMeta() throws Exception {
7568
schemaFunctor.apply(BadMetaTest.class);
7669
}
7770
}

protobuf/src/main/java/com/fasterxml/jackson/dataformat/protobuf/schemagen/DefaultTagGenerator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public DefaultTagGenerator(int startingTag) {
1616

1717
@Override
1818
public int nextTag(BeanProperty writer) {
19-
if (ProtobuffSchemaHelper.hasIndex(writer)) {
19+
if (ProtobufSchemaHelper.hasIndex(writer)) {
2020
throw new IllegalStateException(writer.getFullName()
2121
+ " is annotated with 'JsonProperty.index', however not all properties of type "
2222
+ writer.getWrapperName().getSimpleName()

protobuf/src/main/java/com/fasterxml/jackson/dataformat/protobuf/schemagen/DefinedTypeElementBuilders.java

+54-56
Original file line numberDiff line numberDiff line change
@@ -8,72 +8,70 @@
88

99
import com.fasterxml.jackson.databind.JavaType;
1010

11-
public class DefinedTypeElementBuilders {
11+
public class DefinedTypeElementBuilders
12+
{
13+
protected Map<JavaType, TypeElementBuilder> _definedTypeElementBuilders = new LinkedHashMap<>();
1214

13-
protected Map<JavaType, TypeElementBuilder> _definedTypeElementBuilders = new LinkedHashMap<>();
15+
protected Set<JavaType> _isNestedType = new HashSet<JavaType>();
1416

15-
protected Set<JavaType> _isNestedType = new HashSet<>();
17+
public DefinedTypeElementBuilders() { }
1618

17-
public DefinedTypeElementBuilders() {
18-
}
19-
20-
public void AddTypeElement(JavaType type, TypeElementBuilder builder, boolean isNested) {
21-
if (_definedTypeElementBuilders.containsKey(type)) { //Type element builder already defined
22-
if (_definedTypeElementBuilders.get(type) != builder) { //Not expect this.
23-
throw new IllegalStateException("Trying to redefine TypeElementBuilder for type " + type);
24-
}
25-
} else { //new builder
26-
_definedTypeElementBuilders.put(type, builder);
27-
}
19+
public void addTypeElement(JavaType type, TypeElementBuilder builder, boolean isNested) {
20+
if (_definedTypeElementBuilders.containsKey(type)) { //Type element builder already defined
21+
if (_definedTypeElementBuilders.get(type) != builder) { //Not expect this.
22+
throw new IllegalStateException("Trying to redefine TypeElementBuilder for type " + type);
23+
}
24+
} else { //new builder
25+
_definedTypeElementBuilders.put(type, builder);
26+
}
2827

29-
if(isNested) {
30-
_isNestedType.add(type);
31-
}
32-
}
33-
34-
public boolean containsBuilderFor(JavaType type) {
35-
return _definedTypeElementBuilders.containsKey(type);
36-
}
28+
if (isNested) {
29+
_isNestedType.add(type);
30+
}
31+
}
32+
33+
public boolean containsBuilderFor(JavaType type) {
34+
return _definedTypeElementBuilders.containsKey(type);
35+
}
3736

38-
public TypeElementBuilder getBuilderFor(JavaType type) {
39-
return _definedTypeElementBuilders.get(type);
40-
}
37+
public TypeElementBuilder getBuilderFor(JavaType type) {
38+
return _definedTypeElementBuilders.get(type);
39+
}
4140

42-
public Set<TypeElementBuilder> getAllBuilders() {
43-
return new HashSet<TypeElementBuilder>(_definedTypeElementBuilders.values());
44-
}
41+
public Set<TypeElementBuilder> getAllBuilders() {
42+
return new HashSet<TypeElementBuilder>(_definedTypeElementBuilders.values());
43+
}
4544

46-
public Set<TypeElementBuilder> getAllNestedBuilders() {
47-
return getAllBuildersFor(_isNestedType);
48-
}
45+
public Set<TypeElementBuilder> getAllNestedBuilders() {
46+
return getAllBuildersFor(_isNestedType);
47+
}
4948

50-
public Set<TypeElementBuilder> getDependencyBuilders() {
51-
return getNonNestedBuilders(true);
52-
}
49+
public Set<TypeElementBuilder> getDependencyBuilders() {
50+
return getNonNestedBuilders(true);
51+
}
5352

54-
public Set<TypeElementBuilder> getNonNestedBuilders() {
55-
return getNonNestedBuilders(false);
56-
}
53+
public Set<TypeElementBuilder> getNonNestedBuilders() {
54+
return getNonNestedBuilders(false);
55+
}
5756

58-
public Set<TypeElementBuilder> getNonNestedBuilders(boolean excludeRoot) {
59-
Set<JavaType> types = _definedTypeElementBuilders.keySet(); //all keys
60-
types.removeAll(_isNestedType); //exclude nested type
57+
public Set<TypeElementBuilder> getNonNestedBuilders(boolean excludeRoot) {
58+
Set<JavaType> types = _definedTypeElementBuilders.keySet(); //all keys
59+
types.removeAll(_isNestedType); //exclude nested type
6160

62-
if(excludeRoot) { //exclude root
63-
if(_definedTypeElementBuilders.isEmpty()) {
64-
throw new IllegalStateException("DefinedTypeElementBuilders._definedTypeElementBuilders is empty");
65-
}
66-
types.remove(_definedTypeElementBuilders.keySet().iterator().next()); //expect the first element is root
67-
}
68-
69-
return getAllBuildersFor(types);
70-
}
61+
if(excludeRoot) { //exclude root
62+
if(_definedTypeElementBuilders.isEmpty()) {
63+
throw new IllegalStateException("DefinedTypeElementBuilders._definedTypeElementBuilders is empty");
64+
}
65+
types.remove(_definedTypeElementBuilders.keySet().iterator().next()); //expect the first element is root
66+
}
67+
return getAllBuildersFor(types);
68+
}
7169

72-
protected HashSet<TypeElementBuilder> getAllBuildersFor(Collection<JavaType> types) {
73-
HashSet<TypeElementBuilder> nestedBuilder = new HashSet<>();
74-
for (JavaType type : types) {
75-
nestedBuilder.add(getBuilderFor(type));
76-
}
77-
return nestedBuilder;
78-
}
70+
protected HashSet<TypeElementBuilder> getAllBuildersFor(Collection<JavaType> types) {
71+
HashSet<TypeElementBuilder> nestedBuilder = new HashSet<>();
72+
for (JavaType type : types) {
73+
nestedBuilder.add(getBuilderFor(type));
74+
}
75+
return nestedBuilder;
76+
}
7977
}

protobuf/src/main/java/com/fasterxml/jackson/dataformat/protobuf/schemagen/EnumElementVisitor.java

-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ public EnumElementVisitor(SerializerProvider provider, JavaType type,
2525
_builder = EnumElement.builder();
2626
_builder.name(type.getRawClass().getSimpleName());
2727
_builder.documentation("Enum for " + type.toCanonical());
28-
29-
definedTypeElementBuilders.AddTypeElement(type, this, isNested);
3028
}
3129

3230
@Override

protobuf/src/main/java/com/fasterxml/jackson/dataformat/protobuf/schemagen/MessageElementVisitor.java

+12-12
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ public MessageElementVisitor(SerializerProvider provider, JavaType type,
4242
_builder = MessageElement.builder();
4343
_builder.name(type.getRawClass().getSimpleName());
4444
_builder.documentation("Message for " + type.toCanonical());
45-
46-
_definedTypeElementBuilders.AddTypeElement(type, this, isNested);
4745
}
4846

4947
@Override
@@ -53,21 +51,23 @@ public TypeElement build() {
5351

5452
@Override
5553
public void property(BeanProperty writer) throws JsonMappingException {
56-
FieldElement fElement = buildFieldElement(writer, Label.REQUIRED);
57-
_builder.addField(fElement);
54+
_builder.addField(buildFieldElement(writer, Label.REQUIRED));
5855
}
5956

6057
@Override
61-
public void property(String name, JsonFormatVisitable handler, JavaType propertyTypeHint) { }
58+
public void property(String name, JsonFormatVisitable handler, JavaType propertyTypeHint) {
59+
throw new UnsupportedOperationException();
60+
}
6261

6362
@Override
6463
public void optionalProperty(BeanProperty writer) throws JsonMappingException {
65-
FieldElement fElement = buildFieldElement(writer, Label.OPTIONAL);
66-
_builder.addField(fElement);
64+
_builder.addField(buildFieldElement(writer, Label.OPTIONAL));
6765
}
6866

6967
@Override
70-
public void optionalProperty(String name, JsonFormatVisitable handler, JavaType propertyTypeHint) { }
68+
public void optionalProperty(String name, JsonFormatVisitable handler, JavaType propertyTypeHint) {
69+
throw new UnsupportedOperationException();
70+
}
7171

7272
protected FieldElement buildFieldElement(BeanProperty writer, Label label) throws JsonMappingException
7373
{
@@ -95,7 +95,7 @@ protected int nextTag(BeanProperty writer) {
9595

9696
protected void getTagGenerator(BeanProperty writer) {
9797
if (_tagGenerator == null) {
98-
if (ProtobuffSchemaHelper.hasIndex(writer)) {
98+
if (ProtobufSchemaHelper.hasIndex(writer)) {
9999
_tagGenerator = new AnnotationBasedTagGenerator();
100100
} else {
101101
_tagGenerator = new DefaultTagGenerator();
@@ -104,7 +104,7 @@ protected void getTagGenerator(BeanProperty writer) {
104104
}
105105

106106
protected DataType getDataType(JavaType type) throws JsonMappingException {
107-
ScalarType sType = ProtobuffSchemaHelper.getScalarType(type);
107+
ScalarType sType = ProtobufSchemaHelper.getScalarType(type);
108108
if (sType != null) { // Is scalar type ref
109109
return sType;
110110
}
@@ -113,13 +113,13 @@ protected DataType getDataType(JavaType type) throws JsonMappingException {
113113
if (Arrays.asList(_type.getRawClass().getDeclaredClasses()).contains(type.getRawClass())) { // nested
114114
if (!_nestedTypes.contains(type)) { // create nested type
115115
_nestedTypes.add(type);
116-
TypeElementBuilder nestedTypeBuilder = ProtobuffSchemaHelper.acceptTypeElement(_provider, type,
116+
TypeElementBuilder nestedTypeBuilder = ProtobufSchemaHelper.acceptTypeElement(_provider, type,
117117
_definedTypeElementBuilders, true);
118118

119119
_builder.addType(nestedTypeBuilder.build());
120120
}
121121
} else { // tracking non-nested types to generate them later
122-
ProtobuffSchemaHelper.acceptTypeElement(_provider, type, _definedTypeElementBuilders, false);
122+
ProtobufSchemaHelper.acceptTypeElement(_provider, type, _definedTypeElementBuilders, false);
123123
}
124124
}
125125
return NamedType.create(type.getRawClass().getSimpleName());

protobuf/src/main/java/com/fasterxml/jackson/dataformat/protobuf/schemagen/ProtoBufSchemaVisitor.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public JsonObjectFormatVisitor expectObjectFormat(JavaType type) {
7878
MessageElementVisitor visitor = new MessageElementVisitor(_provider, type, _definedTypeElementBuilders,
7979
_isNested);
8080
_builder = visitor;
81+
_definedTypeElementBuilders.addTypeElement(type, visitor, _isNested);
8182
return visitor;
8283
}
8384

@@ -99,6 +100,7 @@ public JsonStringFormatVisitor expectStringFormat(JavaType type) {
99100

100101
EnumElementVisitor visitor = new EnumElementVisitor(_provider, type, _definedTypeElementBuilders, _isNested);
101102
_builder = visitor;
103+
_definedTypeElementBuilders.addTypeElement(type, visitor, _isNested);
102104
return visitor;
103105
}
104106

@@ -140,5 +142,4 @@ protected <T> T _throwUnsupported() {
140142
protected <T> T _throwUnsupported(String msg) {
141143
throw new UnsupportedOperationException(msg);
142144
}
143-
144145
}

0 commit comments

Comments
 (0)