You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2018/07/09 07:49:34 UTC
[12/30] calcite git commit: [CALCITE-2259] Allow Java 8 syntax
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/tools/RelBuilder.java b/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
index e5fb2aa..491be00 100644
--- a/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
+++ b/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
@@ -31,12 +31,21 @@ import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.Aggregate;
import org.apache.calcite.rel.core.AggregateCall;
import org.apache.calcite.rel.core.CorrelationId;
+import org.apache.calcite.rel.core.Filter;
+import org.apache.calcite.rel.core.Intersect;
+import org.apache.calcite.rel.core.Join;
import org.apache.calcite.rel.core.JoinRelType;
+import org.apache.calcite.rel.core.Match;
+import org.apache.calcite.rel.core.Minus;
import org.apache.calcite.rel.core.Project;
import org.apache.calcite.rel.core.RelFactories;
+import org.apache.calcite.rel.core.SemiJoin;
import org.apache.calcite.rel.core.Sort;
import org.apache.calcite.rel.core.TableScan;
+import org.apache.calcite.rel.core.Union;
import org.apache.calcite.rel.core.Values;
+import org.apache.calcite.rel.logical.LogicalFilter;
+import org.apache.calcite.rel.logical.LogicalProject;
import org.apache.calcite.rel.metadata.RelMetadataQuery;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rel.type.RelDataTypeFactory;
@@ -73,8 +82,6 @@ import org.apache.calcite.util.Util;
import org.apache.calcite.util.mapping.Mapping;
import org.apache.calcite.util.mapping.Mappings;
-import com.google.common.base.Function;
-import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -109,21 +116,14 @@ import static org.apache.calcite.util.Static.RESOURCE;
*
* <p>{@code RelBuilder} uses factories to create relational expressions.
* By default, it uses the default factories, which create logical relational
- * expressions ({@link org.apache.calcite.rel.logical.LogicalFilter},
- * {@link org.apache.calcite.rel.logical.LogicalProject} and so forth).
+ * expressions ({@link LogicalFilter},
+ * {@link LogicalProject} and so forth).
* But you could override those factories so that, say, {@code filter} creates
* instead a {@code HiveFilter}.
*
* <p>It is not thread-safe.
*/
public class RelBuilder {
- private static final Function<RexNode, String> FN_TYPE =
- new Function<RexNode, String>() {
- public String apply(RexNode input) {
- return input + ": " + input.getType();
- }
- };
-
protected final RelOptCluster cluster;
protected final RelOptSchema relOptSchema;
private final RelFactories.FilterFactory filterFactory;
@@ -222,11 +222,7 @@ public class RelBuilder {
/** Creates a {@link RelBuilderFactory}, a partially-created RelBuilder.
* Just add a {@link RelOptCluster} and a {@link RelOptSchema} */
public static RelBuilderFactory proto(final Context context) {
- return new RelBuilderFactory() {
- public RelBuilder create(RelOptCluster cluster, RelOptSchema schema) {
- return new RelBuilder(context, cluster, schema);
- }
- };
+ return (cluster, schema) -> new RelBuilder(context, cluster, schema);
}
/** Creates a {@link RelBuilderFactory} that uses a given set of factories. */
@@ -434,8 +430,8 @@ public class RelBuilder {
* given alias. Searches for the relation starting at the top of the
* stack. */
public RexNode field(int inputCount, String alias, String fieldName) {
- Preconditions.checkNotNull(alias);
- Preconditions.checkNotNull(fieldName);
+ Objects.requireNonNull(alias);
+ Objects.requireNonNull(fieldName);
final List<String> fields = new ArrayList<>();
for (int inputOrdinal = 0; inputOrdinal < inputCount; ++inputOrdinal) {
final Frame frame = peek_(inputOrdinal);
@@ -545,7 +541,8 @@ public class RelBuilder {
final RelDataType type = builder.deriveReturnType(operator, operandList);
if (type == null) {
throw new IllegalArgumentException("cannot derive type: " + operator
- + "; operands: " + Lists.transform(operandList, FN_TYPE));
+ + "; operands: "
+ + Lists.transform(operandList, e -> e + ": " + e.getType()));
}
return builder.makeCall(type, operator, operandList);
}
@@ -656,7 +653,7 @@ public class RelBuilder {
/** Creates an empty group key. */
public GroupKey groupKey() {
- return groupKey(ImmutableList.<RexNode>of());
+ return groupKey(ImmutableList.of());
}
/** Creates a group key. */
@@ -720,11 +717,7 @@ public class RelBuilder {
fields(ImmutableIntList.of(groupSet.toArray()));
final List<ImmutableList<RexNode>> nodeLists =
Lists.transform(groupSets,
- new Function<ImmutableBitSet, ImmutableList<RexNode>>() {
- public ImmutableList<RexNode> apply(ImmutableBitSet input) {
- return fields(ImmutableIntList.of(input.toArray()));
- }
- });
+ bitSet -> fields(ImmutableIntList.of(bitSet.toArray())));
return groupKey(nodes, indicator, nodeLists);
}
@@ -884,7 +877,7 @@ public class RelBuilder {
// Methods that create relational expressions
- /** Creates a {@link org.apache.calcite.rel.core.TableScan} of the table
+ /** Creates a {@link TableScan} of the table
* with a given name.
*
* <p>Throws if the table does not exist.
@@ -897,14 +890,14 @@ public class RelBuilder {
final List<String> names = ImmutableList.copyOf(tableNames);
final RelOptTable relOptTable = relOptSchema.getTableForMember(names);
if (relOptTable == null) {
- throw RESOURCE.tableNotFound(Joiner.on(".").join(names)).ex();
+ throw RESOURCE.tableNotFound(String.join(".", names)).ex();
}
final RelNode scan = scanFactory.createScan(cluster, relOptTable);
push(scan);
return this;
}
- /** Creates a {@link org.apache.calcite.rel.core.TableScan} of the table
+ /** Creates a {@link TableScan} of the table
* with a given name.
*
* <p>Throws if the table does not exist.
@@ -917,7 +910,7 @@ public class RelBuilder {
return scan(ImmutableList.copyOf(tableNames));
}
- /** Creates a {@link org.apache.calcite.rel.core.Filter} of an array of
+ /** Creates a {@link Filter} of an array of
* predicates.
*
* <p>The predicates are combined using AND,
@@ -927,7 +920,7 @@ public class RelBuilder {
return filter(ImmutableList.copyOf(predicates));
}
- /** Creates a {@link org.apache.calcite.rel.core.Filter} of a list of
+ /** Creates a {@link Filter} of a list of
* predicates.
*
* <p>The predicates are combined using AND,
@@ -948,7 +941,7 @@ public class RelBuilder {
return this;
}
- /** Creates a {@link org.apache.calcite.rel.core.Project} of the given list
+ /** Creates a {@link Project} of the given list
* of expressions.
*
* <p>Infers names as would {@link #project(Iterable, Iterable)} if all
@@ -957,10 +950,10 @@ public class RelBuilder {
* @param nodes Expressions
*/
public RelBuilder project(Iterable<? extends RexNode> nodes) {
- return project(nodes, ImmutableList.<String>of());
+ return project(nodes, ImmutableList.of());
}
- /** Creates a {@link org.apache.calcite.rel.core.Project} of the given list
+ /** Creates a {@link Project} of the given list
* of expressions and field names.
*
* @param nodes Expressions
@@ -971,7 +964,7 @@ public class RelBuilder {
return project(nodes, fieldNames, false);
}
- /** Creates a {@link org.apache.calcite.rel.core.Project} of the given list
+ /** Creates a {@link Project} of the given list
* of expressions, using the given names.
*
* <p>Names are deduced as follows:
@@ -983,7 +976,7 @@ public class RelBuilder {
* or is a cast an input field,
* uses the input field name; otherwise
* <li>If an expression is a call to
- * {@link org.apache.calcite.sql.fun.SqlStdOperatorTable#AS}
+ * {@link SqlStdOperatorTable#AS}
* (see {@link #alias}), removes the call but uses the intended alias.
* </ul>
*
@@ -1039,7 +1032,7 @@ public class RelBuilder {
field = new Field(frame.fields.get(index).left, fieldType);
break;
default:
- field = new Field(ImmutableSet.<String>of(), fieldType);
+ field = new Field(ImmutableSet.of(), fieldType);
break;
}
uniqueNameList.add(name);
@@ -1065,13 +1058,13 @@ public class RelBuilder {
return this;
}
- /** Creates a {@link org.apache.calcite.rel.core.Project} of the given
+ /** Creates a {@link Project} of the given
* expressions. */
public RelBuilder project(RexNode... nodes) {
return project(ImmutableList.copyOf(nodes));
}
- /** Creates a {@link org.apache.calcite.rel.core.Project} of the given
+ /** Creates a {@link Project} of the given
* expressions and field names, and optionally optimizing.
*
* <p>If {@code fieldNames} is null, or if a particular entry in
@@ -1195,19 +1188,19 @@ public class RelBuilder {
}
}
- /** Creates an {@link org.apache.calcite.rel.core.Aggregate} that makes the
+ /** Creates an {@link Aggregate} that makes the
* relational expression distinct on all fields. */
public RelBuilder distinct() {
return aggregate(groupKey(fields()));
}
- /** Creates an {@link org.apache.calcite.rel.core.Aggregate} with an array of
+ /** Creates an {@link Aggregate} with an array of
* calls. */
public RelBuilder aggregate(GroupKey groupKey, AggCall... aggCalls) {
return aggregate(groupKey, ImmutableList.copyOf(aggCalls));
}
- /** Creates an {@link org.apache.calcite.rel.core.Aggregate} with a list of
+ /** Creates an {@link Aggregate} with a list of
* calls. */
public RelBuilder aggregate(GroupKey groupKey, Iterable<AggCall> aggCalls) {
final Registrar registrar = new Registrar();
@@ -1326,7 +1319,7 @@ public class RelBuilder {
String name = aggregateFields.get(i).getName();
RelDataTypeField fieldType =
new RelDataTypeFieldImpl(name, i, node.getType());
- fields.add(new Field(ImmutableSet.<String>of(), fieldType));
+ fields.add(new Field(ImmutableSet.of(), fieldType));
break;
}
i++;
@@ -1337,7 +1330,7 @@ public class RelBuilder {
final RelDataTypeField field = aggregateFields.get(i);
final RelDataTypeField fieldType =
new RelDataTypeFieldImpl(field.getName(), i, field.getType());
- fields.add(new Field(ImmutableSet.<String>of(), fieldType));
+ fields.add(new Field(ImmutableSet.of(), fieldType));
i++;
}
}
@@ -1347,7 +1340,7 @@ public class RelBuilder {
final RelDataTypeField fieldType =
new RelDataTypeFieldImpl(aggregateFields.get(i + j).getName(), i + j,
call.getType());
- fields.add(new Field(ImmutableSet.<String>of(), fieldType));
+ fields.add(new Field(ImmutableSet.of(), fieldType));
}
stack.push(new Frame(aggregate, fields.build()));
return this;
@@ -1378,7 +1371,7 @@ public class RelBuilder {
}
}
- /** Creates a {@link org.apache.calcite.rel.core.Union} of the two most recent
+ /** Creates a {@link Union} of the two most recent
* relational expressions on the stack.
*
* @param all Whether to create UNION ALL
@@ -1387,7 +1380,7 @@ public class RelBuilder {
return union(all, 2);
}
- /** Creates a {@link org.apache.calcite.rel.core.Union} of the {@code n}
+ /** Creates a {@link Union} of the {@code n}
* most recent relational expressions on the stack.
*
* @param all Whether to create UNION ALL
@@ -1397,7 +1390,7 @@ public class RelBuilder {
return setOp(all, SqlKind.UNION, n);
}
- /** Creates an {@link org.apache.calcite.rel.core.Intersect} of the two most
+ /** Creates an {@link Intersect} of the two most
* recent relational expressions on the stack.
*
* @param all Whether to create INTERSECT ALL
@@ -1406,7 +1399,7 @@ public class RelBuilder {
return intersect(all, 2);
}
- /** Creates an {@link org.apache.calcite.rel.core.Intersect} of the {@code n}
+ /** Creates an {@link Intersect} of the {@code n}
* most recent relational expressions on the stack.
*
* @param all Whether to create INTERSECT ALL
@@ -1416,7 +1409,7 @@ public class RelBuilder {
return setOp(all, SqlKind.INTERSECT, n);
}
- /** Creates a {@link org.apache.calcite.rel.core.Minus} of the two most recent
+ /** Creates a {@link Minus} of the two most recent
* relational expressions on the stack.
*
* @param all Whether to create EXCEPT ALL
@@ -1425,7 +1418,7 @@ public class RelBuilder {
return minus(all, 2);
}
- /** Creates a {@link org.apache.calcite.rel.core.Minus} of the {@code n}
+ /** Creates a {@link Minus} of the {@code n}
* most recent relational expressions on the stack.
*
* @param all Whether to create EXCEPT ALL
@@ -1434,25 +1427,25 @@ public class RelBuilder {
return setOp(all, SqlKind.EXCEPT, n);
}
- /** Creates a {@link org.apache.calcite.rel.core.Join}. */
+ /** Creates a {@link Join}. */
public RelBuilder join(JoinRelType joinType, RexNode condition0,
RexNode... conditions) {
return join(joinType, Lists.asList(condition0, conditions));
}
- /** Creates a {@link org.apache.calcite.rel.core.Join} with multiple
+ /** Creates a {@link Join} with multiple
* conditions. */
public RelBuilder join(JoinRelType joinType,
Iterable<? extends RexNode> conditions) {
return join(joinType, and(conditions),
- ImmutableSet.<CorrelationId>of());
+ ImmutableSet.of());
}
public RelBuilder join(JoinRelType joinType, RexNode condition) {
- return join(joinType, condition, ImmutableSet.<CorrelationId>of());
+ return join(joinType, condition, ImmutableSet.of());
}
- /** Creates a {@link org.apache.calcite.rel.core.Join} with correlating
+ /** Creates a {@link Join} with correlating
* variables. */
public RelBuilder join(JoinRelType joinType, RexNode condition,
Set<CorrelationId> variablesSet) {
@@ -1495,7 +1488,7 @@ public class RelBuilder {
return this;
}
- /** Creates a {@link org.apache.calcite.rel.core.Join} using USING syntax.
+ /** Creates a {@link Join} using USING syntax.
*
* <p>For each of the field names, both left and right inputs must have a
* field of that name. Constructs a join condition that the left and right
@@ -1515,7 +1508,7 @@ public class RelBuilder {
return join(joinType, conditions);
}
- /** Creates a {@link org.apache.calcite.rel.core.SemiJoin}. */
+ /** Creates a {@link SemiJoin}. */
public RelBuilder semiJoin(Iterable<? extends RexNode> conditions) {
final Frame right = stack.pop();
final RelNode semiJoin =
@@ -1524,7 +1517,7 @@ public class RelBuilder {
return this;
}
- /** Creates a {@link org.apache.calcite.rel.core.SemiJoin}. */
+ /** Creates a {@link SemiJoin}. */
public RelBuilder semiJoin(RexNode... conditions) {
return semiJoin(ImmutableList.copyOf(conditions));
}
@@ -1533,12 +1526,9 @@ public class RelBuilder {
public RelBuilder as(final String alias) {
final Frame pair = stack.pop();
List<Field> newFields =
- Lists.transform(pair.fields, new Function<Field, Field>() {
- public Field apply(Field field) {
- return new Field(ImmutableSet.<String>builder().addAll(field.left)
- .add(alias).build(), field.right);
- }
- });
+ Lists.transform(pair.fields, field ->
+ new Field(ImmutableSet.<String>builder().addAll(field.left)
+ .add(alias).build(), field.right));
stack.push(new Frame(pair.rel, ImmutableList.copyOf(newFields)));
return this;
}
@@ -1707,7 +1697,7 @@ public class RelBuilder {
/** Creates a limit without a sort. */
public RelBuilder limit(int offset, int fetch) {
- return sortLimit(offset, fetch, ImmutableList.<RexNode>of());
+ return sortLimit(offset, fetch, ImmutableList.of());
}
/** Creates a {@link Sort} by field ordinals.
@@ -1859,7 +1849,7 @@ public class RelBuilder {
if (mapping.isIdentity()) {
return this;
}
- final List<RexNode> exprList = Lists.newArrayList();
+ final List<RexNode> exprList = new ArrayList<>();
for (int i = 0; i < mapping.getTargetCount(); i++) {
exprList.add(field(mapping.getSource(i)));
}
@@ -1869,15 +1859,10 @@ public class RelBuilder {
public RelBuilder aggregate(GroupKey groupKey,
List<AggregateCall> aggregateCalls) {
return aggregate(groupKey,
- Lists.transform(
- aggregateCalls, new Function<AggregateCall, AggCall>() {
- public AggCall apply(AggregateCall input) {
- return new AggCallImpl2(input);
- }
- }));
+ Lists.transform(aggregateCalls, AggCallImpl2::new));
}
- /** Creates a {@link org.apache.calcite.rel.core.Match}. */
+ /** Creates a {@link Match}. */
public RelBuilder match(RexNode pattern, boolean strictStart,
boolean strictEnd, Map<String, RexNode> patternDefinitions,
Iterable<? extends RexNode> measureList, RexNode after,
@@ -1965,7 +1950,7 @@ public class RelBuilder {
GroupKey alias(String alias);
}
- /** Implementation of {@link RelBuilder.GroupKey}. */
+ /** Implementation of {@link GroupKey}. */
protected static class GroupKeyImpl implements GroupKey {
final ImmutableList<RexNode> nodes;
final boolean indicator;
@@ -1974,7 +1959,7 @@ public class RelBuilder {
GroupKeyImpl(ImmutableList<RexNode> nodes, boolean indicator,
ImmutableList<ImmutableList<RexNode>> nodeLists, String alias) {
- this.nodes = Preconditions.checkNotNull(nodes);
+ this.nodes = Objects.requireNonNull(nodes);
assert !indicator;
this.indicator = indicator;
this.nodeLists = nodeLists;
@@ -1992,7 +1977,7 @@ public class RelBuilder {
}
}
- /** Implementation of {@link RelBuilder.AggCall}. */
+ /** Implementation of {@link AggCall}. */
private static class AggCallImpl implements AggCall {
private final SqlAggFunction aggFunction;
private final boolean distinct;
@@ -2013,13 +1998,13 @@ public class RelBuilder {
}
}
- /** Implementation of {@link RelBuilder.AggCall} that wraps an
+ /** Implementation of {@link AggCall} that wraps an
* {@link AggregateCall}. */
private static class AggCallImpl2 implements AggCall {
private final AggregateCall aggregateCall;
AggCallImpl2(AggregateCall aggregateCall) {
- this.aggregateCall = Preconditions.checkNotNull(aggregateCall);
+ this.aggregateCall = Objects.requireNonNull(aggregateCall);
}
}
@@ -2075,7 +2060,7 @@ public class RelBuilder {
String tableAlias = deriveAlias(rel);
ImmutableList.Builder<Field> builder = ImmutableList.builder();
ImmutableSet<String> aliases = tableAlias == null
- ? ImmutableSet.<String>of()
+ ? ImmutableSet.of()
: ImmutableSet.of(tableAlias);
for (RelDataTypeField field : rel.getRowType().getFieldList()) {
builder.add(new Field(aliases, field));
@@ -2109,7 +2094,7 @@ public class RelBuilder {
/** Shuttle that shifts a predicate's inputs to the left, replacing early
* ones with references to a
- * {@link org.apache.calcite.rex.RexCorrelVariable}. */
+ * {@link RexCorrelVariable}. */
private class Shifter extends RexShuttle {
private final RelNode left;
private final CorrelationId id;
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/BitSets.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/BitSets.java b/core/src/main/java/org/apache/calcite/util/BitSets.java
index 492dcfb..50cd9c5 100644
--- a/core/src/main/java/org/apache/calcite/util/BitSets.java
+++ b/core/src/main/java/org/apache/calcite/util/BitSets.java
@@ -85,25 +85,21 @@ public final class BitSets {
* @return Iterable
*/
public static Iterable<Integer> toIter(final BitSet bitSet) {
- return new Iterable<Integer>() {
- public Iterator<Integer> iterator() {
- return new Iterator<Integer>() {
- int i = bitSet.nextSetBit(0);
+ return () -> new Iterator<Integer>() {
+ int i = bitSet.nextSetBit(0);
- public boolean hasNext() {
- return i >= 0;
- }
+ public boolean hasNext() {
+ return i >= 0;
+ }
- public Integer next() {
- int prev = i;
- i = bitSet.nextSetBit(i + 1);
- return prev;
- }
+ public Integer next() {
+ int prev = i;
+ i = bitSet.nextSetBit(i + 1);
+ return prev;
+ }
- public void remove() {
- throw new UnsupportedOperationException();
- }
- };
+ public void remove() {
+ throw new UnsupportedOperationException();
}
};
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/CancelFlag.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/CancelFlag.java b/core/src/main/java/org/apache/calcite/util/CancelFlag.java
index 61e678b..2a14dad 100644
--- a/core/src/main/java/org/apache/calcite/util/CancelFlag.java
+++ b/core/src/main/java/org/apache/calcite/util/CancelFlag.java
@@ -19,8 +19,7 @@ package org.apache.calcite.util;
import org.apache.calcite.plan.Context;
import org.apache.calcite.plan.RelOptPlanner;
-import com.google.common.base.Preconditions;
-
+import java.util.Objects;
import java.util.concurrent.atomic.AtomicBoolean;
/**
@@ -36,7 +35,7 @@ public class CancelFlag {
public final AtomicBoolean atomicBoolean;
public CancelFlag(AtomicBoolean atomicBoolean) {
- this.atomicBoolean = Preconditions.checkNotNull(atomicBoolean);
+ this.atomicBoolean = Objects.requireNonNull(atomicBoolean);
}
//~ Methods ----------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/Compatible.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/Compatible.java b/core/src/main/java/org/apache/calcite/util/Compatible.java
index 761edb2..6146792 100644
--- a/core/src/main/java/org/apache/calcite/util/Compatible.java
+++ b/core/src/main/java/org/apache/calcite/util/Compatible.java
@@ -22,7 +22,6 @@ import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.Maps;
import java.lang.reflect.Array;
-import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.sql.Connection;
@@ -74,59 +73,56 @@ public interface Compatible {
Compatible create() {
return (Compatible) Proxy.newProxyInstance(
Compatible.class.getClassLoader(),
- new Class<?>[] {Compatible.class},
- new InvocationHandler() {
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
- if (method.getName().equals("asMap")) {
- // Use the Guava implementation Maps.asMap if it is available
- try {
- //noinspection ConfusingArgumentToVarargsMethod
- final Method guavaMethod = Maps.class.getMethod(
- method.getName(), method.getParameterTypes());
- return guavaMethod.invoke(null, args);
- } catch (NoSuchMethodException e) {
- Set set = (Set) args[0];
- Function function = (Function) args[1];
- return CompatibleGuava11.asMap(set, function);
- }
+ new Class<?>[] {Compatible.class}, (proxy, method, args) -> {
+ if (method.getName().equals("asMap")) {
+ // Use the Guava implementation Maps.asMap if it is available
+ try {
+ //noinspection ConfusingArgumentToVarargsMethod
+ final Method guavaMethod = Maps.class.getMethod(
+ method.getName(), method.getParameterTypes());
+ return guavaMethod.invoke(null, args);
+ } catch (NoSuchMethodException e) {
+ Set set = (Set) args[0];
+ Function function = (Function) args[1];
+ return CompatibleGuava11.asMap(set, function);
}
- if (method.getName().equals("navigableSet")) {
- ImmutableSortedSet set = (ImmutableSortedSet) args[0];
- return CompatibleGuava11.navigableSet(set);
- }
- if (method.getName().equals("navigableMap")) {
- ImmutableSortedMap map = (ImmutableSortedMap) args[0];
- return CompatibleGuava11.navigableMap(map);
- }
- if (method.getName().equals("immutableNavigableMap")) {
- Map map = (Map) args[0];
- ImmutableSortedMap sortedMap = ImmutableSortedMap.copyOf(map);
- return CompatibleGuava11.navigableMap(sortedMap);
- }
- if (method.getName().equals("setSchema")) {
- Connection connection = (Connection) args[0];
- String schema = (String) args[1];
+ }
+ if (method.getName().equals("navigableSet")) {
+ ImmutableSortedSet set = (ImmutableSortedSet) args[0];
+ return CompatibleGuava11.navigableSet(set);
+ }
+ if (method.getName().equals("navigableMap")) {
+ ImmutableSortedMap map = (ImmutableSortedMap) args[0];
+ return CompatibleGuava11.navigableMap(map);
+ }
+ if (method.getName().equals("immutableNavigableMap")) {
+ Map map = (Map) args[0];
+ ImmutableSortedMap sortedMap = ImmutableSortedMap.copyOf(map);
+ return CompatibleGuava11.navigableMap(sortedMap);
+ }
+ if (method.getName().equals("setSchema")) {
+ Connection connection = (Connection) args[0];
+ String schema = (String) args[1];
+ final Method method1 =
+ connection.getClass().getMethod("setSchema", String.class);
+ return method1.invoke(connection, schema);
+ }
+ if (method.getName().equals("getParameterName")) {
+ final Method m = (Method) args[0];
+ final int i = (Integer) args[1];
+ try {
final Method method1 =
- connection.getClass().getMethod("setSchema", String.class);
- return method1.invoke(connection, schema);
- }
- if (method.getName().equals("getParameterName")) {
- final Method m = (Method) args[0];
- final int i = (Integer) args[1];
- try {
- final Method method1 =
- m.getClass().getMethod("getParameters");
- Object parameters = method1.invoke(m);
- final Object parameter = Array.get(parameters, i);
- final Method method3 = parameter.getClass().getMethod("getName");
- return method3.invoke(parameter);
- } catch (NoSuchMethodException e) {
- return "arg" + i;
- }
+ m.getClass().getMethod("getParameters");
+ Object parameters = method1.invoke(m);
+ final Object parameter = Array.get(parameters, i);
+ final Method method3 =
+ parameter.getClass().getMethod("getName");
+ return method3.invoke(parameter);
+ } catch (NoSuchMethodException e) {
+ return "arg" + i;
}
- return null;
}
+ return null;
});
}
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/CompatibleGuava11.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/CompatibleGuava11.java b/core/src/main/java/org/apache/calcite/util/CompatibleGuava11.java
index 21b437a..6b9dc61 100644
--- a/core/src/main/java/org/apache/calcite/util/CompatibleGuava11.java
+++ b/core/src/main/java/org/apache/calcite/util/CompatibleGuava11.java
@@ -17,7 +17,6 @@
package org.apache.calcite.util;
import com.google.common.base.Function;
-import com.google.common.base.Objects;
import com.google.common.collect.Collections2;
import com.google.common.collect.ForwardingSet;
import com.google.common.collect.ImmutableSortedMap;
@@ -30,16 +29,16 @@ import java.util.AbstractCollection;
import java.util.AbstractMap;
import java.util.AbstractSet;
import java.util.Collection;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.NavigableMap;
import java.util.NavigableSet;
+import java.util.Objects;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
-import static com.google.common.base.Preconditions.checkNotNull;
-
/** Helper methods to provide modern Guava functionality based on Guava 11.
*
* @see Compatible
@@ -64,7 +63,7 @@ class CompatibleGuava11 {
}
@Override public boolean retainAll(Collection<?> c) {
- return super.retainAll(checkNotNull(c)); // GWT compatibility
+ return super.retainAll(Objects.requireNonNull(c)); // GWT compatibility
}
}
@@ -80,7 +79,7 @@ class CompatibleGuava11 {
}
static boolean removeAllImpl(Set<?> set, Collection<?> collection) {
- checkNotNull(collection); // for GWT
+ Objects.requireNonNull(collection); // for GWT
if (collection instanceof Multiset) {
collection = ((Multiset<?>) collection).elementSet();
}
@@ -239,8 +238,8 @@ class CompatibleGuava11 {
}
AsMapView(Set<K> set, Function<? super K, V> function) {
- this.set = checkNotNull(set);
- this.function = checkNotNull(function);
+ this.set = Objects.requireNonNull(set);
+ this.function = Objects.requireNonNull(function);
}
@Override public Set<K> keySet() {
@@ -319,7 +318,7 @@ class CompatibleGuava11 {
Map.Entry<?, ?> entry = (Map.Entry<?, ?>) o;
Object key = entry.getKey();
V value = map().get(key);
- return Objects.equal(value, entry.getValue())
+ return Objects.equals(value, entry.getValue())
&& (value != null || map().containsKey(key));
}
return false;
@@ -339,7 +338,7 @@ class CompatibleGuava11 {
@Override public boolean removeAll(Collection<?> c) {
try {
- return super.removeAll(checkNotNull(c));
+ return super.removeAll(Objects.requireNonNull(c));
} catch (UnsupportedOperationException e) {
// if the iterators don't support remove
boolean changed = true;
@@ -352,7 +351,7 @@ class CompatibleGuava11 {
@Override public boolean retainAll(Collection<?> c) {
try {
- return super.retainAll(checkNotNull(c));
+ return super.retainAll(Objects.requireNonNull(c));
} catch (UnsupportedOperationException e) {
// if the iterators don't support remove
Set<Object> keys = Sets.newHashSetWithExpectedSize(c.size());
@@ -392,7 +391,7 @@ class CompatibleGuava11 {
return super.remove(o);
} catch (UnsupportedOperationException e) {
for (Map.Entry<K, V> entry : map().entrySet()) {
- if (com.google.common.base.Objects.equal(o, entry.getValue())) {
+ if (Objects.equals(o, entry.getValue())) {
map().remove(entry.getKey());
return true;
}
@@ -403,9 +402,9 @@ class CompatibleGuava11 {
@Override public boolean removeAll(Collection<?> c) {
try {
- return super.removeAll(checkNotNull(c));
+ return super.removeAll(Objects.requireNonNull(c));
} catch (UnsupportedOperationException e) {
- Set<K> toRemove = Sets.newHashSet();
+ Set<K> toRemove = new HashSet<>();
for (Map.Entry<K, V> entry : map().entrySet()) {
if (c.contains(entry.getValue())) {
toRemove.add(entry.getKey());
@@ -417,9 +416,9 @@ class CompatibleGuava11 {
@Override public boolean retainAll(Collection<?> c) {
try {
- return super.retainAll(checkNotNull(c));
+ return super.retainAll(Objects.requireNonNull(c));
} catch (UnsupportedOperationException e) {
- Set<K> toRetain = Sets.newHashSet();
+ Set<K> toRetain = new HashSet<>();
for (Map.Entry<K, V> entry : map().entrySet()) {
if (c.contains(entry.getValue())) {
toRetain.add(entry.getKey());
@@ -454,7 +453,7 @@ class CompatibleGuava11 {
final Iterator<? extends F> backingIterator;
TransformedIterator(Iterator<? extends F> backingIterator) {
- this.backingIterator = checkNotNull(backingIterator);
+ this.backingIterator = Objects.requireNonNull(backingIterator);
}
abstract T transform(F from);
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/ImmutableBitSet.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/ImmutableBitSet.java b/core/src/main/java/org/apache/calcite/util/ImmutableBitSet.java
index 4f514bb..ef49e80 100644
--- a/core/src/main/java/org/apache/calcite/util/ImmutableBitSet.java
+++ b/core/src/main/java/org/apache/calcite/util/ImmutableBitSet.java
@@ -19,12 +19,9 @@ package org.apache.calcite.util;
import org.apache.calcite.linq4j.Linq4j;
import org.apache.calcite.runtime.Utilities;
-import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSortedMap;
import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
import com.google.common.collect.Ordering;
import java.io.Serializable;
@@ -50,21 +47,18 @@ public class ImmutableBitSet
implements Iterable<Integer>, Serializable, Comparable<ImmutableBitSet> {
/** Compares bit sets topologically, so that enclosing bit sets come first,
* using natural ordering to break ties. */
- public static final Comparator<ImmutableBitSet> COMPARATOR =
- new Comparator<ImmutableBitSet>() {
- public int compare(ImmutableBitSet o1, ImmutableBitSet o2) {
- if (o1.equals(o2)) {
- return 0;
- }
- if (o1.contains(o2)) {
- return -1;
- }
- if (o2.contains(o1)) {
- return 1;
- }
- return o1.compareTo(o2);
- }
- };
+ public static final Comparator<ImmutableBitSet> COMPARATOR = (o1, o2) -> {
+ if (o1.equals(o2)) {
+ return 0;
+ }
+ if (o1.contains(o2)) {
+ return -1;
+ }
+ if (o2.contains(o1)) {
+ return 1;
+ }
+ return o1.compareTo(o2);
+ };
public static final Ordering<ImmutableBitSet> ORDERING =
Ordering.from(COMPARATOR);
@@ -83,12 +77,11 @@ public class ImmutableBitSet
private static final ImmutableBitSet EMPTY =
new ImmutableBitSet(EMPTY_LONGS);
- public static final Function<? super BitSet, ImmutableBitSet> FROM_BIT_SET =
- new Function<BitSet, ImmutableBitSet>() {
- public ImmutableBitSet apply(BitSet input) {
- return ImmutableBitSet.of(BitSets.toIter(input));
- }
- };
+ @SuppressWarnings("Guava")
+ @Deprecated // to be removed before 2.0
+ public static final
+ com.google.common.base.Function<? super BitSet, ImmutableBitSet>
+ FROM_BIT_SET = ImmutableBitSet::fromBitSet;
private final long[] words;
@@ -203,6 +196,14 @@ public class ImmutableBitSet
}
/**
+ * Returns a new immutable bit set containing all the bits in the given
+ * {@link BitSet}.
+ */
+ public static ImmutableBitSet fromBitSet(BitSet input) {
+ return ImmutableBitSet.of(BitSets.toIter(input));
+ }
+
+ /**
* Creates an ImmutableBitSet with bits from {@code fromIndex} (inclusive) to
* specified {@code toIndex} (exclusive) set to {@code true}.
*
@@ -257,17 +258,13 @@ public class ImmutableBitSet
/** Computes the power set (set of all sets) of this bit set. */
public Iterable<ImmutableBitSet> powerSet() {
- List<List<ImmutableBitSet>> singletons = Lists.newArrayList();
- for (Integer bit : this) {
+ List<List<ImmutableBitSet>> singletons = new ArrayList<>();
+ for (int bit : this) {
singletons.add(
ImmutableList.of(ImmutableBitSet.of(), ImmutableBitSet.of(bit)));
}
return Iterables.transform(Linq4j.product(singletons),
- new Function<List<ImmutableBitSet>, ImmutableBitSet>() {
- public ImmutableBitSet apply(List<ImmutableBitSet> input) {
- return ImmutableBitSet.union(input);
- }
- });
+ ImmutableBitSet::union);
}
/**
@@ -465,7 +462,7 @@ public class ImmutableBitSet
* <p>Bit sets {@code (), (0), (0, 1), (0, 1, 3), (1), (2, 3)} are in sorted
* order.</p>
*/
- public int compareTo(ImmutableBitSet o) {
+ public int compareTo(@Nonnull ImmutableBitSet o) {
int i = 0;
for (;;) {
int n0 = nextSetBit(i);
@@ -888,12 +885,7 @@ public class ImmutableBitSet
public static Iterable<ImmutableBitSet> permute(
Iterable<ImmutableBitSet> bitSets,
final Map<Integer, Integer> map) {
- return Iterables.transform(bitSets,
- new Function<ImmutableBitSet, ImmutableBitSet>() {
- public ImmutableBitSet apply(ImmutableBitSet bitSet) {
- return bitSet.permute(map);
- }
- });
+ return Iterables.transform(bitSets, bitSet -> bitSet.permute(map));
}
/** Returns a bit set with every bit moved up {@code offset} positions.
@@ -921,7 +913,7 @@ public class ImmutableBitSet
private static class Closure {
private SortedMap<Integer, ImmutableBitSet> equivalence;
private final SortedMap<Integer, ImmutableBitSet> closure =
- Maps.newTreeMap();
+ new TreeMap<>();
Closure(SortedMap<Integer, ImmutableBitSet> equivalence) {
this.equivalence = equivalence;
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/ImmutableNullableList.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/ImmutableNullableList.java b/core/src/main/java/org/apache/calcite/util/ImmutableNullableList.java
index 9345214..109153d 100644
--- a/core/src/main/java/org/apache/calcite/util/ImmutableNullableList.java
+++ b/core/src/main/java/org/apache/calcite/util/ImmutableNullableList.java
@@ -19,7 +19,6 @@ package org.apache.calcite.util;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Iterators;
-import com.google.common.collect.Lists;
import java.util.AbstractList;
import java.util.ArrayList;
@@ -60,6 +59,9 @@ public class ImmutableNullableList<E> extends AbstractList<E> {
//noinspection unchecked
return (List<E>) elements;
}
+ if (elements == Collections.EMPTY_LIST) {
+ return ImmutableList.of();
+ }
// If there are no nulls, ImmutableList is better.
for (E object : elements) {
if (object == null) {
@@ -204,7 +206,7 @@ public class ImmutableNullableList<E> extends AbstractList<E> {
* @param <E> element type
*/
public static final class Builder<E> {
- private final List<E> contents = Lists.newArrayList();
+ private final List<E> contents = new ArrayList<>();
/**
* Creates a new builder. The returned builder is equivalent to the builder
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/IntegerIntervalSet.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/IntegerIntervalSet.java b/core/src/main/java/org/apache/calcite/util/IntegerIntervalSet.java
index 1105461..37ef25d 100644
--- a/core/src/main/java/org/apache/calcite/util/IntegerIntervalSet.java
+++ b/core/src/main/java/org/apache/calcite/util/IntegerIntervalSet.java
@@ -91,13 +91,10 @@ public class IntegerIntervalSet extends AbstractSet<Integer> {
private Enumerator<Integer> enumerator() {
final int[] bounds = {Integer.MAX_VALUE, Integer.MIN_VALUE};
visit(
- s,
- new Handler() {
- public void range(int start, int end, boolean exclude) {
- if (!exclude) {
- bounds[0] = Math.min(bounds[0], start);
- bounds[1] = Math.max(bounds[1], end);
- }
+ s, (start, end, exclude) -> {
+ if (!exclude) {
+ bounds[0] = Math.min(bounds[0], start);
+ bounds[1] = Math.max(bounds[1], end);
}
});
return new Enumerator<Integer>() {
@@ -136,12 +133,9 @@ public class IntegerIntervalSet extends AbstractSet<Integer> {
public boolean contains(final int n) {
final boolean[] bs = {false};
visit(
- s,
- new Handler() {
- public void range(int start, int end, boolean exclude) {
- if (start <= n && n <= end) {
- bs[0] = !exclude;
- }
+ s, (start, end, exclude) -> {
+ if (start <= n && n <= end) {
+ bs[0] = !exclude;
}
});
return bs[0];
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/NameSet.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/NameSet.java b/core/src/main/java/org/apache/calcite/util/NameSet.java
index a51f949..22b7da0 100644
--- a/core/src/main/java/org/apache/calcite/util/NameSet.java
+++ b/core/src/main/java/org/apache/calcite/util/NameSet.java
@@ -34,16 +34,13 @@ public class NameSet {
* collection sorted on this comparator, we can find case-insensitive matches
* for a given string using a range scan between the upper-case string and
* the lower-case string. */
- public static final Comparator<String> COMPARATOR =
- new Comparator<String>() {
- public int compare(String o1, String o2) {
- int c = o1.compareToIgnoreCase(o2);
- if (c == 0) {
- c = o1.compareTo(o2);
- }
- return c;
- }
- };
+ public static final Comparator<String> COMPARATOR = (o1, o2) -> {
+ int c = o1.compareToIgnoreCase(o2);
+ if (c == 0) {
+ c = o1.compareTo(o2);
+ }
+ return c;
+ };
private final NavigableSet<String> names;
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/Pair.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/Pair.java b/core/src/main/java/org/apache/calcite/util/Pair.java
index bb2521e..fedaa2d 100644
--- a/core/src/main/java/org/apache/calcite/util/Pair.java
+++ b/core/src/main/java/org/apache/calcite/util/Pair.java
@@ -229,27 +229,11 @@ public class Pair<T1, T2>
public static <K, V> Iterable<Pair<K, V>> zip(
final Iterable<? extends K> ks,
final Iterable<? extends V> vs) {
- return new Iterable<Pair<K, V>>() {
- public Iterator<Pair<K, V>> iterator() {
- final Iterator<? extends K> kIterator = ks.iterator();
- final Iterator<? extends V> vIterator = vs.iterator();
-
- return new Iterator<Pair<K, V>>() {
- public boolean hasNext() {
- return kIterator.hasNext() && vIterator.hasNext();
- }
-
- @SuppressWarnings("unchecked")
- public Pair<K, V> next() {
- return (Pair<K, V>) Pair.of(kIterator.next(), vIterator.next());
- }
-
- public void remove() {
- kIterator.remove();
- vIterator.remove();
- }
- };
- }
+ return () -> {
+ final Iterator<? extends K> kIterator = ks.iterator();
+ final Iterator<? extends V> vIterator = vs.iterator();
+
+ return new ZipIterator<>(kIterator, vIterator);
};
}
@@ -288,25 +272,7 @@ public class Pair<T1, T2>
*/
public static <L, R> Iterable<L> left(
final Iterable<? extends Map.Entry<L, R>> iterable) {
- return new Iterable<L>() {
- public Iterator<L> iterator() {
- final Iterator<? extends Map.Entry<L, R>> iterator =
- iterable.iterator();
- return new Iterator<L>() {
- public boolean hasNext() {
- return iterator.hasNext();
- }
-
- public L next() {
- return iterator.next().getKey();
- }
-
- public void remove() {
- iterator.remove();
- }
- };
- }
- };
+ return () -> new LeftIterator<>(iterable.iterator());
}
/**
@@ -319,25 +285,7 @@ public class Pair<T1, T2>
*/
public static <L, R> Iterable<R> right(
final Iterable<? extends Map.Entry<L, R>> iterable) {
- return new Iterable<R>() {
- public Iterator<R> iterator() {
- final Iterator<? extends Map.Entry<L, R>> iterator =
- iterable.iterator();
- return new Iterator<R>() {
- public boolean hasNext() {
- return iterator.hasNext();
- }
-
- public R next() {
- return iterator.next().getValue();
- }
-
- public void remove() {
- iterator.remove();
- }
- };
- }
- };
+ return () -> new RightIterator<>(iterable.iterator());
}
public static <K, V> List<K> left(
@@ -376,32 +324,12 @@ public class Pair<T1, T2>
* @return Iterable over adjacent element pairs
*/
public static <T> Iterable<Pair<T, T>> adjacents(final Iterable<T> iterable) {
- return new Iterable<Pair<T, T>>() {
- public Iterator<Pair<T, T>> iterator() {
- final Iterator<T> iterator = iterable.iterator();
- if (!iterator.hasNext()) {
- return Collections.emptyIterator();
- }
- final T first = iterator.next();
- return new Iterator<Pair<T, T>>() {
- T previous = first;
-
- public boolean hasNext() {
- return iterator.hasNext();
- }
-
- public Pair<T, T> next() {
- final T current = iterator.next();
- final Pair<T, T> pair = of(previous, current);
- previous = current;
- return pair;
- }
-
- public void remove() {
- throw new UnsupportedOperationException("remove");
- }
- };
+ return () -> {
+ final Iterator<T> iterator = iterable.iterator();
+ if (!iterator.hasNext()) {
+ return Collections.emptyIterator();
}
+ return new AdjacentIterator<>(iterator);
};
}
@@ -416,29 +344,148 @@ public class Pair<T1, T2>
* @return Iterable over pairs of the first element and all other elements
*/
public static <T> Iterable<Pair<T, T>> firstAnd(final Iterable<T> iterable) {
- return new Iterable<Pair<T, T>>() {
- public Iterator<Pair<T, T>> iterator() {
- final Iterator<T> iterator = iterable.iterator();
- if (!iterator.hasNext()) {
- return Collections.emptyIterator();
- }
- final T first = iterator.next();
- return new Iterator<Pair<T, T>>() {
- public boolean hasNext() {
- return iterator.hasNext();
- }
-
- public Pair<T, T> next() {
- return of(first, iterator.next());
- }
-
- public void remove() {
- throw new UnsupportedOperationException("remove");
- }
- };
+ return () -> {
+ final Iterator<T> iterator = iterable.iterator();
+ if (!iterator.hasNext()) {
+ return Collections.emptyIterator();
}
+ final T first = iterator.next();
+ return new FirstAndIterator<>(iterator, first);
};
}
+
+ /** Iterator that returns the left field of each pair.
+ *
+ * @param <L> Left-hand type
+ * @param <R> Right-hand type */
+ private static class LeftIterator<L, R> implements Iterator<L> {
+ private final Iterator<? extends Map.Entry<L, R>> iterator;
+
+ LeftIterator(Iterator<? extends Map.Entry<L, R>> iterator) {
+ this.iterator = Objects.requireNonNull(iterator);
+ }
+
+ public boolean hasNext() {
+ return iterator.hasNext();
+ }
+
+ public L next() {
+ return iterator.next().getKey();
+ }
+
+ public void remove() {
+ iterator.remove();
+ }
+ }
+
+ /** Iterator that returns the right field of each pair.
+ *
+ * @param <L> Left-hand type
+ * @param <R> Right-hand type */
+ private static class RightIterator<L, R> implements Iterator<R> {
+ private final Iterator<? extends Map.Entry<L, R>> iterator;
+
+ RightIterator(Iterator<? extends Map.Entry<L, R>> iterator) {
+ this.iterator = Objects.requireNonNull(iterator);
+ }
+
+ public boolean hasNext() {
+ return iterator.hasNext();
+ }
+
+ public R next() {
+ return iterator.next().getValue();
+ }
+
+ public void remove() {
+ iterator.remove();
+ }
+ }
+
+ /** Iterator that returns the first element of a collection paired with every
+ * other element.
+ *
+ * @param <E> Element type */
+ private static class FirstAndIterator<E> implements Iterator<Pair<E, E>> {
+ private final Iterator<E> iterator;
+ private final E first;
+
+ FirstAndIterator(Iterator<E> iterator, E first) {
+ this.iterator = Objects.requireNonNull(iterator);
+ this.first = first;
+ }
+
+ public boolean hasNext() {
+ return iterator.hasNext();
+ }
+
+ public Pair<E, E> next() {
+ return of(first, iterator.next());
+ }
+
+ public void remove() {
+ throw new UnsupportedOperationException("remove");
+ }
+ }
+
+ /** Iterator that pairs elements from two iterators.
+ *
+ * @param <L> Left-hand type
+ * @param <R> Right-hand type */
+ private static class ZipIterator<L, R> implements Iterator<Pair<L, R>> {
+ private final Iterator<? extends L> leftIterator;
+ private final Iterator<? extends R> rightIterator;
+
+ ZipIterator(Iterator<? extends L> leftIterator,
+ Iterator<? extends R> rightIterator) {
+ this.leftIterator = Objects.requireNonNull(leftIterator);
+ this.rightIterator = Objects.requireNonNull(rightIterator);
+ }
+
+ public boolean hasNext() {
+ return leftIterator.hasNext() && rightIterator.hasNext();
+ }
+
+ public Pair<L, R> next() {
+ return Pair.of(leftIterator.next(), rightIterator.next());
+ }
+
+ public void remove() {
+ leftIterator.remove();
+ rightIterator.remove();
+ }
+ }
+
+ /** Iterator that returns consecutive pairs of elements from an underlying
+ * iterator.
+ *
+ * @param <E> Element type */
+ private static class AdjacentIterator<E> implements Iterator<Pair<E, E>> {
+ private final E first;
+ private final Iterator<E> iterator;
+ E previous;
+
+ AdjacentIterator(Iterator<E> iterator) {
+ this.iterator = Objects.requireNonNull(iterator);
+ this.first = iterator.next();
+ previous = first;
+ }
+
+ public boolean hasNext() {
+ return iterator.hasNext();
+ }
+
+ public Pair<E, E> next() {
+ final E current = iterator.next();
+ final Pair<E, E> pair = of(previous, current);
+ previous = current;
+ return pair;
+ }
+
+ public void remove() {
+ throw new UnsupportedOperationException("remove");
+ }
+ }
}
// End Pair.java
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/PartiallyOrderedSet.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/PartiallyOrderedSet.java b/core/src/main/java/org/apache/calcite/util/PartiallyOrderedSet.java
index a3db6db..313b033 100644
--- a/core/src/main/java/org/apache/calcite/util/PartiallyOrderedSet.java
+++ b/core/src/main/java/org/apache/calcite/util/PartiallyOrderedSet.java
@@ -16,10 +16,7 @@
*/
package org.apache.calcite.util;
-import com.google.common.base.Function;
-import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
import java.util.AbstractSet;
import java.util.ArrayDeque;
@@ -32,7 +29,9 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
+import java.util.function.Function;
/**
* Partially-ordered set.
@@ -71,11 +70,7 @@ public class PartiallyOrderedSet<E> extends AbstractSet<E> {
* 6 (0110).
*/
public static final Ordering<ImmutableBitSet> BIT_SET_INCLUSION_ORDERING =
- new Ordering<ImmutableBitSet>() {
- public boolean lessThan(ImmutableBitSet e1, ImmutableBitSet e2) {
- return e1.contains(e2);
- }
- };
+ ImmutableBitSet::contains;
private final Map<E, Node<E>> map;
private final Function<E, Iterable<E>> parentFunction;
@@ -99,7 +94,7 @@ public class PartiallyOrderedSet<E> extends AbstractSet<E> {
* @param ordering Ordering relation
*/
public PartiallyOrderedSet(Ordering<E> ordering) {
- this(ordering, new HashMap<E, Node<E>>(), null, null);
+ this(ordering, new HashMap<>(), null, null);
}
/**
@@ -111,7 +106,16 @@ public class PartiallyOrderedSet<E> extends AbstractSet<E> {
public PartiallyOrderedSet(Ordering<E> ordering,
Function<E, Iterable<E>> childFunction,
Function<E, Iterable<E>> parentFunction) {
- this(ordering, new HashMap<E, Node<E>>(), childFunction, parentFunction);
+ this(ordering, new HashMap<>(), childFunction, parentFunction);
+ }
+
+ @SuppressWarnings("Guava")
+ @Deprecated // to be removed before 2.0
+ public PartiallyOrderedSet(Ordering<E> ordering,
+ com.google.common.base.Function<E, Iterable<E>> childFunction,
+ com.google.common.base.Function<E, Iterable<E>> parentFunction) {
+ this(ordering, (Function<E, Iterable<E>>) childFunction::apply,
+ parentFunction::apply);
}
/**
@@ -122,8 +126,7 @@ public class PartiallyOrderedSet<E> extends AbstractSet<E> {
* @param collection Initial contents of partially-ordered set
*/
public PartiallyOrderedSet(Ordering<E> ordering, Collection<E> collection) {
- this(ordering, new HashMap<E, Node<E>>(collection.size() * 3 / 2), null,
- null);
+ this(ordering, new HashMap<>(collection.size() * 3 / 2), null, null);
addAll(collection);
}
@@ -539,8 +542,7 @@ public class PartiallyOrderedSet<E> extends AbstractSet<E> {
// breadth-first search, to iterate over every element once, printing
// those nearest the top element first
final Set<E> seen = new HashSet<>();
- final Deque<E> unseen = new ArrayDeque<>();
- unseen.addAll(getNonChildren());
+ final Deque<E> unseen = new ArrayDeque<>(getNonChildren());
while (!unseen.isEmpty()) {
E e = unseen.pop();
buf.append(" ");
@@ -641,7 +643,7 @@ public class PartiallyOrderedSet<E> extends AbstractSet<E> {
if (hypothetical) {
if (parentFunction != null) {
final List<E> list = new ArrayList<>();
- closure(parentFunction, e, list, new HashSet<E>());
+ closure(parentFunction, e, list, new HashSet<>());
return list;
} else {
return ImmutableList.copyOf(strip(findParents(e)));
@@ -656,7 +658,7 @@ public class PartiallyOrderedSet<E> extends AbstractSet<E> {
private void closure(Function<E, Iterable<E>> generator, E e, List<E> list,
Set<E> set) {
- for (E p : Preconditions.checkNotNull(generator.apply(e))) {
+ for (E p : Objects.requireNonNull(generator.apply(e))) {
if (set.add(e)) {
if (map.containsKey(p)) {
list.add(p);
@@ -711,12 +713,7 @@ public class PartiallyOrderedSet<E> extends AbstractSet<E> {
// Similarly child list and bottom element.
return ImmutableList.of();
}
- return Lists.transform(list,
- new Function<Node<E>, E>() {
- public E apply(Node<E> node) {
- return node.e;
- }
- });
+ return Util.transform(list, node -> node.e);
}
/** Converts an iterable of nodes into the list of the elements inside.
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/PrecedenceClimbingParser.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/PrecedenceClimbingParser.java b/core/src/main/java/org/apache/calcite/util/PrecedenceClimbingParser.java
index 68b8be5..e25e459 100644
--- a/core/src/main/java/org/apache/calcite/util/PrecedenceClimbingParser.java
+++ b/core/src/main/java/org/apache/calcite/util/PrecedenceClimbingParser.java
@@ -18,13 +18,13 @@ package org.apache.calcite.util;
import org.apache.calcite.linq4j.Ord;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
+import java.util.function.Predicate;
/**
* Parser that takes a collection of tokens (atoms and operators)
@@ -107,7 +107,7 @@ public class PrecedenceClimbingParser {
break;
case SPECIAL:
Result r = ((SpecialOp) op).special.apply(this, (SpecialOp) op);
- Preconditions.checkNotNull(r);
+ Objects.requireNonNull(r);
replace(r.replacement, r.first.previous, r.last.next);
break;
default:
@@ -188,7 +188,7 @@ public class PrecedenceClimbingParser {
public PrecedenceClimbingParser copy(int start, Predicate<Token> predicate) {
final List<Token> tokens = new ArrayList<>();
for (Token token : Util.skip(all(), start)) {
- if (predicate.apply(token)) {
+ if (predicate.test(token)) {
break;
}
tokens.add(token.copy());
@@ -352,7 +352,7 @@ public class PrecedenceClimbingParser {
public static class Builder {
final List<Token> tokens = new ArrayList<>();
private final PrecedenceClimbingParser dummy =
- new PrecedenceClimbingParser(ImmutableList.<Token>of());
+ new PrecedenceClimbingParser(ImmutableList.of());
private Builder add(Token t) {
tokens.add(t);
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/ReflectUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/ReflectUtil.java b/core/src/main/java/org/apache/calcite/util/ReflectUtil.java
index 8dc2f2e..17f80d6 100644
--- a/core/src/main/java/org/apache/calcite/util/ReflectUtil.java
+++ b/core/src/main/java/org/apache/calcite/util/ReflectUtil.java
@@ -286,7 +286,7 @@ public abstract class ReflectUtil {
visitorClass,
visiteeClass,
visitMethodName,
- Collections.<Class>emptyList());
+ Collections.emptyList());
}
/**
@@ -426,7 +426,7 @@ public abstract class ReflectUtil {
visitorClass,
visiteeClass,
visitMethodName,
- Collections.<Class>emptyList());
+ Collections.emptyList());
}
public Method lookupVisitMethod(
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/Sources.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/Sources.java b/core/src/main/java/org/apache/calcite/util/Sources.java
index 6f04b90..ae6e9da 100644
--- a/core/src/main/java/org/apache/calcite/util/Sources.java
+++ b/core/src/main/java/org/apache/calcite/util/Sources.java
@@ -16,8 +16,6 @@
*/
package org.apache.calcite.util;
-import com.google.common.base.Preconditions;
-
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -27,6 +25,7 @@ import java.io.Reader;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
+import java.util.Objects;
import java.util.zip.GZIPInputStream;
/**
@@ -76,7 +75,7 @@ public abstract class Sources {
private final URL url;
private FileSource(URL url) {
- this.url = Preconditions.checkNotNull(url);
+ this.url = Objects.requireNonNull(url);
if (url.getProtocol().equals("file")) {
this.file = new File(url.getFile());
} else {
@@ -85,7 +84,7 @@ public abstract class Sources {
}
private FileSource(File file) {
- this.file = Preconditions.checkNotNull(file);
+ this.file = Objects.requireNonNull(file);
this.url = null;
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/TryThreadLocal.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/TryThreadLocal.java b/core/src/main/java/org/apache/calcite/util/TryThreadLocal.java
index b278174..2fd4f2a 100644
--- a/core/src/main/java/org/apache/calcite/util/TryThreadLocal.java
+++ b/core/src/main/java/org/apache/calcite/util/TryThreadLocal.java
@@ -50,13 +50,11 @@ public class TryThreadLocal<T> extends ThreadLocal<T> {
public Memo push(T value) {
final T previous = get();
set(value);
- return new Memo() {
- public void close() {
- if (previous == initialValue) {
- remove();
- } else {
- set(previous);
- }
+ return () -> {
+ if (previous == initialValue) {
+ remove();
+ } else {
+ set(previous);
}
};
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/UnmodifiableArrayList.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/UnmodifiableArrayList.java b/core/src/main/java/org/apache/calcite/util/UnmodifiableArrayList.java
index 3a27b02..d7a58fd 100644
--- a/core/src/main/java/org/apache/calcite/util/UnmodifiableArrayList.java
+++ b/core/src/main/java/org/apache/calcite/util/UnmodifiableArrayList.java
@@ -16,9 +16,8 @@
*/
package org.apache.calcite.util;
-import com.google.common.base.Preconditions;
-
import java.util.AbstractList;
+import java.util.Objects;
import java.util.RandomAccess;
/**
@@ -40,7 +39,7 @@ public class UnmodifiableArrayList<E>
private final E[] elements;
private UnmodifiableArrayList(E[] elements) {
- this.elements = Preconditions.checkNotNull(elements);
+ this.elements = Objects.requireNonNull(elements);
}
public static <E> UnmodifiableArrayList<E> of(E... elements) {
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/Util.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/Util.java b/core/src/main/java/org/apache/calcite/util/Util.java
index 307879c..b90bbbd 100644
--- a/core/src/main/java/org/apache/calcite/util/Util.java
+++ b/core/src/main/java/org/apache/calcite/util/Util.java
@@ -29,7 +29,6 @@ import org.apache.calcite.sql.SqlValuesOperator;
import org.apache.calcite.sql.fun.SqlRowOperator;
import org.apache.calcite.sql.util.SqlBasicVisitor;
-import com.google.common.base.Function;
import com.google.common.base.Preconditions;
import com.google.common.base.Throwables;
import com.google.common.cache.CacheBuilder;
@@ -91,16 +90,16 @@ import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.Properties;
+import java.util.RandomAccess;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TimeZone;
+import java.util.function.Function;
import java.util.jar.JarFile;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collector;
-import javax.annotation.Nullable;
-
-import static com.google.common.base.Preconditions.checkNotNull;
+import javax.annotation.Nonnull;
/**
* Miscellaneous utility functions.
@@ -147,16 +146,11 @@ public class Util {
* Maps classes to the map of their enum values. Uses a weak map so that
* classes are not prevented from being unloaded.
*/
+ @SuppressWarnings("unchecked")
private static final LoadingCache<Class, Map<String, Enum>> ENUM_CONSTANTS =
CacheBuilder.newBuilder()
.weakKeys()
- .build(
- new CacheLoader<Class, Map<String, Enum>>() {
- @Override public Map<String, Enum> load(Class clazz) {
- //noinspection unchecked
- return enumConstants(clazz);
- }
- });
+ .build(CacheLoader.from(Util::enumConstants));
//~ Methods ----------------------------------------------------------------
/**
@@ -819,7 +813,7 @@ public class Util {
* but we don't require Guava version 20 yet. */
public static void throwIfUnchecked(Throwable throwable) {
Bug.upgrade("Remove when minimum Guava version is 20");
- checkNotNull(throwable);
+ Objects.requireNonNull(throwable);
if (throwable instanceof RuntimeException) {
throw (RuntimeException) throwable;
}
@@ -868,7 +862,7 @@ public class Util {
}
/** @deprecated Use {@link Preconditions#checkArgument}
- * or {@link Preconditions#checkNotNull(Object)} */
+ * or {@link Objects#requireNonNull(Object)} */
@Deprecated // to be removed before 2.0
public static void pre(boolean b, String description) {
if (!b) {
@@ -877,7 +871,7 @@ public class Util {
}
/** @deprecated Use {@link Preconditions#checkArgument}
- * or {@link Preconditions#checkNotNull(Object)} */
+ * or {@link Objects#requireNonNull(Object)} */
@Deprecated // to be removed before 2.0
public static void post(boolean b, String description) {
if (!b) {
@@ -1603,11 +1597,7 @@ public class Util {
public static <E> Iterable<E> cast(
final Iterable<? super E> iterable,
final Class<E> clazz) {
- return new Iterable<E>() {
- public Iterator<E> iterator() {
- return cast(iterable.iterator(), clazz);
- }
- };
+ return () -> cast(iterable.iterator(), clazz);
}
/**
@@ -1631,11 +1621,7 @@ public class Util {
public static <E> Iterable<E> filter(
final Iterable<?> iterable,
final Class<E> includeFilter) {
- return new Iterable<E>() {
- public Iterator<E> iterator() {
- return new Filterator<>(iterable.iterator(), includeFilter);
- }
- };
+ return () -> new Filterator<>(iterable.iterator(), includeFilter);
}
public static <E> Collection<E> filter(
@@ -1898,7 +1884,7 @@ public class Util {
}
public static <T> Iterable<T> orEmpty(Iterable<T> v0) {
- return v0 != null ? v0 : ImmutableList.<T>of();
+ return v0 != null ? v0 : ImmutableList.of();
}
/** Returns the last element of a list.
@@ -2199,16 +2185,11 @@ public class Util {
* @param <V> Value type
* @return Map that is a view onto the values
*/
- public static <K, V> Map<K, V> asIndexMap(
+ public static <K, V> Map<K, V> asIndexMapJ(
final Collection<V> values,
final Function<V, K> function) {
final Collection<Map.Entry<K, V>> entries =
- Collections2.transform(values,
- new Function<V, Map.Entry<K, V>>() {
- public Map.Entry<K, V> apply(@Nullable V input) {
- return Pair.of(function.apply(input), input);
- }
- });
+ Collections2.transform(values, v -> Pair.of(function.apply(v), v));
final Set<Map.Entry<K, V>> entrySet =
new AbstractSet<Map.Entry<K, V>>() {
public Iterator<Map.Entry<K, V>> iterator() {
@@ -2226,6 +2207,14 @@ public class Util {
};
}
+ @SuppressWarnings("Guava")
+ @Deprecated
+ public static <K, V> Map<K, V> asIndexMap(
+ final Collection<V> values,
+ final com.google.common.base.Function<V, K> function) {
+ return asIndexMapJ(values, function::apply);
+ }
+
/**
* Prints the given code with line numbering.
*/
@@ -2287,7 +2276,8 @@ public class Util {
if (n == 0) {
// Lists are already immutable. Furthermore, if the outer list is
// immutable we will just return "lists" unchanged.
- return ImmutableList.copyOf((Iterable) lists);
+ //noinspection unchecked
+ return ImmutableList.copyOf((Iterable<List<E>>) lists);
}
final ImmutableList.Builder<List<E>> builder =
ImmutableList.builder();
@@ -2351,6 +2341,9 @@ public class Util {
* Returns a {@code Collector} that accumulates the input elements into a
* Guava {@link ImmutableList} via a {@link ImmutableList.Builder}.
*
+ * <p>It will be obsolete when we move to {@link Bug#upgrade Guava 21.0},
+ * which has {@code ImmutableList.toImmutableList()}.
+ *
* @param <T> Type of the input elements
*
* @return a {@code Collector} that collects all the input elements into an
@@ -2366,6 +2359,16 @@ public class Util {
ImmutableList.Builder::build);
}
+ /** Transforms a list, applying a function to each element. */
+ public static <F, T> List<T> transform(List<F> list,
+ java.util.function.Function<F, T> function) {
+ if (list instanceof RandomAccess) {
+ return new RandomAccessTransformingList<>(list, function);
+ } else {
+ return new TransformingList<>(list, function);
+ }
+ }
+
//~ Inner Classes ----------------------------------------------------------
/**
@@ -2401,6 +2404,49 @@ public class Util {
return super.visit(call);
}
}
+
+ /** List that returns the same number of elements as a backing list,
+ * applying a transformation function to each one.
+ *
+ * @param <F> Element type of backing list
+ * @param <T> Element type of this list
+ */
+ private static class TransformingList<F, T> extends AbstractList<T> {
+ private final java.util.function.Function<F, T> function;
+ private final List<F> list;
+
+ TransformingList(List<F> list,
+ java.util.function.Function<F, T> function) {
+ this.function = function;
+ this.list = list;
+ }
+
+ public T get(int i) {
+ return function.apply(list.get(i));
+ }
+
+ public int size() {
+ return list.size();
+ }
+
+ @Override @Nonnull public Iterator<T> iterator() {
+ return listIterator();
+ }
+ }
+
+ /** Extension to {@link TransformingList} that implements
+ * {@link RandomAccess}.
+ *
+ * @param <F> Element type of backing list
+ * @param <T> Element type of this list
+ */
+ private static class RandomAccessTransformingList<F, T>
+ extends TransformingList<F, T> implements RandomAccess {
+ RandomAccessTransformingList(List<F> list,
+ java.util.function.Function<F, T> function) {
+ super(list, function);
+ }
+ }
}
// End Util.java
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/XmlOutput.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/XmlOutput.java b/core/src/main/java/org/apache/calcite/util/XmlOutput.java
index e58cae0..1a32205 100644
--- a/core/src/main/java/org/apache/calcite/util/XmlOutput.java
+++ b/core/src/main/java/org/apache/calcite/util/XmlOutput.java
@@ -558,7 +558,7 @@ public class XmlOutput {
if (i >= translationVector.size()) {
// Extend list by adding the requisite number of nulls.
final int count = i + 1 - translationVector.size();
- translationVector.addAll(Collections.<String>nCopies(count, null));
+ translationVector.addAll(Collections.nCopies(count, null));
}
translationVector.set(i, to);
}
@@ -569,7 +569,7 @@ public class XmlOutput {
*/
public void makeImmutable() {
translationTable =
- translationVector.toArray(new String[translationVector.size()]);
+ translationVector.toArray(new String[0]);
translationVector = null;
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/graph/BreadthFirstIterator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/graph/BreadthFirstIterator.java b/core/src/main/java/org/apache/calcite/util/graph/BreadthFirstIterator.java
index 21aed24..3a7260f 100644
--- a/core/src/main/java/org/apache/calcite/util/graph/BreadthFirstIterator.java
+++ b/core/src/main/java/org/apache/calcite/util/graph/BreadthFirstIterator.java
@@ -41,11 +41,7 @@ public class BreadthFirstIterator<V, E extends DefaultEdge>
public static <V, E extends DefaultEdge> Iterable<V> of(
final DirectedGraph<V, E> graph, final V root) {
- return new Iterable<V>() {
- public Iterator<V> iterator() {
- return new BreadthFirstIterator<V, E>(graph, root);
- }
- };
+ return () -> new BreadthFirstIterator<V, E>(graph, root);
}
/** Populates a set with the nodes reachable from a given node. */
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/graph/DefaultDirectedGraph.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/graph/DefaultDirectedGraph.java b/core/src/main/java/org/apache/calcite/util/graph/DefaultDirectedGraph.java
index f093393..77eef3e 100644
--- a/core/src/main/java/org/apache/calcite/util/graph/DefaultDirectedGraph.java
+++ b/core/src/main/java/org/apache/calcite/util/graph/DefaultDirectedGraph.java
@@ -45,7 +45,7 @@ public class DefaultDirectedGraph<V, E extends DefaultEdge>
}
public static <V> DefaultDirectedGraph<V, DefaultEdge> create() {
- return create(DefaultEdge.<V>factory());
+ return create(DefaultEdge.factory());
}
public static <V, E extends DefaultEdge> DefaultDirectedGraph<V, E> create(
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/graph/DefaultEdge.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/graph/DefaultEdge.java b/core/src/main/java/org/apache/calcite/util/graph/DefaultEdge.java
index 3f32bdf..d288d02 100644
--- a/core/src/main/java/org/apache/calcite/util/graph/DefaultEdge.java
+++ b/core/src/main/java/org/apache/calcite/util/graph/DefaultEdge.java
@@ -40,11 +40,7 @@ public class DefaultEdge {
}
public static <V> DirectedGraph.EdgeFactory<V, DefaultEdge> factory() {
- return new DirectedGraph.EdgeFactory<V, DefaultEdge>() {
- public DefaultEdge createEdge(V v0, V v1) {
- return new DefaultEdge(v0, v1);
- }
- };
+ return DefaultEdge::new;
}
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/graph/DepthFirstIterator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/graph/DepthFirstIterator.java b/core/src/main/java/org/apache/calcite/util/graph/DepthFirstIterator.java
index 1631d38..50d6b95 100644
--- a/core/src/main/java/org/apache/calcite/util/graph/DepthFirstIterator.java
+++ b/core/src/main/java/org/apache/calcite/util/graph/DepthFirstIterator.java
@@ -16,9 +16,7 @@
*/
package org.apache.calcite.util.graph;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
@@ -42,8 +40,8 @@ public class DepthFirstIterator<V, E extends DefaultEdge>
private static <V, E extends DefaultEdge> List<V> buildList(
DirectedGraph<V, E> graph, V start) {
- final List<V> list = Lists.newArrayList();
- buildListRecurse(list, Sets.<V>newHashSet(), graph, start);
+ final List<V> list = new ArrayList<>();
+ buildListRecurse(list, new HashSet<>(), graph, start);
return list;
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/graph/TopologicalOrderIterator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/graph/TopologicalOrderIterator.java b/core/src/main/java/org/apache/calcite/util/graph/TopologicalOrderIterator.java
index db7154f..69a6fdf 100644
--- a/core/src/main/java/org/apache/calcite/util/graph/TopologicalOrderIterator.java
+++ b/core/src/main/java/org/apache/calcite/util/graph/TopologicalOrderIterator.java
@@ -42,11 +42,7 @@ public class TopologicalOrderIterator<V, E extends DefaultEdge>
public static <V, E extends DefaultEdge> Iterable<V> of(
final DirectedGraph<V, E> graph) {
- return new Iterable<V>() {
- public Iterator<V> iterator() {
- return new TopologicalOrderIterator<V, E>(graph);
- }
- };
+ return () -> new TopologicalOrderIterator<V, E>(graph);
}
private void populate(Map<V, int[]> countMap, List<V> empties) {
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/javac/JavaCompilerArgs.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/javac/JavaCompilerArgs.java b/core/src/main/java/org/apache/calcite/util/javac/JavaCompilerArgs.java
index e687a25..e3b03d3 100644
--- a/core/src/main/java/org/apache/calcite/util/javac/JavaCompilerArgs.java
+++ b/core/src/main/java/org/apache/calcite/util/javac/JavaCompilerArgs.java
@@ -61,7 +61,7 @@ public class JavaCompilerArgs {
while (tok.hasMoreTokens()) {
list.add(tok.nextToken());
}
- setStringArray(list.toArray(new String[list.size()]));
+ setStringArray(list.toArray(new String[0]));
}
/**
@@ -90,7 +90,7 @@ public class JavaCompilerArgs {
public String[] getStringArray() {
argsList.addAll(fileNameList);
- return argsList.toArray(new String[argsList.size()]);
+ return argsList.toArray(new String[0]);
}
public void addFile(String fileName) {
@@ -98,7 +98,7 @@ public class JavaCompilerArgs {
}
public String[] getFileNames() {
- return fileNameList.toArray(new String[fileNameList.size()]);
+ return fileNameList.toArray(new String[0]);
}
public void setVerbose(boolean verbose) {
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/mapping/Mappings.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/mapping/Mappings.java b/core/src/main/java/org/apache/calcite/util/mapping/Mappings.java
index 79a7216..8381d1c 100644
--- a/core/src/main/java/org/apache/calcite/util/mapping/Mappings.java
+++ b/core/src/main/java/org/apache/calcite/util/mapping/Mappings.java
@@ -21,7 +21,6 @@ import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.Permutation;
import org.apache.calcite.util.Util;
-import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.primitives.Ints;
@@ -33,6 +32,7 @@ import java.util.BitSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.function.IntFunction;
/**
* Utility functions related to mappings.
@@ -219,12 +219,7 @@ public abstract class Mappings {
public static ImmutableList<ImmutableBitSet> apply2(final Mapping mapping,
Iterable<ImmutableBitSet> bitSets) {
return ImmutableList.copyOf(
- Iterables.transform(bitSets,
- new Function<ImmutableBitSet, ImmutableBitSet>() {
- public ImmutableBitSet apply(ImmutableBitSet input1) {
- return Mappings.apply(mapping, input1);
- }
- }));
+ Iterables.transform(bitSets, input1 -> apply(mapping, input1)));
}
/**
@@ -346,7 +341,7 @@ public abstract class Mappings {
}
public static TargetMapping target(
- Function<Integer, Integer> function,
+ IntFunction<Integer> function,
int sourceCount,
int targetCount) {
final PartialFunctionImpl mapping =
@@ -606,13 +601,11 @@ public abstract class Mappings {
throw new IllegalArgumentException("new source count too low");
}
return target(
- new Function<Integer, Integer>() {
- public Integer apply(Integer source) {
- int source2 = source - offset;
- return source2 < 0 || source2 >= mapping.getSourceCount()
- ? null
- : mapping.getTargetOpt(source2);
- }
+ (IntFunction<Integer>) source -> {
+ int source2 = source - offset;
+ return source2 < 0 || source2 >= mapping.getSourceCount()
+ ? null
+ : mapping.getTargetOpt(source2);
},
sourceCount,
mapping.getTargetCount());
@@ -652,12 +645,11 @@ public abstract class Mappings {
throw new IllegalArgumentException("new target count too low");
}
return target(
- new Function<Integer, Integer>() {
- public Integer apply(Integer source) {
- int target = mapping.getTargetOpt(source);
- return target < 0 ? null : target + offset;
- }
- }, mapping.getSourceCount(), targetCount);
+ (IntFunction<Integer>) source -> {
+ int target = mapping.getTargetOpt(source);
+ return target < 0 ? null : target + offset;
+ },
+ mapping.getSourceCount(), targetCount);
}
/**
@@ -681,18 +673,16 @@ public abstract class Mappings {
throw new IllegalArgumentException("new source count too low");
}
return target(
- new Function<Integer, Integer>() {
- public Integer apply(Integer source) {
- final int source2 = source - offset;
- if (source2 < 0 || source2 >= mapping.getSourceCount()) {
- return null;
- }
- int target = mapping.getTargetOpt(source2);
- if (target < 0) {
- return null;
- }
- return target + offset;
+ (IntFunction<Integer>) source -> {
+ final int source2 = source - offset;
+ if (source2 < 0 || source2 >= mapping.getSourceCount()) {
+ return null;
+ }
+ int target = mapping.getTargetOpt(source2);
+ if (target < 0) {
+ return null;
}
+ return target + offset;
},
sourceCount,
mapping.getTargetCount() + offset);
@@ -716,11 +706,7 @@ public abstract class Mappings {
/** Inverts an {@link java.lang.Iterable} over
* {@link org.apache.calcite.util.mapping.IntPair}s. */
public static Iterable<IntPair> invert(final Iterable<IntPair> pairs) {
- return new Iterable<IntPair>() {
- public Iterator<IntPair> iterator() {
- return invert(pairs.iterator());
- }
- };
+ return () -> invert(pairs.iterator());
}
/** Inverts an {@link java.util.Iterator} over
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/util/trace/CalciteTrace.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/trace/CalciteTrace.java b/core/src/main/java/org/apache/calcite/util/trace/CalciteTrace.java
index 2e01742..70d77af 100644
--- a/core/src/main/java/org/apache/calcite/util/trace/CalciteTrace.java
+++ b/core/src/main/java/org/apache/calcite/util/trace/CalciteTrace.java
@@ -56,11 +56,7 @@ public abstract class CalciteTrace {
public static final Logger PARSER_LOGGER = getParserTracer();
private static final ThreadLocal<Function2<Void, File, String>> DYNAMIC_HANDLER =
- new ThreadLocal<Function2<Void, File, String>>() {
- @Override protected Function2<Void, File, String> initialValue() {
- return Functions.ignore2();
- }
- };
+ ThreadLocal.withInitial(Functions::ignore2);
//~ Methods ----------------------------------------------------------------