From 1d52cb434e0f0c4e17279e6b50b57bc22dbb5449 Mon Sep 17 00:00:00 2001 From: Andreas Gudian Date: Mon, 13 May 2013 21:09:06 +0200 Subject: [PATCH] o Add option to suppress timestamp in @Generated --- integrationtest/pom.xml | 4 +++ parent/pom.xml | 2 +- .../mapstruct/ap/MapperGenerationVisitor.java | 8 +++-- .../org/mapstruct/ap/MappingProcessor.java | 14 ++++++++- .../java/org/mapstruct/ap/model/Mapper.java | 9 +++++- .../java/org/mapstruct/ap/model/Options.java | 31 +++++++++++++++++++ .../main/resources/mapper-implementation.ftl | 4 +-- 7 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 processor/src/main/java/org/mapstruct/ap/model/Options.java diff --git a/integrationtest/pom.xml b/integrationtest/pom.xml index 30069383f..9d9cd8fcf 100644 --- a/integrationtest/pom.xml +++ b/integrationtest/pom.xml @@ -60,6 +60,10 @@ org.mapstruct.ap.MappingProcessor + + + false + diff --git a/parent/pom.xml b/parent/pom.xml index 9034ed764..e9a063c45 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -141,7 +141,7 @@ org.bsc.maven maven-processor-plugin - 2.0.2 + 2.0.4 org.apache.maven.plugins diff --git a/processor/src/main/java/org/mapstruct/ap/MapperGenerationVisitor.java b/processor/src/main/java/org/mapstruct/ap/MapperGenerationVisitor.java index 59106ebf4..03c76df18 100644 --- a/processor/src/main/java/org/mapstruct/ap/MapperGenerationVisitor.java +++ b/processor/src/main/java/org/mapstruct/ap/MapperGenerationVisitor.java @@ -42,6 +42,7 @@ import org.mapstruct.ap.conversion.Conversions; import org.mapstruct.ap.model.BeanMapping; import org.mapstruct.ap.model.Mapper; import org.mapstruct.ap.model.MappingMethod; +import org.mapstruct.ap.model.Options; import org.mapstruct.ap.model.PropertyMapping; import org.mapstruct.ap.model.Type; import org.mapstruct.ap.model.source.MappedProperty; @@ -62,12 +63,14 @@ public class MapperGenerationVisitor extends ElementKindVisitor6 { private final Types typeUtils; private final Elements elementUtils; private final TypeUtil typeUtil; + private final Options options; - public MapperGenerationVisitor(ProcessingEnvironment processingEnvironment) { + public MapperGenerationVisitor(ProcessingEnvironment processingEnvironment, Options options) { this.processingEnvironment = processingEnvironment; this.typeUtils = processingEnvironment.getTypeUtils(); this.elementUtils = processingEnvironment.getElementUtils(); this.typeUtil = new TypeUtil( elementUtils, typeUtils ); + this.options = options; } @Override @@ -103,7 +106,8 @@ public class MapperGenerationVisitor extends ElementKindVisitor6 { element.getSimpleName().toString(), element.getSimpleName() + IMPLEMENTATION_SUFFIX, mappings, - usedMapperTypes + usedMapperTypes, + options ); return mapper; diff --git a/processor/src/main/java/org/mapstruct/ap/MappingProcessor.java b/processor/src/main/java/org/mapstruct/ap/MappingProcessor.java index f55c4eeeb..ced5245cf 100644 --- a/processor/src/main/java/org/mapstruct/ap/MappingProcessor.java +++ b/processor/src/main/java/org/mapstruct/ap/MappingProcessor.java @@ -30,6 +30,7 @@ import net.java.dev.hickory.prism.GeneratePrisms; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; +import org.mapstruct.ap.model.Options; @SupportedAnnotationTypes("org.mapstruct.Mapper") @GeneratePrisms({ @@ -44,9 +45,15 @@ public class MappingProcessor extends AbstractProcessor { */ private static final boolean ANNOTATIONS_CLAIMED_EXCLUSIVELY = false; + private static final String SUPPRESS_GENERATOR_TIMESTAMP = "suppressGeneratorTimestamp"; + + private Options options; + @Override public synchronized void init(ProcessingEnvironment processingEnv) { super.init( processingEnv ); + + options = createOptions(); } @Override @@ -68,10 +75,15 @@ public class MappingProcessor extends AbstractProcessor { } for ( Element oneAnnotatedElement : roundEnvironment.getElementsAnnotatedWith( oneAnnotation ) ) { - oneAnnotatedElement.accept( new MapperGenerationVisitor( processingEnv ), null ); + oneAnnotatedElement.accept( new MapperGenerationVisitor( processingEnv, options ), null ); } } return ANNOTATIONS_CLAIMED_EXCLUSIVELY; } + + private Options createOptions() { + System.out.println( processingEnv.getOptions() ); + return new Options(Boolean.valueOf( processingEnv.getOptions().get( SUPPRESS_GENERATOR_TIMESTAMP ))); + } } \ No newline at end of file diff --git a/processor/src/main/java/org/mapstruct/ap/model/Mapper.java b/processor/src/main/java/org/mapstruct/ap/model/Mapper.java index 36df57728..710dbcb83 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/Mapper.java +++ b/processor/src/main/java/org/mapstruct/ap/model/Mapper.java @@ -24,14 +24,16 @@ public class Mapper { private final String implementationName; private final List beanMappings; private final List usedMapperTypes; + private final Options options; public Mapper(String packageName, String interfaceName, - String implementationName, List beanMappings, List usedMapperTypes) { + String implementationName, List beanMappings, List usedMapperTypes, Options options) { this.packageName = packageName; this.interfaceName = interfaceName; this.implementationName = implementationName; this.beanMappings = beanMappings; this.usedMapperTypes = usedMapperTypes; + this.options = options; } @Override @@ -72,4 +74,9 @@ public class Mapper { public List getUsedMapperTypes() { return usedMapperTypes; } + + public Options getOptions() + { + return options; + } } diff --git a/processor/src/main/java/org/mapstruct/ap/model/Options.java b/processor/src/main/java/org/mapstruct/ap/model/Options.java new file mode 100644 index 000000000..d7d788a47 --- /dev/null +++ b/processor/src/main/java/org/mapstruct/ap/model/Options.java @@ -0,0 +1,31 @@ +/** + * Copyright 2012-2013 Gunnar Morling (http://www.gunnarmorling.de/) + * + * 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.model; + +public class Options +{ + private final boolean suppressGeneratorTimestamp; + + public Options( boolean suppressGeneratorTimestamp ) + { + this.suppressGeneratorTimestamp = suppressGeneratorTimestamp; + } + + public boolean isSuppressGeneratorTimestamp() + { + return suppressGeneratorTimestamp; + } +} diff --git a/processor/src/main/resources/mapper-implementation.ftl b/processor/src/main/resources/mapper-implementation.ftl index 0db4c8be5..b10634a22 100644 --- a/processor/src/main/resources/mapper-implementation.ftl +++ b/processor/src/main/resources/mapper-implementation.ftl @@ -26,8 +26,8 @@ import javax.annotation.Generated; import java.util.Date; @Generated( - value = "org.mapstruct.ap.MappingProcessor", - date = "${.now?string("yyyy-MM-dd'T'HH:mm:ssZ")}" + value = "org.mapstruct.ap.MappingProcessor"<#if options.suppressGeneratorTimestamp == false>, + date = "${.now?string("yyyy-MM-dd'T'HH:mm:ssZ")}" ) public class ${implementationName} implements ${interfaceName} {