Git Product home page Git Product logo

Comments (4)

ZacSweers avatar ZacSweers commented on August 31, 2024

This is tricky to support, because AutoValue just special-cases immutable collections and does a bunch of things under the hood to check if it's applicable. On top of that, not all of them are types that we can reasonably support. Here's another case that autovalue supports that we can't:

@JsonClass(generateAdapter = true, generator = "avm")
@AutoValue
public abstract class Foo {
    public abstract ImmutableList<String> getBar();

    public static Builder builder() {
        return new AutoValue_Foo();
    }

    @AutoValue.Builder
    public abstract static class Builder {
        public abstract Builder setBar(String... barElements);
        public abstract Foo build();
    }
}

It is supported by the underlying overloads of ImmutableSet.copyOf(...), but we can't reuse that infrastructure here the way autovalue can. I think the only safe solution we can suggest is to declare a second setter with the exact type.

from auto-value-moshi.

joelightshoe avatar joelightshoe commented on August 31, 2024

Thanks, that makes a lot of sense. Auto-value-moshi 0.4.7 didn't seem to have this problem... I'm assuming because the builder was not used for deserialization. In my use case, I only need to serialize. It might be nice if there was a way to have certain properties be ignored for serialization or deserialization only, and thereby negating the mismatched types issue. At present, it seems that @AutoTransient acts on the property during both serialization and deserialization.

from auto-value-moshi.

ZacSweers avatar ZacSweers commented on August 31, 2024

Moshi intends to be symmetric. The “only one type of serialization” idea has been discussed many times and every time the conclusion is the same: write your own adapter if you don’t want a symmetric library to be symmetric :)

from auto-value-moshi.

joelightshoe avatar joelightshoe commented on August 31, 2024

Fair enough, thanks.

from auto-value-moshi.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.