aboutsummaryrefslogtreecommitdiff
path: root/src/google/protobuf/compiler/java/java_message_builder.cc
Commit message (Collapse)AuthorAgeFilesLines
* Down-integrate from google3.Feng Xiao2018-08-081-20/+16
|
* Integrated internal changes from GoogleAdam Cozzette2018-03-131-4/+1
|
* Java: Generate warning free codeDavid Ostrovsky2018-01-271-0/+21
| | | | Partially fixes #4230.
* Merge master into 3.4.xJisi Liu2017-07-181-3/+3
|\
| * Issue 3112: Object class with fully qualified namelundefugl2017-05-241-3/+3
| |
* | Merge from Google internal for 3.4 releaseJisi Liu2017-07-181-30/+18
|/
* Integrated internal changes from GoogleAdam Cozzette2016-11-171-2/+2
|
* Integrate internal changesBo Yang2016-10-101-2/+11
|
* Versioning Java GeneratedMessage.Feng Xiao2016-07-191-9/+16
| | | | Change-Id: Ib2bb5042deaabdf452d5be2ad1ce40d739ad8d1b
* Fix compatiblity issues.Feng Xiao2016-07-141-0/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Integrate google internal changes.Jisi Liu2016-03-301-5/+6
|
* throw IOException instead of InvalidProtocolBufferException when appropriateJoshua Humphries2016-01-151-1/+1
|
* down-integrate internal changesBo Yang2015-05-211-0/+661