aboutsummaryrefslogtreecommitdiffhomepage
path: root/java/core/src/main/java/com/google/protobuf/GeneratedMessage.java
Commit message (Collapse)AuthorAge
* Fix lint warnings in the javalite branch.Gravatar Jisi Liu2017-03-09
|
* Fix compatiblity issues.Gravatar Feng Xiao2016-07-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently some public API methods are defined in GenreatedMessage.java and they have a generric return type: class GeneratedMessage { class Builder<BuilderType extends Builder<BuilderType>> { public BuilderType setField(...); public BuilderType setExtension(...); } } With these definitions, the compiled byte code of a callsite will have a direct reference to GeneratedMessage. For example: fooBuilder.setField(...); becomes: ##: invokevirtual // Method Builder.setField:(...)LGeneratedMessage.Builder ##: checkcast // class Builder This will prevent us from updating generated classes to subclass a different versioned GeneratedMessageV3 class in the future (we can't do it in a binary compatible way). This change addresses the problem by overriding these methods directly in the generated class: class Foo { class Builder extends GeneratedMessage.Builder<Builder> { public Builder setField(...) { return super.setField(...); } } } After this, fooBuilder.setField(...) will be compiled to: ##: invokevirtual // Method Builder.setField:(...)LFoo.Builder The callsites will no longer reference GeneratedMessage directly and we can change Foo to subclass GeneratedMessageV3 without breaking binary compatiblity. The downside of this change is: 1. It increases generated code size (though it saves some instructions on the callsites). 2. We can never stop generating these overrides because doing that will break binary compatibility. Change-Id: I879afbbc1325a66324a51565e017143489b06e97
* Integrated internal changes from GoogleGravatar Adam Cozzette2016-06-29
| | | | This includes all internal changes from around May 20 to now.
* Merge branch 'master' of github.com:google/protobufGravatar Jisi Liu2016-04-28
|\
* | Down integrate from Google internal.Gravatar Jisi Liu2016-04-28
| |
| * Added serialVersionUID to ExtendableMessage.Gravatar Jakub Kukul2016-04-22
|/
* Integrate google internal changes.Gravatar Jisi Liu2016-03-30
|
* throw IOException instead of InvalidProtocolBufferException when appropriateGravatar Joshua Humphries2016-01-15
|
* Restructuring protobuf to multiple modulesGravatar nmittler2016-01-13
protobuf/java will become a parent pom that will contain two modules: core - contains all of the code for the protobuf-java artifact util - contains all of the code for the protobuf-java-util artifact Also cleaned up various Maven warnings.