# mapstruct-support 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 target fields and therefore cause an error, when the mapper is annotated with `unmappedTargetPolicy = ReportingPolicy.ERROR`. The additional naming strategy makes Mapstruct ignore the withXYZ setters. ## Usage To use the extended naming strategy, just include it as project dependency alongside with mapstruct. ```xml org.mapstruct mapstruct 1.5.5.Final de.muehlencord.mapstruct mapstruct-support 1.5.5 ``` ## Example ```java public class Person { private String firstName; private String lastName; // standard getter / setter - these are covered by mapstruct by default */ public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } /* fluent setter - these are detected as extra setters and would cause a mapping exception, if the mapper is annotated with unmappedTargetPolicy = ReportingPolicy.ERROR. */ public Person withFirstName(String firstName) { this.firstName = firstName; return this; } public Person withLastName(String lastName) { this.lastName = lastName; return this; } } ``` ## 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.