From 239f6a9f591cd9ee85a149ff5682de393b1484ce Mon Sep 17 00:00:00 2001 From: Jan Boerner Date: Fri, 14 Aug 2015 12:01:52 +0200 Subject: [PATCH 1/2] Added an option to switch between field and getter return types. --- .../com/querydsl/codegen/GenericExporter.java | 13 +++++++++++- .../querydsl/codegen/GenericExporterTest.java | 13 ++++++++++++ .../querydsl/maven/AbstractExporterMojo.java | 20 +++++++++++++++---- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/querydsl-codegen/src/main/java/com/querydsl/codegen/GenericExporter.java b/querydsl-codegen/src/main/java/com/querydsl/codegen/GenericExporter.java index 0bafda1fe..75289cc9b 100644 --- a/querydsl-codegen/src/main/java/com/querydsl/codegen/GenericExporter.java +++ b/querydsl-codegen/src/main/java/com/querydsl/codegen/GenericExporter.java @@ -99,6 +99,8 @@ public class GenericExporter { private boolean handleFields = true, handleMethods = true; + private boolean useFieldTypes = false; + @Nullable private File targetFolder; @@ -391,7 +393,7 @@ public class GenericExporter { AnnotatedElement annotated = ReflectionUtils.getAnnotatedElement(cl, field.getName(), field.getType()); Method method = ReflectionUtils.getGetterOrNull(cl, field.getName(), field.getType()); Type propertyType = null; - if (method != null) { + if (method != null && !useFieldTypes) { propertyType = getPropertyType(cl, annotated, method.getReturnType(), method.getGenericReturnType()); } else { propertyType = getPropertyType(cl, annotated, field.getType(), field.getGenericType()); @@ -707,6 +709,15 @@ public class GenericExporter { handleMethods = b; } + /** + * Set whether field types should be used instead of getter return types (default false) + * + * @param b + */ + public void setUseFieldTypes(boolean b) { + useFieldTypes = b; + } + /** * Add a stop class to be used (default Object.class and Enum.class) * diff --git a/querydsl-codegen/src/test/java/com/querydsl/codegen/GenericExporterTest.java b/querydsl-codegen/src/test/java/com/querydsl/codegen/GenericExporterTest.java index 13e3ad559..5ec5968d7 100644 --- a/querydsl-codegen/src/test/java/com/querydsl/codegen/GenericExporterTest.java +++ b/querydsl-codegen/src/test/java/com/querydsl/codegen/GenericExporterTest.java @@ -130,4 +130,17 @@ public class GenericExporterTest { assertTrue(new File("target/gen7/com/querydsl/codegen/sub/QExampleEntity2.java").exists()); } + @Test + public void Export_UseFieldTypes() { + exporter.setTargetFolder(new File("target/gen8")); + exporter.export(getClass().getPackage()); + exporter.setUseFieldTypes(true); + assertTrue(new File("target/gen8/com/querydsl/codegen/QExampleEmbeddable.java").exists()); + assertTrue(new File("target/gen8/com/querydsl/codegen/QExampleEmbedded.java").exists()); + assertTrue(new File("target/gen8/com/querydsl/codegen/QExampleEntity.java").exists()); + assertTrue(new File("target/gen8/com/querydsl/codegen/QExampleEntityInterface.java").exists()); + assertTrue(new File("target/gen8/com/querydsl/codegen/QExampleSupertype.java").exists()); + assertTrue(new File("target/gen8/com/querydsl/codegen/sub/QExampleEntity2.java").exists()); + } + } diff --git a/querydsl-maven-plugin/src/main/java/com/querydsl/maven/AbstractExporterMojo.java b/querydsl-maven-plugin/src/main/java/com/querydsl/maven/AbstractExporterMojo.java index d0d5bca60..81dde1342 100644 --- a/querydsl-maven-plugin/src/main/java/com/querydsl/maven/AbstractExporterMojo.java +++ b/querydsl-maven-plugin/src/main/java/com/querydsl/maven/AbstractExporterMojo.java @@ -76,6 +76,13 @@ public abstract class AbstractExporterMojo extends AbstractMojo { */ private boolean handleMethods = true; + /** + * switch for usage of field types instead of getter types + * + * @parameter default-value-false + */ + private boolean useFieldTypes = false; + /** * maven project * @@ -135,9 +142,9 @@ public abstract class AbstractExporterMojo extends AbstractMojo { if (scala) { try { exporter.setSerializerClass((Class) Class - .forName("com.querydsl.scala.ScalaEntitySerializer")); + .forName("com.querydsl.scala.ScalaEntitySerializer")); exporter.setTypeMappingsClass((Class) Class - .forName("com.querydsl.scala.ScalaTypeMappings")); + .forName("com.querydsl.scala.ScalaTypeMappings")); exporter.setCreateScalaSources(true); } catch (ClassNotFoundException e) { throw new MojoFailureException(e.getMessage(), e); @@ -154,11 +161,12 @@ public abstract class AbstractExporterMojo extends AbstractMojo { protected void configure(GenericExporter exporter) { exporter.setHandleFields(handleFields); exporter.setHandleMethods(handleMethods); + exporter.setUseFieldTypes(useFieldTypes); } @SuppressWarnings("unchecked") protected ClassLoader getProjectClassLoader() throws DependencyResolutionRequiredException, - MalformedURLException { + MalformedURLException { List classpathElements; if (testClasspath) { classpathElements = project.getTestClasspathElements(); @@ -179,7 +187,7 @@ public abstract class AbstractExporterMojo extends AbstractMojo { private boolean hasSourceChanges() { if (buildContext != null) { List sourceRoots = testClasspath ? project.getTestCompileSourceRoots() : - project.getCompileSourceRoots(); + project.getCompileSourceRoots(); for (Object path : sourceRoots) { if (buildContext.hasDelta(new File(path.toString()))) { return true; @@ -226,4 +234,8 @@ public abstract class AbstractExporterMojo extends AbstractMojo { public void setHandleMethods(boolean handleMethods) { this.handleMethods = handleMethods; } + + public void setUseFieldTypes(boolean useFieldTypes) { + this.useFieldTypes = useFieldTypes; + } } From 0bd3dc8b4051e1d0d27c429e49fa1ddf6be0547f Mon Sep 17 00:00:00 2001 From: Jan Boerner Date: Fri, 14 Aug 2015 13:50:47 +0200 Subject: [PATCH 2/2] reverted white space changes, corrected default value doc --- .../java/com/querydsl/maven/AbstractExporterMojo.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/querydsl-maven-plugin/src/main/java/com/querydsl/maven/AbstractExporterMojo.java b/querydsl-maven-plugin/src/main/java/com/querydsl/maven/AbstractExporterMojo.java index 81dde1342..9a10094e4 100644 --- a/querydsl-maven-plugin/src/main/java/com/querydsl/maven/AbstractExporterMojo.java +++ b/querydsl-maven-plugin/src/main/java/com/querydsl/maven/AbstractExporterMojo.java @@ -79,7 +79,7 @@ public abstract class AbstractExporterMojo extends AbstractMojo { /** * switch for usage of field types instead of getter types * - * @parameter default-value-false + * @parameter default-value=false */ private boolean useFieldTypes = false; @@ -142,9 +142,9 @@ public abstract class AbstractExporterMojo extends AbstractMojo { if (scala) { try { exporter.setSerializerClass((Class) Class - .forName("com.querydsl.scala.ScalaEntitySerializer")); + .forName("com.querydsl.scala.ScalaEntitySerializer")); exporter.setTypeMappingsClass((Class) Class - .forName("com.querydsl.scala.ScalaTypeMappings")); + .forName("com.querydsl.scala.ScalaTypeMappings")); exporter.setCreateScalaSources(true); } catch (ClassNotFoundException e) { throw new MojoFailureException(e.getMessage(), e); @@ -166,7 +166,7 @@ public abstract class AbstractExporterMojo extends AbstractMojo { @SuppressWarnings("unchecked") protected ClassLoader getProjectClassLoader() throws DependencyResolutionRequiredException, - MalformedURLException { + MalformedURLException { List classpathElements; if (testClasspath) { classpathElements = project.getTestClasspathElements(); @@ -187,7 +187,7 @@ public abstract class AbstractExporterMojo extends AbstractMojo { private boolean hasSourceChanges() { if (buildContext != null) { List sourceRoots = testClasspath ? project.getTestCompileSourceRoots() : - project.getCompileSourceRoots(); + project.getCompileSourceRoots(); for (Object path : sourceRoots) { if (buildContext.hasDelta(new File(path.toString()))) { return true;