mirror of
https://github.com/mapstruct/mapstruct.git
synced 2025-07-12 00:00:08 +08:00
mapstruct#597 Built-In conversion between String and StringBuilder
This commit is contained in:
parent
26f62b7ef0
commit
e67daa3710
@ -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 );
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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> )";
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user