mirror of
https://github.com/mapstruct/mapstruct.git
synced 2025-07-12 00:00:08 +08:00
#157 removing String array for opening and closing expression in favour of ConversionExpression
This commit is contained in:
parent
b10e60d4b5
commit
909b5142b7
@ -35,13 +35,13 @@ import static org.mapstruct.ap.util.Collections.asSet;
|
|||||||
public class BigDecimalToBigIntegerConversion extends SimpleConversion {
|
public class BigDecimalToBigIntegerConversion extends SimpleConversion {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "", ".toBigInteger()" };
|
return new ConversionExpression( "", ".toBigInteger()" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{"new BigDecimal( ", " )"};
|
return new ConversionExpression("new BigDecimal( ", " )");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -44,13 +44,13 @@ public class BigDecimalToPrimitiveConversion extends SimpleConversion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "", "." + targetType.getName() + "Value()" };
|
return new ConversionExpression( "", "." + targetType.getName() + "Value()" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "BigDecimal.valueOf( ", " )" };
|
return new ConversionExpression( "BigDecimal.valueOf( ", " )" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -34,13 +34,13 @@ import static org.mapstruct.ap.util.Collections.asSet;
|
|||||||
public class BigDecimalToStringConversion extends SimpleConversion {
|
public class BigDecimalToStringConversion extends SimpleConversion {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "", ".toString()" };
|
return new ConversionExpression( "", ".toString()" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "new BigDecimal( ", " )" };
|
return new ConversionExpression( "new BigDecimal( ", " )" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -45,13 +45,13 @@ public class BigDecimalToWrapperConversion extends SimpleConversion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "", "." + targetType.getName() + "Value()" };
|
return new ConversionExpression( "", "." + targetType.getName() + "Value()" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "BigDecimal.valueOf( ", " )" };
|
return new ConversionExpression( "BigDecimal.valueOf( ", " )" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -44,17 +44,17 @@ public class BigIntegerToPrimitiveConversion extends SimpleConversion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "", "." + targetType.getName() + "Value()" };
|
return new ConversionExpression( "", "." + targetType.getName() + "Value()" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
String castString = "";
|
String castString = "";
|
||||||
if ( targetType == float.class || targetType == double.class ) {
|
if ( targetType == float.class || targetType == double.class ) {
|
||||||
castString = "(long) ";
|
castString = "(long) ";
|
||||||
}
|
}
|
||||||
return new String[]{ "BigInteger.valueOf( " + castString, " )" };
|
return new ConversionExpression( "BigInteger.valueOf( " + castString, " )" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -34,13 +34,13 @@ import static org.mapstruct.ap.util.Collections.asSet;
|
|||||||
public class BigIntegerToStringConversion extends SimpleConversion {
|
public class BigIntegerToStringConversion extends SimpleConversion {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "", ".toString()" };
|
return new ConversionExpression( "", ".toString()" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "new BigInteger( ", " )" };
|
return new ConversionExpression( "new BigInteger( ", " )" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -45,19 +45,19 @@ public class BigIntegerToWrapperConversion extends SimpleConversion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "", "." + targetType.getName() + "Value()" };
|
return new ConversionExpression( "", "." + targetType.getName() + "Value()" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
|
|
||||||
String toLongValueStr = "";
|
String toLongValueStr = "";
|
||||||
if ( targetType == float.class || targetType == double.class ) {
|
if ( targetType == float.class || targetType == double.class ) {
|
||||||
toLongValueStr = ".longValue()";
|
toLongValueStr = ".longValue()";
|
||||||
}
|
}
|
||||||
|
|
||||||
return new String[]{ "BigInteger.valueOf( ", toLongValueStr + " )" };
|
return new ConversionExpression( "BigInteger.valueOf( ", toLongValueStr + " )" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -28,12 +28,12 @@ import org.mapstruct.ap.model.common.ConversionContext;
|
|||||||
public class CharToStringConversion extends SimpleConversion {
|
public class CharToStringConversion extends SimpleConversion {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "String.valueOf( ", " )" };
|
return new ConversionExpression( "String.valueOf( ", " )" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "", ".charAt( 0 )" };
|
return new ConversionExpression( "", ".charAt( 0 )" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,12 +28,12 @@ import org.mapstruct.ap.model.common.ConversionContext;
|
|||||||
public class CharWrapperToStringConversion extends SimpleConversion {
|
public class CharWrapperToStringConversion extends SimpleConversion {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "", ".toString()" };
|
return new ConversionExpression( "", ".toString()" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
return new String[]{ "", ".charAt( 0 )" };
|
return new ConversionExpression( "", ".charAt( 0 )" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -33,13 +33,15 @@ import static org.mapstruct.ap.util.Collections.asSet;
|
|||||||
public class EnumStringConversion extends SimpleConversion {
|
public class EnumStringConversion extends SimpleConversion {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
return new String[] {"", ".toString()" };
|
return new ConversionExpression("", ".toString()" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
return new String[] { "Enum.valueOf( " + conversionContext.getTargetType().getName() + ".class, ", " )" };
|
return new ConversionExpression(
|
||||||
|
"Enum.valueOf( " + conversionContext.getTargetType().getName() + ".class, ",
|
||||||
|
" )" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -38,12 +38,12 @@ public class PrimitiveToPrimitiveConversion extends SimpleConversion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
return new String[] {"", ""};
|
return ConversionExpression.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
return new String[] { "(" + sourceType + ") ", "" };
|
return new ConversionExpression( "(" + sourceType + ") ", "" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,13 +43,13 @@ public class PrimitiveToStringConversion extends SimpleConversion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
return new String[] { "String.valueOf( ", " )" };
|
return new ConversionExpression( "String.valueOf( ", " )" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
return new String[] { wrapperType.getSimpleName() + ".parse" +
|
return new ConversionExpression( wrapperType.getSimpleName() + ".parse" +
|
||||||
Strings.capitalize( sourceType.getSimpleName() ) + "( ", " )" };
|
Strings.capitalize( sourceType.getSimpleName() ) + "( ", " )" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,17 +45,17 @@ public class PrimitiveToWrapperConversion extends SimpleConversion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
if ( sourceType == targetType ) {
|
if ( sourceType == targetType ) {
|
||||||
return new String[] { "", "" };
|
return ConversionExpression.empty();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return new String[] { "(" + targetType.getName() + ") ", "" };
|
return new ConversionExpression( "(" + targetType.getName() + ") ", "" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
return new String[] { "", "." + sourceType.getName() + "Value()" };
|
return new ConversionExpression( "", "." + sourceType.getName() + "Value()" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,24 +34,24 @@ public abstract class SimpleConversion implements ConversionProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeConversion to(String sourceReference, ConversionContext conversionContext) {
|
public TypeConversion to(String sourceReference, ConversionContext conversionContext) {
|
||||||
String[] toExpressions = getToExpressions( conversionContext );
|
ConversionExpression toExpressions = getToExpressions( conversionContext );
|
||||||
return new TypeConversion(
|
return new TypeConversion(
|
||||||
getToConversionImportTypes( conversionContext ),
|
getToConversionImportTypes( conversionContext ),
|
||||||
Collections.<Type>emptyList(),
|
Collections.<Type>emptyList(),
|
||||||
toExpressions[0],
|
toExpressions.getOpenExpression(),
|
||||||
sourceReference,
|
sourceReference,
|
||||||
toExpressions[1] );
|
toExpressions.getCloseExpression() );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeConversion from(String targetReference, ConversionContext conversionContext) {
|
public TypeConversion from(String targetReference, ConversionContext conversionContext) {
|
||||||
String[] fromExpressions = getFromExpressions( conversionContext );
|
ConversionExpression fromExpressions = getFromExpressions( conversionContext );
|
||||||
return new TypeConversion(
|
return new TypeConversion(
|
||||||
getFromConversionImportTypes( conversionContext ),
|
getFromConversionImportTypes( conversionContext ),
|
||||||
Collections.<Type>emptyList(),
|
Collections.<Type>emptyList(),
|
||||||
fromExpressions[0],
|
fromExpressions.getOpenExpression(),
|
||||||
targetReference,
|
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.
|
* @param conversionContext ConversionContext providing optional information required for creating the conversion.
|
||||||
*
|
*
|
||||||
* @return The conversion string from source to target. toExpressions[0] = openExpression,
|
* @return The conversion string from source to target. toConversionExpressions[0] = openConversionExpression,
|
||||||
* toExpressions[1] = closeExpression
|
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.
|
* 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
|
* @param conversionContext ConversionContext providing optional information required for creating
|
||||||
* the conversion.
|
* the conversion.
|
||||||
*
|
*
|
||||||
* @return The conversion string from target to source, fromExpressions[0] = openExpression,
|
* @return The conversion string from target to source, fromConversionExpressions[0] = openConversionExpression,
|
||||||
* fromExpressions[1] = closeExpression
|
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
|
* Returns a set with imported types of the "from" conversion. Defaults to an empty set; can be overridden in
|
||||||
|
@ -42,13 +42,13 @@ public class WrapperToStringConversion extends SimpleConversion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
return new String[] { "String.valueOf( ", " )" };
|
return new ConversionExpression( "String.valueOf( ", " )" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
return new String[] { sourceType.getSimpleName() + ".parse" +
|
return new ConversionExpression( sourceType.getSimpleName() + ".parse" +
|
||||||
Strings.capitalize( primitiveType.getSimpleName() ) + "( ", " )" };
|
Strings.capitalize( primitiveType.getSimpleName() ) + "( ", " )" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,22 +44,22 @@ public class WrapperToWrapperConversion extends SimpleConversion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getToExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getToExpressions(ConversionContext conversionContext) {
|
||||||
if ( sourceType == targetType ) {
|
if ( sourceType == targetType ) {
|
||||||
return new String[] { "", "" };
|
return ConversionExpression.empty();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return new String[] { "", "." + targetType.getName() + "Value()" };
|
return new ConversionExpression( "", "." + targetType.getName() + "Value()" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getFromExpressions(ConversionContext conversionContext) {
|
public ConversionExpression getFromExpressions(ConversionContext conversionContext) {
|
||||||
if ( sourceType == targetType ) {
|
if ( sourceType == targetType ) {
|
||||||
return new String[] { "", "" };
|
return ConversionExpression.empty();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return new String[] { "", "." + sourceType.getName() + "Value()" };
|
return new ConversionExpression( "", "." + sourceType.getName() + "Value()" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user