diff --git a/core/src/main/java/org/mapstruct/Mapper.java b/core/src/main/java/org/mapstruct/Mapper.java index d7e990f3c..4da84b445 100644 --- a/core/src/main/java/org/mapstruct/Mapper.java +++ b/core/src/main/java/org/mapstruct/Mapper.java @@ -23,6 +23,8 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import org.mapstruct.factory.Mappers; + /** * Marks an interface as mapper interface and activates the generation of a * mapper implementation for that interface. diff --git a/core/src/main/java/org/mapstruct/Mappers.java b/core/src/main/java/org/mapstruct/factory/Mappers.java similarity index 68% rename from core/src/main/java/org/mapstruct/Mappers.java rename to core/src/main/java/org/mapstruct/factory/Mappers.java index f2c3b7762..ff334f197 100644 --- a/core/src/main/java/org/mapstruct/Mappers.java +++ b/core/src/main/java/org/mapstruct/factory/Mappers.java @@ -16,10 +16,30 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.mapstruct; +package org.mapstruct.factory; + +import org.mapstruct.Mapper; /** - * Factory for getting mapper instances. + * Factory for obtaining mapper instances if no explicit component model such as CDI is configured via + * {@link Mapper#componentModel()}. + *
+ * Mapper implementation types are expected to have the same fully qualified name as their interface type, with the + * suffix {@code Impl} appended. When using this factory, mapper types - and any mappers they use - are instantiated by + * invoking their public no-args constructor. + *
+ * By convention, a single instance of each mapper is retrieved from the factory and exposed on the mapper interface + * type by declaring a member named {@code INSTANCE} like this: + * + *
+ * @Mapper + * public interface CustomerMapper { + * + * CustomerMapper INSTANCE = Mappers.getMapper( CustomerMapper.class ); + * + * // mapping methods... + * } + ** * @author Gunnar Morling */ diff --git a/core/src/main/java/org/mapstruct/factory/package-info.java b/core/src/main/java/org/mapstruct/factory/package-info.java new file mode 100644 index 000000000..8b1f0509f --- /dev/null +++ b/core/src/main/java/org/mapstruct/factory/package-info.java @@ -0,0 +1,26 @@ +/** + * Copyright 2012-2013 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. + */ +/** + *
+ * Provides the {@link org.mapstruct.factory.Mappers} factory class for the retrieval of mapper instances if no + * explicit component model such as CDI is configured via {@link org.mapstruct.Mapper#componentModel()}. + *
+ * + */ +package org.mapstruct.factory; diff --git a/core/src/test/java/org/mapstruct/MappersTest.java b/core/src/test/java/org/mapstruct/MappersTest.java index c1647d22e..0343e6b20 100644 --- a/core/src/test/java/org/mapstruct/MappersTest.java +++ b/core/src/test/java/org/mapstruct/MappersTest.java @@ -18,6 +18,7 @@ */ package org.mapstruct; +import org.mapstruct.factory.Mappers; import org.mapstruct.test.model.Foo; import org.testng.annotations.Test; diff --git a/integrationtest/src/main/java/org/mapstruct/itest/SourceTargetMapper.java b/integrationtest/src/main/java/org/mapstruct/itest/SourceTargetMapper.java index d84a3cfdd..e0828ace2 100644 --- a/integrationtest/src/main/java/org/mapstruct/itest/SourceTargetMapper.java +++ b/integrationtest/src/main/java/org/mapstruct/itest/SourceTargetMapper.java @@ -19,9 +19,9 @@ package org.mapstruct.itest; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; import org.mapstruct.Mapping; import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; @Mapper public interface SourceTargetMapper { diff --git a/processor/src/main/java/org/mapstruct/ap/conversion/ConversionProvider.java b/processor/src/main/java/org/mapstruct/ap/conversion/ConversionProvider.java index 8962c5a8b..42f38c312 100644 --- a/processor/src/main/java/org/mapstruct/ap/conversion/ConversionProvider.java +++ b/processor/src/main/java/org/mapstruct/ap/conversion/ConversionProvider.java @@ -18,6 +18,8 @@ */ package org.mapstruct.ap.conversion; +import java.util.Date; + import org.mapstruct.ap.model.Type; import org.mapstruct.ap.model.TypeConversion; import org.mapstruct.ap.util.TypeFactory; diff --git a/processor/src/test/java/org/mapstruct/ap/test/collection/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/collection/SourceTargetMapper.java index beeb8a386..410396a09 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/collection/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/collection/SourceTargetMapper.java @@ -21,9 +21,9 @@ package org.mapstruct.ap.test.collection; import java.util.Set; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; import org.mapstruct.Mapping; import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; @Mapper public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/SourceTargetMapper.java index 5da4065b0..87aa53f1d 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/SourceTargetMapper.java @@ -30,8 +30,8 @@ import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentNavigableMap; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; import org.mapstruct.MappingTarget; +import org.mapstruct.factory.Mappers; @Mapper public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/collection/iterabletononiterable/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/collection/iterabletononiterable/SourceTargetMapper.java index 541d0fbf0..452ea39b2 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/collection/iterabletononiterable/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/collection/iterabletononiterable/SourceTargetMapper.java @@ -19,7 +19,7 @@ package org.mapstruct.ap.test.collection.iterabletononiterable; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; +import org.mapstruct.factory.Mappers; @Mapper(uses = StringListMapper.class) public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/collection/map/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/collection/map/SourceTargetMapper.java index 6b90d0b0d..724f2a070 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/collection/map/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/collection/map/SourceTargetMapper.java @@ -23,8 +23,8 @@ import java.util.Map; import org.mapstruct.MapMapping; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; import org.mapstruct.MappingTarget; +import org.mapstruct.factory.Mappers; @Mapper(uses = CustomNumberMapper.class) public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/complex/CarMapper.java b/processor/src/test/java/org/mapstruct/ap/test/complex/CarMapper.java index e354fd215..e41095841 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/complex/CarMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/complex/CarMapper.java @@ -21,7 +21,6 @@ package org.mapstruct.ap.test.complex; import java.util.List; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; import org.mapstruct.Mapping; import org.mapstruct.Mappings; import org.mapstruct.ap.test.complex.other.DateMapper; @@ -29,6 +28,7 @@ import org.mapstruct.ap.test.complex.source.Car; import org.mapstruct.ap.test.complex.source.Person; import org.mapstruct.ap.test.complex.target.CarDto; import org.mapstruct.ap.test.complex.target.PersonDto; +import org.mapstruct.factory.Mappers; @Mapper(uses = DateMapper.class) public interface CarMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/conversion/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/conversion/SourceTargetMapper.java index 8a9990de0..4dde245e6 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/conversion/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/conversion/SourceTargetMapper.java @@ -19,9 +19,9 @@ package org.mapstruct.ap.test.conversion; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; import org.mapstruct.Mapping; import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; @Mapper public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/conversion/bignumbers/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/conversion/bignumbers/SourceTargetMapper.java index f19ec9512..325dc0faf 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/conversion/bignumbers/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/conversion/bignumbers/SourceTargetMapper.java @@ -19,7 +19,7 @@ package org.mapstruct.ap.test.conversion.bignumbers; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; +import org.mapstruct.factory.Mappers; @Mapper public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/conversion/date/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/conversion/date/SourceTargetMapper.java index cdcc52739..cb570acb9 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/conversion/date/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/conversion/date/SourceTargetMapper.java @@ -23,8 +23,8 @@ import java.util.List; import org.mapstruct.IterableMapping; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; @Mapper public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/conversion/nativetypes/BooleanMapper.java b/processor/src/test/java/org/mapstruct/ap/test/conversion/nativetypes/BooleanMapper.java index e622bf782..77f035372 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/conversion/nativetypes/BooleanMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/conversion/nativetypes/BooleanMapper.java @@ -19,7 +19,7 @@ package org.mapstruct.ap.test.conversion.nativetypes; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; +import org.mapstruct.factory.Mappers; @Mapper public interface BooleanMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/conversion/nativetypes/CharMapper.java b/processor/src/test/java/org/mapstruct/ap/test/conversion/nativetypes/CharMapper.java index fd93b5e06..ffe4edbf4 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/conversion/nativetypes/CharMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/conversion/nativetypes/CharMapper.java @@ -19,7 +19,7 @@ package org.mapstruct.ap.test.conversion.nativetypes; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; +import org.mapstruct.factory.Mappers; @Mapper public interface CharMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/conversion/nativetypes/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/conversion/nativetypes/SourceTargetMapper.java index a4643b030..0e193e54e 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/conversion/nativetypes/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/conversion/nativetypes/SourceTargetMapper.java @@ -19,7 +19,7 @@ package org.mapstruct.ap.test.conversion.nativetypes; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; +import org.mapstruct.factory.Mappers; @Mapper public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/conversion/precedence/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/conversion/precedence/SourceTargetMapper.java index bd60fb3ff..1d44906a6 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/conversion/precedence/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/conversion/precedence/SourceTargetMapper.java @@ -19,7 +19,7 @@ package org.mapstruct.ap.test.conversion.precedence; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; +import org.mapstruct.factory.Mappers; @Mapper(uses = IntegerStringMapper.class) public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/conversion/string/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/conversion/string/SourceTargetMapper.java index 75f121bcb..1acd1d4cf 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/conversion/string/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/conversion/string/SourceTargetMapper.java @@ -19,7 +19,7 @@ package org.mapstruct.ap.test.conversion.string; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; +import org.mapstruct.factory.Mappers; @Mapper public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/inheritance/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/inheritance/SourceTargetMapper.java index a10d30270..88cfe2bfc 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/inheritance/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/inheritance/SourceTargetMapper.java @@ -19,8 +19,8 @@ package org.mapstruct.ap.test.inheritance; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; import org.mapstruct.MappingTarget; +import org.mapstruct.factory.Mappers; @Mapper public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/inheritance/attribute/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/inheritance/attribute/SourceTargetMapper.java index 1062ab01e..c543f8625 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/inheritance/attribute/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/inheritance/attribute/SourceTargetMapper.java @@ -19,7 +19,7 @@ package org.mapstruct.ap.test.inheritance.attribute; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; +import org.mapstruct.factory.Mappers; @Mapper public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/inheritance/attribute/TargetSourceMapper.java b/processor/src/test/java/org/mapstruct/ap/test/inheritance/attribute/TargetSourceMapper.java index 444b58b53..83d90f4a0 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/inheritance/attribute/TargetSourceMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/inheritance/attribute/TargetSourceMapper.java @@ -19,7 +19,7 @@ package org.mapstruct.ap.test.inheritance.attribute; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; +import org.mapstruct.factory.Mappers; @Mapper public interface TargetSourceMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/naming/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/naming/SourceTargetMapper.java index b06850c2d..23f9ebfd9 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/naming/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/naming/SourceTargetMapper.java @@ -24,7 +24,7 @@ import java.util.Map; import org.mapstruct.MapMapping; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; +import org.mapstruct.factory.Mappers; @Mapper(uses = While.class) public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/oneway/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/oneway/SourceTargetMapper.java index 7f9f1ca52..2609df846 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/oneway/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/oneway/SourceTargetMapper.java @@ -19,7 +19,7 @@ package org.mapstruct.ap.test.oneway; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; +import org.mapstruct.factory.Mappers; @Mapper public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/severalsources/ErroneousSourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/severalsources/ErroneousSourceTargetMapper.java index 087c053a9..5748c8470 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/severalsources/ErroneousSourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/severalsources/ErroneousSourceTargetMapper.java @@ -19,7 +19,7 @@ package org.mapstruct.ap.test.severalsources; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; +import org.mapstruct.factory.Mappers; @Mapper public interface ErroneousSourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/severalsources/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/severalsources/SourceTargetMapper.java index c22fcbc81..73491206a 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/severalsources/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/severalsources/SourceTargetMapper.java @@ -19,10 +19,10 @@ package org.mapstruct.ap.test.severalsources; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; import org.mapstruct.Mapping; import org.mapstruct.MappingTarget; import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; @Mapper public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/unmappedtarget/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/unmappedtarget/SourceTargetMapper.java index fc44e8f22..b9eed7497 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/unmappedtarget/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/unmappedtarget/SourceTargetMapper.java @@ -19,7 +19,7 @@ package org.mapstruct.ap.test.unmappedtarget; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; +import org.mapstruct.factory.Mappers; @Mapper public interface SourceTargetMapper { diff --git a/processor/src/test/java/org/mapstruct/ap/test/unmappedtarget/StrictSourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/unmappedtarget/StrictSourceTargetMapper.java index 43cb49346..34e66f541 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/unmappedtarget/StrictSourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/unmappedtarget/StrictSourceTargetMapper.java @@ -19,8 +19,8 @@ package org.mapstruct.ap.test.unmappedtarget; import org.mapstruct.Mapper; -import org.mapstruct.Mappers; import org.mapstruct.ReportingPolicy; +import org.mapstruct.factory.Mappers; @Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR) public interface StrictSourceTargetMapper {