From efde50e2ce754dae3beddc8c8e14bfb960ebc625 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Thu, 17 Nov 2011 17:08:50 +0200 Subject: [PATCH] further improvements to Scala module --- .../com/mysema/query/types/ConstantImpl.java | 4 -- .../mysema/query/types/ExpressionBase.java | 2 +- .../com/mysema/query/types/OperationImpl.java | 4 +- .../java/com/mysema/query/types/PathImpl.java | 4 +- .../java/com/mysema/query/types/QBean.java | 2 +- .../query/types/SubQueryExpressionImpl.java | 2 +- .../query/types/TemplateExpressionImpl.java | 2 +- .../query/types/expr/SimpleExpression.java | 2 +- querydsl-scala/.cache | Bin 31644 -> 31375 bytes .../mysema/query/scala/EntitySerializer.scala | 42 +++++++----------- .../scala/ScalaEntitySerializerTest.scala | 1 + .../mysema/query/sql/AbstractSQLQuery.java | 2 +- .../query/sql/RelationalFunctionCall.java | 2 +- 13 files changed, 27 insertions(+), 42 deletions(-) diff --git a/querydsl-core/src/main/java/com/mysema/query/types/ConstantImpl.java b/querydsl-core/src/main/java/com/mysema/query/types/ConstantImpl.java index 3e99e17be..3e09c503f 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/ConstantImpl.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/ConstantImpl.java @@ -113,10 +113,6 @@ public class ConstantImpl extends ExpressionBase implements Constant { public static Constant> create(Class constant) { return new ConstantImpl>(constant); } - -// public static Constant create(C value){ -// return new ConstantImpl(value); -// } private final T constant; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/ExpressionBase.java b/querydsl-core/src/main/java/com/mysema/query/types/ExpressionBase.java index 47c8cb164..aad1bb80c 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/ExpressionBase.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/ExpressionBase.java @@ -18,7 +18,7 @@ public abstract class ExpressionBase implements Expression{ private static final long serialVersionUID = -8862014178653364345L; - protected final Class type; + private final Class type; @Nullable private volatile String toString; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/OperationImpl.java b/querydsl-core/src/main/java/com/mysema/query/types/OperationImpl.java index 6587854ba..543eddce8 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/OperationImpl.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/OperationImpl.java @@ -62,7 +62,7 @@ public class OperationImpl extends ExpressionBase implements Operation{ Operation op = (Operation)o; return op.getOperator().equals(operator) && op.getArgs().equals(args) - && op.getType().equals(type); + && op.getType().equals(getType()); } else { return false; } @@ -75,7 +75,7 @@ public class OperationImpl extends ExpressionBase implements Operation{ @Override public int hashCode(){ - return type.hashCode(); + return getType().hashCode(); } } diff --git a/querydsl-core/src/main/java/com/mysema/query/types/PathImpl.java b/querydsl-core/src/main/java/com/mysema/query/types/PathImpl.java index 5c6f0cdb2..adc0d1d1d 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/PathImpl.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/PathImpl.java @@ -76,10 +76,10 @@ public class PathImpl extends ExpressionBase implements Path { if (metadata.getPathType() == PathType.PROPERTY) { Class beanClass = metadata.getParent().getType(); String propertyName = metadata.getExpression().toString(); - annotatedElement = ReflectionUtils.getAnnotatedElement(beanClass, propertyName, type); + annotatedElement = ReflectionUtils.getAnnotatedElement(beanClass, propertyName, getType()); } else { - annotatedElement = type; + annotatedElement = getType(); } } return annotatedElement; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/QBean.java b/querydsl-core/src/main/java/com/mysema/query/types/QBean.java index 16212ea22..38652b218 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/QBean.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/QBean.java @@ -144,7 +144,7 @@ public class QBean extends ExpressionBase implements FactoryExpression{ private void initFields() { for (String property : bindings.keySet()){ - Class beanType = type; + Class beanType = getType(); while (!beanType.equals(Object.class)) { try { Field field = beanType.getDeclaredField(property); diff --git a/querydsl-core/src/main/java/com/mysema/query/types/SubQueryExpressionImpl.java b/querydsl-core/src/main/java/com/mysema/query/types/SubQueryExpressionImpl.java index 797286edd..1b69a6374 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/SubQueryExpressionImpl.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/SubQueryExpressionImpl.java @@ -42,7 +42,7 @@ public class SubQueryExpressionImpl extends ExpressionBase implements SubQ } public int hashCode(){ - return type.hashCode(); + return getType().hashCode(); } @Override diff --git a/querydsl-core/src/main/java/com/mysema/query/types/TemplateExpressionImpl.java b/querydsl-core/src/main/java/com/mysema/query/types/TemplateExpressionImpl.java index 8209c7837..12a93a313 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/TemplateExpressionImpl.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/TemplateExpressionImpl.java @@ -83,7 +83,7 @@ public class TemplateExpressionImpl extends ExpressionBase implements Temp } else if (o instanceof TemplateExpression) { TemplateExpression c = (TemplateExpression)o; return c.getTemplate().equals(template) - && c.getType().equals(type); + && c.getType().equals(getType()); } else { return false; } diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/SimpleExpression.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/SimpleExpression.java index 29ec68277..d3a582a0b 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/expr/SimpleExpression.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/SimpleExpression.java @@ -150,7 +150,7 @@ public abstract class SimpleExpression extends ExpressionBase { @Override public int hashCode() { - return type.hashCode(); + return getType().hashCode(); } /** diff --git a/querydsl-scala/.cache b/querydsl-scala/.cache index ee90f334fc4842f90a493ecb81378ed6ef8d4f2f..f89dfe1c8f1a1e1e592dd25fd95b3cb7c025cbde 100644 GIT binary patch literal 31375 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 literal 31644 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 diff --git a/querydsl-scala/src/main/scala/com/mysema/query/scala/EntitySerializer.scala b/querydsl-scala/src/main/scala/com/mysema/query/scala/EntitySerializer.scala index 6656c3c01..f2e216ffb 100644 --- a/querydsl-scala/src/main/scala/com/mysema/query/scala/EntitySerializer.scala +++ b/querydsl-scala/src/main/scala/com/mysema/query/scala/EntitySerializer.scala @@ -18,6 +18,7 @@ import java.io.IOException import scala.reflect.BeanProperty import scala.collection.JavaConversions._ import scala.collection.mutable.Set +import scala.collection.immutable.Map import javax.inject.Inject; @@ -30,7 +31,11 @@ import javax.inject.Inject; class ScalaEntitySerializer @Inject()(val typeMappings: TypeMappings) extends Serializer { // val typeMappings = ScalaTypeMappings.typeMappings - + + private val methodNames = Map(ARRAY->"Array", BOOLEAN->"Boolean", COLLECTION->"Collection", COMPARABLE->"Comparable", + DATE->"Date", DATETIME->"DateTime", ENUM->"Enum", LIST->"List", MAP->"Map", NUMERIC->"Number", SET->"Set", + SIMPLE->"Simple", STRING->"String", TIME->"Time") + val classHeaderFormat = "%1$s(cl: Class[_ <: %2$s], md: PathMetadata[_]) extends EntityPathImpl[%2$s](cl, md)" def serialize(model: EntityType, serializerConfig: SerializerConfig, writer: CodeWriter) { @@ -45,8 +50,8 @@ class ScalaEntitySerializer @Inject()(val typeMappings: TypeMappings) extends Se writer.staticimports(classOf[PathMetadataFactory]) var importedClasses = getAnnotationTypes(model) - if (model.hasLists()) importedClasses.add(classOf[List[_]].getName) - if (model.hasMaps()) importedClasses.add(classOf[Map[_, _]].getName) + if (model.hasLists()) importedClasses.add(classOf[java.util.List[_]].getName) + if (model.hasMaps()) importedClasses.add(classOf[java.util.Map[_, _]].getName) writer.importClasses(importedClasses.toArray: _*) writeHeader(model, scalaWriter) @@ -102,7 +107,7 @@ class ScalaEntitySerializer @Inject()(val typeMappings: TypeMappings) extends Se def writeAdditionalCompanionContent(model: EntityType, writer: ScalaWriter) = {} - private def serializeEntityProperties(model: EntityType, writer: CodeWriter, properties: Collection[Property]) = { + private def getEntityProperties(model: EntityType, writer: CodeWriter, properties: Collection[Property]) = { for (property <- properties if property.getType.getCategory == ENTITY) yield { val queryType = typeMappings.getPathType(property.getType, model, false) val typeName = writer.getRawName(queryType) @@ -111,24 +116,9 @@ class ScalaEntitySerializer @Inject()(val typeMappings: TypeMappings) extends Se } } - private def serializeOtherProperties(model: EntityType, writer: CodeWriter, properties: Collection[Property]) = { + private def getOtherProperties(model: EntityType, writer: CodeWriter, properties: Collection[Property]) = { for (property <- properties if property.getType.getCategory != ENTITY) yield { - val methodName: String = property.getType.getCategory match { - case ARRAY => "createArray" - case BOOLEAN => "createBoolean" - case COLLECTION => "createCollection" - case COMPARABLE => "createComparable" - case DATE => "createDate" - case DATETIME => "createDateTime" - case ENUM => "createEnum" - case LIST => "createList" - case MAP => "createMap" - case NUMERIC => "createNumber" - case SET => "createSet" - case SIMPLE => "createSimple" - case STRING => "createString" - case TIME => "createTime" - } + val methodName: String = "create" + methodNames(property.getType.getCategory) val value = property.getType.getCategory match { case BOOLEAN | STRING => methodName + "(\"" + property.getName + "\")" @@ -151,20 +141,18 @@ class ScalaEntitySerializer @Inject()(val typeMappings: TypeMappings) extends Se def serializeProperties(model: EntityType, writer: CodeWriter, properties: Collection[Property]) { // entity properties - serializeEntityProperties(model, writer, properties) foreach (writer.line(_, "\n")) + getEntityProperties(model, writer, properties) foreach (writer.line(_, "\n")) // other properties - serializeOtherProperties(model, writer, properties) foreach { case (propertyName, value) => + getOtherProperties(model, writer, properties) foreach { case (propertyName, value) => writer.line("val ", escape(propertyName), " = ", value, "\n") } } def escape(token: String): String = { - if (token == "type") "type$" // type is already available as a property in Expression - else if (ScalaSyntaxUtils.isReserved(token)) "`" + token + "`" - else token + if (ScalaSyntaxUtils.isReserved(token)) "`" + token + "`" else token } - + def getAnnotationTypes(model: EntityType): Set[String] = { Set() ++ (model.getAnnotations.map(_.annotationType.getName)) } diff --git a/querydsl-scala/src/test/scala/com/mysema/query/scala/ScalaEntitySerializerTest.scala b/querydsl-scala/src/test/scala/com/mysema/query/scala/ScalaEntitySerializerTest.scala index 9f6e69e71..2fa3cf169 100644 --- a/querydsl-scala/src/test/scala/com/mysema/query/scala/ScalaEntitySerializerTest.scala +++ b/querydsl-scala/src/test/scala/com/mysema/query/scala/ScalaEntitySerializerTest.scala @@ -62,6 +62,7 @@ class ScalaEntitySerializerTest extends CompileTestUtils { val serializer = new ScalaEntitySerializer(typeMappings) serializer.serialize(entityType, SimpleSerializerConfig.DEFAULT, new ScalaWriter(writer)) val str = writer.toString() + System.err.println(str); assertCompileSuccess(str) } } \ No newline at end of file diff --git a/querydsl-sql/src/main/java/com/mysema/query/sql/AbstractSQLQuery.java b/querydsl-sql/src/main/java/com/mysema/query/sql/AbstractSQLQuery.java index dbcbc45fa..e985ff42c 100644 --- a/querydsl-sql/src/main/java/com/mysema/query/sql/AbstractSQLQuery.java +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/AbstractSQLQuery.java @@ -405,7 +405,7 @@ public abstract class AbstractSQLQuery> extends if (bindings.isEmpty()) { throw new IllegalArgumentException("No bindings could be derived from " + expr); } - return new QBean((Class)expr.getType(), bindings); + return new QBean((Class)expr.getType(), true, bindings); }catch(IllegalAccessException e) { throw new QueryException(e); } diff --git a/querydsl-sql/src/main/java/com/mysema/query/sql/RelationalFunctionCall.java b/querydsl-sql/src/main/java/com/mysema/query/sql/RelationalFunctionCall.java index 1320a2b61..d6dbf8654 100644 --- a/querydsl-sql/src/main/java/com/mysema/query/sql/RelationalFunctionCall.java +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/RelationalFunctionCall.java @@ -91,7 +91,7 @@ public class RelationalFunctionCall extends SimpleExpression implements Te } else if (o instanceof TemplateExpression) { TemplateExpression c = (TemplateExpression)o; return c.getTemplate().equals(template) - && c.getType().equals(type); + && c.getType().equals(getType()); } else { return false; }