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) {
|
public static String dateTimeFormat(ConversionContext conversionContext) {
|
||||||
return typeReferenceName( conversionContext, JodaTimeConstants.DATE_TIME_FORMAT_FQN );
|
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( Character.class, String.class, new CharWrapperToStringConversion() );
|
||||||
register( BigInteger.class, String.class, new BigIntegerToStringConversion() );
|
register( BigInteger.class, String.class, new BigIntegerToStringConversion() );
|
||||||
register( BigDecimal.class, String.class, new BigDecimalToStringConversion() );
|
register( BigDecimal.class, String.class, new BigDecimalToStringConversion() );
|
||||||
|
register( StringBuilder.class, String.class, new StringBuilderToStringConversion() );
|
||||||
|
|
||||||
registerJodaConversions();
|
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 Boolean boolBool;
|
||||||
private char c;
|
private char c;
|
||||||
private Character cc;
|
private Character cc;
|
||||||
|
private StringBuilder sb;
|
||||||
private Object object;
|
private Object object;
|
||||||
|
|
||||||
public byte getB() {
|
public byte getB() {
|
||||||
@ -160,4 +161,12 @@ public class Source {
|
|||||||
public void setObject(Object object) {
|
public void setObject(Object object) {
|
||||||
this.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.setBoolBool( Boolean.TRUE );
|
||||||
source.setC( 'G' );
|
source.setC( 'G' );
|
||||||
source.setCc( 'H' );
|
source.setCc( 'H' );
|
||||||
|
source.setSb( new StringBuilder( "SB" ) );
|
||||||
|
|
||||||
Target target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
|
Target target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
|
||||||
|
|
||||||
@ -68,6 +69,7 @@ public class StringConversionTest {
|
|||||||
assertThat( target.getBoolBool() ).isEqualTo( "true" );
|
assertThat( target.getBoolBool() ).isEqualTo( "true" );
|
||||||
assertThat( target.getC() ).isEqualTo( "G" );
|
assertThat( target.getC() ).isEqualTo( "G" );
|
||||||
assertThat( target.getCc() ).isEqualTo( "H" );
|
assertThat( target.getCc() ).isEqualTo( "H" );
|
||||||
|
assertThat( target.getSb() ).isEqualTo( "SB" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -89,6 +91,7 @@ public class StringConversionTest {
|
|||||||
target.setBoolBool( "true" );
|
target.setBoolBool( "true" );
|
||||||
target.setC( "G" );
|
target.setC( "G" );
|
||||||
target.setCc( "H" );
|
target.setCc( "H" );
|
||||||
|
target.setSb( "SB" );
|
||||||
|
|
||||||
Source source = SourceTargetMapper.INSTANCE.targetToSource( target );
|
Source source = SourceTargetMapper.INSTANCE.targetToSource( target );
|
||||||
|
|
||||||
@ -109,6 +112,7 @@ public class StringConversionTest {
|
|||||||
assertThat( source.getBoolBool() ).isEqualTo( true );
|
assertThat( source.getBoolBool() ).isEqualTo( true );
|
||||||
assertThat( source.getC() ).isEqualTo( 'G' );
|
assertThat( source.getC() ).isEqualTo( 'G' );
|
||||||
assertThat( source.getCc() ).isEqualTo( 'H' );
|
assertThat( source.getCc() ).isEqualTo( 'H' );
|
||||||
|
assertThat( source.getSb().toString() ).isEqualTo( "SB" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -23,6 +23,7 @@ public class Target {
|
|||||||
private String boolBool;
|
private String boolBool;
|
||||||
private String c;
|
private String c;
|
||||||
private String cc;
|
private String cc;
|
||||||
|
private String sb;
|
||||||
private String object;
|
private String object;
|
||||||
|
|
||||||
public String getB() {
|
public String getB() {
|
||||||
@ -160,4 +161,12 @@ public class Target {
|
|||||||
public void setObject(String object) {
|
public void setObject(String object) {
|
||||||
this.object = 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(
|
@Generated(
|
||||||
value = "org.mapstruct.ap.MappingProcessor",
|
value = "org.mapstruct.ap.MappingProcessor",
|
||||||
date = "2016-12-30T19:22:52+0100",
|
date = "2020-10-24T17:41:29+0300",
|
||||||
comments = "version: , compiler: javac, environment: Java 1.8.0_112 (Oracle Corporation)"
|
comments = "version: , compiler: javac, environment: Java 1.8.0_265 (AdoptOpenJDK)"
|
||||||
)
|
)
|
||||||
public class SourceTargetMapperImpl implements SourceTargetMapper {
|
public class SourceTargetMapperImpl implements SourceTargetMapper {
|
||||||
|
|
||||||
@ -54,6 +54,9 @@ public class SourceTargetMapperImpl implements SourceTargetMapper {
|
|||||||
if ( source.getCc() != null ) {
|
if ( source.getCc() != null ) {
|
||||||
target.setCc( source.getCc().toString() );
|
target.setCc( source.getCc().toString() );
|
||||||
}
|
}
|
||||||
|
if ( source.getSb() != null ) {
|
||||||
|
target.setSb( source.getSb().toString() );
|
||||||
|
}
|
||||||
|
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
@ -115,6 +118,9 @@ public class SourceTargetMapperImpl implements SourceTargetMapper {
|
|||||||
source.setCc( target.getCc().charAt( 0 ) );
|
source.setCc( target.getCc().charAt( 0 ) );
|
||||||
}
|
}
|
||||||
source.setObject( target.getObject() );
|
source.setObject( target.getObject() );
|
||||||
|
if ( target.getSb() != null ) {
|
||||||
|
source.setSb( new StringBuilder( target.getSb() ) );
|
||||||
|
}
|
||||||
|
|
||||||
return source;
|
return source;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user