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> 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 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 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 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 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> implements EMap { - private ENumber size; + private volatile ENumber size; - private EBoolean empty; + private volatile EBoolean empty; public EMapBase(Class> type) { super(type); diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/ENumber.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/ENumber.java index c1012e704..47baff727 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/expr/ENumber.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/ENumber.java @@ -9,11 +9,8 @@ import java.math.BigDecimal; import java.math.BigInteger; import com.mysema.commons.lang.Assert; -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; import com.mysema.query.types.operation.Ops.MathOps; @@ -27,16 +24,10 @@ import com.mysema.query.types.operation.Ops.MathOps; * @see java.lang.Number */ -public abstract class ENumber> extends Expr { +public abstract class ENumber> extends EComparableBase { private static ENumber random; - - private OrderSpecifier asc; - - private OrderSpecifier desc; - - private EString stringCast; - + /** * Factory method * @@ -436,87 +427,4 @@ public abstract class ENumber> extends Expr return sum; } - /** - * Create a first < this < second expression - * - * @param first - * @param second - * @return - */ - // copied from EComparable - 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 - */ - // copied from EComparable - public final EBoolean between(Expr first, Expr second) { - return OBoolean.create(Ops.BETWEEN, this, first, second); - } - - /** - * @param first - * @param second - * @return - */ - // copied from EComparable - public final EBoolean notBetween(D first, D second) { - return between(first, second).not(); - } - - /** - * @param first - * @param second - * @return - */ - // copied from EComparable - public final EBoolean notBetween(Expr first, Expr second) { - return between(first, second).not(); - } - - /** - * Get an OrderSpecifier for ascending order of this expression - * - * @return - */ - // copied from EComparable - public final OrderSpecifier asc() { - if (asc == null){ - asc = new OrderSpecifier(Order.ASC, this); - } - return asc; - } - - /** - * Get an OrderSpecifier for descending order of this expression - * - * @return - */ - // copied from EComparable - public final OrderSpecifier desc() { - if (desc == null){ - desc = new OrderSpecifier(Order.DESC, this); - } - return desc; - } - - /** - * Get a cast to String expression - * - * @see java.lang.Object#toString() - * @return - */ - // copied from EComparable - 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/EString.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/EString.java index 47954076b..1ee336e8e 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/expr/EString.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/EString.java @@ -33,9 +33,9 @@ public abstract class EString extends EComparable { return new EStringConst(Assert.notNull(str)); } - private ENumber length; + private volatile ENumber length; - private EString lower, trim, upper; + private volatile EString lower, trim, upper; public EString() { super(String.class); diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/EStringConst.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/EStringConst.java index afdbed331..fba824c20 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/expr/EStringConst.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/EStringConst.java @@ -20,9 +20,9 @@ public class EStringConst extends EString implements Constant{ private final String constant; - private ENumber length; + private volatile ENumber length; - private EString lower, trim, upper; + private volatile EString lower, trim, upper; EStringConst(String constant){ this.constant = constant; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/ETime.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/ETime.java index f4ef68cf0..ffc8cc403 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/expr/ETime.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/ETime.java @@ -21,12 +21,8 @@ import com.mysema.query.types.operation.Ops; @SuppressWarnings("unchecked") public abstract class ETime extends EDateOrTime { - private ENumber hours; + private volatile ENumber hours, minutes, seconds; - private ENumber minutes; - - private ENumber seconds; - public ETime(Class type) { super(type); } diff --git a/querydsl-core/src/main/java/com/mysema/query/types/expr/Expr.java b/querydsl-core/src/main/java/com/mysema/query/types/expr/Expr.java index f78cd0e15..07c78796c 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/expr/Expr.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/expr/Expr.java @@ -49,11 +49,11 @@ public abstract class Expr { return Ops.AggOps.COUNT_ALL_AGG_EXPR; } - private ENumber count; + private volatile ENumber count; private final boolean primitive; - private String toString; + private volatile String toString; private final Class type; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/path/PArray.java b/querydsl-core/src/main/java/com/mysema/query/types/path/PArray.java index 5df5009d1..8840fafa1 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/path/PArray.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/path/PArray.java @@ -10,7 +10,7 @@ import java.lang.reflect.Array; import javax.annotation.Nonnegative; import com.mysema.query.types.expr.EBoolean; -import com.mysema.query.types.expr.EComparable; +import com.mysema.query.types.expr.EComparableBase; import com.mysema.query.types.expr.ENumber; import com.mysema.query.types.expr.Expr; import com.mysema.query.types.operation.OBoolean; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/path/PComparableArray.java b/querydsl-core/src/main/java/com/mysema/query/types/path/PComparableArray.java index 0e11cc724..808cd9093 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/path/PComparableArray.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/path/PComparableArray.java @@ -6,7 +6,6 @@ package com.mysema.query.types.path; import com.mysema.query.types.Visitor; -import com.mysema.query.types.expr.EComparable; import com.mysema.query.types.expr.Expr; import com.mysema.query.util.NotEmpty; @@ -28,12 +27,12 @@ public class PComparableArray extends PArray { } @Override - public EComparable get(Expr index) { + public PComparable get(Expr index) { return new PComparable(componentType, PathMetadata.forArrayAccess(this, index)); } @Override - public EComparable get(int index) { + public PComparable get(int index) { return new PComparable(componentType, PathMetadata.forArrayAccess(this, index)); } diff --git a/querydsl-core/src/test/java/com/mysema/query/StandardTestData.java b/querydsl-core/src/test/java/com/mysema/query/StandardTestData.java index 2b7584d4f..c538381c6 100644 --- a/querydsl-core/src/test/java/com/mysema/query/StandardTestData.java +++ b/querydsl-core/src/test/java/com/mysema/query/StandardTestData.java @@ -14,6 +14,7 @@ import java.util.List; import com.mysema.query.types.expr.EBoolean; import com.mysema.query.types.expr.ECollection; import com.mysema.query.types.expr.EComparable; +import com.mysema.query.types.expr.EComparableBase; import com.mysema.query.types.expr.EDate; import com.mysema.query.types.expr.EDateTime; import com.mysema.query.types.expr.EList; diff --git a/querydsl-docs/pom.xml b/querydsl-docs/pom.xml index c62e12470..0d00c2530 100644 --- a/querydsl-docs/pom.xml +++ b/querydsl-docs/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-hql/pom.xml b/querydsl-hql/pom.xml index ada861133..f08e4bdb0 100644 --- a/querydsl-hql/pom.xml +++ b/querydsl-hql/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-jdoql/pom.xml b/querydsl-jdoql/pom.xml index 3f5b80d82..e390393c3 100644 --- a/querydsl-jdoql/pom.xml +++ b/querydsl-jdoql/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-root/pom.xml b/querydsl-root/pom.xml index 5147eafdc..d74a5b3df 100644 --- a/querydsl-root/pom.xml +++ b/querydsl-root/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.mysema.querydsl querydsl-root - 0.5.2-SNAPSHOT + 0.5.3-SNAPSHOT Querydsl parent project for querydsl modules http://source.mysema.com/display/querydsl diff --git a/querydsl-sql/pom.xml b/querydsl-sql/pom.xml index 158d153f1..c55212b49 100644 --- a/querydsl-sql/pom.xml +++ b/querydsl-sql/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-sql/src/main/java/com/mysema/query/sql/oracle/OracleGrammar.java b/querydsl-sql/src/main/java/com/mysema/query/sql/oracle/OracleGrammar.java index 133851743..3c77b3bf1 100644 --- a/querydsl-sql/src/main/java/com/mysema/query/sql/oracle/OracleGrammar.java +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/oracle/OracleGrammar.java @@ -8,7 +8,7 @@ package com.mysema.query.sql.oracle; import java.util.Date; import com.mysema.query.sql.SumOver; -import com.mysema.query.types.expr.EComparable; +import com.mysema.query.types.expr.EComparableBase; import com.mysema.query.types.expr.ENumber; import com.mysema.query.types.expr.Expr; import com.mysema.query.types.path.PComparable; @@ -30,7 +30,7 @@ public class OracleGrammar { public static ENumber rownum = new PNumber(Integer.class, createVariable("rownum")); - public static EComparable sysdate = new PComparable(Date.class, createVariable("sysdate")); + public static EComparableBase sysdate = new PComparable(Date.class, createVariable("sysdate")); // custom functions