This is an automated email from the ASF dual-hosted git repository.
danny0405 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/master by this push:
new ebbba56 [CALCITE-3871] Remove dependency of
org.apiguardian:apiguardian-api
ebbba56 is described below
commit ebbba566fbdbdd0923adda596467090d708cc14b
Author: yuzhao.cyz <[email protected]>
AuthorDate: Wed Mar 25 14:49:30 2020 +0800
[CALCITE-3871] Remove dependency of org.apiguardian:apiguardian-api
Also fix the pigunit version to 0.16.0.
---
bom/build.gradle.kts | 1 -
core/build.gradle.kts | 1 -
.../java/org/apache/calcite/rel/RelWriter.java | 3 +-
.../main/java/org/apache/calcite/rex/RexNode.java | 3 +-
.../main/java/org/apache/calcite/rex/RexUtil.java | 3 +-
.../main/java/org/apache/calcite/runtime/Hook.java | 3 +-
.../main/java/org/apache/calcite/sql/SqlKind.java | 2 +-
gradle.properties | 3 +-
linq4j/build.gradle.kts | 2 -
.../main/java/org/apache/calcite/linq4j/API.java | 120 +++++++++++++++++++++
.../apache/calcite/linq4j/EnumerableDefaults.java | 2 -
11 files changed, 126 insertions(+), 17 deletions(-)
diff --git a/bom/build.gradle.kts b/bom/build.gradle.kts
index ed4e16d..4dc2867 100644
--- a/bom/build.gradle.kts
+++ b/bom/build.gradle.kts
@@ -104,7 +104,6 @@ dependencies {
apiv("org.apache.pig:pig")
apiv("org.apache.pig:pigunit", "pig")
apiv("org.apache.spark:spark-core_2.10", "spark")
- apiv("org.apiguardian:apiguardian-api")
apiv("org.bouncycastle:bcpkix-jdk15on", "bouncycastle")
apiv("org.bouncycastle:bcprov-jdk15on", "bouncycastle")
apiv("org.cassandraunit:cassandra-unit")
diff --git a/core/build.gradle.kts b/core/build.gradle.kts
index f80da4c..caa7df2 100644
--- a/core/build.gradle.kts
+++ b/core/build.gradle.kts
@@ -41,7 +41,6 @@ dependencies {
api("com.fasterxml.jackson.core:jackson-annotations")
api("org.apache.calcite.avatica:avatica-core")
- api("org.apiguardian:apiguardian-api")
implementation("com.esri.geometry:esri-geometry-api")
implementation("com.fasterxml.jackson.core:jackson-core")
diff --git a/core/src/main/java/org/apache/calcite/rel/RelWriter.java
b/core/src/main/java/org/apache/calcite/rel/RelWriter.java
index 4f6d114..883d8bb 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelWriter.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelWriter.java
@@ -16,12 +16,11 @@
*/
package org.apache.calcite.rel;
+import org.apache.calcite.linq4j.API;
import org.apache.calcite.rex.RexNode;
import org.apache.calcite.sql.SqlExplainLevel;
import org.apache.calcite.util.Pair;
-import org.apiguardian.api.API;
-
import java.util.List;
/**
diff --git a/core/src/main/java/org/apache/calcite/rex/RexNode.java
b/core/src/main/java/org/apache/calcite/rex/RexNode.java
index 7a8f058..37b3987 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexNode.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexNode.java
@@ -17,11 +17,10 @@
package org.apache.calcite.rex;
import org.apache.calcite.config.CalciteSystemProperty;
+import org.apache.calcite.linq4j.API;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.sql.SqlKind;
-import org.apiguardian.api.API;
-
import java.util.Collection;
import java.util.concurrent.atomic.AtomicInteger;
diff --git a/core/src/main/java/org/apache/calcite/rex/RexUtil.java
b/core/src/main/java/org/apache/calcite/rex/RexUtil.java
index 7dd6a9d..c53a7ea 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexUtil.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexUtil.java
@@ -16,6 +16,7 @@
*/
package org.apache.calcite.rex;
+import org.apache.calcite.linq4j.API;
import org.apache.calcite.linq4j.function.Predicate1;
import org.apache.calcite.plan.RelOptPredicateList;
import org.apache.calcite.plan.RelOptUtil;
@@ -50,8 +51,6 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
-import org.apiguardian.api.API;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
diff --git a/core/src/main/java/org/apache/calcite/runtime/Hook.java
b/core/src/main/java/org/apache/calcite/runtime/Hook.java
index 22ac163..c97d5f7 100644
--- a/core/src/main/java/org/apache/calcite/runtime/Hook.java
+++ b/core/src/main/java/org/apache/calcite/runtime/Hook.java
@@ -16,11 +16,10 @@
*/
package org.apache.calcite.runtime;
+import org.apache.calcite.linq4j.API;
import org.apache.calcite.rel.RelRoot;
import org.apache.calcite.util.Holder;
-import org.apiguardian.api.API;
-
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
diff --git a/core/src/main/java/org/apache/calcite/sql/SqlKind.java
b/core/src/main/java/org/apache/calcite/sql/SqlKind.java
index b3e42a8..b3366d8 100644
--- a/core/src/main/java/org/apache/calcite/sql/SqlKind.java
+++ b/core/src/main/java/org/apache/calcite/sql/SqlKind.java
@@ -16,7 +16,7 @@
*/
package org.apache.calcite.sql;
-import org.apiguardian.api.API;
+import org.apache.calcite.linq4j.API;
import java.util.Collection;
import java.util.EnumSet;
diff --git a/gradle.properties b/gradle.properties
index a60e5de..73aee7f 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -62,7 +62,6 @@ spotbugs.version=3.1.11
# but prefer more recent versions.
# elasticsearch does not like asm:6.2.1+
aggdesigner-algorithm.version=6.0
-apiguardian-api.version=1.1.0
asm.version=7.2
bouncycastle.version=1.60
cassandra-all.version=3.11.2
@@ -118,7 +117,7 @@ natty.version=0.13
ojdbc8.version=19.3.0.0
opencsv.version=2.3
pig.version=0.16.0
-pigunit.version=
+pigunit.version=0.16.0
postgresql.version=9.3-1102-jdbc41
protobuf.version=3.6.1
quidem.version=0.9
diff --git a/linq4j/build.gradle.kts b/linq4j/build.gradle.kts
index 7a9db17..b348101 100644
--- a/linq4j/build.gradle.kts
+++ b/linq4j/build.gradle.kts
@@ -15,8 +15,6 @@
* limitations under the License.
*/
dependencies {
- api("org.apiguardian:apiguardian-api")
-
implementation("com.google.guava:guava")
implementation("org.apache.calcite.avatica:avatica-core")
}
diff --git a/linq4j/src/main/java/org/apache/calcite/linq4j/API.java
b/linq4j/src/main/java/org/apache/calcite/linq4j/API.java
new file mode 100644
index 0000000..9861d73
--- /dev/null
+++ b/linq4j/src/main/java/org/apache/calcite/linq4j/API.java
@@ -0,0 +1,120 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.calcite.linq4j;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * {@code @API} is used to annotate public types, methods, constructors, and
+ * fields within a framework or application in order to publish their
+ * {@link #status} and level of stability and to indicate how they are intended
+ * to be used by {@link #consumers} of the API.
+ *
+ * <p>If {@code @API} is present on a type, it is considered to hold for all
+ * public members of the type as well. However, a member of such an annotated
+ * type is allowed to declare a {@link Status} of lower stability. For example,
+ * a class annotated with {@code @API(status = STABLE)} may declare a
constructor
+ * for internal usage that is annotated with {@code @API(status = INTERNAL)}.
+ *
+ * <p>This annotation is inspired by
+ * <a
href="https://github.com/apiguardian-team/apiguardian/blob/master/src/main/java/org/apiguardian/api/API.java">apiguardian</a>,
+ * we move the annotation into our project because we don't want the project
to have additional
+ * dependency jar which includes only a single Java file.
+ *
+ * @since 1.23.0
+ */
+@Target({ TYPE, METHOD, CONSTRUCTOR, FIELD })
+@Retention(RUNTIME)
+@Documented
+public @interface API {
+
+ /**
+ * The current {@linkplain Status status} of the API.
+ */
+ Status status();
+
+ /**
+ * The version of the API when the {@link #status} was last changed.
+ *
+ * <p>Defaults to an empty string, signifying that the <em>since</em>
+ * version is unknown.
+ */
+ String since() default "";
+
+ /**
+ * List of packages belonging to intended consumers.
+ *
+ * <p>The supplied packages can be fully qualified package names or
+ * patterns containing asterisks that will be used as wildcards.
+ *
+ * <p>Defaults to {@code "*"}, signifying that the API is intended to be
+ * consumed by any package.
+ */
+ String[] consumers() default "*";
+
+ /**
+ * Indicates the status of an API element and therefore its level of
+ * stability as well.
+ */
+ enum Status {
+
+ /**
+ * Must not be used by any external code. Might be removed without prior
+ * notice.
+ */
+ INTERNAL,
+
+ /**
+ * Should no longer be used. Might disappear in the next minor release.
+ */
+ DEPRECATED,
+
+ /**
+ * Intended for new, experimental features where the publisher of the
+ * API is looking for feedback.
+ *
+ * <p>Use with caution. Might be promoted to {@link #MAINTAINED} or
+ * {@link #STABLE} in the future, but might also be removed without
+ * prior notice.
+ */
+ EXPERIMENTAL,
+
+ /**
+ * Intended for features that will not be changed in a
backwards-incompatible
+ * way for at least the next minor release of the current major version.
+ * If scheduled for removal, such a feature will be demoted to
+ * {@link #DEPRECATED} first.
+ */
+ MAINTAINED,
+
+ /**
+ * Intended for features that will not be changed in a
backwards-incompatible
+ * way in the current major version.
+ */
+ STABLE;
+
+ }
+
+}
diff --git
a/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java
b/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java
index 80ac509..e9530a1 100644
--- a/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java
+++ b/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java
@@ -40,8 +40,6 @@ import com.google.common.collect.HashMultiset;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Sets;
-import org.apiguardian.api.API;
-
import java.math.BigDecimal;
import java.util.AbstractList;
import java.util.AbstractMap;