diff --git a/pom.xml b/pom.xml
index 4ccbf1f01..ef3eecc3a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.mysema.codegen
codegen
- 0.4.4
+ 0.4.5
Codegen
Code generation and compilation for Java
diff --git a/src/main/java/com/mysema/codegen/ScalaWriter.java b/src/main/java/com/mysema/codegen/ScalaWriter.java
index fbae3e36c..65379695d 100644
--- a/src/main/java/com/mysema/codegen/ScalaWriter.java
+++ b/src/main/java/com/mysema/codegen/ScalaWriter.java
@@ -4,7 +4,6 @@ import static com.mysema.codegen.Symbols.ASSIGN;
import static com.mysema.codegen.Symbols.COMMA;
import static com.mysema.codegen.Symbols.DOT;
import static com.mysema.codegen.Symbols.QUOTE;
-import static com.mysema.codegen.Symbols.SEMICOLON;
import java.io.IOException;
import java.lang.annotation.Annotation;
@@ -54,6 +53,8 @@ public class ScalaWriter extends AbstractCodeWriter{
private static final String PUBLIC_CLASS = "class ";
private static final String PUBLIC_OBJECT = "object ";
+
+ private static final String CASE_CLASS = "case class ";
private static final String VAR = "var ";
@@ -185,7 +186,7 @@ public class ScalaWriter extends AbstractCodeWriter{
goIn();
return this;
}
-
+
public ScalaWriter beginClass(String header) throws IOException {
line(PUBLIC_CLASS, header, " {");
goIn();
@@ -297,6 +298,11 @@ public class ScalaWriter extends AbstractCodeWriter{
public ScalaWriter beginStaticMethod(Type returnType, String methodName, Parameter... args) throws IOException{
return beginMethod(DEF, returnType, methodName, args);
}
+
+ public ScalaWriter caseClass(String header, Parameter... parameters) throws IOException {
+ beginLine(CASE_CLASS, header).params(parameters).nl();
+ return this;
+ }
@Override
public ScalaWriter end() throws IOException {
@@ -305,17 +311,17 @@ public class ScalaWriter extends AbstractCodeWriter{
}
public ScalaWriter field(Type type, String name) throws IOException {
- line(VAR + escape(name) + ": " + getGenericName(true, type) + SEMICOLON);
+ line(VAR + escape(name) + ": " + getGenericName(true, type));
return compact ? this : nl();
}
private ScalaWriter field(String modifier, Type type, String name) throws IOException{
- line(modifier + escape(name) + ": " + getGenericName(true, type) + SEMICOLON);
+ line(modifier + escape(name) + ": " + getGenericName(true, type));
return compact ? this : nl();
}
private ScalaWriter field(String modifier, Type type, String name, String value) throws IOException{
- line(modifier + escape(name) + ": " + getGenericName(true, type) + ASSIGN + value + SEMICOLON);
+ line(modifier + escape(name) + ": " + getGenericName(true, type) + ASSIGN + value);
return compact ? this : nl();
}
@@ -373,7 +379,7 @@ public class ScalaWriter extends AbstractCodeWriter{
public ScalaWriter imports(Class>... imports) throws IOException{
for (Class> cl : imports){
classes.add(cl.getName());
- line(IMPORT + cl.getName() + SEMICOLON);
+ line(IMPORT + cl.getName());
}
nl();
return this;
@@ -383,7 +389,7 @@ public class ScalaWriter extends AbstractCodeWriter{
public ScalaWriter imports(Package... imports) throws IOException {
for (Package p : imports){
packages.add(p.getName());
- line(IMPORT + p.getName() + "._;");
+ line(IMPORT + p.getName() + "._");
}
nl();
return this;
@@ -393,7 +399,7 @@ public class ScalaWriter extends AbstractCodeWriter{
public ScalaWriter importClasses(String... imports) throws IOException{
for (String cl : imports){
classes.add(cl);
- line(IMPORT + cl + SEMICOLON);
+ line(IMPORT + cl);
}
nl();
return this;
@@ -421,7 +427,7 @@ public class ScalaWriter extends AbstractCodeWriter{
@Override
public ScalaWriter packageDecl(String packageName) throws IOException {
packages.add(packageName);
- return line(PACKAGE + packageName + SEMICOLON).nl();
+ return line(PACKAGE + packageName).nl();
}
private ScalaWriter params(Collection parameters, Transformer transformer) throws IOException{
diff --git a/src/test/java/com/mysema/codegen/ScalaWriterTest.java b/src/test/java/com/mysema/codegen/ScalaWriterTest.java
index 10c65c629..f28d9a9a4 100644
--- a/src/test/java/com/mysema/codegen/ScalaWriterTest.java
+++ b/src/test/java/com/mysema/codegen/ScalaWriterTest.java
@@ -1,5 +1,6 @@
package com.mysema.codegen;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
@@ -113,7 +114,7 @@ public class ScalaWriterTest {
writer.end();
System.out.println(w);
- assertTrue(w.toString().contains("var stringArray: Array[String];"));
+ assertTrue(w.toString().contains("var stringArray: Array[String]"));
assertTrue(w.toString().contains("def main(args: Array[String])"));
assertTrue(w.toString().contains("def main2(args: Array[String])"));
}
@@ -333,6 +334,14 @@ public class ScalaWriterTest {
}
+ @Test
+ public void CaseClass() throws IOException {
+ writer.caseClass("TestType", new Parameter("a", Types.STRING), new Parameter("b", Types.STRING));
+
+ System.out.println(w);
+ assertEquals("case class TestType(a: String, b: String)\n", w.toString());
+ }
+
@Test
public void Primitive() throws IOException {
writer.beginClass(testType);