From 5bef562ef4f3a923eec6ef07a53704b77d694909 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Mon, 30 Oct 2017 15:33:23 +0100 Subject: [PATCH] [#6752] Avoid various array allocations due to unnecessary varargs --- .../java/org/jooq/impl/CombinedCondition.java | 40 ++++++++++++------- jOOQ/src/main/java/org/jooq/impl/DSL.java | 27 +++++++++++++ .../java/org/jooq/impl/SelectQueryImpl.java | 8 ++-- 3 files changed, 56 insertions(+), 19 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/CombinedCondition.java b/jOOQ/src/main/java/org/jooq/impl/CombinedCondition.java index b5cc3c0633..9b8e169433 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CombinedCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/CombinedCondition.java @@ -66,31 +66,41 @@ final class CombinedCondition extends AbstractCondition { private final Operator operator; private final List conditions; - CombinedCondition(Operator operator, Collection conditions) { + private CombinedCondition(Operator operator, int size) { if (operator == null) throw new IllegalArgumentException("The argument 'operator' must not be null"); this.operator = operator; - this.conditions = new ArrayList(conditions.size()); - - init(operator, conditions); + this.conditions = new ArrayList(size); } - private final void init(Operator op, Collection cond) { - for (Condition condition : cond) { - if (condition instanceof CombinedCondition) { - CombinedCondition combinedCondition = (CombinedCondition) condition; + CombinedCondition(Operator operator, Condition left, Condition right) { + this(operator, 2); - if (combinedCondition.operator == op) - this.conditions.addAll(combinedCondition.conditions); - else - this.conditions.add(condition); - } - else if (condition == null) - throw new IllegalArgumentException("The argument 'conditions' must not contain null"); + add(operator, left); + add(operator, right); + } + + CombinedCondition(Operator operator, Collection conditions) { + this(operator, conditions.size()); + + for (Condition condition : conditions) + add(operator, condition); + } + + private final void add(Operator op, Condition condition) { + if (condition instanceof CombinedCondition) { + CombinedCondition combinedCondition = (CombinedCondition) condition; + + if (combinedCondition.operator == op) + this.conditions.addAll(combinedCondition.conditions); else this.conditions.add(condition); } + else if (condition == null) + throw new IllegalArgumentException("The argument 'conditions' must not contain null"); + else + this.conditions.add(condition); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index c8a0dd0cf3..7bc0e783ef 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -10349,6 +10349,15 @@ public class DSL { return FalseCondition.INSTANCE; } + /** + * Return a Condition that connects all argument + * conditions with {@link Operator#AND}. + */ + @Support + public static Condition and(Condition left, Condition right) { + return condition(AND, left, right); + } + /** * Return a Condition that connects all argument * conditions with {@link Operator#AND}. @@ -10367,6 +10376,15 @@ public class DSL { return condition(AND, conditions); } + /** + * Return a Condition that connects all argument + * conditions with {@link Operator#OR}. + */ + @Support + public static Condition or(Condition left, Condition right) { + return condition(OR, left, right); + } + /** * Return a Condition that connects all argument * conditions with {@link Operator#OR}. @@ -10385,6 +10403,15 @@ public class DSL { return condition(OR, conditions); } + /** + * Return a Condition that connects all argument + * conditions with Operator. + */ + @Support + public static Condition condition(Operator operator, Condition left, Condition right) { + return new CombinedCondition(operator, left, right); + } + /** * Return a Condition that connects all argument * conditions with Operator. diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index 283ba62dbe..ac55a02151 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -2060,19 +2060,19 @@ final class SelectQueryImpl extends AbstractResultQuery imp @Override public final void addFrom(Collection> f) { - for (TableLike provider : f) { + for (TableLike provider : f) getFrom().add(provider.asTable()); - } } @Override public final void addFrom(TableLike f) { - addFrom(Arrays.asList(f)); + getFrom().add(f.asTable()); } @Override public final void addFrom(TableLike... f) { - addFrom(Arrays.asList(f)); + for (TableLike provider : f) + getFrom().add(provider.asTable()); } @Override