Git Product home page Git Product logo

Comments (3)

Whathecode avatar Whathecode commented on May 27, 2024

Similarly, all extending types from TaskDescriptor need to specify MeasuresSerializer to be used for the measures property.

@Serializable
data class IndefiniteTask(
    override val name: String,
    @Serializable( with = MeasuresSerializer::class )
    override val measures: List<Measure> ) : TaskDescriptor()

from carp.core-kotlin.

Whathecode avatar Whathecode commented on May 27, 2024

I believe this is only needed for deserialization, thus this is less important for extending types in external libraries outside of our control (serialization will still work correctly).

Concretely, this thus only impacts 'server-side'. Each time we introduce 'default' supported tasks and measures, we need to remember to apply these attributes correctly. In case there is no way to reuse the serializer defined on the base type, we could consider implementing a runtime check which triggers an exception in case the attribute is not defined.

from carp.core-kotlin.

Whathecode avatar Whathecode commented on May 27, 2024

In Kotlin 1.3 the equivalent of this will become a Polymorph attribute which needs to be applied for polymorph serialization to work.

Having looked more into this, I now believe this will most likely remain a requirement. The question then becomes, how can we enforce correct implementations of deriving types. We could check in a static initializers of such types whether the attribute is applied correctly, and throw a suitable runtime error in case it is not present.

from carp.core-kotlin.

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.