Skip to content

Commit f9b631c

Browse files
committed
Issue #67 WIP. Still getting double allOf.allOf generated.
1 parent 3343dd5 commit f9b631c

File tree

6 files changed

+28
-27
lines changed

6 files changed

+28
-27
lines changed

compiler/src/main/java/org/hisrc/jsonix/compilation/jsonschema/JsonSchemaMappingCompiler.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.jvnet.jaxb2_commons.xml.bind.model.MElementInfo;
1919
import org.jvnet.jaxb2_commons.xml.bind.model.MEnumLeafInfo;
2020
import org.jvnet.jaxb2_commons.xml.bind.model.MTypeInfo;
21+
import org.jvnet.jaxb2_commons.xml.bind.model.origin.MElementInfoOrigin;
2122
import org.jvnet.jaxb2_commons.xml.bind.model.origin.MOriginated;
2223

2324
public class JsonSchemaMappingCompiler<T, C extends T> {
@@ -86,7 +87,7 @@ private void addElementInfos(final JsonSchemaBuilder schema) {
8687
new JsonSchemaBuilder().addAllOf(qNameRef).addAllOf(nameConstant));
8788

8889
elementInfoSchema.addProperty(JsonixConstants.VALUE_PROPERTY_NAME,
89-
getTypeInfoProducer(elementInfo, typeInfo).createTypeInfoSchemaRef(this));
90+
typeInfo.acceptTypeInfoVisitor(new CreateTypeInfoSchema<T, C, MElementInfo<T, C>, MElementInfoOrigin>(this, elementInfo)));
9091

9192
elementInfoSchema.add(JsonixJsonSchemaConstants.ELEMENT_NAME_PROPERTY_NAME,
9293
new JsonSchemaBuilder()
@@ -119,11 +120,6 @@ private void addClassInfoSchemas(final JsonSchemaBuilder schema) {
119120
}
120121
}
121122

122-
public <M extends MOriginated<O>, O> JsonSchemaBuilder createTypeInfoSchemaRef(M originated,
123-
MTypeInfo<T, C> typeInfo) {
124-
return getTypeInfoProducer(originated, typeInfo).createTypeInfoSchemaRef(this);
125-
}
126-
127123
public <M extends MOriginated<O>, O> TypeInfoProducer<T, C> getTypeInfoProducer(M originated,
128124
MTypeInfo<T, C> typeInfo) {
129125
return typeInfo.acceptTypeInfoVisitor(new CreateTypeInfoProducer<T, C, O>(originated));

compiler/src/main/java/org/hisrc/jsonix/compilation/jsonschema/JsonSchemaPropertyInfoProducerVisitor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,6 @@ private JsonSchemaBuilder createPossiblyCollectionTypeSchema(MPropertyInfo<T, C>
305305
}
306306

307307
private <M extends MOriginated<O>, O> JsonSchemaBuilder createTypeSchema(M originated, MTypeInfo<T, C> typeInfo) {
308-
return mappingCompiler.getTypeInfoProducer(originated, typeInfo).createTypeInfoSchemaRef(mappingCompiler);
308+
return typeInfo.acceptTypeInfoVisitor(new CreateTypeInfoSchema<T, C, MOriginated<O>, O>(mappingCompiler, originated));
309309
}
310310
}

compiler/src/main/java/org/hisrc/jsonix/compilation/jsonschema/typeinfo/EnumLeafInfoProducer.java

+19-2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import org.jvnet.jaxb2_commons.xml.bind.model.MEnumLeafInfo;
1717
import org.jvnet.jaxb2_commons.xml.bind.model.MTypeInfo;
1818

19+
import com.sun.xml.xsom.XmlString;
20+
1921
public class EnumLeafInfoProducer<T, C extends T> extends PackagedTypeInfoProducer<T, C> {
2022

2123
private MEnumLeafInfo<T, C> enumLeafInfo;
@@ -36,8 +38,7 @@ public JsonSchemaBuilder compile(JsonSchemaMappingCompiler<T, C> mappingCompiler
3638
final JsonSchemaBuilder baseTypeInfoSchema = baseTypeInfoProducer.createTypeInfoSchemaRef(mappingCompiler);
3739
typeInfoSchema = new JsonSchemaBuilder();
3840
typeInfoSchema.addAllOf(baseTypeInfoSchema);
39-
40-
41+
4142
final JsonSchemaBuilder enumsTypeInfoSchema = new JsonSchemaBuilder();
4243

4344
boolean valuesSupported = true;
@@ -66,4 +67,20 @@ public JsonSchemaBuilder compile(JsonSchemaMappingCompiler<T, C> mappingCompiler
6667

6768
return typeInfoSchema;
6869
}
70+
71+
@Override
72+
public JsonValue createValue(JsonSchemaMappingCompiler<T, C> mappingCompiler, String item) {
73+
final MTypeInfo<T, C> baseTypeInfo = enumLeafInfo.getBaseTypeInfo();
74+
final TypeInfoProducer<T, C> baseTypeInfoProducer = mappingCompiler.getTypeInfoProducer(enumLeafInfo,
75+
baseTypeInfo);
76+
return baseTypeInfoProducer.createValue(mappingCompiler, item);
77+
}
78+
79+
@Override
80+
public JsonValue createValue(JsonSchemaMappingCompiler<T, C> mappingCompiler, XmlString item) {
81+
final MTypeInfo<T, C> baseTypeInfo = enumLeafInfo.getBaseTypeInfo();
82+
final TypeInfoProducer<T, C> baseTypeInfoProducer = mappingCompiler.getTypeInfoProducer(enumLeafInfo,
83+
baseTypeInfo);
84+
return baseTypeInfoProducer.createValue(mappingCompiler, item);
85+
}
6986
}

compiler/src/main/java/org/hisrc/jsonix/compilation/mapping/MappingCompiler.java

-17
Original file line numberDiff line numberDiff line change
@@ -253,23 +253,6 @@ private JSMemberExpression createNameExpression(final QName name, final String d
253253
}
254254
}
255255

