From 8ff357f6d073d4e2d199704f6e1256023b6ca134 Mon Sep 17 00:00:00 2001 From: jtsay362 Date: Sun, 20 Oct 2013 10:38:32 -0700 Subject: [PATCH] Add CodeWriter.getClassConstant() to abstract the difference between A.class in Java and classOf[A] in Scala. To be used in querydsl-codegen shortly. --- src/main/java/com/mysema/codegen/CodeWriter.java | 2 ++ src/main/java/com/mysema/codegen/JavaWriter.java | 6 ++++++ src/main/java/com/mysema/codegen/ScalaWriter.java | 5 +++++ src/test/java/com/mysema/codegen/JavaWriterTest.java | 6 +++++- src/test/java/com/mysema/codegen/ScalaWriterTest.java | 8 ++++++-- 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/mysema/codegen/CodeWriter.java b/src/main/java/com/mysema/codegen/CodeWriter.java index d3ce74760..56f462667 100644 --- a/src/main/java/com/mysema/codegen/CodeWriter.java +++ b/src/main/java/com/mysema/codegen/CodeWriter.java @@ -33,6 +33,8 @@ public interface CodeWriter extends Appendable { String getGenericName(boolean asArgType, Type type); + String getClassConstant(String className); + CodeWriter annotation(Annotation annotation) throws IOException; CodeWriter annotation(Class annotation) throws IOException; diff --git a/src/main/java/com/mysema/codegen/JavaWriter.java b/src/main/java/com/mysema/codegen/JavaWriter.java index 6099ee6b8..19561defc 100644 --- a/src/main/java/com/mysema/codegen/JavaWriter.java +++ b/src/main/java/com/mysema/codegen/JavaWriter.java @@ -303,6 +303,12 @@ public final class JavaWriter extends AbstractCodeWriter { + value + SEMICOLON).nl(); } + + @Override + public String getClassConstant(String className) { + return className + ".class"; + } + @Override public String getGenericName(boolean asArgType, Type type) { return type.getGenericName(asArgType, packages, classes); diff --git a/src/main/java/com/mysema/codegen/ScalaWriter.java b/src/main/java/com/mysema/codegen/ScalaWriter.java index 52abc2c8c..fd6c56050 100644 --- a/src/main/java/com/mysema/codegen/ScalaWriter.java +++ b/src/main/java/com/mysema/codegen/ScalaWriter.java @@ -352,6 +352,11 @@ public class ScalaWriter extends AbstractCodeWriter { return compact ? this : nl(); } + @Override + public String getClassConstant(String className) { + return "classOf[" + className + "]"; + } + @Override public String getGenericName(boolean asArgType, Type type) { if (type.getParameters().isEmpty()) { diff --git a/src/test/java/com/mysema/codegen/JavaWriterTest.java b/src/test/java/com/mysema/codegen/JavaWriterTest.java index 56292807e..29872cb43 100644 --- a/src/test/java/com/mysema/codegen/JavaWriterTest.java +++ b/src/test/java/com/mysema/codegen/JavaWriterTest.java @@ -223,6 +223,11 @@ public class JavaWriterTest { assertTrue(w.toString().contains("@Target({FIELD, METHOD})")); } + @Test + public void ClassConstants() { + assertEquals("SomeClass.class", writer.getClassConstant("SomeClass")); + } + @Test public void Fields() throws IOException { writer.beginClass(testType); @@ -330,5 +335,4 @@ public class JavaWriterTest { match("/testSuppressWarnings", w.toString()); } - } diff --git a/src/test/java/com/mysema/codegen/ScalaWriterTest.java b/src/test/java/com/mysema/codegen/ScalaWriterTest.java index 5194c6232..e56d2214f 100644 --- a/src/test/java/com/mysema/codegen/ScalaWriterTest.java +++ b/src/test/java/com/mysema/codegen/ScalaWriterTest.java @@ -366,6 +366,11 @@ public class ScalaWriterTest { assertEquals("case class TestType(a: String, b: String)\n", w.toString()); } + @Test + public void ClassConstants() { + assertEquals("classOf[SomeClass]", writer.getClassConstant("SomeClass")); + } + @Test public void Primitive() throws IOException { writer.beginClass(testType); @@ -381,7 +386,7 @@ public class ScalaWriterTest { } @Test - public void Primive_Types() throws IOException { + public void Primitive_Types() throws IOException { writer.field(Types.BOOLEAN_P, "field"); writer.field(Types.BYTE_P, "field"); writer.field(Types.CHAR, "field"); @@ -417,5 +422,4 @@ public class ScalaWriterTest { assertTrue(w.toString().contains("`class`: JavaWriterTest")); assertTrue(w.toString().contains("`var`(): JavaWriterTest")); } - }