Comments (13)
@SerializeOnly
and @DeserializeOnly
are cool when you require only one or the other. But may be @Saketme has a point, and moshi-auto-value needs a @Transient
annotation that would completely exclude the field from the generated adapter.
from auto-value-moshi.
from auto-value-moshi.
See #41
from auto-value-moshi.
@vanniktech Interesting. So is it possible to create a custom @JsonQualifier
annotation that can apply on any type of fields?
from auto-value-moshi.
Just look at the project and the tests and you'll see everything
from auto-value-moshi.
Yea I tried going through it, but it seems like I will have to spend a considerable amount of time to understand the code 😅. I will look into it again after office.
Still, considering that moshi supports transient fields, there's no reason for auto-value-moshi to not support it.
from auto-value-moshi.
This one and that one is all you need to go through.
from auto-value-moshi.
I took a deeper look into this. So at the moment adding Transient
could work but in a very nasty way:
- If the return type is a primitive then we just leverage from the default value that the extensions sets and just omit generating the
case
block for it's name. - The fun starts if it's not a primitive, then we have to force (at least that's what comes into my mind) the user to specify a
@Nullable
annotation as well. Otherwise auto-value will generate a null check in the constructor which will throw a soon as the adapter invokes it. And that's ugly (altho not illogical).
What are your thoughts? @rharter would you support such an approach?
from auto-value-moshi.
I'd like to propose accepting any annotation with this name as fuzzy matching (similar to how dagger or autovalue handle nullability annotations). I agree it would be ugly, and would prefer to wait and see if AV opens up its builders to the extension API.
For reference types, would could fail this at annotation compilation time if we don't have a builder to fallback on.
from auto-value-moshi.
We've got a PR in review now for auto-value-gson
that would address this and deal with the challenges @serj-lotutovici identified. It adds an @Ignore
annotation, with an enum that allows you to specify ignoring SERIALIZATION
, DESERIALIZATION
or BOTH
(default).
As you pointed out, this can make code that will crash at runtime, so we updated the constructor of the generated TypeAdapter to require fields that aren't @Nullable
as default values. I think it'll be fairly easy to port over once we get it finished up there.
from auto-value-moshi.
I can take over this, if everyone is ok with that... will come up with a pr later today.
from auto-value-moshi.
I mentioned this in another discussion sometime back, but what do you guys think of creating a shared repo of annotations? I foresee a lot of these being duplicated, or being a bit confusing.
@Ignore
/@Transient
I also still think the better long term solution is to rely on a builder, but with no real idea of when that would happen then I think this is fine for now
from auto-value-moshi.
@hzsweers I'm 100% for a shared repo of annotations and may be other shared functionalities.
from auto-value-moshi.
Related Issues (20)
- MoshiJsonAdapter is not generated if #jsonAdapter(Moshi) is not public HOT 2
- Unresolved reference for AutoValue MoshiJsonAdapter HOT 1
- NoSuchMethodError: com.google.auto.common.MoreTypes.equivalence()
- Unable to build when implement the generic class HOT 4
- Support of default values using builders HOT 7
- autovalue moshi builder support does not work for optionals HOT 5
- Fails to generate adapter factory for inner class
- Generated Factory does not handle generated adapters HOT 1
- Use JsonAdapter nonNull() for nonnull checks
- Generic base types cause compile errors HOT 1
- Collection-valued property exposed as immutable causes compile error HOT 4
- please publish auto-value-moshi-runtime: HOT 2
- incorrect adapter created when using annotation for variable serialization HOT 2
- Gradle runtime dependency name incorrect in README.md HOT 1
- please upload new snapshot version to maven. HOT 8
- Parcelable auto value entities are being generated incorrectly with the 1.0.0 version HOT 9
- runtime artifact accidentally published as annotations HOT 6
- java poet 1.12.0 HOT 5
- Nullable fields not serialized HOT 1
- Failed to resolve: com.ryanharter.auto.value:auto-value-moshi-runtime:1.0.0 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from auto-value-moshi.