- #105: Add option for generating field maps with original field names
[generated code]
- #98: Fix for messages with sparse/big
@Tag
values[runtime schemas]
- #108: Fix for default values in
java_bean_model
[generated code]
- #107: Getter of optional enum should return
null
if not set[generated code]
- Please check protostuff#107 as it changes structure of the schema, generated by
java_bean
. Now default values are not applied automatically for all field types, unless default value is specified explicitly. If you use protobuf as a serialization format, you should always do check fornull
and treatnull
as a default value. For example, you can use Guava's utility method:MoreObjects.firstNonNull(message.getNullableFieldValue(), DEFAULT_FIELD_VALUE)
.
- #81: add validation for @Tag annotation value, throw an IllegalArgumentException when value is out of range [protostuff-runtime]
- #83: add maven "Bill of Materials" module
- #94: add method
getProtoType
forField
[code generator] - #92: generate
equals()
andhashCode()
for generated messages [code generator]
#86: Configure system properties for maven plugin in the POM
Now it is possible to specify proto-compiler options directly in pom.xml
<plugin>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-maven-plugin</artifactId>
<version>${protostuff.version}</version>
<configuration>
<properties>
<property>
<name>ppc.check_filename_placeholder</name>
<value>true</value>
</property>
</properties>
<protoModules>
...
#84: Value of @Generated
annotation is not valid string [code generator]
#90:
- fixed issue with relative template file location (
<output>
maven plugin option) in multi-module projects - fixed
PluginProtoCompiler
behavior whenppc.check_filename_placeholder
is enabled, https://code.google.com/p/protostuff/issues/detail?id=166
- #58: Do not wrap lists into
Collections.unmodifiableList(source)
(code generated byjava_bean
template)
- #25: Added
@Tag
support for enums inprotostuff-runtime
- #32: Added support for messages without fields (empty messages)
- #35: Added support for RPC service code generation. Example.
- #38: Added ability to import proto in multi-module project. Example.
- #34: Fixed issue with CESU-8 charset and Java 8.
- #29: The minimum requirement for Java has now been raised to Java SE 7.
- #36: Move
protostuff-me
to separate project.
- NOTE: The 1.1.x versions will be not be wire-compatible with the ff:
- protostuff-runtime-1.0.x
- protostuff-xml-1.0.x
- Issue 161: Optimize ProtobufOutput for small nested messages (max size of 127)
- Issue 157: ConcurrentLinkedDeque support
- Issue 156: Support for newing object instances on Android 4.3+ devices
- thanks to eedzjee
- Issue 153: YamlOutput bug on repeated message fields
- Issue 151: optimize xml format
- Issue 141: protostuff ser/der can not keep order of elements in an array which contain null value
- thanks to lzh0379
- Issue 119: Reflection-based array operations are rather expensive
- Issue 140: Multiple runtime schema contexts (IdStrategy groups)
- new protostuff-runtime-view module
- select fields to include on ser/deser, without re-creating the expensive runtime fields.
- Issue 139: Add functionality to load protobuf schema from Reader
- Issue 138: CodedIpnut.skipRawBytes() incorrectly updates totalBytesRetired when going outside of its buffer.
- thanks to Max Lanin
- Issue 135: PluginProtoCompiler throws IllegalStateException when one of the rules (message_block, enum_block) is missing
- Issue 133: When the varint of large strings (2kb or more) are serialized, unnecessary bytes are written A 2kb string previously needed 3 bytes for its varint. Now anything under 16kb will only need 2 bytes. This is a bug that was overlooked but doesn't have major side effects because of the way varint encoding works.
- Issue 131: option can't be used as a field name in maven-plugin
- Issue 129: Default value of optional bool properties is ignored.
- Issue 128: Maven-Plugin fails for multi-module projects
- added enums_by_name compiler option for java_v2protoc_schema (thanks to vitalyper)
- Issue 124: proto-parser throws NPE when an annotation on a field contains a reference
- update jackson-core-asl to 1.9.13
- update woodstox-core-asl to 4.1.3
- bugfix: an abstract class mapped to a single impl was not honored (bug introduced on 1.0.6)
- allow @Tag annotations to override the field name
- E.g @Tag(value=1, alias="foo")
- useful for non-binary formats like json/xml/yaml
- added Delegate, which handles ser/deser for:
- singletons
- pojos with no fields
- pojos that should not be merged
- could be used to encode a type to a byte array and write it (for example packing an int[] to a byte[])
- added @Morph field annotation, which overrides: -Dprotostuff.runtime.morph_non_final_pojos -Dprotostuff.runtime.morph_collection_interfaces (new) -Dprotostuff.runtime.morph_map_interfaces (new)
- Issue 115: protostuff has problem to serialize java.lang.Throwable Object
- Issue 120: Add serialization support for empty/singleton/synchronized/unmodifiable/checked collection/set/sortedset/list/map/sortedmap
- Issue 118: Doc improvement for the compiler help message
- Issue 104: 2 new compilers: proto_extender, java_bean_model (by Ivan Prisyazhniy and Igor Scherbak)
- Issue 114: Allow collection/map registration on DefaultIdStrategy
- Issue 111: NumericIdStrategy fails to use the enum ids when the field is an enum array
- Issue 110: protostuff has problem serilize java.lang.Class Object
- Issue 108: Ignore null values in json parser
- removes recursion and uses a loop instead
- Issue 107: Fields that are interfaces are not being serialized correctly if assigned an enum/boxed primitive type at runtime To optimize polymorphic ser/deser, use abstract classes or atleast declare the base abstract class.
- add support for annotations on protostuff-runtime to have explicit control of field numbers (patch by Brice Jaglin). Annotate all non-transient/non-static fields with @Tag(x) or none at all (all or nothing).
- Issue 77: RuntimeSchema.getSchema on Android and Server (the solution is to use @Tag annotations)
- Issue 86: Is RuntimeSchema.createFrom safe (the solution is to use @Tag annotations)
- Issue 106: Use Double.doubleToRawLongBits (was Double.doubleToLongBits) on serialization (protostuff-core)
- Not applicable to protostuff-me since the method Double.doubleToRawLongBits does not exist on j2me api
- new protostuff-runtime-registry module (compact ids for your polymorphic pojos)
- Issue 105: ObjectSchema needs to check clazz.getSuperclass().isEnum() to detect complex enums
- Issue 88: Add support for transparent handling of non-standard collections
- Issue 96: user definable mapping: FQNC's --> integer, for serialized stream size-reduction (thanks to Leo Romanoff)
- Issue 103: Deserialize failed when reading objects from ObjectInput/DataInput
- Issue 101: Improve ByteString.equals
- allow message/enum references on options and annotations (proto-parser).
- add "cache_protos" config (cache/re-use protos being imported/loaded by multiple modules)
- Issue 94: IllegalArgumentException thrown when instantiating a non-public class
- Issue 93: Add runtime option to always use the constructor from sun reflection factory
- Issue 92: [protostuff-me] Preverification fails (patch by thierry.monney)
- Issue 91: Generated J2ME code not is not compatible
- Issue 90: byte arrays on protostuff-runtime were not treated as scalar fields Best to update to this version for performance reasons. If you have existing data that came from a pojo with byte[] fields, it will not be compatible on deser. You can safely update the data by deserializing with the old protostuff from a different classloader and writing it back again using the new protostuff on another classloader.
- Issue 89: graph serialization bug on IdentityHashMap and EnumMap
- Issue 87: EnumSet and EnumMap without generics are not handled
- Issue 85: graph serialization bug (protostuff-runtime) on collections/map without generics and dynamic objects
- add protostuff-uberjar (osgi stuff from Thomas Kock)
- Issue 83: Kvp input does not properly handle empty strings and misreported size
- Issue 82: Serializing repeated fields on protostuff-runtime needs a null-check to only serialize non-nulls.
- Issue 81: Xml input does not check required fields when the nested message is not empty.
- Issue 80: Yaml does not handle polymorphic/cyclic serialization
- Issue 79: Provide support for options in messages and enums
- Issue 78: Field option missing on message fields (thanks to robert.herschke.de)
- Issue 76: The protostuff compiler does not detect duplicate service/message/enum
- update jackson to 1.7.9
- new protostuff-me module (for j2me by Michael Donohue)
- new protostuff-runtime-md module (for modern mobile devices like android and kindle) api+core works fine but this is for those who prefer runtime schemas.
- Issue 73: Remove unused enum default value from java_bean generated code
- Issue 70: Use FQCN everywhere in classes generated by java_v2protoc_schema
- Issue 69: Maven plugin to attach generated source directory to the project compile source roots
- Issue 68: RuntimeSchema AccessControlException on amazon kindle
- Issue 67: RuntimeSchema.getSchema on Android (thanks to matyas.bene)
- Issue 66: static keyword missing on classes generated by java_v2protoc_schema
- Issue 64: Merge method for json protobuf classes
- Issue 62: IOUtil.mergeDelimitedFrom() reports truncated message on stream EOF reached
- Issue 58: Compilation issues when the projects are loaded.
- tiny optimizations for protostuff-graph
- allow protostuff-runtime to use simple reflections or sun.misc.Unsafe(now the default scheme).
- improve streaming support for large strings
- update jackson-core-asl to 1.7.7
- fixed protostuff-parser bug on handling int/double annotation attributes.
- Issue 57: Add proto_path as a system property read by protostuff-compiler to load imported protos
- add smile format
- update jackson to 1.7.3
- Issue 56: Signed int64 is not correctly serialized (zigzag encoding missing)
- Issue 51: Compiler option to use primitive numbers if the field is optional
- Issue 49: protostuff-maven-plugin:Incorrect relative path for from super pom
- Issue 54: StackOverflow using RuntimeSchema.getSchema()
- Issue 53: UUIDs cannot be used with RuntimeSchemas
- Issue 55: Optimize protostuff-runtime serialization of arrays by writing the length first (order dependent)
- Issue 31: ProtoStuffRuntime cannot handle different subclasses
- Issue 29: Empty list turns into null after serialization/deserialization
- Issue 46: RuntimeSchema.getSchema() throws NPE on fields with type Object
- Issue 48: Polymorphic serialization support for json and xml
- Issue 52: Allow skipping constructor on immutable objects (fields marked final)
- LinkedBuffer re-use for JsonIOUtil read/write operations on streams.
- Issue 50: Xml deser does not handle empty messages well
- minor xml optimizations
- Issue 45: Double-checked locking concern
- Issue 47: IllegalAccessException in when accessing a private Date field with RuntimeSchema
- add protostuff-collectionschema (jdk standard collections support - map,list,set,queue,deque,etc)
- Issue 43: Inheritance support for non-abstract base types
- add ser/deser support for object graphs (cyclic references/dependencies)
- Issue 42: Support for Self Referential Classes
- Issue 41: Support for polymorphic ser/deser for protostuff-runtime
- Issue 40: ArrayIndexOutOfBoundsException when using streaming mulitple large delimited utf8 strings that exceeds the buffer size.
- update jackson to 1.7.1
- api for re-using the LinkedBuffer as a read-only buffer
- add protostuff-kvp module
- Issue 39: The field options (other than default) are ignored by the parser
- add support for annotations on proto files (extra metadata for better code generation)
- Issue 38: Parser: cannot import more than one .proto file from the same package (patch by avaskys)
- add support for java.util.Date in protostuff-runtime
- Backward-forward compatibility support for runtime schemas via append-only fields in the pojo. To add new fields, append the field in the declaration. To remove existing fields, annotate with @Deprecated.
- Issue 37: The proto parser doesn't parse extensions without ranges
- Issue 36: Incorrect deserialization when ProtobufIOUtil merges from InputStream
- Issue 35: Native methods for repeated fields (patch by nordlig.ulv)
- Issue 34: Allow schema generated from protostuff-runtime to write enums by their name
- add IO pipes w/c can transfer/transcode streams efficiently.
- full streaming capability on protostuff format.
- update jackson-core-asl to 1.6.1
- add JsonXOutput for efficient writing of numeric keys and pre-encoded utf8 strings.
- add base64 encoding/decoding support in protostuff-api
- Issue 33: GWT json compiler produces unnecessary line wrap
- IOUtil is no longer publicly accessible. (use ProtobufIOUtil or ProtostuffIOUtil)
- Issue 28: Class member with signature of interface causes NullPointerException
- Issue 27: ArrayIndexOutOfBoundsException in StringSerializer.writeUTF8 (patch by Tim Underwood)
- Add support for BigInteger and BigDecimal in protostuff-runtime
- Issue 26: Bug in the reflection compiler with nested protobuf types (patch by Joseph Gentle)
- Issue 25: Allow generating code for message extensions (patch by Philippe Laflamme)
- Issue 5: Ignore "target" working directories in Subversion
- faster utf8 string serialization
- write operations on IOUtil now require a buffer as an extra arg. This allows the developer to determine the appropriate buffer size needed for a particular message (to avoid buffer allocation overhead). The LinkedBuffer can be re-used by calling LinkedBuffer.clear() ... w/c is applicable to application/thread-local/network buffers.
- added protostuf-yaml for yaml serialization (zero-copy capable).
- Issue 24: JsonInput not able to skip repeated scalar fields that are unknown
- support serializing Map fields via the MapSchema.
- make Schema.typeClass() return the super type.
- Issue 23: Validation missing (for required fields) when nested messages are "group_encoded"
- more IO optimizations
- Issue 22: Enable parsing of service/rpc in proto for code generation
- Issue 21: Support java-style compilation mode where imported messages do not need to be referenced by full name
- Issue 20: Compiler throws NPE if no package defined in proto file
- added protostuff-api (protostuff-core, protostuff-json and protostuff-xml will only contain their respective IO impl).
- added a runtime option for nested messages to be "group-encoded" for more efficient serialization. (especially for rpc).
- added an abstract helper class CustomSchema to easily customize how messages can be read/written and for adding filters/hooks as well.
- added messageName() and messageFullName() methods to the schema to support full xml serialization of existing C++ protoc messages. This also enables aliasing of the message names (especially for xml) by overriding the messageName() method.
- added protostuff-xml for fast xml ser/deser via stax api.
- completed Issue 18: Generated GWT Protobuffers - base class, name
- fixed Issue 17: trying to compile google/protobuf/descriptor.proto from protobuf-2.3.0
- fixed Issue 15: JsonIOUtil.writeListTo fails when inner messages contain repeated fields
- completed Issue 14: Allow packages to be overriden via compile time options
- completed Issue 13: Allow unknown scalar fields to be ignored when parsing json-encoded messages
- completed Issue 12: Add support for protobuf enums on GWT overlays hosted mode
- completed Issue 11: Add serialization method (stringify) for GWT overlay types
- fixed Issue 3: JSON parser converts null values to the string "null"
- fixed Issue 10: JsonOutput bug when writing a message that contains an inner message with repeated fields
- completed Issue 8: Use the default values of the optional fields of gwt-overlays
- completed Issue 9: If enum's default value is not specified, it should be the first value listed in the enum's type definition
- completed Issue 7: Add optional clear methods on code compiled to gwt_overlay
- fixed Issue 4: .proto files that use "import" create non-compilable Java files
- completed Issue 6: Support the header: syntax = "proto2"; (patch by J.D. Zamfirescu)
- fixed Issue 2: Wrong enum type in generated code of GWT overlays
- fixed benchmark deser bug on protostuff-json (duplicate parser created)
- code generator for json, numeric_json, gwt_json, gwt_numeric_json
- maven archetypes for quick start and rapid development
- benchmark module to relatively compare with protobuf