Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
175 changes: 136 additions & 39 deletions sandbox/libs/analytics-framework/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,21 @@ dependencies {
// SLF4J — Calcite's logging facade
runtimeOnly "org.slf4j:slf4j-api:${versions.slf4j}"

// Calcite's BuiltInMethod and DefaultRelMetadataProvider eagerly resolve methods via
// reflection during RelOptCluster.create(). These optional calcite-core transitive deps
// must be in the same classloader as Calcite (i.e., here, not in child plugins).
// TODO: These may not be needed once Analytics Core starts providing RelOptTable directly,
// since child plugins would no longer call RelOptCluster.create() themselves.
runtimeOnly "commons-codec:commons-codec:${versions.commonscodec}"
runtimeOnly "org.apache.commons:commons-lang3:${versions.commonslang}"
runtimeOnly "commons-io:commons-io:${versions.commonsio}"
runtimeOnly 'org.codehaus.janino:janino:3.1.9'
runtimeOnly 'org.codehaus.janino:commons-compiler:3.1.9'
runtimeOnly 'org.jooq:joou-java-6:0.9.4'
runtimeOnly 'com.jayway.jsonpath:json-path:2.9.0'
runtimeOnly "com.fasterxml.jackson.core:jackson-core:${versions.jackson}"
runtimeOnly "com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}"

// Calcite bytecode references annotations from apiguardian (@API) and
// checker-framework (@EnsuresNonNullIf). compileOnlyApi propagates to
// consumers' compile/javadoc classpath without becoming a runtime dep.
Expand All @@ -48,10 +63,82 @@ tasks.named('forbiddenApisMain').configure {
// Split into multiple calls to stay under the JVM method parameter limit.
tasks.named('thirdPartyAudit').configure {
ignoreMissingClasses(
// Jackson databind (optional JSON serialization in Calcite — only databind is missing, core is on classpath)
'com.fasterxml.jackson.databind.DeserializationFeature',
'com.fasterxml.jackson.databind.ObjectMapper',
'com.fasterxml.jackson.databind.ObjectWriter',
// Jackson annotations (transitive dep of jackson-databind, provided by server at runtime)
'com.fasterxml.jackson.annotation.JacksonAnnotationsInside',
'com.fasterxml.jackson.annotation.JacksonInject',
'com.fasterxml.jackson.annotation.JacksonInject$Value',
'com.fasterxml.jackson.annotation.JsonAlias',
'com.fasterxml.jackson.annotation.JsonAnyGetter',
'com.fasterxml.jackson.annotation.JsonAnySetter',
'com.fasterxml.jackson.annotation.JsonAutoDetect',
'com.fasterxml.jackson.annotation.JsonAutoDetect$Value',
'com.fasterxml.jackson.annotation.JsonAutoDetect$Visibility',
'com.fasterxml.jackson.annotation.JsonBackReference',
'com.fasterxml.jackson.annotation.JsonClassDescription',
'com.fasterxml.jackson.annotation.JsonCreator',
'com.fasterxml.jackson.annotation.JsonCreator$Mode',
'com.fasterxml.jackson.annotation.JsonDeserializeAs',
'com.fasterxml.jackson.annotation.JsonEnumDefaultValue',
'com.fasterxml.jackson.annotation.JsonFilter',
'com.fasterxml.jackson.annotation.JsonFormat',
'com.fasterxml.jackson.annotation.JsonFormat$Feature',
'com.fasterxml.jackson.annotation.JsonFormat$Shape',
'com.fasterxml.jackson.annotation.JsonFormat$Value',
'com.fasterxml.jackson.annotation.JsonGetter',
'com.fasterxml.jackson.annotation.JsonIdentityInfo',
'com.fasterxml.jackson.annotation.JsonIdentityReference',
'com.fasterxml.jackson.annotation.JsonIgnore',
'com.fasterxml.jackson.annotation.JsonIgnoreProperties',
'com.fasterxml.jackson.annotation.JsonIgnoreProperties$Value',
'com.fasterxml.jackson.annotation.JsonIgnoreType',
'com.fasterxml.jackson.annotation.JsonInclude',
'com.fasterxml.jackson.annotation.JsonInclude$Include',
'com.fasterxml.jackson.annotation.JsonInclude$Value',
'com.fasterxml.jackson.annotation.JsonIncludeProperties',
'com.fasterxml.jackson.annotation.JsonIncludeProperties$Value',
'com.fasterxml.jackson.annotation.JsonKey',
'com.fasterxml.jackson.annotation.JsonManagedReference',
'com.fasterxml.jackson.annotation.JsonMerge',
'com.fasterxml.jackson.annotation.JsonProperty',
'com.fasterxml.jackson.annotation.JsonProperty$Access',
'com.fasterxml.jackson.annotation.JsonPropertyDescription',
'com.fasterxml.jackson.annotation.JsonPropertyOrder',
'com.fasterxml.jackson.annotation.JsonRawValue',
'com.fasterxml.jackson.annotation.JsonRootName',
'com.fasterxml.jackson.annotation.JsonSerializeAs',
'com.fasterxml.jackson.annotation.JsonSetter',
'com.fasterxml.jackson.annotation.JsonSetter$Value',
'com.fasterxml.jackson.annotation.JsonSubTypes',
'com.fasterxml.jackson.annotation.JsonSubTypes$Type',
'com.fasterxml.jackson.annotation.JsonTypeId',
'com.fasterxml.jackson.annotation.JsonTypeInfo',
'com.fasterxml.jackson.annotation.JsonTypeInfo$As',
'com.fasterxml.jackson.annotation.JsonTypeInfo$Id',
'com.fasterxml.jackson.annotation.JsonTypeInfo$None',
'com.fasterxml.jackson.annotation.JsonTypeInfo$Value',
'com.fasterxml.jackson.annotation.JsonTypeName',
'com.fasterxml.jackson.annotation.JsonUnwrapped',
'com.fasterxml.jackson.annotation.JsonValue',
'com.fasterxml.jackson.annotation.JsonView',
'com.fasterxml.jackson.annotation.Nulls',
'com.fasterxml.jackson.annotation.ObjectIdGenerator',
'com.fasterxml.jackson.annotation.ObjectIdGenerator$IdKey',
'com.fasterxml.jackson.annotation.ObjectIdGenerators$None',
'com.fasterxml.jackson.annotation.ObjectIdGenerators$PropertyGenerator',
'com.fasterxml.jackson.annotation.ObjectIdResolver',
'com.fasterxml.jackson.annotation.OptBoolean',
'com.fasterxml.jackson.annotation.PropertyAccessor',
'com.fasterxml.jackson.annotation.SimpleObjectIdResolver',

// Gson (optional json-path provider)
'com.google.gson.Gson',
'com.google.gson.JsonArray',
'com.google.gson.JsonElement',
'com.google.gson.JsonObject',
'com.google.gson.JsonParser',
'com.google.gson.JsonPrimitive',
'com.google.gson.TypeAdapter',
'com.google.gson.reflect.TypeToken',

// Uzaygezen (optional Hilbert curve spatial indexing)
'com.google.uzaygezen.core.BacktrackingQueryBuilder',
Expand All @@ -64,17 +151,6 @@ tasks.named('thirdPartyAudit').configure {
'com.google.uzaygezen.core.ranges.LongRange',
'com.google.uzaygezen.core.ranges.LongRangeHome',

// JsonPath (optional JSON path support)
'com.jayway.jsonpath.Configuration',
'com.jayway.jsonpath.Configuration$ConfigurationBuilder',
'com.jayway.jsonpath.DocumentContext',
'com.jayway.jsonpath.InvalidPathException',
'com.jayway.jsonpath.JsonPath',
'com.jayway.jsonpath.Option',
'com.jayway.jsonpath.Predicate',
'com.jayway.jsonpath.spi.json.JacksonJsonProvider',
'com.jayway.jsonpath.spi.mapper.MappingProvider',

// Yahoo Sketches (optional approximate distinct counting)
'com.yahoo.sketches.hll.HllSketch',
'com.yahoo.sketches.hll.HllSketchBuilder',
Expand All @@ -86,15 +162,7 @@ tasks.named('thirdPartyAudit').configure {
'org.apache.calcite.avatica.metrics.noop.NoopMetricsSystem',

// Apache Commons (optional Calcite features)
'org.apache.commons.codec.binary.Base32',
'org.apache.commons.codec.binary.Hex',
'org.apache.commons.codec.digest.DigestUtils',
'org.apache.commons.codec.language.Soundex',
'org.apache.commons.dbcp2.BasicDataSource',
'org.apache.commons.io.IOUtils',
'org.apache.commons.lang3.StringUtils',
'org.apache.commons.lang3.Strings',
'org.apache.commons.lang3.mutable.MutableBoolean',
'org.apache.commons.math3.fraction.BigFraction',
'org.apache.commons.math3.util.CombinatoricsUtils',
'org.apache.commons.text.StringEscapeUtils',
Expand Down Expand Up @@ -135,22 +203,51 @@ tasks.named('thirdPartyAudit').configure {
'org.apache.hc.core5.ssl.SSLContexts',
'org.apache.hc.core5.util.Timeout',

// Janino (optional code generation for Enumerable pipeline)
'org.codehaus.commons.compiler.CompilerFactoryFactory',
'org.codehaus.commons.compiler.IClassBodyEvaluator',
'org.codehaus.commons.compiler.ICompilerFactory',
'org.codehaus.commons.compiler.ISimpleCompiler',
'org.codehaus.commons.compiler.util.resource.ResourceFinder',
'org.codehaus.janino.ClassBodyEvaluator',
'org.codehaus.janino.JavaSourceClassLoader',
'org.codehaus.janino.util.ClassFile',

// jOOU (optional unsigned integer types)
'org.joou.UByte',
'org.joou.UInteger',
'org.joou.ULong',
'org.joou.UShort',
'org.joou.Unsigned',
// Jakarta JSON (optional json-path provider)
'jakarta.json.JsonArray',
'jakarta.json.JsonArrayBuilder',
'jakarta.json.JsonBuilderFactory',
'jakarta.json.JsonNumber',
'jakarta.json.JsonObject',
'jakarta.json.JsonObjectBuilder',
'jakarta.json.JsonReader',
'jakarta.json.JsonString',
'jakarta.json.JsonStructure',
'jakarta.json.JsonValue',
'jakarta.json.JsonValue$ValueType',
'jakarta.json.bind.Jsonb',
'jakarta.json.bind.JsonbBuilder',
'jakarta.json.bind.JsonbConfig',
'jakarta.json.spi.JsonProvider',
'jakarta.json.stream.JsonLocation',
'jakarta.json.stream.JsonParser',
'jakarta.json.stream.JsonParser$Event',

// json-smart (transitive dep of json-path)
'net.minidev.json.JSONArray',
'net.minidev.json.JSONObject',
'net.minidev.json.JSONStyle',
'net.minidev.json.JSONValue',
'net.minidev.json.parser.JSONParser',
'net.minidev.json.writer.JsonReader',
'net.minidev.json.writer.JsonReaderI',

// Various optional JSON providers for json-path
'org.apache.tapestry5.json.JSONArray',
'org.apache.tapestry5.json.JSONCollection',
'org.apache.tapestry5.json.JSONObject',
'org.codehaus.jettison.json.JSONArray',
'org.codehaus.jettison.json.JSONException',
'org.codehaus.jettison.json.JSONObject',
'org.codehaus.jettison.json.JSONTokener',
'org.json.JSONArray',
'org.json.JSONObject',
'org.json.JSONTokener',

// Ant (optional janino compiler adapter)
'org.apache.tools.ant.taskdefs.Javac',
'org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter',
'org.apache.tools.ant.types.Path',

// JTS / Proj4j (optional spatial/geometry support — classes still missing)
'org.locationtech.jts.algorithm.InteriorPoint',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ee45d1cf6ec2cc2b809ff04b4dc7aec858e0df8f
Loading
Loading