Skip to content

Commit

Permalink
[#6752] Avoid various array allocations due to unnecessary varargs
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaseder committed Oct 30, 2017
1 parent b3f315e commit 5bef562
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 18 deletions.
38 changes: 24 additions & 14 deletions jOOQ/src/main/java/org/jooq/impl/CombinedCondition.java
Expand Up @@ -66,31 +66,41 @@ final class CombinedCondition extends AbstractCondition {
private final Operator operator;
private final List<Condition> conditions;

CombinedCondition(Operator operator, Collection<? extends Condition> 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<Condition>(conditions.size());
this.conditions = new ArrayList<Condition>(size);
}

CombinedCondition(Operator operator, Condition left, Condition right) {
this(operator, 2);

add(operator, left);
add(operator, right);
}

CombinedCondition(Operator operator, Collection<? extends Condition> conditions) {
this(operator, conditions.size());

init(operator, conditions);
for (Condition condition : conditions)
add(operator, condition);
}

private final void init(Operator op, Collection<? extends Condition> cond) {
for (Condition condition : cond) {
if (condition instanceof CombinedCondition) {
CombinedCondition combinedCondition = (CombinedCondition) 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");
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
Expand Down
27 changes: 27 additions & 0 deletions jOOQ/src/main/java/org/jooq/impl/DSL.java
Expand Up @@ -10349,6 +10349,15 @@ public static False falseCondition() {
return FalseCondition.INSTANCE;
}

/**
* Return a <code>Condition</code> that connects all argument
* <code>conditions</code> with {@link Operator#AND}.
*/
@Support
public static Condition and(Condition left, Condition right) {
return condition(AND, left, right);
}

/**
* Return a <code>Condition</code> that connects all argument
* <code>conditions</code> with {@link Operator#AND}.
Expand All @@ -10367,6 +10376,15 @@ public static Condition and(Collection<? extends Condition> conditions) {
return condition(AND, conditions);
}

/**
* Return a <code>Condition</code> that connects all argument
* <code>conditions</code> with {@link Operator#OR}.
*/
@Support
public static Condition or(Condition left, Condition right) {
return condition(OR, left, right);
}

/**
* Return a <code>Condition</code> that connects all argument
* <code>conditions</code> with {@link Operator#OR}.
Expand All @@ -10385,6 +10403,15 @@ public static Condition or(Collection<? extends Condition> conditions) {
return condition(OR, conditions);
}

/**
* Return a <code>Condition</code> that connects all argument
* <code>conditions</code> with <code>Operator</code>.
*/
@Support
public static Condition condition(Operator operator, Condition left, Condition right) {
return new CombinedCondition(operator, left, right);
}

/**
* Return a <code>Condition</code> that connects all argument
* <code>conditions</code> with <code>Operator</code>.
Expand Down
8 changes: 4 additions & 4 deletions jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java
Expand Up @@ -2060,19 +2060,19 @@ final boolean isForUpdate() {

@Override
public final void addFrom(Collection<? extends TableLike<?>> 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
Expand Down

0 comments on commit 5bef562

Please sign in to comment.