diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/DefaultConfiguration.java b/querydsl-apt/src/main/java/com/mysema/query/apt/DefaultConfiguration.java index a87277a71..422eeffb2 100644 --- a/querydsl-apt/src/main/java/com/mysema/query/apt/DefaultConfiguration.java +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/DefaultConfiguration.java @@ -22,9 +22,7 @@ import java.lang.annotation.Annotation; import java.util.*; import com.google.common.base.Strings; -import com.google.common.collect.Maps; import com.mysema.codegen.model.ClassType; -import com.mysema.codegen.model.SimpleType; import com.mysema.query.annotations.Config; import com.mysema.query.annotations.QueryProjection; import com.mysema.query.annotations.QueryType; @@ -181,23 +179,7 @@ public class DefaultConfiguration implements Configuration { try { // register additional mappings, if querydsl-spatial is on the classpath Class.forName("com.mysema.query.spatial.GeometryExpression"); - TypeMappings typeMappings = module.get(TypeMappings.class); - Map additions = Maps.newHashMap(); - additions.put("Geometry", "GeometryPath"); - additions.put("GeometryCollection", "GeometryCollectionPath"); - additions.put("LinearRing", "LinearRingPath"); - additions.put("LineString", "LineStringPath"); - additions.put("MultiLineString", "MultiLineStringPath"); - additions.put("MultiPoint", "MultiPointPath"); - additions.put("MultiPolygon", "MultiPolygonPath"); - additions.put("Point", "PointPath"); - additions.put("Polygon", "PolygonPath"); - additions.put("PolyHedralSurface", "PolyhedralSurfacePath"); - for (Map.Entry entry : additions.entrySet()) { - typeMappings.register( - new SimpleType("org.geolatte.geom."+ entry.getKey()), - new SimpleType("com.mysema.query.spatial.path." + entry.getValue())); - } + SpatialSupport.addSupport(module); } catch (Exception e) { // do nothing } diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/SpatialSupport.java b/querydsl-apt/src/main/java/com/mysema/query/apt/SpatialSupport.java new file mode 100644 index 000000000..e2f89b81e --- /dev/null +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/SpatialSupport.java @@ -0,0 +1,55 @@ +package com.mysema.query.apt; + +import java.util.Map; +import java.util.Set; + +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import com.mysema.codegen.model.SimpleType; +import com.mysema.query.codegen.AbstractModule; +import com.mysema.query.codegen.CodegenModule; +import com.mysema.query.codegen.TypeMappings; + +public final class SpatialSupport { + + private static void registerTypes(TypeMappings typeMappings) { + Map additions = Maps.newHashMap(); + additions.put("Geometry", "GeometryPath"); + additions.put("GeometryCollection", "GeometryCollectionPath"); + additions.put("LinearRing", "LinearRingPath"); + additions.put("LineString", "LineStringPath"); + additions.put("MultiLineString", "MultiLineStringPath"); + additions.put("MultiPoint", "MultiPointPath"); + additions.put("MultiPolygon", "MultiPolygonPath"); + additions.put("Point", "PointPath"); + additions.put("Polygon", "PolygonPath"); + additions.put("PolyHedralSurface", "PolyhedralSurfacePath"); + for (Map.Entry entry : additions.entrySet()) { + typeMappings.register( + new SimpleType("org.geolatte.geom."+ entry.getKey()), + new SimpleType("com.mysema.query.spatial.path." + entry.getValue())); + } + } + + private static void addImports(AbstractModule module) { + Set imports = module.get(Set.class, CodegenModule.IMPORTS); + String packageName = "com.mysema.query.spatial.path"; + if (imports.isEmpty()) { + imports = ImmutableSet.of(packageName); + } else { + Set old = imports; + imports = Sets.newHashSet(); + imports.addAll(old); + imports.add(packageName); + } + module.bind(CodegenModule.IMPORTS, imports); + } + + public static void addSupport(AbstractModule module) { + registerTypes(module.get(TypeMappings.class)); + addImports(module); + } + + private SpatialSupport() {} +}