12 Commits

4 changed files with 71 additions and 11 deletions

8
.gitignore vendored
View File

@ -132,3 +132,11 @@ gradle-app.setting
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 # # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
# gradle/wrapper/gradle-wrapper.properties # gradle/wrapper/gradle-wrapper.properties
## maven release plugin
*.releaseBackup
release.properties
## maven versions plugin
*.versionsBackup

View File

@ -2,13 +2,31 @@
Additional DefaultAccessorNamingStrategy to support fluent API withXYZ setters. Additional DefaultAccessorNamingStrategy to support fluent API withXYZ setters.
[![License](https://img.shields.io/badge/License-Apache%202.0-yellowgreen.svg)](https://github.com/mapstruct/mapstruct/blob/master/LICENSE.txt)
* [What is MapStruct?](#what-is-mapstruct)
* [Features](#features)
* [Usage](#usage)
* [Example](#example)
* [Requirements](#requirements)
* [Building from Source](#building-from-source)
* [Licensing](#licensing)
## What is MapStruct?
MapStruct is a Java [annotation processor](https://docs.oracle.com/javase/6/docs/technotes/guides/apt/index.html) for the generation of type-safe and performant mappers for Java bean classes.
To learn more about MapStruct have a look at the [mapstruct](https://github.com/mapstruct/mapstruct) repository or the [website](https://mapstruct.org/)
## Features
Mapstruct default naming strategy detects the methods `withFirstName` and `withLastName` (see example below) as extra Mapstruct default naming strategy detects the methods `withFirstName` and `withLastName` (see example below) as extra
target fields and therefore cause an error, when the mapper is annotated with target fields and therefore cause an error, when the mapper is annotated with
`unmappedTargetPolicy = ReportingPolicy.ERROR`. `unmappedTargetPolicy = ReportingPolicy.ERROR`.
The additional naming strategy makes Mapstruct ignore the withXYZ setters. The additional naming strategy makes Mapstruct ignore the withXYZ setters.
## Installation ## Usage
To use the extended naming strategy, just include it as project dependency alongside with mapstruct. To use the extended naming strategy, just include it as project dependency alongside with mapstruct.
@ -18,12 +36,12 @@ To use the extended naming strategy, just include it as project dependency along
<dependency> <dependency>
<groupId>org.mapstruct</groupId> <groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId> <artifactId>mapstruct</artifactId>
<version>1.4.2.Final</version> <version>1.5.5.Final</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>de.muehlencord.mapstruct</groupId> <groupId>de.muehlencord.mapstruct</groupId>
<artifactId>mapstruct-support</artifactId> <artifactId>mapstruct-support</artifactId>
<version>1.4.2</version> <version>1.5.5</version>
</dependency> </dependency>
</dependencies> </dependencies>
``` ```
@ -54,7 +72,7 @@ public class Person {
} }
/* fluent setter - these are detected as extra setters and would /* fluent setter - these are detected as extra setters and would
cause an mapping exception, if the mapper is annotated with cause a mapping exception, if the mapper is annotated with
unmappedTargetPolicy = ReportingPolicy.ERROR. unmappedTargetPolicy = ReportingPolicy.ERROR.
*/ */
@ -71,3 +89,17 @@ public class Person {
``` ```
## Requirements
The MapStruct plugin requires Java 11 or later
## Building from Source
mapstruct-support uses maven as build system. Simple execute
```shell
mvn clean install
```
## Licensing
The MapStruct plugin is licensed under the Apache License, Version 2.0 (the "License"); you may not use it except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0.

4
copyright.txt Normal file
View File

@ -0,0 +1,4 @@
Contributors
============
Joern Muehlencord - https://github.com/jomu78

30
pom.xml
View File

@ -4,11 +4,16 @@
<groupId>de.muehlencord.mapstruct</groupId> <groupId>de.muehlencord.mapstruct</groupId>
<artifactId>mapstruct-support</artifactId> <artifactId>mapstruct-support</artifactId>
<version>1.4.2</version> <version>1.6.3</version>
<properties> <properties>
<maven.compiler.source>11</maven.compiler.source> <java.version>21</java.version>
<maven.compiler.target>11</maven.compiler.target> <maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<maven.compiler.release>21</maven.compiler.release>
<mapstruct.version>1.6.3</mapstruct.version>
<maven-release-plugin.version>3.1.1</maven-release-plugin.version>
</properties> </properties>
<inceptionYear>2021</inceptionYear> <inceptionYear>2021</inceptionYear>
@ -21,10 +26,21 @@
<url>https://jomu.timelord.de/git/jomu/mapstruct-support/issues</url> <url>https://jomu.timelord.de/git/jomu/mapstruct-support/issues</url>
</issueManagement> </issueManagement>
<distributionManagement>
<repository>
<id>jomu-gitea</id>
<url>https://jomu.timelord.de/git/api/packages/jomu/maven</url>
</repository>
<snapshotRepository>
<id>jomu-gitea</id>
<url>https://jomu.timelord.de/git/api/packages/jomu/maven</url>
</snapshotRepository>
</distributionManagement>
<scm> <scm>
<connection>scm:git:https://jomu.timelord.de/git/jomu/mapstruct-support</connection> <connection>scm:git:https://jomu.timelord.de/git/jomu/mapstruct-support</connection>
<developerConnection>scm:git:git@jomu.timelord.de:jomu/mapstruct-support.git</developerConnection> <developerConnection>scm:git:git@jomu.timelord.de:jomu/mapstruct-support.git</developerConnection>
<tag>mapstruct-support-1.4.2</tag> <tag>mapstruct-support-1.6.3</tag>
</scm> </scm>
<developers> <developers>
@ -46,16 +62,16 @@
<dependency> <dependency>
<groupId>org.mapstruct</groupId> <groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId> <artifactId>mapstruct-processor</artifactId>
<version>1.4.2.Final</version> <version>${mapstruct.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
<artifactId>maven-release-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<version>3.0.0-M6</version> <artifactId>maven-release-plugin</artifactId>
<version>${maven-release-plugin.version}</version>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>