migrated codegen to use Guava

This commit is contained in:
Timo Westkämper 2012-04-18 22:59:21 +03:00
parent 6d49f9b3b6
commit 1b777cdaa7
10 changed files with 48 additions and 69 deletions

29
pom.xml
View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.mysema.codegen</groupId>
<artifactId>codegen</artifactId>
<version>0.4.10</version>
<version>0.4.11</version>
<name>Codegen</name>
<description>Code generation and compilation for Java</description>
<parent>
@ -19,20 +19,16 @@
<properties>
<commons.collections.version>4.01</commons.collections.version>
<commons.lang.version>3.0.1</commons.lang.version>
<guava.version>11.0.2</guava.version>
</properties>
<dependencies>
<dependency>
<groupId>net.sourceforge.collections</groupId>
<artifactId>collections-generic</artifactId>
<version>${commons.collections.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons.lang.version}</version>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>11.0.2</version>
</dependency>
<!-- test -->
<dependency>
<groupId>junit</groupId>
@ -47,17 +43,10 @@
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.CR3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.CR3</version>
<scope>test</scope>
</dependency>
</dependencies>

View File

@ -7,7 +7,7 @@ package com.mysema.codegen;
import java.io.IOException;
import org.apache.commons.lang3.StringUtils;
import com.google.common.base.Strings;
/**
* @author tiwe
@ -34,7 +34,7 @@ public abstract class AbstractCodeWriter<T extends AbstractCodeWriter<T>> implem
}
this.appendable = appendable;
this.spaces = spaces;
this.spacesString = StringUtils.leftPad("", spaces);
this.spacesString = Strings.repeat(" ", spaces);
}
@Override

View File

@ -9,8 +9,7 @@ import java.io.IOException;
import java.lang.annotation.Annotation;
import java.util.Collection;
import org.apache.commons.collections15.Transformer;
import com.google.common.base.Function;
import com.mysema.codegen.model.Parameter;
import com.mysema.codegen.model.Type;
@ -34,7 +33,7 @@ public interface CodeWriter extends Appendable {
CodeWriter beginClass(Type type, Type superClass, Type... interfaces) throws IOException;
<T> CodeWriter beginConstructor(Collection<T> params, Transformer<T, Parameter> transformer) throws IOException;
<T> CodeWriter beginConstructor(Collection<T> params, Function<T, Parameter> transformer) throws IOException;
CodeWriter beginConstructor(Parameter... params) throws IOException;
@ -43,12 +42,12 @@ public interface CodeWriter extends Appendable {
CodeWriter beginLine(String... segments) throws IOException;
<T> CodeWriter beginPublicMethod(Type returnType, String methodName, Collection<T> parameters,
Transformer<T, Parameter> transformer) throws IOException;
Function<T, Parameter> transformer) throws IOException;
CodeWriter beginPublicMethod(Type returnType, String methodName, Parameter... args) throws IOException;
<T> CodeWriter beginStaticMethod(Type type, String name, Collection<T> params,
Transformer<T, Parameter> transformer) throws IOException;
Function<T, Parameter> transformer) throws IOException;
CodeWriter beginStaticMethod(Type returnType, String methodName, Parameter... args) throws IOException;

View File

@ -22,9 +22,7 @@ import java.util.HashSet;
import java.util.Set;
import java.util.Stack;
import org.apache.commons.collections15.Transformer;
import org.apache.commons.lang3.StringEscapeUtils;
import com.google.common.base.Function;
import com.mysema.codegen.model.Parameter;
import com.mysema.codegen.model.Type;
@ -160,7 +158,7 @@ public final class JavaWriter extends AbstractCodeWriter<JavaWriter> {
append(enumValue.getDeclaringClass().getName() + DOT + enumValue.name());
}
} else if (value instanceof String) {
String escaped = StringEscapeUtils.escapeJava(value.toString());
String escaped = StringUtils.escapeJava(value.toString());
append(QUOTE + escaped.replace("\\/", "/") + QUOTE);
} else {
throw new IllegalArgumentException("Unsupported annotation value : " + value);
@ -205,7 +203,7 @@ public final class JavaWriter extends AbstractCodeWriter<JavaWriter> {
@Override
public <T> JavaWriter beginConstructor(Collection<T> parameters,
Transformer<T, Parameter> transformer) throws IOException {
Function<T, Parameter> transformer) throws IOException {
types.push(types.peek());
beginLine(PUBLIC + types.peek().getSimpleName()).params(parameters, transformer)
.append(" {").nl();
@ -249,7 +247,7 @@ public final class JavaWriter extends AbstractCodeWriter<JavaWriter> {
@Override
public <T> JavaWriter beginPublicMethod(Type returnType, String methodName,
Collection<T> parameters, Transformer<T, Parameter> transformer) throws IOException {
Collection<T> parameters, Function<T, Parameter> transformer) throws IOException {
return beginMethod(PUBLIC, returnType, methodName, transform(parameters, transformer));
}
@ -261,7 +259,7 @@ public final class JavaWriter extends AbstractCodeWriter<JavaWriter> {
@Override
public <T> JavaWriter beginStaticMethod(Type returnType, String methodName,
Collection<T> parameters, Transformer<T, Parameter> transformer) throws IOException {
Collection<T> parameters, Function<T, Parameter> transformer) throws IOException {
return beginMethod(PUBLIC_STATIC, returnType, methodName,
transform(parameters, transformer));
}
@ -362,7 +360,7 @@ public final class JavaWriter extends AbstractCodeWriter<JavaWriter> {
return line(PACKAGE + packageName + SEMICOLON).nl();
}
private <T> JavaWriter params(Collection<T> parameters, Transformer<T, Parameter> transformer)
private <T> JavaWriter params(Collection<T> parameters, Function<T, Parameter> transformer)
throws IOException {
append("(");
boolean first = true;
@ -370,7 +368,7 @@ public final class JavaWriter extends AbstractCodeWriter<JavaWriter> {
if (!first) {
append(COMMA);
}
param(transformer.transform(param));
param(transformer.apply(param));
first = false;
}
append(")");
@ -470,11 +468,11 @@ public final class JavaWriter extends AbstractCodeWriter<JavaWriter> {
}
private <T> Parameter[] transform(Collection<T> parameters,
Transformer<T, Parameter> transformer) {
Function<T, Parameter> transformer) {
Parameter[] rv = new Parameter[parameters.size()];
int i = 0;
for (T value : parameters) {
rv[i++] = transformer.transform(value);
rv[i++] = transformer.apply(value);
}
return rv;
}

View File

@ -14,10 +14,7 @@ import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import org.apache.commons.collections15.Transformer;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import com.google.common.base.Function;
import com.mysema.codegen.model.Parameter;
import com.mysema.codegen.model.Type;
import com.mysema.codegen.model.Types;
@ -170,7 +167,7 @@ public class ScalaWriter extends AbstractCodeWriter<ScalaWriter> {
append(enumValue.getDeclaringClass().getName() + DOT + enumValue.name());
}
} else if (value instanceof String) {
append(QUOTE + StringEscapeUtils.escapeJava(value.toString()) + QUOTE);
append(QUOTE + StringUtils.escapeJava(value.toString()) + QUOTE);
} else {
throw new IllegalArgumentException("Unsupported annotation value : " + value);
}
@ -242,7 +239,7 @@ public class ScalaWriter extends AbstractCodeWriter<ScalaWriter> {
@Override
public <T> ScalaWriter beginConstructor(Collection<T> parameters,
Transformer<T, Parameter> transformer) throws IOException {
Function<T, Parameter> transformer) throws IOException {
beginLine(PUBLIC + type.getSimpleName()).params(parameters, transformer).append(" {").nl();
return goIn();
}
@ -291,7 +288,7 @@ public class ScalaWriter extends AbstractCodeWriter<ScalaWriter> {
@Override
public <T> ScalaWriter beginPublicMethod(Type returnType, String methodName,
Collection<T> parameters, Transformer<T, Parameter> transformer) throws IOException {
Collection<T> parameters, Function<T, Parameter> transformer) throws IOException {
return beginMethod(DEF, returnType, methodName, transform(parameters, transformer));
}
@ -303,7 +300,7 @@ public class ScalaWriter extends AbstractCodeWriter<ScalaWriter> {
@Override
public <T> ScalaWriter beginStaticMethod(Type returnType, String methodName,
Collection<T> parameters, Transformer<T, Parameter> transformer) throws IOException {
Collection<T> parameters, Function<T, Parameter> transformer) throws IOException {
return beginMethod(DEF, returnType, methodName, transform(parameters, transformer));
}
@ -450,7 +447,7 @@ public class ScalaWriter extends AbstractCodeWriter<ScalaWriter> {
return line(PACKAGE + packageName).nl();
}
private <T> ScalaWriter params(Collection<T> parameters, Transformer<T, Parameter> transformer)
private <T> ScalaWriter params(Collection<T> parameters, Function<T, Parameter> transformer)
throws IOException {
append("(");
boolean first = true;
@ -458,7 +455,7 @@ public class ScalaWriter extends AbstractCodeWriter<ScalaWriter> {
if (!first) {
append(COMMA);
}
param(transformer.transform(param));
param(transformer.apply(param));
first = false;
}
append(")");
@ -558,11 +555,11 @@ public class ScalaWriter extends AbstractCodeWriter<ScalaWriter> {
}
private <T> Parameter[] transform(Collection<T> parameters,
Transformer<T, Parameter> transformer) {
Function<T, Parameter> transformer) {
Parameter[] rv = new Parameter[parameters.size()];
int i = 0;
for (T value : parameters) {
rv[i++] = transformer.transform(value);
rv[i++] = transformer.apply(value);
}
return rv;
}

View File

@ -8,7 +8,7 @@ package com.mysema.codegen.model;
import java.util.Collections;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import com.google.common.base.Strings;
/**
* @author tiwe
@ -41,7 +41,7 @@ public class TypeExtends extends TypeAdapter {
return "?";
} else {
String genericName = super.getGenericName(true, packages, classes);
return StringUtils.isEmpty(genericName) ? "?" : "? extends " + genericName;
return Strings.isNullOrEmpty(genericName) ? "?" : "? extends " + genericName;
}
} else {
return super.getGenericName(asArgType, packages, classes);

View File

@ -15,11 +15,12 @@ import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
import java.util.Arrays;
import org.apache.commons.collections15.Transformer;
import org.apache.commons.io.IOUtils;
import org.junit.Before;
import org.junit.Test;
import com.google.common.base.Charsets;
import com.google.common.base.Function;
import com.google.common.io.Resources;
import com.mysema.codegen.model.ClassType;
import com.mysema.codegen.model.Parameter;
import com.mysema.codegen.model.SimpleType;
@ -29,9 +30,9 @@ import com.mysema.codegen.model.Types;
public class JavaWriterTest {
private static final Transformer<Parameter, Parameter> transformer = new Transformer<Parameter, Parameter>() {
private static final Function<Parameter, Parameter> transformer = new Function<Parameter, Parameter>() {
@Override
public Parameter transform(Parameter input) {
public Parameter apply(Parameter input) {
return input;
}
};
@ -44,8 +45,7 @@ public class JavaWriterTest {
private static void match(String resource, String text) throws IOException {
// TODO : try to compile ?
String expected = IOUtils
.toString(JavaWriterTest.class.getResourceAsStream(resource), "UTF-8")
String expected = Resources.toString(JavaWriterTest.class.getResource(resource), Charsets.UTF_8)
.replace("\r\n", "\n").trim();
String actual = text.trim();
assertEquals(expected, actual);

View File

@ -14,11 +14,10 @@ import java.util.List;
import javax.validation.constraints.Max;
import org.apache.commons.collections15.Transformer;
import org.apache.commons.lang3.StringUtils;
import org.junit.Before;
import org.junit.Test;
import com.google.common.base.Function;
import com.mysema.codegen.model.ClassType;
import com.mysema.codegen.model.Parameter;
import com.mysema.codegen.model.SimpleType;
@ -28,9 +27,9 @@ import com.mysema.codegen.model.Types;
public class ScalaWriterTest {
private static final Transformer<Parameter, Parameter> transformer = new Transformer<Parameter, Parameter>() {
private static final Function<Parameter, Parameter> transformer = new Function<Parameter, Parameter>() {
@Override
public Parameter transform(Parameter input) {
public Parameter apply(Parameter input) {
return input;
}
};

View File

@ -8,7 +8,6 @@ package com.mysema.codegen.support;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@ -17,7 +16,6 @@ import java.util.Locale;
import java.util.Map;
import java.util.Set;
import org.apache.commons.collections15.Bag;
import org.junit.Test;
public class ClassUtilsTest {
@ -43,7 +41,7 @@ public class ClassUtilsTest {
assertEquals(List.class, ClassUtils.normalize(ArrayList.class));
assertEquals(Set.class, ClassUtils.normalize(HashSet.class));
assertEquals(Map.class, ClassUtils.normalize(HashMap.class));
assertEquals(Collection.class, ClassUtils.normalize(Bag.class));
// assertEquals(Collection.class, ClassUtils.normalize(Bag.class));
}
}

View File

@ -3,7 +3,6 @@ Bundle-Name: Codegen
Bundle-Vendor: Mysema
Bundle-ManifestVersion: 2
Import-Template:
javax.annotation.*;version="0",
org.apache.commons.collections15.*;version="${commons.collections.version}",
org.apache.commons.lang3.*;version="${commons.lang.version}",
javax.tools.*;version="0"
javax.annotation.*;version="0",
javax.tools.*;version="0",
com.google.common.*;version="${guava.version}"