Coder Social home page Coder Social logo

Comments (5)

Chessray avatar Chessray commented on June 25, 2024

I like the idea. If I'm not mistaken, we wouldn't even need a special annotation. Any method with @InheritInverseConfiguration that matches the type parameters as inverting the Converter declaration can already lead to generating this new Inverted Mapper class.

from mapstruct-spring-extensions.

pw-lehre avatar pw-lehre commented on June 25, 2024

If it works automatically without further configuration, that would be even better.

As a stopgap solution, I'm currently using Spring magic to register @InheritInverseConfiguration-annotated methods in the Spring converter registry. But those methods aren't in the ConversionServiceAdapter, i.e. other Mappers cannot discover and use the inverse mappers. In short, solving this properly in maptruct would help here.

from mapstruct-spring-extensions.

Chessray avatar Chessray commented on June 25, 2024

Outline:

  • Any method annotated with @InheritInverseConfiguration whose signature is the exact opposite of the Converter type declaration will lead to the generation of an InvertedMapper class outlined above.
  • In order to keep the pattern, the generated adapter class should contain a matching method.
  • For backward compatibility, this behavior requires some explicit flag or new annotation to be set.

from mapstruct-spring-extensions.

Chessray avatar Chessray commented on June 25, 2024

@pw-lehre I've done an implementation in this branch. While I'm still polishing some of the edges (including documentation), please feel free to have a go at it and check whether this looks like what you've got in mind.

In the end, I went for requiring an additional annotation @DelegatingConverter which will generate a full class similar to your example. This new annotation can even be used without @InheritInverseConfiguration, although I can't see a use case for that.

from mapstruct-spring-extensions.

pw-lehre avatar pw-lehre commented on June 25, 2024

@Chessray Thanks a lot for the implementation, I did not expect that so many changes would be required for this. I'll try it out.

from mapstruct-spring-extensions.

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.