From 909b5142b7883400a594390096a37eeb1fab25cd Mon Sep 17 00:00:00 2001 From: sjaakd Date: Mon, 14 Apr 2014 20:16:44 +0200 Subject: [PATCH] #157 removing String array for opening and closing expression in favour of ConversionExpression --- .../BigDecimalToBigIntegerConversion.java | 8 +-- .../BigDecimalToPrimitiveConversion.java | 8 +-- .../BigDecimalToStringConversion.java | 8 +-- .../BigDecimalToWrapperConversion.java | 8 +-- .../BigIntegerToPrimitiveConversion.java | 8 +-- .../BigIntegerToStringConversion.java | 8 +-- .../BigIntegerToWrapperConversion.java | 8 +-- .../ap/conversion/CharToStringConversion.java | 8 +-- .../CharWrapperToStringConversion.java | 8 +-- .../ap/conversion/ConversionExpression.java | 56 +++++++++++++++++++ .../ap/conversion/EnumStringConversion.java | 10 ++-- .../PrimitiveToPrimitiveConversion.java | 8 +-- .../PrimitiveToStringConversion.java | 10 ++-- .../PrimitiveToWrapperConversion.java | 10 ++-- .../ap/conversion/SimpleConversion.java | 24 ++++---- .../conversion/WrapperToStringConversion.java | 10 ++-- .../WrapperToWrapperConversion.java | 12 ++-- 17 files changed, 135 insertions(+), 77 deletions(-) create mode 100644 processor/src/main/java/org/mapstruct/ap/conversion/ConversionExpression.java 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 600b4b55d..f6394e0a2 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[] getToExpressions(ConversionContext conversionContext) { - return new String[]{ "", ".toBigInteger()" }; + public ConversionExpression getToExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "", ".toBigInteger()" ); } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { - return new String[]{"new BigDecimal( ", " )"}; + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { + return new ConversionExpression("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 7594114e7..47fa08b61 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToPrimitiveConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToPrimitiveConversion.java @@ -44,13 +44,13 @@ public class BigDecimalToPrimitiveConversion extends SimpleConversion { } @Override - public String[] getToExpressions(ConversionContext conversionContext) { - return new String[]{ "", "." + targetType.getName() + "Value()" }; + public ConversionExpression getToExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "", "." + targetType.getName() + "Value()" ); } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { - return new String[]{ "BigDecimal.valueOf( ", " )" }; + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "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 da053aac7..b9d5f7ec6 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[] getToExpressions(ConversionContext conversionContext) { - return new String[]{ "", ".toString()" }; + public ConversionExpression getToExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "", ".toString()" ); } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { - return new String[]{ "new BigDecimal( ", " )" }; + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "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 735c2047a..0c0459f70 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToWrapperConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/BigDecimalToWrapperConversion.java @@ -45,13 +45,13 @@ public class BigDecimalToWrapperConversion extends SimpleConversion { } @Override - public String[] getToExpressions(ConversionContext conversionContext) { - return new String[]{ "", "." + targetType.getName() + "Value()" }; + public ConversionExpression getToExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "", "." + targetType.getName() + "Value()" ); } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { - return new String[]{ "BigDecimal.valueOf( ", " )" }; + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "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 475b00c1e..221e78e88 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToPrimitiveConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToPrimitiveConversion.java @@ -44,17 +44,17 @@ public class BigIntegerToPrimitiveConversion extends SimpleConversion { } @Override - public String[] getToExpressions(ConversionContext conversionContext) { - return new String[]{ "", "." + targetType.getName() + "Value()" }; + public ConversionExpression getToExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "", "." + targetType.getName() + "Value()" ); } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { String castString = ""; if ( targetType == float.class || targetType == double.class ) { castString = "(long) "; } - return new String[]{ "BigInteger.valueOf( " + castString, " )" }; + return new ConversionExpression( "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 1ada3a980..154c0f399 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[] getToExpressions(ConversionContext conversionContext) { - return new String[]{ "", ".toString()" }; + public ConversionExpression getToExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "", ".toString()" ); } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { - return new String[]{ "new BigInteger( ", " )" }; + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "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 8a24e3edc..806a66ac1 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToWrapperConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/BigIntegerToWrapperConversion.java @@ -45,19 +45,19 @@ public class BigIntegerToWrapperConversion extends SimpleConversion { } @Override - public String[] getToExpressions(ConversionContext conversionContext) { - return new String[]{ "", "." + targetType.getName() + "Value()" }; + public ConversionExpression getToExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "", "." + targetType.getName() + "Value()" ); } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { String toLongValueStr = ""; if ( targetType == float.class || targetType == double.class ) { toLongValueStr = ".longValue()"; } - return new String[]{ "BigInteger.valueOf( ", toLongValueStr + " )" }; + return new ConversionExpression( "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 b5569bf1f..6fa000d40 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[] getToExpressions(ConversionContext conversionContext) { - return new String[]{ "String.valueOf( ", " )" }; + public ConversionExpression getToExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "String.valueOf( ", " )" ); } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { - return new String[]{ "", ".charAt( 0 )" }; + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "", ".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 859a4dc41..409c5d7dd 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[] getToExpressions(ConversionContext conversionContext) { - return new String[]{ "", ".toString()" }; + public ConversionExpression getToExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "", ".toString()" ); } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { - return new String[]{ "", ".charAt( 0 )" }; + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "", ".charAt( 0 )" ); } } diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/ConversionExpression.java b/processor/src/main/java/org/mapstruct/ap/conversion/ConversionExpression.java new file mode 100644 index 000000000..f8fe3d6b7 --- /dev/null +++ b/processor/src/main/java/org/mapstruct/ap/conversion/ConversionExpression.java @@ -0,0 +1,56 @@ +/** + * Copyright 2012-2014 Gunnar Morling (http://www.gunnarmorling.de/) + * and/or other contributors as indicated by the @authors tag. See the + * copyright.txt file in the distribution for a full listing of all + * contributors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.mapstruct.ap.conversion; + +/** + * + * @author Sjaak Derksen + */ +public class ConversionExpression { + + private final String openExpression; + private final String closeExpression; + private String expression; + + public static ConversionExpression empty() { + return new ConversionExpression( "", "" ); + } + + public ConversionExpression( String openExpression, String closeExpression ) { + this.openExpression = openExpression; + this.closeExpression = closeExpression; + } + + public String getOpenExpression() { + return openExpression; + } + + public String getCloseExpression() { + return closeExpression; + } + + public String getExpression() { + return expression; + } + + public void setExpression( String expression ) { + this.expression = expression; + } + +} 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 01f050894..3cc1b3f26 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,15 @@ import static org.mapstruct.ap.util.Collections.asSet; public class EnumStringConversion extends SimpleConversion { @Override - public String[] getToExpressions(ConversionContext conversionContext) { - return new String[] {"", ".toString()" }; + public ConversionExpression getToExpressions(ConversionContext conversionContext) { + return new ConversionExpression("", ".toString()" ); } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { - return new String[] { "Enum.valueOf( " + conversionContext.getTargetType().getName() + ".class, ", " )" }; + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { + return new ConversionExpression( + "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 2e9dbbba6..630ec8636 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[] getToExpressions(ConversionContext conversionContext) { - return new String[] {"", ""}; + public ConversionExpression getToExpressions(ConversionContext conversionContext) { + return ConversionExpression.empty(); } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { - return new String[] { "(" + sourceType + ") ", "" }; + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "(" + 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 0c6e9f9b2..d97e44526 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[] getToExpressions(ConversionContext conversionContext) { - return new String[] { "String.valueOf( ", " )" }; + public ConversionExpression getToExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "String.valueOf( ", " )" ); } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { - return new String[] { wrapperType.getSimpleName() + ".parse" + - Strings.capitalize( sourceType.getSimpleName() ) + "( ", " )" }; + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { + return new ConversionExpression( 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 1090c1369..28320b85a 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[] getToExpressions(ConversionContext conversionContext) { + public ConversionExpression getToExpressions(ConversionContext conversionContext) { if ( sourceType == targetType ) { - return new String[] { "", "" }; + return ConversionExpression.empty(); } else { - return new String[] { "(" + targetType.getName() + ") ", "" }; + return new ConversionExpression( "(" + targetType.getName() + ") ", "" ); } } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { - return new String[] { "", "." + sourceType.getName() + "Value()" }; + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "", "." + 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 e5b47146d..3c27b91f2 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/SimpleConversion.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/SimpleConversion.java @@ -34,24 +34,24 @@ public abstract class SimpleConversion implements ConversionProvider { @Override public TypeConversion to(String sourceReference, ConversionContext conversionContext) { - String[] toExpressions = getToExpressions( conversionContext ); + ConversionExpression toExpressions = getToExpressions( conversionContext ); return new TypeConversion( getToConversionImportTypes( conversionContext ), Collections.emptyList(), - toExpressions[0], + toExpressions.getOpenExpression(), sourceReference, - toExpressions[1] ); + toExpressions.getCloseExpression() ); } @Override public TypeConversion from(String targetReference, ConversionContext conversionContext) { - String[] fromExpressions = getFromExpressions( conversionContext ); + ConversionExpression fromExpressions = getFromExpressions( conversionContext ); return new TypeConversion( getFromConversionImportTypes( conversionContext ), Collections.emptyList(), - fromExpressions[0], + fromExpressions.getOpenExpression(), targetReference, - fromExpressions[1] ); + fromExpressions.getCloseExpression() ); } /** @@ -59,10 +59,10 @@ public abstract class SimpleConversion implements ConversionProvider { * * @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 + * @return The conversion string from source to target. toConversionExpressions[0] = openConversionExpression, + toConversionExpressions[1] = closeConversionExpression */ - protected abstract String[] getToExpressions( ConversionContext conversionContext ); + protected abstract ConversionExpression getToExpressions( ConversionContext conversionContext ); /** * Creates the conversion string (opening and closing part) from target to source. @@ -70,10 +70,10 @@ public abstract class SimpleConversion implements ConversionProvider { * @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 + * @return The conversion string from target to source, fromConversionExpressions[0] = openConversionExpression, + fromConversionExpressions[1] = closeConversionExpression */ - protected abstract String[] getFromExpressions( ConversionContext conversionContext ); + protected abstract ConversionExpression getFromExpressions( ConversionContext conversionContext ); /** * Returns a set with imported types of the "from" conversion. Defaults to an empty set; can be overridden in 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 4ec4231f9..7ba3f990e 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[] getToExpressions(ConversionContext conversionContext) { - return new String[] { "String.valueOf( ", " )" }; + public ConversionExpression getToExpressions(ConversionContext conversionContext) { + return new ConversionExpression( "String.valueOf( ", " )" ); } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { - return new String[] { sourceType.getSimpleName() + ".parse" + - Strings.capitalize( primitiveType.getSimpleName() ) + "( ", " )" }; + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { + return new ConversionExpression( 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 7b931a228..9397af287 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[] getToExpressions(ConversionContext conversionContext) { + public ConversionExpression getToExpressions(ConversionContext conversionContext) { if ( sourceType == targetType ) { - return new String[] { "", "" }; + return ConversionExpression.empty(); } else { - return new String[] { "", "." + targetType.getName() + "Value()" }; + return new ConversionExpression( "", "." + targetType.getName() + "Value()" ); } } @Override - public String[] getFromExpressions(ConversionContext conversionContext) { + public ConversionExpression getFromExpressions(ConversionContext conversionContext) { if ( sourceType == targetType ) { - return new String[] { "", "" }; + return ConversionExpression.empty(); } else { - return new String[] { "", "." + sourceType.getName() + "Value()" }; + return new ConversionExpression( "", "." + sourceType.getName() + "Value()" ); } } }