From a7be616ee9cf1616723e3b7f99aa9c8f220d7674 Mon Sep 17 00:00:00 2001 From: Gunnar Morling Date: Wed, 8 Jan 2014 22:26:51 +0100 Subject: [PATCH] #34 Fixing some typos; Removing Type#isAnnotatedMapper() in favor of the more generic isAnnotatedWith() method; Formatting --- .../ap/model/DefaultMapperReference.java | 2 +- .../java/org/mapstruct/ap/model/Type.java | 11 ++----- .../org/mapstruct/ap/model/source/Method.java | 11 ++++++- .../ap/processor/MapperCreationProcessor.java | 24 ++++++++------ .../org/mapstruct/ap/util/MethodMatcher.java | 6 ++-- .../collection/CollectionMappingTest.java | 4 +-- .../complex/AdditionalMappingHelper.java | 1 + .../complex/ComplexInheritanceTest.java | 31 ++++++++++--------- ...SourceCompositeTargetCompositeMapper.java} | 9 +++--- .../SourceCompositeTargetCompositeMapper.java | 4 +-- ...eSourceCompositeTargetCompositeMapper.java | 1 + 11 files changed, 58 insertions(+), 46 deletions(-) rename processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/{ErrornousSourceCompositeTargetCompositeMapper.java => ErroneousSourceCompositeTargetCompositeMapper.java} (82%) diff --git a/processor/src/main/java/org/mapstruct/ap/model/DefaultMapperReference.java b/processor/src/main/java/org/mapstruct/ap/model/DefaultMapperReference.java index a5a46f393..22fcad296 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/DefaultMapperReference.java +++ b/processor/src/main/java/org/mapstruct/ap/model/DefaultMapperReference.java @@ -40,7 +40,7 @@ public class DefaultMapperReference extends AbstractModelElement implements Mapp public DefaultMapperReference(Type type, TypeFactory typeFactory) { this.type = type; - isAnnotatedMapper = type.isAnnotatedMapper(); + isAnnotatedMapper = type.isAnnotatedWith( "org.mapstruct.Mapper" ); importTypes = Collections.asSet( type ); if ( isAnnotatedMapper() ) { diff --git a/processor/src/main/java/org/mapstruct/ap/model/Type.java b/processor/src/main/java/org/mapstruct/ap/model/Type.java index 7a00c319c..b5c3874a3 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/Type.java +++ b/processor/src/main/java/org/mapstruct/ap/model/Type.java @@ -21,7 +21,6 @@ package org.mapstruct.ap.model; import java.util.Collections; import java.util.List; import java.util.Set; - import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.ElementKind; import javax.lang.model.element.Name; @@ -33,7 +32,6 @@ import javax.lang.model.util.Elements; import javax.lang.model.util.SimpleElementVisitor6; import javax.lang.model.util.Types; -import org.mapstruct.ap.MapperPrism; import org.mapstruct.ap.util.TypeFactory; /** @@ -167,6 +165,7 @@ public class Type extends AbstractModelElement implements Comparable { /** * @param annotationTypeName the fully qualified name of the annotation type + * * @return true, if the type is annotated with an annotation of the specified type (super-types are not inspected) */ public boolean isAnnotatedWith(String annotationTypeName) { @@ -182,13 +181,6 @@ public class Type extends AbstractModelElement implements Comparable { return false; } - /** - * @return true, if the type is annotated with {@code @Mapper} - */ - public boolean isAnnotatedMapper() { - return null != MapperPrism.getInstanceOn( typeElement ); - } - /** * Whether this type is assignable to the given other type. * @@ -212,6 +204,7 @@ public class Type extends AbstractModelElement implements Comparable { * the other type. Returns {@code 1}, if the other type is a direct super type of this type, and so on. * * @param assignableOther the other type + * * @return the length of the shortest path in the type hierarchy between this type and the specified other type */ public int distanceTo(Type assignableOther) { diff --git a/processor/src/main/java/org/mapstruct/ap/model/source/Method.java b/processor/src/main/java/org/mapstruct/ap/model/source/Method.java index 01135fc77..728cdf36c 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/source/Method.java +++ b/processor/src/main/java/org/mapstruct/ap/model/source/Method.java @@ -206,7 +206,16 @@ public class Method { @Override public String toString() { - return returnType + " " + declaringMapper + "." + getName() + "(" + Strings.join( parameters, ", " ) + ")"; + StringBuilder sb = new StringBuilder( returnType.toString() ); + sb.append( " " ); + + if ( declaringMapper != null ) { + sb.append( declaringMapper ).append( "." ); + } + + sb.append( getName() ).append( "(" ).append( Strings.join( parameters, ", " ) ).append( ")" ); + + return sb.toString(); } public Mapping getMapping(String targetPropertyName) { diff --git a/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java b/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java index dfd455c8d..8841eb0f9 100644 --- a/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java +++ b/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java @@ -27,7 +27,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; - import javax.annotation.processing.Messager; import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.TypeElement; @@ -500,7 +499,7 @@ public class MapperCreationProcessor implements ModelElementProcessor 1 ) { - messager.printMessage( Kind.ERROR, String.format( - "Ambiguous mapping methods found for mapping from %s to %s: %s.", - parameterType, - returnType, - candidatesWithBestMatchingSourceType ) ); + messager.printMessage( + Kind.ERROR, + String.format( + "Ambiguous mapping methods found for mapping from %s to %s: %s.", + parameterType, + returnType, + candidatesWithBestMatchingSourceType + ) + ); } return new MappingMethodReference( candidatesWithBestMatchingSourceType.get( 0 ) ); diff --git a/processor/src/main/java/org/mapstruct/ap/util/MethodMatcher.java b/processor/src/main/java/org/mapstruct/ap/util/MethodMatcher.java index 070052160..3a419ff60 100644 --- a/processor/src/main/java/org/mapstruct/ap/util/MethodMatcher.java +++ b/processor/src/main/java/org/mapstruct/ap/util/MethodMatcher.java @@ -21,7 +21,6 @@ package org.mapstruct.ap.util; import java.util.HashMap; import java.util.List; import java.util.Map; - import javax.lang.model.element.TypeElement; import javax.lang.model.element.TypeParameterElement; import javax.lang.model.element.VariableElement; @@ -246,7 +245,8 @@ public class MethodMatcher { TypeMirror superBoundAsDeclared = typeParameter.getBounds().get( 0 ); return ( typeUtils.isSubtype( superBoundAsDeclared, p ) || typeUtils.isSameType( p, - superBoundAsDeclared ) ); + superBoundAsDeclared + ) ); default: // does this situation occur? @@ -262,6 +262,7 @@ public class MethodMatcher { * Looks through the list of type parameters of the candidate method for a match * * @param t type parameter to match + * * @return matching type parameter */ private TypeParameterElement getTypeParamFromCandidate(TypeMirror t) { @@ -278,6 +279,7 @@ public class MethodMatcher { * * @param t * @param tpe + * * @return true if within bounds */ private boolean isWithinBounds(TypeMirror t, TypeParameterElement tpe) { diff --git a/processor/src/test/java/org/mapstruct/ap/test/collection/CollectionMappingTest.java b/processor/src/test/java/org/mapstruct/ap/test/collection/CollectionMappingTest.java index b1fbce909..df9b5b828 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/collection/CollectionMappingTest.java +++ b/processor/src/test/java/org/mapstruct/ap/test/collection/CollectionMappingTest.java @@ -18,8 +18,6 @@ */ package org.mapstruct.ap.test.collection; -import static org.fest.assertions.Assertions.assertThat; - import java.util.ArrayList; import java.util.Arrays; import java.util.EnumSet; @@ -33,6 +31,8 @@ import org.mapstruct.ap.testutil.MapperTestBase; import org.mapstruct.ap.testutil.WithClasses; import org.testng.annotations.Test; +import static org.fest.assertions.Assertions.assertThat; + @WithClasses({ Source.class, Target.class, Colour.class, SourceTargetMapper.class }) public class CollectionMappingTest extends MapperTestBase { diff --git a/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/AdditionalMappingHelper.java b/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/AdditionalMappingHelper.java index 322fe4d2c..68f0c82bf 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/AdditionalMappingHelper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/AdditionalMappingHelper.java @@ -20,6 +20,7 @@ package org.mapstruct.ap.test.inheritance.complex; public class AdditionalMappingHelper { + public Reference asReference(SourceBase source) { if ( null == source ) { return null; diff --git a/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/ComplexInheritanceTest.java b/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/ComplexInheritanceTest.java index 5f3b1cd0f..c7aaf2015 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/ComplexInheritanceTest.java +++ b/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/ComplexInheritanceTest.java @@ -37,14 +37,16 @@ import org.testng.annotations.Test; * * @author Andreas Gudian */ -@WithClasses( { Reference.class, SourceBase.class, SourceComposite.class, - SourceExt.class, SourceExt2.class, - TargetComposite.class, AdditionalFooSource.class } ) +@WithClasses({ + Reference.class, SourceBase.class, SourceComposite.class, + SourceExt.class, SourceExt2.class, + TargetComposite.class, AdditionalFooSource.class +}) public class ComplexInheritanceTest extends MapperTestBase { @Test @IssueKey("34") - @WithClasses( { StandaloneSourceCompositeTargetCompositeMapper.class } ) + @WithClasses({ StandaloneSourceCompositeTargetCompositeMapper.class }) public void shouldMapAttributesWithSuperTypeInStandaloneMapper() { SourceComposite source = createComposite(); @@ -57,8 +59,8 @@ public class ComplexInheritanceTest extends MapperTestBase { } @Test - @IssueKey( "34" ) - @WithClasses( { SourceCompositeTargetCompositeMapper.class, SourceBaseMappingHelper.class } ) + @IssueKey("34") + @WithClasses({ SourceCompositeTargetCompositeMapper.class, SourceBaseMappingHelper.class }) public void shouldMapAttributesWithSuperTypeUsingOtherMapper() { SourceComposite source = createComposite(); @@ -71,16 +73,15 @@ public class ComplexInheritanceTest extends MapperTestBase { } @Test - @IssueKey( "34" ) - @WithClasses( { ErrornousSourceCompositeTargetCompositeMapper.class, AdditionalMappingHelper.class } ) - @ExpectedCompilationOutcome( value = CompilationResult.FAILED, - diagnostics = @Diagnostic( - kind = Kind.ERROR, - messageRegExp = "Ambiguous mapping methods found for mapping from .*SourceExt to .*Reference: \\[" - + ".*Reference .*AdditionalMappingHelper\\.asReference\\(.*SourceBase source\\), " - + ".*Reference .*AdditionalMappingHelper\\.asReference\\(.*AdditionalFooSource source\\)\\]" ) ) + @IssueKey("34") + @WithClasses({ ErroneousSourceCompositeTargetCompositeMapper.class, AdditionalMappingHelper.class }) + @ExpectedCompilationOutcome(value = CompilationResult.FAILED, + diagnostics = @Diagnostic( + kind = Kind.ERROR, + messageRegExp = "Ambiguous mapping methods found for mapping from .*SourceExt to .*Reference: \\[" + + ".*Reference .*AdditionalMappingHelper\\.asReference\\(.*SourceBase source\\), " + + ".*Reference .*AdditionalMappingHelper\\.asReference\\(.*AdditionalFooSource source\\)\\]")) public void ambiguousMappingMethodsReportError() { - } private void assertResult(TargetComposite target) { diff --git a/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/ErrornousSourceCompositeTargetCompositeMapper.java b/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/ErroneousSourceCompositeTargetCompositeMapper.java similarity index 82% rename from processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/ErrornousSourceCompositeTargetCompositeMapper.java rename to processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/ErroneousSourceCompositeTargetCompositeMapper.java index b93028347..89261353d 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/ErrornousSourceCompositeTargetCompositeMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/ErroneousSourceCompositeTargetCompositeMapper.java @@ -23,10 +23,11 @@ import java.util.List; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -@Mapper( uses = { AdditionalMappingHelper.class } ) -public interface ErrornousSourceCompositeTargetCompositeMapper { - ErrornousSourceCompositeTargetCompositeMapper INSTANCE = - Mappers.getMapper( ErrornousSourceCompositeTargetCompositeMapper.class ); +@Mapper(uses = { AdditionalMappingHelper.class }) +public interface ErroneousSourceCompositeTargetCompositeMapper { + + ErroneousSourceCompositeTargetCompositeMapper INSTANCE = + Mappers.getMapper( ErroneousSourceCompositeTargetCompositeMapper.class ); TargetComposite sourceToTarget(SourceComposite source); diff --git a/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/SourceCompositeTargetCompositeMapper.java b/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/SourceCompositeTargetCompositeMapper.java index 0dacb718e..43fa1f02c 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/SourceCompositeTargetCompositeMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/SourceCompositeTargetCompositeMapper.java @@ -21,10 +21,10 @@ package org.mapstruct.ap.test.inheritance.complex; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -@Mapper( uses = { SourceBaseMappingHelper.class } ) +@Mapper(uses = { SourceBaseMappingHelper.class }) public interface SourceCompositeTargetCompositeMapper { + SourceCompositeTargetCompositeMapper INSTANCE = Mappers.getMapper( SourceCompositeTargetCompositeMapper.class ); TargetComposite sourceToTarget(SourceComposite source); - } diff --git a/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/StandaloneSourceCompositeTargetCompositeMapper.java b/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/StandaloneSourceCompositeTargetCompositeMapper.java index 70313e1aa..c3144528b 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/StandaloneSourceCompositeTargetCompositeMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/inheritance/complex/StandaloneSourceCompositeTargetCompositeMapper.java @@ -25,6 +25,7 @@ import org.mapstruct.factory.Mappers; @Mapper public interface StandaloneSourceCompositeTargetCompositeMapper { + StandaloneSourceCompositeTargetCompositeMapper INSTANCE = Mappers.getMapper( StandaloneSourceCompositeTargetCompositeMapper.class );