mirror of
https://github.com/mapstruct/mapstruct.git
synced 2025-07-12 00:00:08 +08:00
#1608 Make sure that property names for fluent setters starting with is are handled properly (#1620)
This commit is contained in:
parent
fa1ab4b781
commit
f17ddcfb18
@ -156,8 +156,8 @@ public class DefaultAccessorNamingStrategy implements AccessorNamingStrategy {
|
||||
@Override
|
||||
public String getPropertyName(ExecutableElement getterOrSetterMethod) {
|
||||
String methodName = getterOrSetterMethod.getSimpleName().toString();
|
||||
if ( methodName.startsWith( "is" ) || methodName.startsWith( "get" ) || methodName.startsWith( "set" ) ) {
|
||||
return IntrospectorUtils.decapitalize( methodName.substring( methodName.startsWith( "is" ) ? 2 : 3 ) );
|
||||
if ( methodName.startsWith( "get" ) || methodName.startsWith( "set" ) ) {
|
||||
return IntrospectorUtils.decapitalize( methodName.substring( 3 ) );
|
||||
}
|
||||
else if ( isFluentSetter( getterOrSetterMethod ) ) {
|
||||
return methodName;
|
||||
|
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright MapStruct Authors.
|
||||
*
|
||||
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
package org.mapstruct.ap.test.bugs._1608;
|
||||
|
||||
/**
|
||||
* @author Filip Hrisafov
|
||||
*/
|
||||
public class Book {
|
||||
|
||||
private String isbn;
|
||||
|
||||
private int issueYear;
|
||||
|
||||
public String getIsbn() {
|
||||
return isbn;
|
||||
}
|
||||
|
||||
public void setIsbn(String isbn) {
|
||||
this.isbn = isbn;
|
||||
}
|
||||
|
||||
public int getIssueYear() {
|
||||
return issueYear;
|
||||
}
|
||||
|
||||
public void setIssueYear(int issueYear) {
|
||||
this.issueYear = issueYear;
|
||||
}
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
/*
|
||||
* Copyright MapStruct Authors.
|
||||
*
|
||||
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
package org.mapstruct.ap.test.bugs._1608;
|
||||
|
||||
/**
|
||||
* @author Filip Hrisafov
|
||||
*/
|
||||
public class BookDto {
|
||||
|
||||
private final String isbn;
|
||||
private final int issueYear;
|
||||
|
||||
public BookDto(String isbn, int issueYear) {
|
||||
this.isbn = isbn;
|
||||
this.issueYear = issueYear;
|
||||
}
|
||||
|
||||
public String getIsbn() {
|
||||
return isbn;
|
||||
}
|
||||
|
||||
public int getIssueYear() {
|
||||
return issueYear;
|
||||
}
|
||||
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
|
||||
private String isbn;
|
||||
|
||||
private int issueYear;
|
||||
|
||||
public String getIsbn() {
|
||||
return isbn;
|
||||
}
|
||||
|
||||
public Builder isbn(String isbn) {
|
||||
this.isbn = isbn;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int getIssueYear() {
|
||||
return issueYear;
|
||||
}
|
||||
|
||||
public Builder setIssueYear(int issueYear) {
|
||||
this.issueYear = issueYear;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BookDto build() {
|
||||
return new BookDto( isbn, issueYear );
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright MapStruct Authors.
|
||||
*
|
||||
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
package org.mapstruct.ap.test.bugs._1608;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* @author Filip Hrisafov
|
||||
*/
|
||||
@Mapper
|
||||
public interface Issue1608Mapper {
|
||||
|
||||
Issue1608Mapper INSTANCE = Mappers.getMapper( Issue1608Mapper.class );
|
||||
|
||||
BookDto map(Book source);
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright MapStruct Authors.
|
||||
*
|
||||
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
package org.mapstruct.ap.test.bugs._1608;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mapstruct.ap.testutil.IssueKey;
|
||||
import org.mapstruct.ap.testutil.WithClasses;
|
||||
import org.mapstruct.ap.testutil.runner.AnnotationProcessorTestRunner;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* @author Filip Hrisafov
|
||||
*/
|
||||
@RunWith(AnnotationProcessorTestRunner.class)
|
||||
@IssueKey("1608")
|
||||
@WithClasses({
|
||||
Issue1608Mapper.class,
|
||||
Book.class,
|
||||
BookDto.class
|
||||
})
|
||||
public class Issue1608Test {
|
||||
|
||||
@Test
|
||||
public void shouldCorrectlyUseFluentSettersStartingWithIs() {
|
||||
|
||||
Book book = new Book();
|
||||
book.setIsbn( "978-3-16-148410-0" );
|
||||
book.setIssueYear( 2018 );
|
||||
BookDto bookDto = Issue1608Mapper.INSTANCE.map( book );
|
||||
|
||||
assertThat( bookDto.getIsbn() ).isEqualTo( "978-3-16-148410-0" );
|
||||
assertThat( bookDto.getIssueYear() ).isEqualTo( 2018 );
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user