diff --git a/pom.xml b/pom.xml index 910a513..19a2aa7 100644 --- a/pom.xml +++ b/pom.xml @@ -186,7 +186,8 @@ 1.7 1.7 - com.dslplatform.json.CompiledJsonProcessor + + org.openjdk.jmh.generators.BenchmarkProcessor true diff --git a/src/main/java/dsl_json/json/ExternalSerialization.java b/src/main/java/dsl_json/json/ExternalSerialization.java new file mode 100644 index 0000000..916a859 --- /dev/null +++ b/src/main/java/dsl_json/json/ExternalSerialization.java @@ -0,0 +1,401 @@ +/* +* Created by DSL Platform +* v1.7.6179.17358 +*/ + +package dsl_json.json; + + + +public class ExternalSerialization implements com.dslplatform.json.Configuration { + + + @SuppressWarnings("unchecked") + public void configure(final com.dslplatform.json.DslJson json) { + setup(json); + } + + @SuppressWarnings("unchecked") + public static void setup(final com.dslplatform.json.DslJson json) { + + + json.registerReader(com.cowtowncoder.jsonperf.dzone.MeasurementRecord.class, JSON_READER_struct1); + json.registerWriter(com.cowtowncoder.jsonperf.dzone.MeasurementRecord.class, new com.dslplatform.json.JsonWriter.WriteObject() { + @Override + public void write(com.dslplatform.json.JsonWriter writer, com.cowtowncoder.jsonperf.dzone.MeasurementRecord value) { + serialize(value, writer, json.omitDefaults); + } + }); + + json.registerReader(com.cowtowncoder.jsonperf.dzone.MeasurementPOJO.class, JSON_READER_struct0); + json.registerWriter(com.cowtowncoder.jsonperf.dzone.MeasurementPOJO.class, new com.dslplatform.json.JsonWriter.WriteObject() { + @Override + public void write(com.dslplatform.json.JsonWriter writer, com.cowtowncoder.jsonperf.dzone.MeasurementPOJO value) { + serialize(value, writer, json.omitDefaults); + } + }); + } + + public static void serialize(final com.cowtowncoder.jsonperf.dzone.MeasurementRecord self, final com.dslplatform.json.JsonWriter sw, final boolean minimal) { + sw.writeByte(com.dslplatform.json.JsonWriter.OBJECT_START); + if (minimal) { + __serializeJsonObjectMinimal(self, sw, false); + } else { + __serializeJsonObjectFull(self, sw, false); + } + sw.writeByte(com.dslplatform.json.JsonWriter.OBJECT_END); + } + + static void __serializeJsonObjectMinimal(final com.cowtowncoder.jsonperf.dzone.MeasurementRecord self, com.dslplatform.json.JsonWriter sw, boolean hasWrittenProperty) { + + + if (self.getDuration() != 0L) { + hasWrittenProperty = true; + sw.writeAscii("\"duration\":", 11); + com.dslplatform.json.NumberConverter.serialize(self.getDuration(), sw); + } + + if (self.getTime() != 0L) { + if(hasWrittenProperty) sw.writeByte(com.dslplatform.json.JsonWriter.COMMA); + hasWrittenProperty = true; + sw.writeAscii("\"time\":", 7); + com.dslplatform.json.NumberConverter.serialize(self.getTime(), sw); + } + + if(self.getType() != null) { + if(hasWrittenProperty) sw.writeByte(com.dslplatform.json.JsonWriter.COMMA); + hasWrittenProperty = true; + sw.writeAscii("\"type\":\"", 8); + sw.writeAscii(self.getType().name()); + sw.writeByte(com.dslplatform.json.JsonWriter.QUOTE); + } + + if (self.getMeasurementId() != null) { + if(hasWrittenProperty) sw.writeByte(com.dslplatform.json.JsonWriter.COMMA); + hasWrittenProperty = true; + sw.writeAscii("\"measurementId\":", 16); + sw.writeString(self.getMeasurementId()); + } + } + + static void __serializeJsonObjectFull(final com.cowtowncoder.jsonperf.dzone.MeasurementRecord self, com.dslplatform.json.JsonWriter sw, boolean hasWrittenProperty) { + + + + sw.writeAscii("\"duration\":", 11); + com.dslplatform.json.NumberConverter.serialize(self.getDuration(), sw); + + + sw.writeAscii(",\"time\":", 8); + com.dslplatform.json.NumberConverter.serialize(self.getTime(), sw); + + + if(self.getType() != null) { + sw.writeAscii(",\"type\":\"", 9); + sw.writeAscii(self.getType().name()); + sw.writeByte(com.dslplatform.json.JsonWriter.QUOTE); + } else { + sw.writeAscii(",\"type\":null", 12); + } + + + if (self.getMeasurementId() != null) { + sw.writeAscii(",\"measurementId\":", 17); + sw.writeString(self.getMeasurementId()); + } else { + sw.writeAscii(",\"measurementId\":null", 21); + } + } + + public static final com.dslplatform.json.JsonReader.ReadObject JSON_READER_struct1 = new com.dslplatform.json.JsonReader.ReadObject() { + @SuppressWarnings("unchecked") + @Override + public com.cowtowncoder.jsonperf.dzone.MeasurementRecord read(final com.dslplatform.json.JsonReader reader) throws java.io.IOException { + if(reader.last() != '{') { + throw new java.io.IOException("Expecting \'{\' at position " + reader.positionInStream() + ". Found " + (char)reader.last()); + } + reader.getNextToken(); + final com.cowtowncoder.jsonperf.dzone.MeasurementRecord instance = new com.cowtowncoder.jsonperf.dzone.MeasurementRecord(); + deserialize(instance, reader); + return instance; + } + }; + + @SuppressWarnings("unchecked") + static com.cowtowncoder.jsonperf.dzone.MeasurementRecord deserializestruct1(final com.dslplatform.json.JsonReader reader) throws java.io.IOException { + final com.cowtowncoder.jsonperf.dzone.MeasurementRecord instance = new com.cowtowncoder.jsonperf.dzone.MeasurementRecord(); + deserialize(instance, reader); + return instance; + } + + @SuppressWarnings("unchecked") + static void deserialize(final com.cowtowncoder.jsonperf.dzone.MeasurementRecord instance, final com.dslplatform.json.JsonReader reader) throws java.io.IOException { + + long _duration_ = 0L; + long _time_ = 0L; + com.cowtowncoder.jsonperf.dzone.MeasurementType _type_ = null; + String _measurementId_ = null; + byte nextToken = reader.last(); + if(nextToken != '}') { + int nameHash = reader.fillName(); + nextToken = reader.getNextToken(); + if(nextToken == 'n') { + if (reader.wasNull()) { + nextToken = reader.getNextToken(); + } else { + throw new java.io.IOException("Expecting 'u' (as null) at position " + reader.positionInStream() + ". Found " + (char)nextToken); + } + } else { + switch(nameHash) { + + case 799079693: + _duration_ = com.dslplatform.json.NumberConverter.deserializeLong(reader); + nextToken = reader.getNextToken(); + break; + case 1564253156: + _time_ = com.dslplatform.json.NumberConverter.deserializeLong(reader); + nextToken = reader.getNextToken(); + break; + case 1361572173: + + if (nextToken == '"') { + switch(reader.calcHash()) { + case -678320345: _type_ = com.cowtowncoder.jsonperf.dzone.MeasurementType.WEB_REQUEST; break; + case 18818719: _type_ = com.cowtowncoder.jsonperf.dzone.MeasurementType.SQL; break; + case -602493290: _type_ = com.cowtowncoder.jsonperf.dzone.MeasurementType.EXCEPTION; break; + case 943038113: _type_ = com.cowtowncoder.jsonperf.dzone.MeasurementType.METHOD_CALL; break; + default: + throw new java.io.IOException("Unknown enum value: '" + reader.getLastName() + "' at position " + reader.positionInStream()); + } + nextToken = reader.getNextToken(); + } else throw new java.io.IOException("Expecting '\"' at position " + reader.positionInStream() + ". Found " + (char)nextToken); + break; + case 1605909710: + _measurementId_ = com.dslplatform.json.StringConverter.deserialize(reader); + nextToken = reader.getNextToken(); + break; + default: + nextToken = reader.skip(); + break; + } + } + while (nextToken == ',') { + nextToken = reader.getNextToken(); + nameHash = reader.fillName(); + nextToken = reader.getNextToken(); + if(nextToken == 'n') { + if (reader.wasNull()) { + nextToken = reader.getNextToken(); + continue; + } else { + throw new java.io.IOException("Expecting 'u' (as null) at position " + reader.positionInStream() + ". Found " + (char)nextToken); + } + } + switch(nameHash) { + + case 799079693: + _duration_ = com.dslplatform.json.NumberConverter.deserializeLong(reader); + nextToken = reader.getNextToken(); + break; + case 1564253156: + _time_ = com.dslplatform.json.NumberConverter.deserializeLong(reader); + nextToken = reader.getNextToken(); + break; + case 1361572173: + + if (nextToken == '"') { + switch(reader.calcHash()) { + case -678320345: _type_ = com.cowtowncoder.jsonperf.dzone.MeasurementType.WEB_REQUEST; break; + case 18818719: _type_ = com.cowtowncoder.jsonperf.dzone.MeasurementType.SQL; break; + case -602493290: _type_ = com.cowtowncoder.jsonperf.dzone.MeasurementType.EXCEPTION; break; + case 943038113: _type_ = com.cowtowncoder.jsonperf.dzone.MeasurementType.METHOD_CALL; break; + default: + throw new java.io.IOException("Unknown enum value: '" + reader.getLastName() + "' at position " + reader.positionInStream()); + } + nextToken = reader.getNextToken(); + } else throw new java.io.IOException("Expecting '\"' at position " + reader.positionInStream() + ". Found " + (char)nextToken); + break; + case 1605909710: + _measurementId_ = com.dslplatform.json.StringConverter.deserialize(reader); + nextToken = reader.getNextToken(); + break; + default: + nextToken = reader.skip(); + break; + } + } + if (nextToken != '}') { + throw new java.io.IOException("Expecting '}' at position " + reader.positionInStream() + ". Found " + (char)nextToken); + } + } + + instance.setDuration(_duration_); + instance.setTime(_time_); + instance.setType(_type_); + instance.setMeasurementId(_measurementId_); + } + + public static void serialize(final com.cowtowncoder.jsonperf.dzone.MeasurementPOJO self, final com.dslplatform.json.JsonWriter sw, final boolean minimal) { + sw.writeByte(com.dslplatform.json.JsonWriter.OBJECT_START); + if (minimal) { + __serializeJsonObjectMinimal(self, sw, false); + } else { + __serializeJsonObjectFull(self, sw, false); + } + sw.writeByte(com.dslplatform.json.JsonWriter.OBJECT_END); + } + + static void __serializeJsonObjectMinimal(final com.cowtowncoder.jsonperf.dzone.MeasurementPOJO self, com.dslplatform.json.JsonWriter sw, boolean hasWrittenProperty) { + + + final java.util.List _tmp_items_ = self.getItems(); + if(_tmp_items_ != null && self.getItems().size() != 0) { + hasWrittenProperty = true; + sw.writeAscii("\"items\":[", 9); + com.cowtowncoder.jsonperf.dzone.MeasurementRecord item = _tmp_items_.get(0); + if(item != null) { + sw.writeByte(com.dslplatform.json.JsonWriter.OBJECT_START); + dsl_json.json.ExternalSerialization.__serializeJsonObjectMinimal(item, sw, false); + sw.writeByte(com.dslplatform.json.JsonWriter.OBJECT_END); + } else sw.writeNull(); + for(int i = 1; i < _tmp_items_.size(); i++) { + sw.writeByte(com.dslplatform.json.JsonWriter.COMMA); + item = _tmp_items_.get(i); + if(item != null) { + sw.writeByte(com.dslplatform.json.JsonWriter.OBJECT_START); + dsl_json.json.ExternalSerialization.__serializeJsonObjectMinimal(item, sw, false); + sw.writeByte(com.dslplatform.json.JsonWriter.OBJECT_END); + } else sw.writeNull(); + } + sw.writeByte(com.dslplatform.json.JsonWriter.ARRAY_END); + } + else if(self.getItems() != null) { + if(hasWrittenProperty) sw.writeByte(com.dslplatform.json.JsonWriter.COMMA); + hasWrittenProperty = true; + sw.writeAscii("\"items\":[]", 10); + } + } + + static void __serializeJsonObjectFull(final com.cowtowncoder.jsonperf.dzone.MeasurementPOJO self, com.dslplatform.json.JsonWriter sw, boolean hasWrittenProperty) { + + + final java.util.List _tmp_items_ = self.getItems(); + if(_tmp_items_ != null && self.getItems().size() != 0) { + sw.writeAscii("\"items\":[", 9); + com.cowtowncoder.jsonperf.dzone.MeasurementRecord item = _tmp_items_.get(0); + if(item != null) { + sw.writeByte(com.dslplatform.json.JsonWriter.OBJECT_START); + dsl_json.json.ExternalSerialization.__serializeJsonObjectFull(item, sw, false); + sw.writeByte(com.dslplatform.json.JsonWriter.OBJECT_END); + } else sw.writeNull(); + for(int i = 1; i < _tmp_items_.size(); i++) { + sw.writeByte(com.dslplatform.json.JsonWriter.COMMA); + item = _tmp_items_.get(i); + if(item != null) { + sw.writeByte(com.dslplatform.json.JsonWriter.OBJECT_START); + dsl_json.json.ExternalSerialization.__serializeJsonObjectFull(item, sw, false); + sw.writeByte(com.dslplatform.json.JsonWriter.OBJECT_END); + } else sw.writeNull(); + } + sw.writeByte(com.dslplatform.json.JsonWriter.ARRAY_END); + } + else if(self.getItems() != null) sw.writeAscii("\"items\":[]", 10); + else sw.writeAscii("\"items\":null", 12); + } + + public static final com.dslplatform.json.JsonReader.ReadObject JSON_READER_struct0 = new com.dslplatform.json.JsonReader.ReadObject() { + @SuppressWarnings("unchecked") + @Override + public com.cowtowncoder.jsonperf.dzone.MeasurementPOJO read(final com.dslplatform.json.JsonReader reader) throws java.io.IOException { + if(reader.last() != '{') { + throw new java.io.IOException("Expecting \'{\' at position " + reader.positionInStream() + ". Found " + (char)reader.last()); + } + reader.getNextToken(); + final com.cowtowncoder.jsonperf.dzone.MeasurementPOJO instance = new com.cowtowncoder.jsonperf.dzone.MeasurementPOJO(); + deserialize(instance, reader); + return instance; + } + }; + + @SuppressWarnings("unchecked") + static com.cowtowncoder.jsonperf.dzone.MeasurementPOJO deserializestruct0(final com.dslplatform.json.JsonReader reader) throws java.io.IOException { + final com.cowtowncoder.jsonperf.dzone.MeasurementPOJO instance = new com.cowtowncoder.jsonperf.dzone.MeasurementPOJO(); + deserialize(instance, reader); + return instance; + } + + @SuppressWarnings("unchecked") + static void deserialize(final com.cowtowncoder.jsonperf.dzone.MeasurementPOJO instance, final com.dslplatform.json.JsonReader reader) throws java.io.IOException { + + java.util.List _items_ = null; + byte nextToken = reader.last(); + if(nextToken != '}') { + int nameHash = reader.fillName(); + nextToken = reader.getNextToken(); + if(nextToken == 'n') { + if (reader.wasNull()) { + nextToken = reader.getNextToken(); + } else { + throw new java.io.IOException("Expecting 'u' (as null) at position " + reader.positionInStream() + ". Found " + (char)nextToken); + } + } else { + switch(nameHash) { + + case 981021583: + + if (nextToken == '[') { + nextToken = reader.getNextToken(); + if (nextToken == ']') { + _items_ = new java.util.ArrayList(4); + } else { + java.util.List __res = reader.deserializeNullableCollection(JSON_READER_struct1); + _items_ = __res; + } + nextToken = reader.getNextToken(); + } else throw new java.io.IOException("Expecting '[' at position " + reader.positionInStream() + ". Found " + (char)nextToken); + break; + default: + nextToken = reader.skip(); + break; + } + } + while (nextToken == ',') { + nextToken = reader.getNextToken(); + nameHash = reader.fillName(); + nextToken = reader.getNextToken(); + if(nextToken == 'n') { + if (reader.wasNull()) { + nextToken = reader.getNextToken(); + continue; + } else { + throw new java.io.IOException("Expecting 'u' (as null) at position " + reader.positionInStream() + ". Found " + (char)nextToken); + } + } + switch(nameHash) { + + case 981021583: + + if (nextToken == '[') { + nextToken = reader.getNextToken(); + if (nextToken == ']') { + _items_ = new java.util.ArrayList(4); + } else { + java.util.List __res = reader.deserializeNullableCollection(JSON_READER_struct1); + _items_ = __res; + } + nextToken = reader.getNextToken(); + } else throw new java.io.IOException("Expecting '[' at position " + reader.positionInStream() + ". Found " + (char)nextToken); + break; + default: + nextToken = reader.skip(); + break; + } + } + if (nextToken != '}') { + throw new java.io.IOException("Expecting '}' at position " + reader.positionInStream() + ". Found " + (char)nextToken); + } + } + + instance.setItems(_items_); + } +} diff --git a/src/main/resources/META-INF/services/com.dslplatform.json.Configuration b/src/main/resources/META-INF/services/com.dslplatform.json.Configuration new file mode 100644 index 0000000..40b02db --- /dev/null +++ b/src/main/resources/META-INF/services/com.dslplatform.json.Configuration @@ -0,0 +1 @@ +dsl_json.json.ExternalSerialization \ No newline at end of file