From b1e184811f8b4d9a3f2578f8123d729a1cbc0335 Mon Sep 17 00:00:00 2001 From: Gunnar Morling Date: Sun, 12 Oct 2014 18:47:52 +0200 Subject: [PATCH] #302 Removing Method#printMessage() --- .../ap/model/IterableMappingMethod.java | 2 +- .../mapstruct/ap/model/MapMappingMethod.java | 4 ++-- .../mapstruct/ap/model/PropertyMapping.java | 20 ++++++++++--------- .../ap/model/source/ForgedMethod.java | 20 +++++++++---------- .../org/mapstruct/ap/model/source/Method.java | 16 +++++---------- .../ap/model/source/SourceMethod.java | 10 ++-------- .../model/source/builtin/BuiltInMethod.java | 15 +++++++------- .../creation/MappingResolverImpl.java | 5 +++-- 8 files changed, 42 insertions(+), 50 deletions(-) diff --git a/processor/src/main/java/org/mapstruct/ap/model/IterableMappingMethod.java b/processor/src/main/java/org/mapstruct/ap/model/IterableMappingMethod.java index da50e320a..51a0fa31c 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/IterableMappingMethod.java +++ b/processor/src/main/java/org/mapstruct/ap/model/IterableMappingMethod.java @@ -95,7 +95,7 @@ public class IterableMappingMethod extends MappingMethod { + "source element type into target element type.", method ); - method.printMessage( ctx.getMessager(), Diagnostic.Kind.ERROR, message ); + ctx.getMessager().printMessage( Diagnostic.Kind.ERROR, message, method.getExecutable() ); } // target accessor is setter, so decorate assignment as setter diff --git a/processor/src/main/java/org/mapstruct/ap/model/MapMappingMethod.java b/processor/src/main/java/org/mapstruct/ap/model/MapMappingMethod.java index 300bc00dd..1fd2389d6 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/MapMappingMethod.java +++ b/processor/src/main/java/org/mapstruct/ap/model/MapMappingMethod.java @@ -107,7 +107,7 @@ public class MapMappingMethod extends MappingMethod { "Can't create implementation of method %s. Found no method nor " + "built-in conversion for mapping source key type to target key type.", method ); - method.printMessage( ctx.getMessager(), Diagnostic.Kind.ERROR, message ); + ctx.getMessager().printMessage( Diagnostic.Kind.ERROR, message, method.getExecutable() ); } // find mapping method or conversion for value @@ -130,7 +130,7 @@ public class MapMappingMethod extends MappingMethod { "Can't create implementation of method %s. Found no method nor " + "built-in conversion for mapping source value type to target value type.", method ); - method.printMessage( ctx.getMessager(), Diagnostic.Kind.ERROR, message ); + ctx.getMessager().printMessage( Diagnostic.Kind.ERROR, message, method.getExecutable() ); } FactoryMethod factoryMethod = AssignmentFactory.createFactoryMethod( method.getReturnType(), ctx ); diff --git a/processor/src/main/java/org/mapstruct/ap/model/PropertyMapping.java b/processor/src/main/java/org/mapstruct/ap/model/PropertyMapping.java index 8f70640ff..7f2589b9e 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/PropertyMapping.java +++ b/processor/src/main/java/org/mapstruct/ap/model/PropertyMapping.java @@ -18,23 +18,24 @@ */ package org.mapstruct.ap.model; -import org.mapstruct.ap.model.assignment.Assignment; -import java.util.List; -import java.util.Set; -import javax.lang.model.element.Element; -import javax.lang.model.element.ExecutableElement; -import javax.lang.model.type.TypeMirror; -import javax.tools.Diagnostic; import static org.mapstruct.ap.model.assignment.Assignment.AssignmentType.DIRECT; import static org.mapstruct.ap.model.assignment.Assignment.AssignmentType.TYPE_CONVERTED; import static org.mapstruct.ap.model.assignment.Assignment.AssignmentType.TYPE_CONVERTED_MAPPED; + +import java.util.List; +import java.util.Set; + +import javax.lang.model.element.ExecutableElement; +import javax.lang.model.type.TypeMirror; +import javax.tools.Diagnostic; + import org.mapstruct.ap.model.assignment.AdderWrapper; +import org.mapstruct.ap.model.assignment.Assignment; import org.mapstruct.ap.model.assignment.GetterCollectionOrMapWrapper; import org.mapstruct.ap.model.assignment.NewCollectionOrMapWrapper; import org.mapstruct.ap.model.assignment.NullCheckWrapper; import org.mapstruct.ap.model.assignment.SetterCollectionOrMapWrapper; import org.mapstruct.ap.model.assignment.SetterWrapper; - import org.mapstruct.ap.model.common.ModelElement; import org.mapstruct.ap.model.common.Parameter; import org.mapstruct.ap.model.common.Type; @@ -278,7 +279,8 @@ public class PropertyMapping extends ModelElement { ); } - private Assignment forgeMapping( Type sourceType, Type targetType, String sourceReference, Element element ) { + private Assignment forgeMapping(Type sourceType, Type targetType, String sourceReference, + ExecutableElement element) { Assignment assignment = null; if ( sourceType.isCollectionType() && targetType.isCollectionType() ) { diff --git a/processor/src/main/java/org/mapstruct/ap/model/source/ForgedMethod.java b/processor/src/main/java/org/mapstruct/ap/model/source/ForgedMethod.java index 90a21fc1e..d93a4ca3f 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/source/ForgedMethod.java +++ b/processor/src/main/java/org/mapstruct/ap/model/source/ForgedMethod.java @@ -21,9 +21,9 @@ package org.mapstruct.ap.model.source; import java.util.Arrays; import java.util.Collections; import java.util.List; -import javax.annotation.processing.Messager; -import javax.lang.model.element.Element; -import javax.tools.Diagnostic; + +import javax.lang.model.element.ExecutableElement; + import org.mapstruct.ap.model.common.Accessibility; import org.mapstruct.ap.model.common.Parameter; import org.mapstruct.ap.model.common.Type; @@ -41,9 +41,9 @@ public class ForgedMethod implements Method { private final List parameters; private final Type returnType; private final String name; - private final Element positionHintElement; + private final ExecutableElement positionHintElement; - public ForgedMethod( Type sourceType, Type targetType, Element positionHintElement ) { + public ForgedMethod( Type sourceType, Type targetType, ExecutableElement positionHintElement ) { this.parameters = Arrays.asList( new Parameter("source", sourceType) ); this.returnType = targetType; @@ -122,11 +122,6 @@ public class ForgedMethod implements Method { return Collections.emptyList(); } - @Override - public void printMessage( Messager messager, Diagnostic.Kind kind, String message ) { - messager.printMessage( kind, message, positionHintElement ); - } - @Override public Type getResultType() { return returnType; @@ -142,6 +137,11 @@ public class ForgedMethod implements Method { return false; } + @Override + public ExecutableElement getExecutable() { + return positionHintElement; + } + @Override public String toString() { StringBuilder sb = new StringBuilder( returnType.toString() ); 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 5a52bd66b..bb7390358 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 @@ -20,8 +20,9 @@ package org.mapstruct.ap.model.source; import java.util.List; -import javax.annotation.processing.Messager; -import javax.tools.Diagnostic.Kind; + +import javax.lang.model.element.ExecutableElement; + import org.mapstruct.ap.model.common.Accessibility; import org.mapstruct.ap.model.common.Parameter; import org.mapstruct.ap.model.common.Type; @@ -105,15 +106,6 @@ public interface Method { */ List getThrownTypes(); - /** - * Prints a message to the provided messager. Uses - * - * @param messager the messager - * @param kind error, warning, etc. - * @param message message to print - */ - void printMessage( Messager messager, Kind kind, String message ); - /** * Returns the type of the result. * @@ -137,4 +129,6 @@ public interface Method { * @return true when an abstract method is overridden. */ boolean overridesMethod(); + + ExecutableElement getExecutable(); } diff --git a/processor/src/main/java/org/mapstruct/ap/model/source/SourceMethod.java b/processor/src/main/java/org/mapstruct/ap/model/source/SourceMethod.java index 9e23ace62..fa2310a6a 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/source/SourceMethod.java +++ b/processor/src/main/java/org/mapstruct/ap/model/source/SourceMethod.java @@ -22,11 +22,11 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; -import javax.annotation.processing.Messager; + import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.Modifier; import javax.lang.model.util.Types; -import javax.tools.Diagnostic.Kind; + import org.mapstruct.ap.model.common.Accessibility; import org.mapstruct.ap.model.common.Parameter; import org.mapstruct.ap.model.common.Type; @@ -358,10 +358,4 @@ public class SourceMethod implements Method { public List getThrownTypes() { return exceptionTypes; } - - @Override - public void printMessage( Messager messager, Kind kind, String message ) { - messager.printMessage( kind, message, executable ); - } - } diff --git a/processor/src/main/java/org/mapstruct/ap/model/source/builtin/BuiltInMethod.java b/processor/src/main/java/org/mapstruct/ap/model/source/builtin/BuiltInMethod.java index 91e3e4e3f..332aa436e 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/source/builtin/BuiltInMethod.java +++ b/processor/src/main/java/org/mapstruct/ap/model/source/builtin/BuiltInMethod.java @@ -23,8 +23,9 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Set; -import javax.annotation.processing.Messager; -import javax.tools.Diagnostic.Kind; + +import javax.lang.model.element.ExecutableElement; + import org.mapstruct.ap.conversion.SimpleConversion; import org.mapstruct.ap.model.common.Accessibility; import org.mapstruct.ap.model.common.ConversionContext; @@ -197,11 +198,6 @@ public abstract class BuiltInMethod implements Method { return Collections.emptyList(); } - @Override - public void printMessage( Messager messager, Kind kind, String message ) { - messager.printMessage( kind, message ); - } - @Override public Type getResultType() { return getReturnType(); @@ -221,4 +217,9 @@ public abstract class BuiltInMethod implements Method { public boolean overridesMethod() { return false; } + + @Override + public ExecutableElement getExecutable() { + return null; + } } diff --git a/processor/src/main/java/org/mapstruct/ap/processor/creation/MappingResolverImpl.java b/processor/src/main/java/org/mapstruct/ap/processor/creation/MappingResolverImpl.java index c666e679c..fc175c47c 100644 --- a/processor/src/main/java/org/mapstruct/ap/processor/creation/MappingResolverImpl.java +++ b/processor/src/main/java/org/mapstruct/ap/processor/creation/MappingResolverImpl.java @@ -22,11 +22,12 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; + import javax.annotation.processing.Messager; import javax.lang.model.type.TypeMirror; import javax.lang.model.util.Elements; import javax.lang.model.util.Types; -import javax.tools.Diagnostic.Kind; +import javax.tools.Diagnostic; import org.mapstruct.ap.conversion.ConversionProvider; import org.mapstruct.ap.conversion.Conversions; @@ -417,7 +418,7 @@ public class MappingResolverImpl implements MappingResolver { Strings.join( candidates, ", " ) ); - mappingMethod.printMessage( messager, Kind.ERROR, errorMsg ); + messager.printMessage( Diagnostic.Kind.ERROR, errorMsg, mappingMethod.getExecutable() ); } if ( !candidates.isEmpty() ) {