From 7e19a40f521f418a28effe7e06dcfef0279612f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sun, 16 Dec 2012 17:26:16 +0200 Subject: [PATCH] added Immutable annotation --- .../src/main/java/com/mysema/query/JoinExpression.java | 2 ++ .../src/main/java/com/mysema/query/JoinFlag.java | 3 +++ .../main/java/com/mysema/query/types/ConstantImpl.java | 3 +++ .../com/mysema/query/types/ConstructorExpression.java | 6 ++++-- .../main/java/com/mysema/query/types/EntityPathImpl.java | 3 +++ .../java/com/mysema/query/types/MappingProjection.java | 2 ++ .../main/java/com/mysema/query/types/OperationImpl.java | 3 +++ .../main/java/com/mysema/query/types/OperatorImpl.java | 3 +++ .../main/java/com/mysema/query/types/OrderSpecifier.java | 3 +++ .../java/com/mysema/query/types/ParamExpressionImpl.java | 3 +++ .../src/main/java/com/mysema/query/types/PathImpl.java | 2 ++ .../main/java/com/mysema/query/types/PathMetadata.java | 2 ++ .../java/com/mysema/query/types/PredicateOperation.java | 4 +++- .../java/com/mysema/query/types/PredicateTemplate.java | 2 ++ .../src/main/java/com/mysema/query/types/QBean.java | 1 - .../src/main/java/com/mysema/query/types/QTuple.java | 3 +++ .../com/mysema/query/types/SubQueryExpressionImpl.java | 3 +++ .../src/main/java/com/mysema/query/types/Template.java | 9 +++++++-- .../com/mysema/query/types/TemplateExpressionImpl.java | 3 +++ .../java/com/mysema/query/types/TemplateFactory.java | 7 ++----- 20 files changed, 56 insertions(+), 11 deletions(-) diff --git a/querydsl-core/src/main/java/com/mysema/query/JoinExpression.java b/querydsl-core/src/main/java/com/mysema/query/JoinExpression.java index 7d4381db3..ed9a391e1 100644 --- a/querydsl-core/src/main/java/com/mysema/query/JoinExpression.java +++ b/querydsl-core/src/main/java/com/mysema/query/JoinExpression.java @@ -17,6 +17,7 @@ import java.io.Serializable; import java.util.Set; import javax.annotation.Nullable; +import javax.annotation.concurrent.Immutable; import com.google.common.base.Objects; import com.google.common.collect.ImmutableSet; @@ -28,6 +29,7 @@ import com.mysema.query.types.Predicate; * * @author tiwe */ +@Immutable public final class JoinExpression implements Serializable { private static final long serialVersionUID = -1131755765747174886L; diff --git a/querydsl-core/src/main/java/com/mysema/query/JoinFlag.java b/querydsl-core/src/main/java/com/mysema/query/JoinFlag.java index b181673e3..4aedfd15d 100644 --- a/querydsl-core/src/main/java/com/mysema/query/JoinFlag.java +++ b/querydsl-core/src/main/java/com/mysema/query/JoinFlag.java @@ -15,6 +15,8 @@ package com.mysema.query; import java.io.Serializable; +import javax.annotation.concurrent.Immutable; + import com.mysema.query.types.Expression; import com.mysema.query.types.TemplateExpressionImpl; @@ -24,6 +26,7 @@ import com.mysema.query.types.TemplateExpressionImpl; * @author tiwe * */ +@Immutable public class JoinFlag implements Serializable{ public enum Position { 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 b33e95020..65e50fd81 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 @@ -19,11 +19,14 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.annotation.concurrent.Immutable; + /** * ConstantImpl is the default implementation of the Constant interface * * @author tiwe */ +@Immutable @SuppressWarnings("unchecked") public final class ConstantImpl extends ExpressionBase implements Constant { diff --git a/querydsl-core/src/main/java/com/mysema/query/types/ConstructorExpression.java b/querydsl-core/src/main/java/com/mysema/query/types/ConstructorExpression.java index 2d848e3a0..41be84702 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/ConstructorExpression.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/ConstructorExpression.java @@ -20,6 +20,7 @@ import java.util.Arrays; import java.util.List; import javax.annotation.Nullable; +import javax.annotation.concurrent.Immutable; import com.google.common.collect.ImmutableList; import com.google.common.primitives.Primitives; @@ -42,6 +43,7 @@ import com.google.common.primitives.Primitives; * * @param expression type */ +@Immutable public class ConstructorExpression extends ExpressionBase implements FactoryExpression { private static final long serialVersionUID = -602747921848073175L; @@ -79,7 +81,7 @@ public class ConstructorExpression extends ExpressionBase implements Facto return new ConstructorExpression(type, paramTypes, args); } - private final List> args; + private final ImmutableList> args; private final Class[] parameterTypes; @@ -90,7 +92,7 @@ public class ConstructorExpression extends ExpressionBase implements Facto this(type, paramTypes, ImmutableList.copyOf(args)); } - public ConstructorExpression(Class type, Class[] paramTypes, List> args) { + public ConstructorExpression(Class type, Class[] paramTypes, ImmutableList> args) { super(type); this.parameterTypes = getRealParameters(type, paramTypes).clone(); this.args = args; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/EntityPathImpl.java b/querydsl-core/src/main/java/com/mysema/query/types/EntityPathImpl.java index 329ac35a5..1ba0d3cf6 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/EntityPathImpl.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/EntityPathImpl.java @@ -13,11 +13,14 @@ */ package com.mysema.query.types; +import javax.annotation.concurrent.Immutable; + /** * @author tiwe * * @param */ +@Immutable public class EntityPathImpl extends PathImpl implements EntityPath { private static final long serialVersionUID = -8536197750265693168L; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/MappingProjection.java b/querydsl-core/src/main/java/com/mysema/query/types/MappingProjection.java index 674d4a905..2fc22ee3c 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/MappingProjection.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/MappingProjection.java @@ -16,6 +16,7 @@ package com.mysema.query.types; import java.util.List; import javax.annotation.Nullable; +import javax.annotation.concurrent.Immutable; import com.mysema.query.Tuple; @@ -35,6 +36,7 @@ import com.mysema.query.Tuple; * * @param expression type */ +@Immutable public abstract class MappingProjection extends ExpressionBase implements FactoryExpression { private static final long serialVersionUID = -948494350919774466L; 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 6ce4fe069..b827e2382 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 @@ -15,6 +15,8 @@ package com.mysema.query.types; import java.util.List; +import javax.annotation.concurrent.Immutable; + import com.google.common.collect.ImmutableList; @@ -25,6 +27,7 @@ import com.google.common.collect.ImmutableList; * * @param expression type */ +@Immutable public class OperationImpl extends ExpressionBase implements Operation { private static final long serialVersionUID = 4796432056083507588L; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/OperatorImpl.java b/querydsl-core/src/main/java/com/mysema/query/types/OperatorImpl.java index 722d318a8..b24c6fb77 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/OperatorImpl.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/OperatorImpl.java @@ -15,11 +15,14 @@ package com.mysema.query.types; import java.util.List; +import javax.annotation.concurrent.Immutable; + import com.google.common.collect.ImmutableList; /** * OperatorImpl is the default implementation of the {@link Operator} interface */ +@Immutable public final class OperatorImpl implements Operator { private static final long serialVersionUID = -2435035383548549877L; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/OrderSpecifier.java b/querydsl-core/src/main/java/com/mysema/query/types/OrderSpecifier.java index 31db729c6..d349169f7 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/OrderSpecifier.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/OrderSpecifier.java @@ -15,12 +15,15 @@ package com.mysema.query.types; import java.io.Serializable; +import javax.annotation.concurrent.Immutable; + /** * OrderSpecifier represents an order-by-element in a Query instance * * @param related expression type * @author tiwe */ +@Immutable public class OrderSpecifier implements Serializable { private static final long serialVersionUID = 3427652988262514678L; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/ParamExpressionImpl.java b/querydsl-core/src/main/java/com/mysema/query/types/ParamExpressionImpl.java index 355f5defc..9fd64d4f8 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/ParamExpressionImpl.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/ParamExpressionImpl.java @@ -15,6 +15,8 @@ package com.mysema.query.types; import java.util.UUID; +import javax.annotation.concurrent.Immutable; + /** * ParamExpressionImpl defines a parameter in a query with an optional name * @@ -22,6 +24,7 @@ import java.util.UUID; * * @param expression type */ +@Immutable public class ParamExpressionImpl extends ExpressionBase implements ParamExpression { private static final long serialVersionUID = -6872502615009012503L; 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 6c5ee90ca..d74b045be 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 @@ -16,6 +16,7 @@ package com.mysema.query.types; import java.lang.reflect.AnnotatedElement; import javax.annotation.Nullable; +import javax.annotation.concurrent.Immutable; import com.mysema.util.ReflectionUtils; @@ -26,6 +27,7 @@ import com.mysema.util.ReflectionUtils; * * @param */ +@Immutable public class PathImpl extends ExpressionBase implements Path { private static final long serialVersionUID = -2498447742798348162L; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/PathMetadata.java b/querydsl-core/src/main/java/com/mysema/query/types/PathMetadata.java index c298a141d..b1d19854f 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/PathMetadata.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/PathMetadata.java @@ -16,6 +16,7 @@ package com.mysema.query.types; import java.io.Serializable; import javax.annotation.Nullable; +import javax.annotation.concurrent.Immutable; import com.google.common.base.Objects; @@ -24,6 +25,7 @@ import com.google.common.base.Objects; * * @author tiwe */ +@Immutable public final class PathMetadata implements Serializable{ private static final long serialVersionUID = -1055994185028970065L; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/PredicateOperation.java b/querydsl-core/src/main/java/com/mysema/query/types/PredicateOperation.java index bad3aeb3e..01dbf234d 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/PredicateOperation.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/PredicateOperation.java @@ -14,6 +14,7 @@ package com.mysema.query.types; import javax.annotation.Nullable; +import javax.annotation.concurrent.Immutable; import com.google.common.collect.ImmutableList; @@ -23,7 +24,8 @@ import com.google.common.collect.ImmutableList; * @author tiwe * */ -public class PredicateOperation extends OperationImpl implements Predicate{ +@Immutable +public final class PredicateOperation extends OperationImpl implements Predicate{ private static final long serialVersionUID = -5371430939203772072L; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/PredicateTemplate.java b/querydsl-core/src/main/java/com/mysema/query/types/PredicateTemplate.java index 329045b88..a61e6954f 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/PredicateTemplate.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/PredicateTemplate.java @@ -14,6 +14,7 @@ package com.mysema.query.types; import javax.annotation.Nullable; +import javax.annotation.concurrent.Immutable; import com.google.common.collect.ImmutableList; @@ -23,6 +24,7 @@ import com.google.common.collect.ImmutableList; * @author tiwe * */ +@Immutable public class PredicateTemplate extends TemplateExpressionImpl implements Predicate{ private static final long serialVersionUID = -5371430939203772072L; 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 70d034857..fdcd5b8d3 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 @@ -14,7 +14,6 @@ package com.mysema.query.types; import java.lang.reflect.Field; -import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/QTuple.java b/querydsl-core/src/main/java/com/mysema/query/types/QTuple.java index 74ac5afaf..d099afa52 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/QTuple.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/QTuple.java @@ -16,6 +16,8 @@ package com.mysema.query.types; import java.util.Arrays; import java.util.List; +import javax.annotation.concurrent.Immutable; + import com.google.common.collect.ImmutableList; import com.mysema.query.Tuple; @@ -36,6 +38,7 @@ import com.mysema.query.Tuple; * @author tiwe * */ +@Immutable public class QTuple extends ExpressionBase implements FactoryExpression { private final class TupleImpl implements Tuple { 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 43d39a7be..0073e5bb6 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 @@ -13,6 +13,8 @@ */ package com.mysema.query.types; +import javax.annotation.concurrent.Immutable; + import com.mysema.query.QueryMetadata; /** @@ -21,6 +23,7 @@ import com.mysema.query.QueryMetadata; * @author tiwe * */ +@Immutable public class SubQueryExpressionImpl extends ExpressionBase implements SubQueryExpression { private static final long serialVersionUID = 6775967804458163L; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/Template.java b/querydsl-core/src/main/java/com/mysema/query/types/Template.java index 9bb0684ca..276f0a008 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/Template.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/Template.java @@ -16,7 +16,10 @@ package com.mysema.query.types; import java.io.Serializable; import java.util.List; +import javax.annotation.concurrent.Immutable; + import com.google.common.base.Function; +import com.google.common.collect.ImmutableList; /** * Template for {@link Operation}, {@link TemplateExpression} and {@link Path} serialization @@ -24,10 +27,12 @@ import com.google.common.base.Function; * @author tiwe * */ +@Immutable public final class Template implements Serializable { private static final long serialVersionUID = -1697705745769542204L; + @Immutable public static abstract class Element implements Serializable { private static final long serialVersionUID = 3396877288101929387L; @@ -163,11 +168,11 @@ public final class Template implements Serializable { } - private final List elements; + private final ImmutableList elements; private final String template; - Template(String template, List elements) { + Template(String template, ImmutableList elements) { this.template = template; this.elements = elements; } 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 2a5dc8ac4..a8a069ef2 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 @@ -15,6 +15,8 @@ package com.mysema.query.types; import java.util.List; +import javax.annotation.concurrent.Immutable; + import com.google.common.collect.ImmutableList; /** @@ -24,6 +26,7 @@ import com.google.common.collect.ImmutableList; * * @param expression type */ +@Immutable public class TemplateExpressionImpl extends ExpressionBase implements TemplateExpression { private static final long serialVersionUID = 6951623726800809083L; diff --git a/querydsl-core/src/main/java/com/mysema/query/types/TemplateFactory.java b/querydsl-core/src/main/java/com/mysema/query/types/TemplateFactory.java index 16a157978..dfc49dadc 100644 --- a/querydsl-core/src/main/java/com/mysema/query/types/TemplateFactory.java +++ b/querydsl-core/src/main/java/com/mysema/query/types/TemplateFactory.java @@ -13,9 +13,7 @@ */ package com.mysema.query.types; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Locale; import java.util.Map; import java.util.regex.Matcher; @@ -53,7 +51,7 @@ public class TemplateFactory { return cache.get(template); }else{ Matcher m = elementPattern.matcher(template); - List elements = new ArrayList(); + final ImmutableList.Builder elements = ImmutableList.builder(); int end = 0; while (m.find()) { if (m.start() > end) { @@ -122,8 +120,7 @@ public class TemplateFactory { if (end < template.length()) { elements.add(new Template.StaticText(template.substring(end))); } - elements = ImmutableList.copyOf(elements); - Template rv = new Template(template, elements); + Template rv = new Template(template, elements.build()); cache.put(template, rv); return rv; }