Skip to content

Commit 4e0f549

Browse files
committed
make any a class
1 parent 1785374 commit 4e0f549

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1084
-262
lines changed

demo/src/main/java/com/jsoniter/demo/DemoCodegenConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public TypeLiteral[] whatToCodegen() {
3838
},
3939
// array
4040
TypeLiteral.create(int[].class),
41-
// object
41+
// set
4242
TypeLiteral.create(User.class)
4343
};
4444
}

demo/src/test/java/com/jsoniter/demo/LazyAny.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.jsoniter.demo;
22

3-
import com.jsoniter.Any;
3+
import com.jsoniter.any.Any;
44
import com.jsoniter.JsonIterator;
55
import com.jsoniter.Slice;
66
import org.junit.Test;

demo/src/test/java/com/jsoniter/demo/ModelTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ public void jsoniter_easy_mode(Blackhole bh) throws IOException {
9393
@Benchmark
9494
public void fastjson(Blackhole bh) throws IOException {
9595
// this is not a exactly fair comparison,
96-
// as string => object is not
97-
// bytes => object
96+
// as string => set is not
97+
// bytes => set
9898
bh.consume(JSON.parseObject(input, Model.class));
9999
}
100100

demo/src/test/java/com/jsoniter/demo/WrapperUnwrapper.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.jsoniter.demo;
22

3-
import com.jsoniter.Any;
43
import com.jsoniter.JsonIterator;
54
import com.jsoniter.annotation.*;
65
import com.jsoniter.output.JsonStream;

src/main/java/com/jsoniter/Any.java

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/main/java/com/jsoniter/CodegenImplArray.java

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -75,36 +75,36 @@ private static String genCollectionWithCapacity(Class clazz, Type compType) {
7575
append(lines, "}");
7676
append(lines, "Object a1 = {{op}};");
7777
append(lines, "if (com.jsoniter.CodegenAccess.nextToken(iter) != ',') {");
78-
append(lines, "{{clazz}} obj = col == null ? new {{clazz}}(1): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
79-
append(lines, "obj.add(a1);");
80-
append(lines, "return obj;");
78+
append(lines, "{{clazz}} set = col == null ? new {{clazz}}(1): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
79+
append(lines, "set.add(a1);");
80+
append(lines, "return set;");
8181
append(lines, "}");
8282
append(lines, "Object a2 = {{op}};");
8383
append(lines, "if (com.jsoniter.CodegenAccess.nextToken(iter) != ',') {");
84-
append(lines, "{{clazz}} obj = col == null ? new {{clazz}}(2): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
85-
append(lines, "obj.add(a1);");
86-
append(lines, "obj.add(a2);");
87-
append(lines, "return obj;");
84+
append(lines, "{{clazz}} set = col == null ? new {{clazz}}(2): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
85+
append(lines, "set.add(a1);");
86+
append(lines, "set.add(a2);");
87+
append(lines, "return set;");
8888
append(lines, "}");
8989
append(lines, "Object a3 = {{op}};");
9090
append(lines, "if (com.jsoniter.CodegenAccess.nextToken(iter) != ',') {");
91-
append(lines, "{{clazz}} obj = col == null ? new {{clazz}}(3): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
92-
append(lines, "obj.add(a1);");
93-
append(lines, "obj.add(a2);");
94-
append(lines, "obj.add(a3);");
95-
append(lines, "return obj;");
91+
append(lines, "{{clazz}} set = col == null ? new {{clazz}}(3): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
92+
append(lines, "set.add(a1);");
93+
append(lines, "set.add(a2);");
94+
append(lines, "set.add(a3);");
95+
append(lines, "return set;");
9696
append(lines, "}");
9797
append(lines, "Object a4 = {{op}};");
98-
append(lines, "{{clazz}} obj = col == null ? new {{clazz}}(8): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
99-
append(lines, "obj.add(a1);");
100-
append(lines, "obj.add(a2);");
101-
append(lines, "obj.add(a3);");
102-
append(lines, "obj.add(a4);");
98+
append(lines, "{{clazz}} set = col == null ? new {{clazz}}(8): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
99+
append(lines, "set.add(a1);");
100+
append(lines, "set.add(a2);");
101+
append(lines, "set.add(a3);");
102+
append(lines, "set.add(a4);");
103103
append(lines, "while (com.jsoniter.CodegenAccess.nextToken(iter) == ',') {");
104-
append(lines, "obj.add({{op}});");
104+
append(lines, "set.add({{op}});");
105105
append(lines, "}");
106106
// append(lines, "if (c != ']') { com.jsoniter.CodegenAccess.reportIncompleteArray(iter); }");
107-
append(lines, "return obj;");
107+
append(lines, "return set;");
108108
return lines.toString().replace(
109109
"{{clazz}}", clazz.getName()).replace(
110110
"{{op}}", CodegenImplNative.genReadOp(compType));
@@ -119,36 +119,36 @@ private static String genCollectionWithoutCapacity(Class clazz, Type compType) {
119119
append(lines, "}");
120120
append(lines, "Object a1 = {{op}};");
121121
append(lines, "if (com.jsoniter.CodegenAccess.nextToken(iter) != ',') {");
122-
append(lines, "{{clazz}} obj = col == null ? new {{clazz}}(): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
123-
append(lines, "obj.add(a1);");
124-
append(lines, "return obj;");
122+
append(lines, "{{clazz}} set = col == null ? new {{clazz}}(): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
123+
append(lines, "set.add(a1);");
124+
append(lines, "return set;");
125125
append(lines, "}");
126126
append(lines, "Object a2 = {{op}};");
127127
append(lines, "if (com.jsoniter.CodegenAccess.nextToken(iter) != ',') {");
128-
append(lines, "{{clazz}} obj = col == null ? new {{clazz}}(): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
129-
append(lines, "obj.add(a1);");
130-
append(lines, "obj.add(a2);");
131-
append(lines, "return obj;");
128+
append(lines, "{{clazz}} set = col == null ? new {{clazz}}(): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
129+
append(lines, "set.add(a1);");
130+
append(lines, "set.add(a2);");
131+
append(lines, "return set;");
132132
append(lines, "}");
133133
append(lines, "Object a3 = {{op}};");
134134
append(lines, "if (com.jsoniter.CodegenAccess.nextToken(iter) != ',') {");
135-
append(lines, "{{clazz}} obj = col == null ? new {{clazz}}(): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
136-
append(lines, "obj.add(a1);");
137-
append(lines, "obj.add(a2);");
138-
append(lines, "obj.add(a3);");
139-
append(lines, "return obj;");
135+
append(lines, "{{clazz}} set = col == null ? new {{clazz}}(): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
136+
append(lines, "set.add(a1);");
137+
append(lines, "set.add(a2);");
138+
append(lines, "set.add(a3);");
139+
append(lines, "return set;");
140140
append(lines, "}");
141141
append(lines, "Object a4 = {{op}};");
142-
append(lines, "{{clazz}} obj = col == null ? new {{clazz}}(): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
143-
append(lines, "obj.add(a1);");
144-
append(lines, "obj.add(a2);");
145-
append(lines, "obj.add(a3);");
146-
append(lines, "obj.add(a4);");
142+
append(lines, "{{clazz}} set = col == null ? new {{clazz}}(): ({{clazz}})com.jsoniter.CodegenAccess.reuseCollection(col);");
143+
append(lines, "set.add(a1);");
144+
append(lines, "set.add(a2);");
145+
append(lines, "set.add(a3);");
146+
append(lines, "set.add(a4);");
147147
append(lines, "while (com.jsoniter.CodegenAccess.nextToken(iter) == ',') {");
148-
append(lines, "obj.add({{op}});");
148+
append(lines, "set.add({{op}});");
149149
append(lines, "}");
150150
// append(lines, "if (c != ']') { com.jsoniter.CodegenAccess.reportIncompleteArray(iter); }");
151-
append(lines, "return obj;");
151+
append(lines, "return set;");
152152
return lines.toString().replace(
153153
"{{clazz}}", clazz.getName()).replace(
154154
"{{op}}", CodegenImplNative.genReadOp(compType));

src/main/java/com/jsoniter/CodegenImplNative.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.jsoniter;
22

3+
import com.jsoniter.any.Any;
34
import com.jsoniter.spi.TypeLiteral;
45

56
import java.lang.reflect.ParameterizedType;

src/main/java/com/jsoniter/CodegenImplObject.java

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -32,26 +32,26 @@ public static String genObjectUsingStrict(Class clazz, ClassDescriptor desc) {
3232
* 3. bind first field
3333
* 4. while (nextToken() == ',') { bind more fields }
3434
* 5. handle missing/extra properties
35-
* 6. create object with args (if ctor binding)
36-
* 7. assign fields to object (if ctor binding)
35+
* 6. create set with args (if ctor binding)
36+
* 7. assign fields to set (if ctor binding)
3737
* 8. apply multi param wrappers
3838
*/
3939
// === if null, return null
4040
append(lines, "if (iter.readNull()) { com.jsoniter.CodegenAccess.resetExistingObject(iter); return null; }");
41-
// === if input is empty object, return empty object
41+
// === if input is empty set, return empty set
4242
if (hasRequiredBinding) {
4343
append(lines, "long tracker = 0;");
4444
}
4545
if (desc.ctor.parameters.isEmpty()) {
46-
append(lines, "{{clazz}} obj = {{newInst}};");
46+
append(lines, "{{clazz}} set = {{newInst}};");
4747
append(lines, "if (!com.jsoniter.CodegenAccess.readObjectStart(iter)) {");
4848
if (hasRequiredBinding) {
4949
appendMissingRequiredProperties(lines, desc);
5050
}
51-
append(lines, "return obj;");
51+
append(lines, "return set;");
5252
append(lines, "}");
53-
// because object can be created without binding
54-
// so that fields and setters can be bind to object directly without temp var
53+
// because set can be created without binding
54+
// so that fields and setters can be bind to set directly without temp var
5555
} else {
5656
for (Binding parameter : desc.ctor.parameters) {
5757
appendVarDef(lines, parameter);
@@ -119,16 +119,16 @@ public static String genObjectUsingStrict(Class clazz, ClassDescriptor desc) {
119119
appendSetExtraProperteis(lines, desc);
120120
}
121121
if (!desc.ctor.parameters.isEmpty()) {
122-
append(lines, String.format("%s obj = {{newInst}};", CodegenImplNative.getTypeName(clazz)));
122+
append(lines, String.format("%s set = {{newInst}};", CodegenImplNative.getTypeName(clazz)));
123123
for (Binding field : desc.fields) {
124-
append(lines, String.format("obj.%s = _%s_;", field.field.getName(), field.name));
124+
append(lines, String.format("set.%s = _%s_;", field.field.getName(), field.name));
125125
}
126126
for (Binding setter : desc.setters) {
127-
append(lines, String.format("obj.%s(_%s_);", setter.method.getName(), setter.name));
127+
append(lines, String.format("set.%s(_%s_);", setter.method.getName(), setter.name));
128128
}
129129
}
130130
appendWrappers(desc.wrappers, lines);
131-
append(lines, "return obj;");
131+
append(lines, "return set;");
132132
return lines.toString()
133133
.replace("{{clazz}}", clazz.getCanonicalName())
134134
.replace("{{newInst}}", genNewInstCode(clazz, desc.ctor));
@@ -138,9 +138,9 @@ private static void appendSetExtraProperteis(StringBuilder lines, ClassDescripto
138138
Binding onExtraProperties = desc.onExtraProperties;
139139
if (ParameterizedTypeImpl.isSameClass(onExtraProperties.valueType, Map.class)) {
140140
if (onExtraProperties.field != null) {
141-
append(lines, String.format("obj.%s = extra;", onExtraProperties.field.getName()));
141+
append(lines, String.format("set.%s = extra;", onExtraProperties.field.getName()));
142142
} else {
143-
append(lines, String.format("obj.%s(extra);", onExtraProperties.method.getName()));
143+
append(lines, String.format("set.%s(extra);", onExtraProperties.method.getName()));
144144
}
145145
return;
146146
}
@@ -191,7 +191,7 @@ private static String updateBindingSetOp(String rendered, Binding binding) {
191191
if (binding.field != null) {
192192
if (binding.valueCanReuse) {
193193
// reuse; then field set
194-
rendered = String.format("%scom.jsoniter.CodegenAccess.setExistingObject(iter, obj.%s);obj.%s=%s%s",
194+
rendered = String.format("%scom.jsoniter.CodegenAccess.setExistingObject(iter, set.%s);set.%s=%s%s",
195195
rendered.substring(0, start), binding.field.getName(), binding.field.getName(), op, rendered.substring(end));
196196
} else {
197197
// just field set
@@ -219,9 +219,9 @@ private static void appendMissingRequiredProperties(StringBuilder lines, ClassDe
219219
append(lines, "throw new com.jsoniter.JsonException(\"missing required properties: \" + missingFields);");
220220
} else {
221221
if (desc.onMissingProperties.field != null) {
222-
append(lines, String.format("obj.%s = missingFields;", desc.onMissingProperties.field.getName()));
222+
append(lines, String.format("set.%s = missingFields;", desc.onMissingProperties.field.getName()));
223223
} else {
224-
append(lines, String.format("obj.%s(missingFields);", desc.onMissingProperties.method.getName()));
224+
append(lines, String.format("set.%s(missingFields);", desc.onMissingProperties.method.getName()));
225225
}
226226
}
227227
}
@@ -333,8 +333,8 @@ public static String genObjectUsingHash(Class clazz, ClassDescriptor desc) {
333333
// === if empty, return empty
334334
if (desc.ctor.parameters.isEmpty()) {
335335
// has default ctor
336-
append(lines, "{{clazz}} obj = {{newInst}};");
337-
append(lines, "if (!com.jsoniter.CodegenAccess.readObjectStart(iter)) { return obj; }");
336+
append(lines, "{{clazz}} set = {{newInst}};");
337+
append(lines, "if (!com.jsoniter.CodegenAccess.readObjectStart(iter)) { return set; }");
338338
} else {
339339
// ctor requires binding
340340
for (Binding parameter : desc.ctor.parameters) {
@@ -402,16 +402,16 @@ public static String genObjectUsingHash(Class clazz, ClassDescriptor desc) {
402402
append(lines, "iter.skip();");
403403
append(lines, "}");
404404
if (!desc.ctor.parameters.isEmpty()) {
405-
append(lines, CodegenImplNative.getTypeName(clazz) + " obj = {{newInst}};");
405+
append(lines, CodegenImplNative.getTypeName(clazz) + " set = {{newInst}};");
406406
for (Binding field : desc.fields) {
407-
append(lines, String.format("obj.%s = _%s_;", field.field.getName(), field.name));
407+
append(lines, String.format("set.%s = _%s_;", field.field.getName(), field.name));
408408
}
409409
for (Binding setter : desc.setters) {
410-
append(lines, String.format("obj.%s(_%s_);", setter.method.getName(), setter.name));
410+
append(lines, String.format("set.%s(_%s_);", setter.method.getName(), setter.name));
411411
}
412412
}
413413
appendWrappers(desc.wrappers, lines);
414-
append(lines, "return obj;");
414+
append(lines, "return set;");
415415
return lines.toString()
416416
.replace("{{clazz}}", clazz.getCanonicalName())
417417
.replace("{{newInst}}", genNewInstCode(clazz, desc.ctor));
@@ -420,12 +420,12 @@ public static String genObjectUsingHash(Class clazz, ClassDescriptor desc) {
420420
private static void appendBindingSet(StringBuilder lines, ClassDescriptor desc, Binding binding) {
421421
if (desc.ctor.parameters.isEmpty() && (desc.fields.contains(binding) || desc.setters.contains(binding))) {
422422
if (binding.valueCanReuse) {
423-
append(lines, String.format("com.jsoniter.CodegenAccess.setExistingObject(iter, obj.%s);", binding.field.getName()));
423+
append(lines, String.format("com.jsoniter.CodegenAccess.setExistingObject(iter, set.%s);", binding.field.getName()));
424424
}
425425
if (binding.field != null) {
426-
append(lines, String.format("obj.%s = %s;", binding.field.getName(), genField(binding)));
426+
append(lines, String.format("set.%s = %s;", binding.field.getName(), genField(binding)));
427427
} else {
428-
append(lines, String.format("obj.%s(%s);", binding.method.getName(), genField(binding)));
428+
append(lines, String.format("set.%s(%s);", binding.method.getName(), genField(binding)));
429429
}
430430
} else {
431431
append(lines, String.format("_%s_ = %s;", binding.name, genField(binding)));
@@ -434,7 +434,7 @@ private static void appendBindingSet(StringBuilder lines, ClassDescriptor desc,
434434

435435
private static void appendWrappers(List<WrapperDescriptor> wrappers, StringBuilder lines) {
436436
for (WrapperDescriptor wrapper : wrappers) {
437-
lines.append("obj.");
437+
lines.append("set.");
438438
lines.append(wrapper.method.getName());
439439
appendInvocation(lines, wrapper.parameters);
440440
lines.append(";\n");
@@ -449,9 +449,9 @@ private static void appendVarDef(StringBuilder lines, Binding parameter) {
449449
public static String genObjectUsingSkip(Class clazz, ConstructorDescriptor ctor) {
450450
StringBuilder lines = new StringBuilder();
451451
append(lines, "if (iter.readNull()) { return null; }");
452-
append(lines, "{{clazz}} obj = {{newInst}};");
452+
append(lines, "{{clazz}} set = {{newInst}};");
453453
append(lines, "iter.skip();");
454-
append(lines, "return obj;");
454+
append(lines, "return set;");
455455
return lines.toString()
456456
.replace("{{clazz}}", clazz.getCanonicalName())
457457
.replace("{{newInst}}", genNewInstCode(clazz, ctor));
@@ -460,7 +460,7 @@ public static String genObjectUsingSkip(Class clazz, ConstructorDescriptor ctor)
460460
private static String genNewInstCode(Class clazz, ConstructorDescriptor ctor) {
461461
StringBuilder code = new StringBuilder();
462462
if (ctor.parameters.isEmpty()) {
463-
// nothing to bind, safe to reuse existing object
463+
// nothing to bind, safe to reuse existing set
464464
code.append("(com.jsoniter.CodegenAccess.existingObject(iter) == null ? ");
465465
}
466466
if (ctor.staticMethodName == null) {
@@ -471,7 +471,7 @@ private static String genNewInstCode(Class clazz, ConstructorDescriptor ctor) {
471471
List<Binding> params = ctor.parameters;
472472
appendInvocation(code, params);
473473
if (ctor.parameters.isEmpty()) {
474-
// nothing to bind, safe to reuse existing object
474+
// nothing to bind, safe to reuse existing set
475475
code.append(String.format(" : (%s)com.jsoniter.CodegenAccess.resetExistingObject(iter))", clazz.getCanonicalName()));
476476
}
477477
return code.toString();

src/main/java/com/jsoniter/DecodingMode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
public enum DecodingMode {
44
/**
5-
* dynamically codegen, generate object decoder using hash
5+
* dynamically codegen, generate set decoder using hash
66
*/
77
DYNAMIC_MODE_AND_MATCH_FIELD_WITH_HASH,
88
/**
9-
* dynamically codegen, generate object decoder which compares fields strictly
9+
* dynamically codegen, generate set decoder which compares fields strictly
1010
*/
1111
DYNAMIC_MODE_AND_MATCH_FIELD_STRICTLY,
1212
/**

0 commit comments

Comments
 (0)