From 23f3d4a3c1810715d23c2d5de634d88ba492ad33 Mon Sep 17 00:00:00 2001 From: sjaakd Date: Sat, 22 Mar 2014 22:19:19 +0100 Subject: [PATCH] #157 accomodating for conversionY( methodX ( parameter ) ) --- .../BigDecimalToBigIntegerConversion.java | 8 +-- .../BigDecimalToPrimitiveConversion.java | 11 ++-- .../BigDecimalToStringConversion.java | 8 +-- .../BigDecimalToWrapperConversion.java | 12 ++-- .../BigIntegerToPrimitiveConversion.java | 16 ++--- .../BigIntegerToStringConversion.java | 8 +-- .../BigIntegerToWrapperConversion.java | 17 ++--- .../ap/conversion/CharToStringConversion.java | 8 +-- .../CharWrapperToStringConversion.java | 8 +-- .../ap/conversion/DateToStringConversion.java | 16 +++-- .../ap/conversion/EnumStringConversion.java | 8 +-- .../PrimitiveToPrimitiveConversion.java | 8 +-- .../PrimitiveToStringConversion.java | 10 +-- .../PrimitiveToWrapperConversion.java | 10 +-- .../ap/conversion/SimpleConversion.java | 62 ++++++++++--------- .../conversion/WrapperToStringConversion.java | 10 +-- .../WrapperToWrapperConversion.java | 12 ++-- .../mapstruct/ap/model/TypeConversion.java | 32 +++++++--- .../org.mapstruct.ap.model.TypeConversion.ftl | 2 +- 19 files changed, 136 insertions(+), 130 deletions(-) diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToBigIntegerConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToBigIntegerConversion.java index b28ca8de2..600b4b55d 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToBigIntegerConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToBigIntegerConversion.java @@ -35,13 +35,13 @@ import static org.mapstruct.ap.util.Collections.asSet; public class BigDecimalToBigIntegerConversion extends SimpleConversion { @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { - return sourceReference + ".toBigInteger()"; + public String[] getToExpressions(ConversionContext conversionContext) { + return new String[]{ "", ".toBigInteger()" }; } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { - return "new BigDecimal( " + targetReference + " )"; + public String[] getFromExpressions(ConversionContext conversionContext) { + return new String[]{"new BigDecimal( ", " )"}; } @Override diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToPrimitiveConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToPrimitiveConversion.java index acb7c3eb7..7594114e7 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToPrimitiveConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToPrimitiveConversion.java @@ -44,16 +44,13 @@ public class BigDecimalToPrimitiveConversion extends SimpleConversion { } @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { - return sourceReference + "." + targetType.getName() + "Value()"; + public String[] getToExpressions(ConversionContext conversionContext) { + return new String[]{ "", "." + targetType.getName() + "Value()" }; } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { - StringBuilder conversion = new StringBuilder( "BigDecimal.valueOf( " ); - conversion.append( targetReference ).append( " )" ); - - return conversion.toString(); + public String[] getFromExpressions(ConversionContext conversionContext) { + return new String[]{ "BigDecimal.valueOf( ", " )" }; } @Override diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToStringConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToStringConversion.java index 15856de5d..da053aac7 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToStringConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToStringConversion.java @@ -34,13 +34,13 @@ import static org.mapstruct.ap.util.Collections.asSet; public class BigDecimalToStringConversion extends SimpleConversion { @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { - return sourceReference + ".toString()"; + public String[] getToExpressions(ConversionContext conversionContext) { + return new String[]{ "", ".toString()" }; } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { - return "new BigDecimal( " + targetReference + " )"; + public String[] getFromExpressions(ConversionContext conversionContext) { + return new String[]{ "new BigDecimal( ", " )" }; } @Override diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToWrapperConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToWrapperConversion.java index f4a9e35b1..735c2047a 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToWrapperConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToWrapperConversion.java @@ -45,17 +45,13 @@ public class BigDecimalToWrapperConversion extends SimpleConversion { } @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { - return sourceReference + "." + targetType.getName() + "Value()"; + public String[] getToExpressions(ConversionContext conversionContext) { + return new String[]{ "", "." + targetType.getName() + "Value()" }; } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { - StringBuilder conversion = new StringBuilder( "BigDecimal.valueOf( " ); - conversion.append( targetReference ); - conversion.append( " )" ); - - return conversion.toString(); + public String[] getFromExpressions(ConversionContext conversionContext) { + return new String[]{ "BigDecimal.valueOf( ", " )" }; } @Override diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToPrimitiveConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToPrimitiveConversion.java index 5189259d4..475b00c1e 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToPrimitiveConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToPrimitiveConversion.java @@ -44,21 +44,17 @@ public class BigIntegerToPrimitiveConversion extends SimpleConversion { } @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { - return sourceReference + "." + targetType.getName() + "Value()"; + public String[] getToExpressions(ConversionContext conversionContext) { + return new String[]{ "", "." + targetType.getName() + "Value()" }; } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { - StringBuilder conversion = new StringBuilder( "BigInteger.valueOf( " ); - + public String[] getFromExpressions(ConversionContext conversionContext) { + String castString = ""; if ( targetType == float.class || targetType == double.class ) { - conversion.append( "(long) " ); + castString = "(long) "; } - - conversion.append( targetReference ).append( " )" ); - - return conversion.toString(); + return new String[]{ "BigInteger.valueOf( " + castString, " )" }; } @Override diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToStringConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToStringConversion.java index 40c6580d4..1ada3a980 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToStringConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToStringConversion.java @@ -34,13 +34,13 @@ import static org.mapstruct.ap.util.Collections.asSet; public class BigIntegerToStringConversion extends SimpleConversion { @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { - return sourceReference + ".toString()"; + public String[] getToExpressions(ConversionContext conversionContext) { + return new String[]{ "", ".toString()" }; } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { - return "new BigInteger( " + targetReference + " )"; + public String[] getFromExpressions(ConversionContext conversionContext) { + return new String[]{ "new BigInteger( ", " )" }; } @Override diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToWrapperConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToWrapperConversion.java index a8b8d8468..8a24e3edc 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToWrapperConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToWrapperConversion.java @@ -45,24 +45,19 @@ public class BigIntegerToWrapperConversion extends SimpleConversion { } @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { - return sourceReference + "." + targetType.getName() + "Value()"; + public String[] getToExpressions(ConversionContext conversionContext) { + return new String[]{ "", "." + targetType.getName() + "Value()" }; } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { - StringBuilder conversion = new StringBuilder( "BigInteger.valueOf( " ); - - conversion.append( targetReference ); + public String[] getFromExpressions(ConversionContext conversionContext) { + String toLongValueStr = ""; if ( targetType == float.class || targetType == double.class ) { - conversion.append( ".longValue()" ); + toLongValueStr = ".longValue()"; } - conversion.append( " )" ); - - - return conversion.toString(); + return new String[]{ "BigInteger.valueOf( ", toLongValueStr + " )" }; } @Override diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/CharToStringConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/CharToStringConversion.java index b191c5983..b5569bf1f 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/CharToStringConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/CharToStringConversion.java @@ -28,12 +28,12 @@ import org.mapstruct.ap.model.common.ConversionContext; public class CharToStringConversion extends SimpleConversion { @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { - return "String.valueOf( " + sourceReference + " )"; + public String[] getToExpressions(ConversionContext conversionContext) { + return new String[]{ "String.valueOf( ", " )" }; } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { - return targetReference + ".charAt( 0 )"; + public String[] getFromExpressions(ConversionContext conversionContext) { + return new String[]{ "", ".charAt( 0 )" }; } } diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/CharWrapperToStringConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/CharWrapperToStringConversion.java index 3080bcdf6..859a4dc41 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/CharWrapperToStringConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/CharWrapperToStringConversion.java @@ -28,12 +28,12 @@ import org.mapstruct.ap.model.common.ConversionContext; public class CharWrapperToStringConversion extends SimpleConversion { @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { - return sourceReference + ".toString()"; + public String[] getToExpressions(ConversionContext conversionContext) { + return new String[]{ "", ".toString()" }; } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { - return targetReference + ".charAt( 0 )"; + public String[] getFromExpressions(ConversionContext conversionContext) { + return new String[]{ "", ".charAt( 0 )" }; } } diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/DateToStringConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/DateToStringConversion.java index b713f7d0e..e35589e58 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/DateToStringConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/DateToStringConversion.java @@ -42,7 +42,9 @@ public class DateToStringConversion implements ConversionProvider { return new TypeConversion( asSet( conversionContext.getTypeFactory().getType( SimpleDateFormat.class ) ), Collections.emptyList(), - getConversionString( sourceReference, conversionContext, "format" ) + getOpenExpression( conversionContext, "format" ), + sourceReference, + getCloseExpression() ); } @@ -51,11 +53,13 @@ public class DateToStringConversion implements ConversionProvider { return new TypeConversion( asSet( conversionContext.getTypeFactory().getType( SimpleDateFormat.class ) ), Arrays.asList( conversionContext.getTypeFactory().getType( ParseException.class ) ), - getConversionString( targetReference, conversionContext, "parse" ) + getOpenExpression( conversionContext, "parse" ), + targetReference, + getCloseExpression() ); } - private String getConversionString(String targetReference, ConversionContext conversionContext, String method) { + private String getOpenExpression(ConversionContext conversionContext, String method) { StringBuilder conversionString = new StringBuilder( "new SimpleDateFormat(" ); if ( conversionContext.getDateFormat() != null ) { @@ -67,9 +71,11 @@ public class DateToStringConversion implements ConversionProvider { conversionString.append( ")." ); conversionString.append( method ); conversionString.append( "( " ); - conversionString.append( targetReference ); - conversionString.append( " )" ); return conversionString.toString(); } + + private String getCloseExpression() { + return " )"; + } } diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/EnumStringConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/EnumStringConversion.java index c4af11a52..01f050894 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/EnumStringConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/EnumStringConversion.java @@ -33,13 +33,13 @@ import static org.mapstruct.ap.util.Collections.asSet; public class EnumStringConversion extends SimpleConversion { @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { - return sourceReference + ".toString()"; + public String[] getToExpressions(ConversionContext conversionContext) { + return new String[] {"", ".toString()" }; } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { - return "Enum.valueOf( " + conversionContext.getTargetType().getName() + ".class, " + targetReference + " )"; + public String[] getFromExpressions(ConversionContext conversionContext) { + return new String[] { "Enum.valueOf( " + conversionContext.getTargetType().getName() + ".class, ", " )" }; } @Override diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/PrimitiveToPrimitiveConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/PrimitiveToPrimitiveConversion.java index eca0bd810..2e9dbbba6 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/PrimitiveToPrimitiveConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/PrimitiveToPrimitiveConversion.java @@ -38,12 +38,12 @@ public class PrimitiveToPrimitiveConversion extends SimpleConversion { } @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { - return sourceReference; + public String[] getToExpressions(ConversionContext conversionContext) { + return new String[] {"", ""}; } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { - return "(" + sourceType + ") " + targetReference; + public String[] getFromExpressions(ConversionContext conversionContext) { + return new String[] { "(" + sourceType + ") ", "" }; } } diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/PrimitiveToStringConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/PrimitiveToStringConversion.java index d9813eb2d..0c6e9f9b2 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/PrimitiveToStringConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/PrimitiveToStringConversion.java @@ -43,13 +43,13 @@ public class PrimitiveToStringConversion extends SimpleConversion { } @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { - return "String.valueOf( " + sourceReference + " )"; + public String[] getToExpressions(ConversionContext conversionContext) { + return new String[] { "String.valueOf( ", " )" }; } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { - return wrapperType.getSimpleName() + ".parse" + Strings.capitalize( sourceType.getSimpleName() ) + "( " + - targetReference + " )"; + public String[] getFromExpressions(ConversionContext conversionContext) { + return new String[] { wrapperType.getSimpleName() + ".parse" + + Strings.capitalize( sourceType.getSimpleName() ) + "( ", " )" }; } } diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/PrimitiveToWrapperConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/PrimitiveToWrapperConversion.java index 5ec19b53b..1090c1369 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/PrimitiveToWrapperConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/PrimitiveToWrapperConversion.java @@ -45,17 +45,17 @@ public class PrimitiveToWrapperConversion extends SimpleConversion { } @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { + public String[] getToExpressions(ConversionContext conversionContext) { if ( sourceType == targetType ) { - return sourceReference; + return new String[] { "", "" }; } else { - return "(" + targetType.getName() + ") " + sourceReference; + return new String[] { "(" + targetType.getName() + ") ", "" }; } } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { - return targetReference + "." + sourceType.getName() + "Value()"; + public String[] getFromExpressions(ConversionContext conversionContext) { + return new String[] { "", "." + sourceType.getName() + "Value()" }; } } diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/SimpleConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/SimpleConversion.java index 288c41c80..e5b47146d 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/SimpleConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/SimpleConversion.java @@ -34,22 +34,47 @@ public abstract class SimpleConversion implements ConversionProvider { @Override public TypeConversion to(String sourceReference, ConversionContext conversionContext) { + String[] toExpressions = getToExpressions( conversionContext ); return new TypeConversion( - getToConversionImportTypes( conversionContext ), - Collections.emptyList(), - getToConversionString( sourceReference, conversionContext ) - ); + getToConversionImportTypes( conversionContext ), + Collections.emptyList(), + toExpressions[0], + sourceReference, + toExpressions[1] ); } @Override public TypeConversion from(String targetReference, ConversionContext conversionContext) { + String[] fromExpressions = getFromExpressions( conversionContext ); return new TypeConversion( - getFromConversionImportTypes( conversionContext ), - Collections.emptyList(), - getFromConversionString( targetReference, conversionContext ) - ); + getFromConversionImportTypes( conversionContext ), + Collections.emptyList(), + fromExpressions[0], + targetReference, + fromExpressions[1] ); } + /** + * Returns the conversion string (opening and closing part) from source to target. + * + * @param conversionContext ConversionContext providing optional information required for creating the conversion. + * + * @return The conversion string from source to target. toExpressions[0] = openExpression, + * toExpressions[1] = closeExpression + */ + protected abstract String[] getToExpressions( ConversionContext conversionContext ); + + /** + * Creates the conversion string (opening and closing part) from target to source. + * + * @param conversionContext ConversionContext providing optional information required for creating + * the conversion. + * + * @return The conversion string from target to source, fromExpressions[0] = openExpression, + * fromExpressions[1] = closeExpression + */ + protected abstract String[] getFromExpressions( ConversionContext conversionContext ); + /** * Returns a set with imported types of the "from" conversion. Defaults to an empty set; can be overridden in * sub-classes to return the required types. @@ -72,25 +97,4 @@ public abstract class SimpleConversion implements ConversionProvider { return Collections.emptySet(); } - /** - * Returns the conversion string from source to target. - * - * @param sourceReference A reference to the source object, e.g. {@code beanName.getFoo()}. - * @param conversionContext ConversionContext providing optional information required for creating the conversion. - * - * @return The conversion string from source to target. - */ - protected abstract String getToConversionString(String sourceReference, ConversionContext conversionContext); - - /** - * Creates the conversion string from target to source. - * - * @param targetReference A reference to the targetReference object, e.g. - * {@code beanName.getFoo()}. - * @param conversionContext ConversionContext providing optional information required for creating - * the conversion. - * - * @return The conversion string from target to source. - */ - protected abstract String getFromConversionString(String targetReference, ConversionContext conversionContext); } diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/WrapperToStringConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/WrapperToStringConversion.java index 1e7950c84..4ec4231f9 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/WrapperToStringConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/WrapperToStringConversion.java @@ -42,13 +42,13 @@ public class WrapperToStringConversion extends SimpleConversion { } @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { - return "String.valueOf( " + sourceReference + " )"; + public String[] getToExpressions(ConversionContext conversionContext) { + return new String[] { "String.valueOf( ", " )" }; } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { - return sourceType.getSimpleName() + ".parse" + Strings.capitalize( primitiveType.getSimpleName() ) + "( " + - targetReference + " )"; + public String[] getFromExpressions(ConversionContext conversionContext) { + return new String[] { sourceType.getSimpleName() + ".parse" + + Strings.capitalize( primitiveType.getSimpleName() ) + "( ", " )" }; } } diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/WrapperToWrapperConversion.java b/processor/src/main/java/org/mapstruct/ap/conversion/WrapperToWrapperConversion.java index 6c50a7585..7b931a228 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/WrapperToWrapperConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/WrapperToWrapperConversion.java @@ -44,22 +44,22 @@ public class WrapperToWrapperConversion extends SimpleConversion { } @Override - public String getToConversionString(String sourceReference, ConversionContext conversionContext) { + public String[] getToExpressions(ConversionContext conversionContext) { if ( sourceType == targetType ) { - return sourceReference; + return new String[] { "", "" }; } else { - return sourceReference + "." + targetType.getName() + "Value()"; + return new String[] { "", "." + targetType.getName() + "Value()" }; } } @Override - public String getFromConversionString(String targetReference, ConversionContext conversionContext) { + public String[] getFromExpressions(ConversionContext conversionContext) { if ( sourceType == targetType ) { - return targetReference; + return new String[] { "", "" }; } else { - return targetReference + "." + sourceType.getName() + "Value()"; + return new String[] { "", "." + sourceType.getName() + "Value()" }; } } } diff --git a/processor/src/main/java/org/mapstruct/ap/model/TypeConversion.java b/processor/src/main/java/org/mapstruct/ap/model/TypeConversion.java index 2ea38c53d..2dd203dc5 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/TypeConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/model/TypeConversion.java @@ -18,7 +18,6 @@ */ package org.mapstruct.ap.model; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -33,19 +32,24 @@ import org.mapstruct.ap.model.common.Type; */ public class TypeConversion extends ModelElement { + private final Set importTypes; private final List exceptionTypes; - private final String conversionString; + private final String sourceReference; + private final String openExpression; + private final String closeExpression; - public TypeConversion(String conversionString) { - this( Collections.emptySet(), Collections.emptyList(), conversionString ); - } - - public TypeConversion(Set importTypes, List exceptionTypes, String conversionString) { + public TypeConversion( Set importTypes, + List exceptionTypes, + String openExpression, + String sourceReference, + String closeExpression ) { this.importTypes = new HashSet( importTypes ); this.importTypes.addAll( exceptionTypes ); this.exceptionTypes = exceptionTypes; - this.conversionString = conversionString; + this.openExpression = openExpression; + this.sourceReference = sourceReference; + this.closeExpression = closeExpression; } @Override @@ -57,7 +61,15 @@ public class TypeConversion extends ModelElement { return exceptionTypes; } - public String getConversionString() { - return conversionString; + public String getOpenExpression() { + return openExpression; + } + + public String getSourceReference() { + return sourceReference; + } + + public String getCloseExpression() { + return closeExpression; } } diff --git a/processor/src/main/resources/org.mapstruct.ap.model.TypeConversion.ftl b/processor/src/main/resources/org.mapstruct.ap.model.TypeConversion.ftl index 580a05d12..27d727478 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.TypeConversion.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.TypeConversion.ftl @@ -18,4 +18,4 @@ limitations under the License. --> -${conversionString} \ No newline at end of file +${openExpression}${sourceReference}${closeExpression} \ No newline at end of file