ProductPromotion
Logo

Java

made by https://0x3d.site

GitHub - publicissapient-france/selma: Selma Java bean mapping that compiles
Selma Java bean mapping that compiles. Contribute to publicissapient-france/selma development by creating an account on GitHub.
Visit Site

GitHub - publicissapient-france/selma: Selma Java bean mapping that compiles

GitHub - publicissapient-france/selma: Selma Java bean mapping that compiles

Build Status

Selma logo

Selma Java bean mapping at compile time !

What is Selma ?

S3lm4 say Selma, stands for Stupid Simple Statically Linked Mapper. In fact it is on one side an Annotation Processor that generate Java code to handle the mapping from field to field at compile time. On the other side, it is a Runtime library to instantiate and invoke the generated Mapper.

How does it work ?

First add selma-processor as a provided dependency and selma as a compile dependency to your build. Then, define a Mapper interface describing the mapping you want:

@Mapper
public interface SelmaMapper {

    // Imutable mapping
    OutBean asOutBean(InBean source);

    // Update graph
    OutBean updateOutBean(InBean source, OutBean destination);

}

Then ? Well just use the generated Mapper:


    SelmaMapper mapper = Selma.mapper(SelmaMapper.class);

    OutBean res = mapper.asOutBean(in);

    // Or
    OutBean dest = dao.getById(42);

    OutBean res = mapper.updateOutBean(in, dest);
    // res is the updated bean dest with in values

And voilĂ  !

Visit our site: (http://selma-java.org)

Features

  • Generate code for mapping bean to bean matching fields to fields ** Support for nested bean ** Bean should respect Java property convention
  • Custom field to (embedded)field name mapping
  • Maps Enum using identical values with default value
  • Maps Collection any to any
  • Maps Map any to any
  • Use strict memory duplication for all fields except immutables
  • Support for SourcedBeans to instantiate beans is out of the box
  • Support Type to Type custom mapping using custom mapping methods
  • Gives full feedback at compilation time
  • Break build when mapping does not work Say good bye to mapping errors in production

Usage

First add selma and selma-processor to your pom dependencies:

        <!-- scope provided because the processor is only needed for the compiler -->
        <dependency>
            <groupId>fr.xebia.extras</groupId>
            <artifactId>selma-processor</artifactId>
            <version>1.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- This is the only real dependency you will have in your binaries -->
        <dependency>
            <groupId>fr.xebia.extras</groupId>
            <artifactId>selma</artifactId>
            <version>1.0</version>
        </dependency>

Then, as I said earlier, build your interface with @Mapper annotation and enjoy.

Checkout the example module to have a deeper look.

Help needed, please report issues and ask for features :)

More Resources
to explore the angular.

mail [email protected] to add your project or resources here đŸ”„.

Related Articles
to learn about angular.

FAQ's
to learn more about Angular JS.

mail [email protected] to add more queries here 🔍.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory