mapstruct#597 Built-In conversion between String and StringBuilder

This commit is contained in:
Kemal Ozcan 2020-10-24 17:57:12 +03:00 committed by Filip Hrisafov
parent 26f62b7ef0
commit e67daa3710
7 changed files with 67 additions and 2 deletions

View File

@ -231,4 +231,15 @@ public final class ConversionUtils {
public static String dateTimeFormat(ConversionContext conversionContext) {
return typeReferenceName( conversionContext, JodaTimeConstants.DATE_TIME_FORMAT_FQN );
}
/**
* Name for {@link java.lang.StringBuilder}.
*
* @param conversionContext Conversion context
*
* @return Name or fully-qualified name.
*/
public static String stringBuilder(ConversionContext conversionContext) {
return typeReferenceName( conversionContext, StringBuilder.class );
}
}

View File

@ -175,6 +175,7 @@ public class Conversions {
register( Character.class, String.class, new CharWrapperToStringConversion() );
register( BigInteger.class, String.class, new BigIntegerToStringConversion() );
register( BigDecimal.class, String.class, new BigDecimalToStringConversion() );
register( StringBuilder.class, String.class, new StringBuilderToStringConversion() );
registerJodaConversions();

View File

@ -0,0 +1,25 @@
/*
* 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.internal.conversion;
import org.mapstruct.ap.internal.model.common.ConversionContext;
/**
* Handles conversion between a target type {@link StringBuilder} and {@link String}.
*
*/
public class StringBuilderToStringConversion extends SimpleConversion {
@Override
protected String getToExpression(ConversionContext conversionContext) {
return "<SOURCE>.toString()";
}
@Override
protected String getFromExpression(ConversionContext conversionContext) {
return "new " + ConversionUtils.stringBuilder( conversionContext ) + "( <SOURCE> )";
}
}

View File

@ -23,6 +23,7 @@ public class Source {
private Boolean boolBool;
private char c;
private Character cc;
private StringBuilder sb;
private Object object;
public byte getB() {
@ -160,4 +161,12 @@ public class Source {
public void setObject(Object object) {
this.object = object;
}
public StringBuilder getSb() {
return sb;
}
public void setSb(StringBuilder sb) {
this.sb = sb;
}
}

View File

@ -48,6 +48,7 @@ public class StringConversionTest {
source.setBoolBool( Boolean.TRUE );
source.setC( 'G' );
source.setCc( 'H' );
source.setSb( new StringBuilder( "SB" ) );
Target target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
@ -68,6 +69,7 @@ public class StringConversionTest {
assertThat( target.getBoolBool() ).isEqualTo( "true" );
assertThat( target.getC() ).isEqualTo( "G" );
assertThat( target.getCc() ).isEqualTo( "H" );
assertThat( target.getSb() ).isEqualTo( "SB" );
}
@Test
@ -89,6 +91,7 @@ public class StringConversionTest {
target.setBoolBool( "true" );
target.setC( "G" );
target.setCc( "H" );
target.setSb( "SB" );
Source source = SourceTargetMapper.INSTANCE.targetToSource( target );
@ -109,6 +112,7 @@ public class StringConversionTest {
assertThat( source.getBoolBool() ).isEqualTo( true );
assertThat( source.getC() ).isEqualTo( 'G' );
assertThat( source.getCc() ).isEqualTo( 'H' );
assertThat( source.getSb().toString() ).isEqualTo( "SB" );
}
@Test

View File

@ -23,6 +23,7 @@ public class Target {
private String boolBool;
private String c;
private String cc;
private String sb;
private String object;
public String getB() {
@ -160,4 +161,12 @@ public class Target {
public void setObject(String object) {
this.object = object;
}
public String getSb() {
return sb;
}
public void setSb(String sb) {
this.sb = sb;
}
}

View File

@ -9,8 +9,8 @@ import javax.annotation.Generated;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2016-12-30T19:22:52+0100",
comments = "version: , compiler: javac, environment: Java 1.8.0_112 (Oracle Corporation)"
date = "2020-10-24T17:41:29+0300",
comments = "version: , compiler: javac, environment: Java 1.8.0_265 (AdoptOpenJDK)"
)
public class SourceTargetMapperImpl implements SourceTargetMapper {
@ -54,6 +54,9 @@ public class SourceTargetMapperImpl implements SourceTargetMapper {
if ( source.getCc() != null ) {
target.setCc( source.getCc().toString() );
}
if ( source.getSb() != null ) {
target.setSb( source.getSb().toString() );
}
return target;
}
@ -115,6 +118,9 @@ public class SourceTargetMapperImpl implements SourceTargetMapper {
source.setCc( target.getCc().charAt( 0 ) );
}
source.setObject( target.getObject() );
if ( target.getSb() != null ) {
source.setSb( new StringBuilder( target.getSb() ) );
}
return source;
}