256-
public TypeInfoCompiler<T, C> getTypeInfoCompiler(MClassInfo<T, C> classInfo, MTypeInfo<T, C> typeInfo) {
257-
return getTypeInfoCompiler((MOriginated<MClassInfoOrigin>) classInfo, typeInfo);
258-
}
259-
260-
public TypeInfoCompiler<T, C> getTypeInfoCompiler(MEnumLeafInfo<T, C> enumLeafInfo, MTypeInfo<T, C> typeInfo) {
261-
return getTypeInfoCompiler((MOriginated<MEnumLeafInfoOrigin>) enumLeafInfo, typeInfo);
262-
}
263-
264-
public TypeInfoCompiler<T, C> getTypeInfoCompiler(MPropertyInfo<T, C> propertyInfo, MTypeInfo<T, C> typeInfo) {
265-
return getTypeInfoCompiler((MOriginated<MPropertyInfoOrigin>) propertyInfo, typeInfo);
266-
}
267-
268-
public <M extends MElementTypeInfo<T, C, O>, O> TypeInfoCompiler<T, C> getTypeInfoCompiler(M elementInfo,
269-
MTypeInfo<T, C> typeInfo) {
270-
return getTypeInfoCompiler((MOriginated<O>) elementInfo, typeInfo);
271-
}
272-
273256
public <O> TypeInfoCompiler<T, C> getTypeInfoCompiler(MOriginated<O> originated, MTypeInfo<T, C> typeInfo) {
274257

275258
return typeInfo.acceptTypeInfoVisitor(new CreateTypeInfoCompiler<T, C, O>(originated));

compiler/src/main/java/org/hisrc/jsonix/compilation/mapping/typeinfo/ClassInfoCompiler.java

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import org.jvnet.jaxb2_commons.xml.bind.model.MClassInfo;
1616
import org.jvnet.jaxb2_commons.xml.bind.model.MClassTypeInfo;
1717
import org.jvnet.jaxb2_commons.xml.bind.model.MPropertyInfo;
18+
import org.jvnet.jaxb2_commons.xml.bind.model.origin.MClassInfoOrigin;
19+
import org.jvnet.jaxb2_commons.xml.bind.model.origin.MOriginated;
1820

1921
public class ClassInfoCompiler<T, C extends T> extends PackagedTypeInfoCompiler<T, C> {
2022

compiler/src/main/java/org/hisrc/jsonix/compilation/mapping/typeinfo/EnumLeafInfoCompiler.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import org.jvnet.jaxb2_commons.xml.bind.model.MEnumConstantInfo;
1212
import org.jvnet.jaxb2_commons.xml.bind.model.MEnumLeafInfo;
1313
import org.jvnet.jaxb2_commons.xml.bind.model.MTypeInfo;
14+
import org.jvnet.jaxb2_commons.xml.bind.model.origin.MEnumLeafInfoOrigin;
15+
import org.jvnet.jaxb2_commons.xml.bind.model.origin.MOriginated;
1416

1517
import com.sun.xml.xsom.XmlString;
1618

@@ -59,7 +61,8 @@ public JSObjectLiteral compile(MappingCompiler<T, C> mappingCompiler) {
5961
final JSArrayLiteral values = codeModel.array();
6062
boolean valuesSupported = true;
6163
for (MEnumConstantInfo<T, C> enumConstantInfo : enumLeafInfo.getConstants()) {
62-
final JSAssignmentExpression value = baseTypeInfoCompiler.createValue(mappingCompiler, enumConstantInfo.getLexicalValue());
64+
final JSAssignmentExpression value = baseTypeInfoCompiler.createValue(mappingCompiler,
65+
enumConstantInfo.getLexicalValue());
6366
if (value == null) {
6467
valuesSupported = false;
6568
break;

0 commit comments

Comments
 (0)