diff --git a/querydsl-apt/pom.xml b/querydsl-apt/pom.xml
index 1712dccfc..eeb4f4ac0 100644
--- a/querydsl-apt/pom.xml
+++ b/querydsl-apt/pom.xml
@@ -5,7 +5,7 @@
com.mysema.querydsl
querydsl-root
- 0.5.2-SNAPSHOT
+ 0.5.3-SNAPSHOT
com.mysema.querydsl
diff --git a/querydsl-collections/pom.xml b/querydsl-collections/pom.xml
index ccefc7c86..26ee26f0a 100644
--- a/querydsl-collections/pom.xml
+++ b/querydsl-collections/pom.xml
@@ -5,7 +5,7 @@
com.mysema.querydsl
querydsl-root
- 0.5.2-SNAPSHOT
+ 0.5.3-SNAPSHOT
com.mysema.querydsl
diff --git a/querydsl-core/pom.xml b/querydsl-core/pom.xml
index d4911b843..c85ee6223 100644
--- a/querydsl-core/pom.xml
+++ b/querydsl-core/pom.xml
@@ -5,7 +5,7 @@
com.mysema.querydsl
querydsl-root
- 0.5.2-SNAPSHOT
+ 0.5.3-SNAPSHOT
com.mysema.querydsl
diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/EBoolean.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/EBoolean.java
index 2d8aa6f88..85d2e7ee3 100644
--- a/querydsl-core/src/main/java/com/mysema/query/types/expr/EBoolean.java
+++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/EBoolean.java
@@ -18,7 +18,7 @@ import com.mysema.query.types.operation.Ops;
*/
public abstract class EBoolean extends EComparable {
- private EBoolean not;
+ private volatile EBoolean not;
public EBoolean() {
super(Boolean.class);
diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/ECollectionBase.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/ECollectionBase.java
index 615ebf867..e4d8f42f5 100644
--- a/querydsl-core/src/main/java/com/mysema/query/types/expr/ECollectionBase.java
+++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/ECollectionBase.java
@@ -21,9 +21,9 @@ import com.mysema.query.types.operation.Ops;
*/
public abstract class ECollectionBase extends Expr> implements ECollection {
- private EBoolean empty;
+ private volatile EBoolean empty;
- private ENumber size;
+ private volatile ENumber size;
public ECollectionBase(Class extends Collection> type) {
super(type);
diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/EComparable.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/EComparable.java
index 46b49d0db..07cbeaade 100644
--- a/querydsl-core/src/main/java/com/mysema/query/types/expr/EComparable.java
+++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/EComparable.java
@@ -1,39 +1,22 @@
-/*
- * Copyright (c) 2009 Mysema Ltd.
- * All rights reserved.
- *
- */
package com.mysema.query.types.expr;
-import com.mysema.query.types.Order;
-import com.mysema.query.types.OrderSpecifier;
import com.mysema.query.types.operation.OBoolean;
-import com.mysema.query.types.operation.ONumber;
-import com.mysema.query.types.operation.OString;
import com.mysema.query.types.operation.Ops;
-
/**
- * EComparable represents comparable expressions
- *
+ * EComparable extends EComparableBase to provide comparison methods.
+ *
* @author tiwe
- *
- * @param Java type
- * @see java.lang.Comparable
+ *
+ * @param
*/
@SuppressWarnings("unchecked")
-public abstract class EComparable extends Expr {
-
- private OrderSpecifier asc;
+public abstract class EComparable extends EComparableBase {
- private OrderSpecifier desc;
-
- private EString stringCast;
-
public EComparable(Class extends D> type) {
super(type);
}
-
+
/**
* Create a this > right expression
*
@@ -77,19 +60,7 @@ public abstract class EComparable extends Expr {
public EBoolean goe(Expr right) {
return OBoolean.create(Ops.AOE, this, right);
}
-
- /**
- * Get an OrderSpecifier for ascending order of this expression
- *
- * @return
- */
- public final OrderSpecifier asc() {
- if (asc == null){
- asc = new OrderSpecifier(Order.ASC, this);
- }
- return asc;
- }
-
+
/**
* Create a this < right expression
*
@@ -134,81 +105,4 @@ public abstract class EComparable extends Expr {
return OBoolean.create(Ops.BOE, this, right);
}
- /**
- * Create a first < this < second expression
- *
- * @param first
- * @param second
- * @return
- */
- public final EBoolean between(D first, D second) {
- return OBoolean.create(Ops.BETWEEN, this, ExprConst.create(first), ExprConst.create(second));
- }
-
- /**
- * Create a first < this < second expression
- *
- * @param first
- * @param second
- * @return
- */
- public final EBoolean between(Expr first, Expr second) {
- return OBoolean.create(Ops.BETWEEN, this, first, second);
- }
-
-
- /**
- * Create a cast expression to the given numeric type
- *
- * @param
- * @param type
- * @return
- */
- public > ENumber castToNum(Class type) {
- return ONumber.create(type, Ops.NUMCAST, this, ExprConst.create(type));
- }
-
- /**
- * Get an OrderSpecifier for descending order of this expression
- *
- * @return
- */
- public final OrderSpecifier desc() {
- if (desc == null){
- desc = new OrderSpecifier(Order.DESC, this);
- }
- return desc;
- }
-
- /**
- * @param first
- * @param second
- * @return
- */
- public final EBoolean notBetween(D first, D second) {
- return between(first, second).not();
- }
-
- /**
- * @param first
- * @param second
- * @return
- */
- public final EBoolean notBetween(Expr first, Expr second) {
- return between(first, second).not();
- }
-
- /**
- * Get a cast to String expression
- *
- * @see java.lang.Object#toString()
- * @return
- */
- public EString stringValue() {
- if (stringCast == null){
- stringCast = OString.create(Ops.STRING_CAST, this);
- }
- return stringCast;
- }
-
-}
\ No newline at end of file
+}
diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/EComparableBase.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/EComparableBase.java
new file mode 100644
index 000000000..10f9ddfa9
--- /dev/null
+++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/EComparableBase.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2009 Mysema Ltd.
+ * All rights reserved.
+ *
+ */
+package com.mysema.query.types.expr;
+
+import com.mysema.query.types.Order;
+import com.mysema.query.types.OrderSpecifier;
+import com.mysema.query.types.operation.OBoolean;
+import com.mysema.query.types.operation.ONumber;
+import com.mysema.query.types.operation.OString;
+import com.mysema.query.types.operation.Ops;
+
+
+/**
+ * EComparableBase represents comparable expressions
+ *
+ * @author tiwe
+ *
+ * @param Java type
+ * @see java.lang.Comparable
+ */
+@SuppressWarnings("unchecked")
+public abstract class EComparableBase extends Expr {
+
+ private volatile OrderSpecifier asc, desc;
+
+ private volatile EString stringCast;
+
+ public EComparableBase(Class extends D> type) {
+ super(type);
+ }
+
+
+ /**
+ * Get an OrderSpecifier for ascending order of this expression
+ *
+ * @return
+ */
+ public final OrderSpecifier asc() {
+ if (asc == null){
+ asc = new OrderSpecifier(Order.ASC, this);
+ }
+ return asc;
+ }
+
+ /**
+ * Create a first < this < second expression
+ *
+ * @param first
+ * @param second
+ * @return
+ */
+ public final EBoolean between(D first, D second) {
+ return OBoolean.create(Ops.BETWEEN, this, ExprConst.create(first), ExprConst.create(second));
+ }
+
+ /**
+ * Create a first < this < second expression
+ *
+ * @param first
+ * @param second
+ * @return
+ */
+ public final EBoolean between(Expr first, Expr second) {
+ return OBoolean.create(Ops.BETWEEN, this, first, second);
+ }
+
+
+ /**
+ * Create a cast expression to the given numeric type
+ *
+ * @param
+ * @param type
+ * @return
+ */
+ public > ENumber castToNum(Class type) {
+ return ONumber.create(type, Ops.NUMCAST, this, ExprConst.create(type));
+ }
+
+ /**
+ * Get an OrderSpecifier for descending order of this expression
+ *
+ * @return
+ */
+ public final OrderSpecifier desc() {
+ if (desc == null){
+ desc = new OrderSpecifier(Order.DESC, this);
+ }
+ return desc;
+ }
+
+ /**
+ * @param first
+ * @param second
+ * @return
+ */
+ public final EBoolean notBetween(D first, D second) {
+ return between(first, second).not();
+ }
+
+ /**
+ * @param first
+ * @param second
+ * @return
+ */
+ public final EBoolean notBetween(Expr first, Expr second) {
+ return between(first, second).not();
+ }
+
+ /**
+ * Get a cast to String expression
+ *
+ * @see java.lang.Object#toString()
+ * @return
+ */
+ public EString stringValue() {
+ if (stringCast == null){
+ stringCast = OString.create(Ops.STRING_CAST, this);
+ }
+ return stringCast;
+ }
+
+}
\ No newline at end of file
diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/EConstructor.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/EConstructor.java
index 926644d56..02d6192bc 100644
--- a/querydsl-core/src/main/java/com/mysema/query/types/expr/EConstructor.java
+++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/EConstructor.java
@@ -25,7 +25,7 @@ public class EConstructor extends Expr {
private final List> args;
- private java.lang.reflect.Constructor javaConstructor;
+ private volatile java.lang.reflect.Constructor javaConstructor;
public EConstructor(Class type, Expr>... args) {
super(type);
diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/EDate.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/EDate.java
index d39c83732..4f0cf9f18 100644
--- a/querydsl-core/src/main/java/com/mysema/query/types/expr/EDate.java
+++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/EDate.java
@@ -22,12 +22,8 @@ import com.mysema.query.types.operation.Ops;
@SuppressWarnings("unchecked")
public abstract class EDate extends EDateOrTime {
- private ENumber dayOfMonth;
+ private volatile ENumber dayOfMonth, month, year;
- private ENumber month;
-
- private ENumber year;
-
public EDate(Class extends D> type) {
super(type);
}
diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/EDateTime.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/EDateTime.java
index 6bdc18418..fc888d589 100644
--- a/querydsl-core/src/main/java/com/mysema/query/types/expr/EDateTime.java
+++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/EDateTime.java
@@ -22,17 +22,7 @@ import com.mysema.query.types.operation.Ops;
@SuppressWarnings("unchecked")
public abstract class EDateTime extends EDateOrTime {
- private ENumber dayOfMonth;
-
- private ENumber month;
-
- private ENumber year;
-
- private ENumber hours;
-
- private ENumber minutes;
-
- private ENumber seconds;
+ private volatile ENumber dayOfMonth, month, year, hours, minutes, seconds;
public EDateTime(Class extends D> type) {
super(type);
diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/EMapBase.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/EMapBase.java
index 7523b055f..ac00e44c0 100644
--- a/querydsl-core/src/main/java/com/mysema/query/types/expr/EMapBase.java
+++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/EMapBase.java
@@ -21,9 +21,9 @@ import com.mysema.query.types.operation.Ops;
*/
public abstract class EMapBase extends Expr