From a210865a3dd24059224f8fd2799a86fa14fc2586 Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Mon, 21 Aug 2023 12:35:00 +0100 Subject: [PATCH 001/376] chore: add support for arrow JSON extension (#75) fixes: #73 --- .../java/io/cloudquery/types/JSONType.java | 48 +++++- .../io/cloudquery/types/JSONTypeTest.java | 146 ++++++++++++++++++ 2 files changed, 189 insertions(+), 5 deletions(-) create mode 100644 lib/src/test/java/io/cloudquery/types/JSONTypeTest.java diff --git a/lib/src/main/java/io/cloudquery/types/JSONType.java b/lib/src/main/java/io/cloudquery/types/JSONType.java index 9ab9457..8d3ce7d 100644 --- a/lib/src/main/java/io/cloudquery/types/JSONType.java +++ b/lib/src/main/java/io/cloudquery/types/JSONType.java @@ -1,7 +1,10 @@ package io.cloudquery.types; import org.apache.arrow.memory.BufferAllocator; +import org.apache.arrow.memory.util.hash.ArrowBufHasher; +import org.apache.arrow.vector.ExtensionTypeVector; import org.apache.arrow.vector.FieldVector; +import org.apache.arrow.vector.VarBinaryVector; import org.apache.arrow.vector.types.pojo.ArrowType; import org.apache.arrow.vector.types.pojo.ArrowType.ExtensionType; import org.apache.arrow.vector.types.pojo.FieldType; @@ -12,7 +15,7 @@ public class JSONType extends ExtensionType { @Override public ArrowType storageType() { - return ArrowType.Binary.INSTANCE; + return Binary.INSTANCE; } @Override @@ -22,22 +25,28 @@ public String extensionName() { @Override public boolean extensionEquals(ExtensionType other) { - return false; + return other instanceof JSONType; } @Override public String serialize() { - return null; + return "json-serialized"; } @Override public ArrowType deserialize(ArrowType storageType, String serializedData) { - return null; + if (!serializedData.equals("json-serialized")) { + throw new IllegalArgumentException("Type identifier did not match: " + serializedData); + } + if (!storageType.equals(storageType())) { + throw new IllegalArgumentException("invalid storage type for JSONType: " + storageType.getTypeID()); + } + return new JSONType(); } @Override public FieldVector getNewVector(String name, FieldType fieldType, BufferAllocator allocator) { - return null; + return new JSONVector(name, allocator, new VarBinaryVector(name, allocator)); } @Override @@ -49,4 +58,33 @@ public int hashCode() { public boolean equals(Object obj) { return obj instanceof JSONType; } + + public static class JSONVector extends ExtensionTypeVector { + public JSONVector(String name, BufferAllocator allocator, VarBinaryVector underlyingVector) { + super(name, allocator, underlyingVector); + } + + @Override + public Object getObject(int index) { + return getUnderlyingVector().getObject(index); + } + + @Override + public int hashCode(int index) { + return hashCode(index, null); + } + + @Override + public int hashCode(int index, ArrowBufHasher hasher) { + return getUnderlyingVector().hashCode(index, hasher); + } + + public String get(int index) { + return new String((byte[]) getObject(index)); + } + + public void set(int index, String value) { + getUnderlyingVector().setSafe(index, value.getBytes(), 0, value.getBytes().length); + } + } } diff --git a/lib/src/test/java/io/cloudquery/types/JSONTypeTest.java b/lib/src/test/java/io/cloudquery/types/JSONTypeTest.java new file mode 100644 index 0000000..a04ac90 --- /dev/null +++ b/lib/src/test/java/io/cloudquery/types/JSONTypeTest.java @@ -0,0 +1,146 @@ +package io.cloudquery.types; + +import com.fasterxml.jackson.databind.ObjectMapper; +import io.cloudquery.types.JSONType.JSONVector; +import lombok.AllArgsConstructor; +import lombok.Data; +import org.apache.arrow.memory.BufferAllocator; +import org.apache.arrow.memory.RootAllocator; +import org.apache.arrow.vector.VectorSchemaRoot; +import org.apache.arrow.vector.ipc.ArrowFileReader; +import org.apache.arrow.vector.ipc.ArrowFileWriter; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.apache.arrow.vector.types.pojo.ExtensionTypeRegistry; +import org.apache.arrow.vector.types.pojo.Field; +import org.apache.arrow.vector.types.pojo.Schema; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.channels.FileChannel; +import java.nio.channels.WritableByteChannel; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; +import java.util.Collections; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class JSONTypeTest { + private static final String FIELD_NAME = "json"; + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + @Data + @AllArgsConstructor + public static class Person { + private String name; + private Integer age; + private List hobbies; + } + + private File file; + private List jsonData; + + @BeforeAll + public static void setUpTest() { + ExtensionTypeRegistry.register(new JSONType()); + } + + @AfterAll + public static void tearDown() { + ExtensionTypeRegistry.unregister(new JSONType()); + } + + @BeforeEach + void setUp() throws IOException { + file = File.createTempFile("json_test", ".arrow"); + jsonData = List.of( + toJSON(new Person("John", 30, List.of("hiking", "swimming"))), + toJSON(new Person("Jane", 25, List.of("reading", "cooking"))) + ); + } + + @Test + public void shouldSetJSONOnJSONVector() throws IOException { + + try (BufferAllocator allocator = new RootAllocator()) { + ArrowType.ExtensionType jsonType = ExtensionTypeRegistry.lookup("json"); + try (JSONVector vector = (JSONVector) jsonType.getNewVector("vector", null, allocator)) { + vector.set(0, jsonData.get(0)); + vector.setNull(1); + vector.set(2, jsonData.get(1)); + vector.setNull(3); + vector.setValueCount(4); + + // Assert that the values were set correctly + assertEquals(jsonData.get(0), vector.get(0), "JSON should match"); + assertTrue(vector.isNull(1), "Should be null"); + assertEquals(jsonData.get(1), vector.get(2), "JSON should match"); + assertTrue(vector.isNull(3), "Should be null"); + + // Assert that the value count and null count are correct + assertEquals(4, vector.getValueCount(), "Value count should match"); + assertEquals(2, vector.getNullCount(), "Null count should match"); + } + } + } + + @Test + public void roundTripJSON() throws IOException { + // Generate some data and write it to a file + try (BufferAllocator allocator = new RootAllocator(); VectorSchemaRoot root = createVectorSchemaRoot(allocator)) { + generateDataAndWriteToFile(root); + } + + // Read the data back from the file and assert that it matches what we wrote + try (BufferAllocator allocator = new RootAllocator(); + ArrowFileReader reader = new ArrowFileReader(Files.newByteChannel(Paths.get(file.getAbsolutePath())), allocator)) { + + reader.loadNextBatch(); + + JSONVector fieldVector = (JSONVector) reader.getVectorSchemaRoot().getVector(FIELD_NAME); + assertEquals(jsonData.size(), fieldVector.getValueCount(), "Value count should match"); + for (int i = 0; i < jsonData.size(); i++) { + assertEquals(jsonData.get(i), fieldVector.get(i), "JSON should match"); + } + } + } + + private static VectorSchemaRoot createVectorSchemaRoot(BufferAllocator allocator) { + return VectorSchemaRoot.create(new Schema(Collections.singletonList(Field.nullable(FIELD_NAME, new JSONType()))), allocator); + } + + private void generateDataAndWriteToFile(VectorSchemaRoot root) throws IOException { + // Get the vector representing the column + JSONVector vector = (JSONVector) root.getVector(FIELD_NAME); + + // Generate some JSON data + vector.setValueCount(jsonData.size()); + for (int i = 0; i < jsonData.size(); i++) { + vector.set(i, jsonData.get(i)); + } + root.setRowCount(jsonData.size()); + + // Write the data to a file + try (WritableByteChannel channel = FileChannel.open(Paths.get(file.getAbsolutePath()), StandardOpenOption.WRITE); + ArrowFileWriter writer = new ArrowFileWriter(root, null, channel)) { + writer.start(); + writer.writeBatch(); + writer.end(); + } + } + + private static String toJSON(Object object) throws IOException { + try (OutputStream outputStream = new ByteArrayOutputStream()) { + OBJECT_MAPPER.writeValue(outputStream, object); + return outputStream.toString(); + } + } +} From 085c51f4792a24a121079073cfeaf984f422a681 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Mon, 21 Aug 2023 15:44:39 +0200 Subject: [PATCH 002/376] feat: Implement `getTables` (#71) ~~Still doesn't work and I need to handle the options like include, skip, etc.~~ Got the gRPC call to work. Had to: 1. Add `org.apache.arrow:arrow-memory-core` as implementation dependency 2. Add `org.apache.arrow:arrow-memory-nett` as runtime only dependency (see https://mvnrepository.com/artifact/org.apache.arrow/arrow-memory-netty/12.0.1) 3. Add another gradle task so the runtime class is loaded properly. We'll need see how this works with a published version of the SDK. --- lib/build.gradle | 16 ++- .../cloudquery/{Main.java => MainClass.java} | 2 +- .../servers/plugin/v3/PluginServer.java | 112 ++++++++++++++++++ .../main/java/io/cloudquery/memdb/MemDB.java | 44 +++++++ .../java/io/cloudquery/plugin/Plugin.java | 26 +++- .../java/io/cloudquery/schema/Resource.java | 5 +- .../main/java/io/cloudquery/schema/Table.java | 54 +++++++-- .../io/cloudquery/server/ServeCommand.java | 12 +- .../io/cloudquery/schema/ResourceTest.java | 17 +-- 9 files changed, 248 insertions(+), 40 deletions(-) rename lib/src/main/java/io/cloudquery/{Main.java => MainClass.java} (92%) diff --git a/lib/build.gradle b/lib/build.gradle index 9fb4ca4..075db72 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -4,6 +4,10 @@ plugins { id "maven-publish" } +ext { + javaMainClass = "io.cloudquery.MainClass" +} + group 'io.cloudquery' // x-release-please-start-version version = '0.0.1' @@ -34,6 +38,7 @@ dependencies { implementation "io.grpc:grpc-services:1.57.1" implementation "io.grpc:grpc-testing:1.57.1" implementation "io.cloudquery:plugin-pb-java:0.0.5" + implementation "org.apache.arrow:arrow-memory-core:12.0.1" implementation "org.apache.arrow:arrow-vector:12.0.1" implementation 'org.apache.logging.log4j:log4j-api:2.20.0' @@ -44,11 +49,12 @@ dependencies { testImplementation('org.junit.jupiter:junit-jupiter-api:5.10.0') testImplementation('org.mockito:mockito-core:5.4.0') testImplementation('org.mockito:mockito-junit-jupiter:5.4.0') - testImplementation('org.apache.arrow:arrow-memory-netty:12.0.1') testImplementation('nl.jqno.equalsverifier:equalsverifier:3.15') testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.10.0') testImplementation 'org.assertj:assertj-core:3.24.2' + + runtimeOnly "org.apache.arrow:arrow-memory-netty:12.0.1" } test { @@ -83,3 +89,11 @@ publishing { } } } + +task runMemDBServe(type: JavaExec) { + group = "Execution" + description = "Start the MemDB plugin server" + classpath = sourceSets.main.runtimeClasspath + main = javaMainClass + args = ["serve"] +} \ No newline at end of file diff --git a/lib/src/main/java/io/cloudquery/Main.java b/lib/src/main/java/io/cloudquery/MainClass.java similarity index 92% rename from lib/src/main/java/io/cloudquery/Main.java rename to lib/src/main/java/io/cloudquery/MainClass.java index c4dfbac..13a9e19 100644 --- a/lib/src/main/java/io/cloudquery/Main.java +++ b/lib/src/main/java/io/cloudquery/MainClass.java @@ -3,7 +3,7 @@ import io.cloudquery.memdb.MemDB; import io.cloudquery.server.PluginServe; -public class Main { +public class MainClass { public static void main(String[] args) { PluginServe serve = PluginServe.builder().plugin(new MemDB()).args(args).build(); int exitCode = serve.Serve(); diff --git a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java index 78faa56..c7d800b 100644 --- a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java +++ b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java @@ -1,6 +1,22 @@ package io.cloudquery.internal.servers.plugin.v3; import io.cloudquery.plugin.v3.PluginGrpc.PluginImplBase; +import io.cloudquery.schema.Table; +import io.cloudquery.plugin.v3.Write; +import io.grpc.stub.StreamObserver; + +import java.io.ByteArrayOutputStream; +import java.nio.channels.Channels; +import java.util.ArrayList; +import java.util.List; + +import org.apache.arrow.memory.BufferAllocator; +import org.apache.arrow.memory.RootAllocator; +import org.apache.arrow.vector.VectorSchemaRoot; +import org.apache.arrow.vector.ipc.ArrowStreamWriter; +import org.apache.arrow.vector.types.pojo.Schema; +import com.google.protobuf.ByteString; + import io.cloudquery.plugin.Plugin; public class PluginServer extends PluginImplBase { @@ -9,4 +25,100 @@ public class PluginServer extends PluginImplBase { public PluginServer(Plugin plugin) { this.plugin = plugin; } + + @Override + public void getName(io.cloudquery.plugin.v3.GetName.Request request, + StreamObserver responseObserver) { + responseObserver + .onNext(io.cloudquery.plugin.v3.GetName.Response.newBuilder().setName(plugin.getName()).build()); + responseObserver.onCompleted(); + } + + @Override + public void getVersion(io.cloudquery.plugin.v3.GetVersion.Request request, + StreamObserver responseObserver) { + responseObserver.onNext( + io.cloudquery.plugin.v3.GetVersion.Response.newBuilder().setVersion(plugin.getVersion()).build()); + responseObserver.onCompleted(); + } + + @Override + public void init(io.cloudquery.plugin.v3.Init.Request request, + StreamObserver responseObserver) { + plugin.init(); + responseObserver.onNext(io.cloudquery.plugin.v3.Init.Response.newBuilder().build()); + responseObserver.onCompleted(); + } + + @Override + public void getTables(io.cloudquery.plugin.v3.GetTables.Request request, + StreamObserver responseObserver) { + try { + List tables = plugin.tables(); + List byteStrings = new ArrayList<>(); + for (Table table : tables) { + try (BufferAllocator bufferAllocator = new RootAllocator()) { + Schema schema = table.toArrowSchema(); + VectorSchemaRoot schemaRoot = VectorSchemaRoot.create(schema, bufferAllocator); + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + try (ArrowStreamWriter writer = new ArrowStreamWriter(schemaRoot, null, + Channels.newChannel(out))) { + writer.start(); + writer.end(); + byteStrings.add(ByteString.copyFrom(out.toByteArray())); + } + } + } + } + responseObserver + .onNext(io.cloudquery.plugin.v3.GetTables.Response.newBuilder().addAllTables(byteStrings).build()); + responseObserver.onCompleted(); + } catch (Exception e) { + responseObserver.onError(e); + } + } + + @Override + public void sync(io.cloudquery.plugin.v3.Sync.Request request, + StreamObserver responseObserver) { + plugin.sync(); + responseObserver.onNext(io.cloudquery.plugin.v3.Sync.Response.newBuilder().build()); + responseObserver.onCompleted(); + } + + @Override + public void read(io.cloudquery.plugin.v3.Read.Request request, + StreamObserver responseObserver) { + plugin.read(); + responseObserver.onNext(io.cloudquery.plugin.v3.Read.Response.newBuilder().build()); + responseObserver.onCompleted(); + } + + @Override + public StreamObserver write(StreamObserver responseObserver) { + plugin.write(); + return new StreamObserver<>() { + @Override + public void onNext(Write.Request request) { + } + + @Override + public void onError(Throwable t) { + } + + @Override + public void onCompleted() { + responseObserver.onNext(Write.Response.newBuilder().build()); + responseObserver.onCompleted(); + } + }; + } + + @Override + public void close(io.cloudquery.plugin.v3.Close.Request request, + StreamObserver responseObserver) { + plugin.close(); + responseObserver.onNext(io.cloudquery.plugin.v3.Close.Response.newBuilder().build()); + responseObserver.onCompleted(); + } } diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDB.java b/lib/src/main/java/io/cloudquery/memdb/MemDB.java index a0c8f92..0cfdaeb 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDB.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDB.java @@ -1,9 +1,53 @@ package io.cloudquery.memdb; +import java.util.List; + import io.cloudquery.plugin.Plugin; +import io.cloudquery.schema.Table; +import io.cloudquery.schema.Column; +import io.cloudquery.schema.SchemaException; + +import org.apache.arrow.vector.types.pojo.ArrowType.Utf8; public class MemDB extends Plugin { + private List
allTables = List.of( + Table.builder().name("table1").columns(List.of(Column.builder().name("name1").type(new Utf8()).build())) + .build(), + Table.builder().name("table2").columns(List.of(Column.builder().name("name1").type(new Utf8()).build())) + .build()); + public MemDB() { super("memdb", "0.0.1"); } + + @Override + public void init() { + // do nothing + } + + @Override + public List
tables() throws SchemaException { + return Table.filterDFS(allTables, List.of("*"), List.of(), false); + } + + @Override + public void sync() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'Sync'"); + } + + @Override + public void read() { + throw new UnsupportedOperationException("Unimplemented method 'Read'"); + } + + @Override + public void write() { + throw new UnsupportedOperationException("Unimplemented method 'Write'"); + } + + @Override + public void close() { + // do nothing + } } diff --git a/lib/src/main/java/io/cloudquery/plugin/Plugin.java b/lib/src/main/java/io/cloudquery/plugin/Plugin.java index 918981e..57a968d 100644 --- a/lib/src/main/java/io/cloudquery/plugin/Plugin.java +++ b/lib/src/main/java/io/cloudquery/plugin/Plugin.java @@ -1,14 +1,36 @@ package io.cloudquery.plugin; -import lombok.AllArgsConstructor; +import java.util.List; + +import org.apache.logging.log4j.Logger; + +import io.cloudquery.schema.SchemaException; +import io.cloudquery.schema.Table; import lombok.Getter; import lombok.NonNull; +import lombok.RequiredArgsConstructor; +import lombok.Setter; +@RequiredArgsConstructor @Getter -@AllArgsConstructor public abstract class Plugin { @NonNull protected final String name; @NonNull protected final String version; + @Setter + protected Logger logger; + + public abstract void init(); + + public abstract List
tables() throws SchemaException; + + public abstract void sync(); + + public abstract void read(); + + public abstract void write(); + + public abstract void close(); + } diff --git a/lib/src/main/java/io/cloudquery/schema/Resource.java b/lib/src/main/java/io/cloudquery/schema/Resource.java index 3959ac0..47c562a 100644 --- a/lib/src/main/java/io/cloudquery/schema/Resource.java +++ b/lib/src/main/java/io/cloudquery/schema/Resource.java @@ -4,6 +4,7 @@ import io.cloudquery.scalar.ValidationException; import lombok.Builder; import lombok.Getter; +import lombok.NonNull; import java.util.ArrayList; import java.util.List; @@ -17,10 +18,10 @@ public class Resource { private final List> data; @Builder(toBuilder = true) - public Resource(Table table, Resource parent, Object item) { + public Resource(@NonNull Table table, Resource parent, Object item) { this.item = item; this.parent = parent; - this.table = table != null ? table : Table.builder().build(); + this.table = table; this.data = new ArrayList<>(); for (Column column : this.table.getColumns()) { diff --git a/lib/src/main/java/io/cloudquery/schema/Table.java b/lib/src/main/java/io/cloudquery/schema/Table.java index a590616..0fe0a43 100644 --- a/lib/src/main/java/io/cloudquery/schema/Table.java +++ b/lib/src/main/java/io/cloudquery/schema/Table.java @@ -5,6 +5,7 @@ import io.cloudquery.transformers.TransformerException; import lombok.Builder; import lombok.Getter; +import lombok.NonNull; import lombok.Setter; import java.util.ArrayList; @@ -15,6 +16,11 @@ import java.util.Optional; import java.util.function.Predicate; +import org.apache.arrow.vector.types.pojo.Field; +import org.apache.arrow.vector.types.pojo.Schema; + +import static java.util.Arrays.asList; + @Builder(toBuilder = true) @Getter public class Table { @@ -34,7 +40,8 @@ public static List
flattenTables(List
tables) { return flattenMap.values().stream().toList(); } - public static List
filterDFS(List
tables, List includeConfiguration, List skipConfiguration, boolean skipDependentTables) throws SchemaException { + public static List
filterDFS(List
tables, List includeConfiguration, + List skipConfiguration, boolean skipDependentTables) throws SchemaException { List
flattenedTables = flattenTables(tables); for (String includePattern : includeConfiguration) { boolean includeMatch = false; @@ -45,7 +52,8 @@ public static List
filterDFS(List
tables, List includeConf } } if (!includeMatch) { - throw new SchemaException("table configuration includes a pattern \"" + includePattern + "\" with no matches"); + throw new SchemaException( + "table configuration includes a pattern \"" + includePattern + "\" with no matches"); } } for (String excludePattern : skipConfiguration) { @@ -57,7 +65,8 @@ public static List
filterDFS(List
tables, List includeConf } } if (!excludeMatch) { - throw new SchemaException("skip configuration includes a pattern \"" + excludePattern + "\" with no matches"); + throw new SchemaException( + "skip configuration includes a pattern \"" + excludePattern + "\" with no matches"); } } @@ -82,11 +91,13 @@ public static List
filterDFS(List
tables, List includeConf return filterDFSFunc(tables, include, exclude, skipDependentTables); } - private static List
filterDFSFunc(List
tables, Predicate
include, Predicate
exclude, boolean skipDependentTables) { + private static List
filterDFSFunc(List
tables, Predicate
include, Predicate
exclude, + boolean skipDependentTables) { List
filteredTables = new ArrayList<>(); for (Table table : tables) { Table filteredTable = table.toBuilder().parent(null).build(); - Optional
optionalFilteredTable = filteredTable.filterDfs(false, include, exclude, skipDependentTables); + Optional
optionalFilteredTable = filteredTable.filterDfs(false, include, exclude, + skipDependentTables); optionalFilteredTable.ifPresent(filteredTables::add); } return filteredTables; @@ -106,7 +117,10 @@ public static int maxDepth(List
tables) { return depth; } + @NonNull private String name; + private String title; + private String description; @Setter private Table parent; @Builder.Default @@ -150,13 +164,11 @@ public int indexOfColumn(String columnName) { } public List primaryKeys() { - return columns.stream(). - filter(Column::isPrimaryKey). - map(Column::getName). - toList(); + return columns.stream().filter(Column::isPrimaryKey).map(Column::getName).toList(); } - private Optional
filterDfs(boolean parentMatched, Predicate
include, Predicate
exclude, boolean skipDependentTables) { + private Optional
filterDfs(boolean parentMatched, Predicate
include, Predicate
exclude, + boolean skipDependentTables) { if (exclude.test(this)) { return Optional.empty(); } @@ -187,4 +199,26 @@ public Optional getColumn(String name) { } return Optional.empty(); } + + public Schema toArrowSchema() { + Field[] fields = new Field[columns.size()]; + for (int i = 0; i < columns.size(); i++) { + Column column = columns.get(i); + Field field = Field.nullable(column.getName(), column.getType()); + fields[i] = field; + } + Map metadata = new HashMap<>(); + metadata.put("cq:table_name", name); + if (title != null) { + metadata.put("cq:table_title", title); + } + if (description != null) { + metadata.put("cq:table_description", description); + } + if (parent != null) { + metadata.put("cq:table_depends_on", parent.getName()); + } + Schema schema = new Schema(asList(fields), metadata); + return schema; + } } diff --git a/lib/src/main/java/io/cloudquery/server/ServeCommand.java b/lib/src/main/java/io/cloudquery/server/ServeCommand.java index b4eaccb..b67cb82 100644 --- a/lib/src/main/java/io/cloudquery/server/ServeCommand.java +++ b/lib/src/main/java/io/cloudquery/server/ServeCommand.java @@ -78,19 +78,11 @@ private LoggerContext initLogger() { @Override public Integer call() { - LoggerContext context = this.initLogger(); - - try { - // Configure open telemetry - // Configure test listener - // Configure gRPC server + try (LoggerContext context = this.initLogger()) { Server server = Grpc.newServerBuilderForPort(address.port(), InsecureServerCredentials.create()) .addService(new DiscoverServer(DISCOVERY_VERSIONS)).addService(new PluginServer(plugin)) .addService(ProtoReflectionService.newInstance()).executor(Executors.newFixedThreadPool(10)) .build(); - // Configure sentry - // Log we are listening on address and port - // Run gRPC server and block server.start(); logger.info("Started server on {}:{}", address.host(), address.port()); server.awaitTermination(); @@ -98,8 +90,6 @@ public Integer call() { } catch (IOException | InterruptedException e) { logger.error("Failed to start server", e); return 1; - } finally { - context.close(); } } diff --git a/lib/src/test/java/io/cloudquery/schema/ResourceTest.java b/lib/src/test/java/io/cloudquery/schema/ResourceTest.java index 930ab37..c32ad18 100644 --- a/lib/src/test/java/io/cloudquery/schema/ResourceTest.java +++ b/lib/src/test/java/io/cloudquery/schema/ResourceTest.java @@ -17,19 +17,13 @@ public class ResourceTest { @Test public void shouldBuildWithNoErrors() { - assertDoesNotThrow(() -> Resource.builder().build()); + assertDoesNotThrow(() -> Resource.builder().table(Table.builder().name("").build()).build()); } @Test public void shouldCreateScalarData() { - Column column1 = Column.builder(). - name("test_column1"). - type(new UUIDType()). - build(); - Column column2 = Column.builder(). - name("test_column2"). - type(ArrowType.Utf8.INSTANCE). - build(); + Column column1 = Column.builder().name("test_column1").type(new UUIDType()).build(); + Column column2 = Column.builder().name("test_column2").type(ArrowType.Utf8.INSTANCE).build(); Table table = Table.builder().name("test").columns(List.of(column1, column2)).build(); Resource resource = Resource.builder().table(table).build(); @@ -40,10 +34,7 @@ public void shouldCreateScalarData() { @Test public void shouldSetAndGetDataTypes() throws ValidationException { - Column column1 = Column.builder(). - name("test_column1"). - type(new UUIDType()). - build(); + Column column1 = Column.builder().name("test_column1").type(new UUIDType()).build(); Table table = Table.builder().name("test").columns(List.of(column1)).build(); Resource resource = Resource.builder().table(table).build(); From 1d31031b08d4784b54dc2a589d9c3b76d3e4f312 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Mon, 21 Aug 2023 15:56:43 +0200 Subject: [PATCH 003/376] chore: Add code formatter (#76) Most of the changes are due to running `./gradlew spotlessApply` --- lib/build.gradle | 7 + .../main/java/io/cloudquery/MainClass.java | 10 +- .../main/java/io/cloudquery/caser/Caser.java | 348 ++++++------ .../java/io/cloudquery/caser/Initialisms.java | 66 +-- .../main/java/io/cloudquery/glob/Glob.java | 58 +- .../helper/ReflectionPathResolver.java | 89 ++- .../servers/discovery/v1/DiscoverServer.java | 19 +- .../servers/plugin/v3/PluginServer.java | 212 +++---- .../main/java/io/cloudquery/memdb/MemDB.java | 91 +-- .../java/io/cloudquery/plugin/Plugin.java | 28 +- .../java/io/cloudquery/scalar/Binary.java | 108 ++-- .../main/java/io/cloudquery/scalar/Bool.java | 45 +- .../java/io/cloudquery/scalar/DateDay.java | 45 +- .../java/io/cloudquery/scalar/DateMilli.java | 53 +- .../java/io/cloudquery/scalar/Duration.java | 67 +-- .../java/io/cloudquery/scalar/Number.java | 519 +++++++++--------- .../java/io/cloudquery/scalar/Scalar.java | 254 +++++---- .../java/io/cloudquery/scalar/String.java | 28 +- .../java/io/cloudquery/scalar/Timestamp.java | 91 +-- .../main/java/io/cloudquery/scalar/UUID.java | 75 +-- .../scalar/ValidationException.java | 71 +-- .../io/cloudquery/scheduler/Scheduler.java | 3 +- .../java/io/cloudquery/schema/ClientMeta.java | 3 +- .../java/io/cloudquery/schema/Column.java | 86 +-- .../io/cloudquery/schema/ColumnResolver.java | 2 +- .../schema/ParentCQUUIDResolver.java | 54 +- .../java/io/cloudquery/schema/Resource.java | 47 +- .../io/cloudquery/schema/SchemaException.java | 28 +- .../main/java/io/cloudquery/schema/Table.java | 363 ++++++------ .../cloudquery/server/AddressConverter.java | 22 +- .../io/cloudquery/server/PluginServe.java | 12 +- .../io/cloudquery/server/RootCommand.java | 3 +- .../io/cloudquery/server/ServeCommand.java | 157 +++--- .../IgnoreInTestsTransformer.java | 12 +- .../transformers/NameTransformer.java | 37 +- .../transformers/ResolverTransformer.java | 23 +- .../io/cloudquery/transformers/Tables.java | 40 +- .../transformers/TransformWithClass.java | 133 +++-- .../transformers/TransformerException.java | 12 +- .../transformers/TypeTransformer.java | 92 ++-- .../java/io/cloudquery/types/InetType.java | 64 +-- .../java/io/cloudquery/types/JSONType.java | 123 +++-- .../java/io/cloudquery/types/ListType.java | 69 ++- .../java/io/cloudquery/types/UUIDType.java | 120 ++-- .../java/io/cloudquery/caser/CaserTest.java | 299 +++++----- .../java/io/cloudquery/glob/GlobTest.java | 158 +++--- .../helper/ReflectionPathResolverTest.java | 84 +-- .../java/io/cloudquery/scalar/BinaryTest.java | 263 +++++---- .../java/io/cloudquery/scalar/BoolTest.java | 217 ++++---- .../io/cloudquery/scalar/DateDayTest.java | 215 ++++---- .../io/cloudquery/scalar/DateMilliTest.java | 215 ++++---- .../io/cloudquery/scalar/DurationTest.java | 230 ++++---- .../io/cloudquery/scalar/Float32Test.java | 215 ++++---- .../io/cloudquery/scalar/Float64Test.java | 215 ++++---- .../java/io/cloudquery/scalar/Int16Test.java | 215 ++++---- .../java/io/cloudquery/scalar/Int32Test.java | 215 ++++---- .../java/io/cloudquery/scalar/Int64Test.java | 215 ++++---- .../java/io/cloudquery/scalar/Int8Test.java | 216 ++++---- .../io/cloudquery/scalar/LargeBinaryTest.java | 269 ++++----- .../java/io/cloudquery/scalar/ScalarTest.java | 96 ++-- .../java/io/cloudquery/scalar/StringTest.java | 197 +++---- .../io/cloudquery/scalar/TimestampTest.java | 249 +++++---- .../java/io/cloudquery/scalar/UInt16Test.java | 213 +++---- .../java/io/cloudquery/scalar/UInt32Test.java | 212 +++---- .../java/io/cloudquery/scalar/UInt64Test.java | 213 +++---- .../java/io/cloudquery/scalar/UInt8Test.java | 212 +++---- .../java/io/cloudquery/scalar/UUIDTest.java | 284 +++++----- .../schema/ParentCQUUIDResolverTest.java | 118 ++-- .../io/cloudquery/schema/ResourceTest.java | 57 +- .../cloudquery/schema/TableFilterDFSTest.java | 411 ++++++++------ .../cloudquery/schema/TableFlattenTest.java | 61 +- .../io/cloudquery/schema/TableMaxTest.java | 34 +- .../java/io/cloudquery/schema/TableTest.java | 89 ++- .../io/cloudquery/server/AddressTest.java | 41 +- .../io/cloudquery/server/PluginServeTest.java | 60 +- .../DefaultNameTransformerTest.java | 55 +- .../DefaultResolverTransformerTest.java | 58 +- .../IgnoreInTestsTransformerTest.java | 12 +- .../cloudquery/transformers/TablesTest.java | 156 +++--- .../transformers/TransformWithClassTest.java | 342 ++++++------ .../transformers/TypeTransformerTest.java | 149 ++--- .../io/cloudquery/types/JSONTypeTest.java | 233 ++++---- .../io/cloudquery/types/ListTypeTest.java | 22 +- .../io/cloudquery/types/UUIDTypeTest.java | 203 +++---- 84 files changed, 5581 insertions(+), 5226 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 075db72..fb72220 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -2,6 +2,7 @@ plugins { id 'java-library' id "io.freefair.lombok" version "8.2.2" id "maven-publish" + id "com.diffplug.spotless" version "6.20.0" } ext { @@ -96,4 +97,10 @@ task runMemDBServe(type: JavaExec) { classpath = sourceSets.main.runtimeClasspath main = javaMainClass args = ["serve"] +} + +spotless { + java { + googleJavaFormat() + } } \ No newline at end of file diff --git a/lib/src/main/java/io/cloudquery/MainClass.java b/lib/src/main/java/io/cloudquery/MainClass.java index 13a9e19..c267455 100644 --- a/lib/src/main/java/io/cloudquery/MainClass.java +++ b/lib/src/main/java/io/cloudquery/MainClass.java @@ -4,9 +4,9 @@ import io.cloudquery.server.PluginServe; public class MainClass { - public static void main(String[] args) { - PluginServe serve = PluginServe.builder().plugin(new MemDB()).args(args).build(); - int exitCode = serve.Serve(); - System.exit(exitCode); - } + public static void main(String[] args) { + PluginServe serve = PluginServe.builder().plugin(new MemDB()).args(args).build(); + int exitCode = serve.Serve(); + System.exit(exitCode); + } } diff --git a/lib/src/main/java/io/cloudquery/caser/Caser.java b/lib/src/main/java/io/cloudquery/caser/Caser.java index 937f1f8..1432afc 100644 --- a/lib/src/main/java/io/cloudquery/caser/Caser.java +++ b/lib/src/main/java/io/cloudquery/caser/Caser.java @@ -1,6 +1,7 @@ package io.cloudquery.caser; -import lombok.Builder; +import static io.cloudquery.caser.Initialisms.*; +import static io.cloudquery.caser.Initialisms.COMMON_INITIALISMS; import java.util.ArrayList; import java.util.Arrays; @@ -9,200 +10,197 @@ import java.util.List; import java.util.Map; import java.util.Set; - -import static io.cloudquery.caser.Initialisms.*; -import static io.cloudquery.caser.Initialisms.COMMON_INITIALISMS; +import lombok.Builder; @Builder public class Caser { - @Builder.Default - private Set initialisms = new HashSet<>(COMMON_INITIALISMS); - - @Builder.Default - private Map snakeToCamelExceptions = new HashMap<>(); - - @Builder.Default - private Map camelToSnakeExceptions = new HashMap<>(); - - @Builder.Default - private Map customExceptions = new HashMap<>(); - - @Builder.Default - private Set customInitialisms = new HashSet<>(); - - public Caser(Set initialisms, - Map snakeToCamelExceptions, - Map camelToSnakeExceptions, - Map customExceptions, - Set customInitialisms) { - this.initialisms = initialisms; - this.snakeToCamelExceptions = snakeToCamelExceptions; - this.camelToSnakeExceptions = camelToSnakeExceptions; - this.customExceptions = customExceptions; - this.customInitialisms = customInitialisms; - - - HashMap combinedExceptions = new HashMap<>(COMMON_EXCEPTIONS); - combinedExceptions.putAll(customExceptions); - for (String key : combinedExceptions.keySet()) { - snakeToCamelExceptions.put(key, combinedExceptions.get(key)); - camelToSnakeExceptions.put(combinedExceptions.get(key), key); - } + @Builder.Default private Set initialisms = new HashSet<>(COMMON_INITIALISMS); - initialisms.addAll(customInitialisms); - } + @Builder.Default private Map snakeToCamelExceptions = new HashMap<>(); - public String toSnake(String s) { - List words = new ArrayList<>(); - int lastPos = 0; - for (int i = 0; i < s.length(); i++) { - if (i > 0 && Character.isUpperCase(s.charAt(i))) { - - String initialism = startsWithInitialism(s.substring(lastPos)); - if (!initialism.isEmpty()) { - words.add(initialism); - i = lastPos + initialism.length(); - lastPos = i; - continue; - } - - String capWord = getCapWord(s.substring(lastPos)); - if (!capWord.isEmpty()) { - words.add(capWord); - i = lastPos + capWord.length(); - lastPos = i; - continue; - } - - words.add(s.substring(lastPos, i)); - lastPos = i; - } - } + @Builder.Default private Map camelToSnakeExceptions = new HashMap<>(); - if (!s.substring(lastPos).isEmpty()) { - String w = s.substring(lastPos); - if (w.equals("s")) { - String lastWord = words.remove(words.size() - 1); - words.add(lastWord + w); - } else { - words.add(s.substring(lastPos)); - } - } + @Builder.Default private Map customExceptions = new HashMap<>(); - return String.join("_", words).toLowerCase(); - } + @Builder.Default private Set customInitialisms = new HashSet<>(); - /** - * Returns a string converted from snake case to camel case. - *

- * - * @param s The input string - * @return The string converted to camel case - */ - public String toCamel(String s) { - if (s.isEmpty()) { - return s; - } - List words = Arrays.asList(s.split("_")); - return String.join("", capitalize(words)); + public Caser( + Set initialisms, + Map snakeToCamelExceptions, + Map camelToSnakeExceptions, + Map customExceptions, + Set customInitialisms) { + this.initialisms = initialisms; + this.snakeToCamelExceptions = snakeToCamelExceptions; + this.camelToSnakeExceptions = camelToSnakeExceptions; + this.customExceptions = customExceptions; + this.customInitialisms = customInitialisms; + + HashMap combinedExceptions = new HashMap<>(COMMON_EXCEPTIONS); + combinedExceptions.putAll(customExceptions); + for (String key : combinedExceptions.keySet()) { + snakeToCamelExceptions.put(key, combinedExceptions.get(key)); + camelToSnakeExceptions.put(combinedExceptions.get(key), key); } - /** - * Returns a string converted from snake case to title case. - *

- * Title case is similar to camel case, but spaces are used in between words. - * - * @param s The input string - * @return The string converted to title case - */ - public String toTitle(String s) { - if (s.isEmpty()) { - return s; + initialisms.addAll(customInitialisms); + } + + public String toSnake(String s) { + List words = new ArrayList<>(); + int lastPos = 0; + for (int i = 0; i < s.length(); i++) { + if (i > 0 && Character.isUpperCase(s.charAt(i))) { + + String initialism = startsWithInitialism(s.substring(lastPos)); + if (!initialism.isEmpty()) { + words.add(initialism); + i = lastPos + initialism.length(); + lastPos = i; + continue; } - String[] words = s.split("_"); - if (!snakeToCamelExceptions.containsKey(words[0].toLowerCase())) { - words[0] = words[0].substring(0, 1).toUpperCase() + words[0].substring(1).toLowerCase(); + + String capWord = getCapWord(s.substring(lastPos)); + if (!capWord.isEmpty()) { + words.add(capWord); + i = lastPos + capWord.length(); + lastPos = i; + continue; } - return String.join(" ", capitalize(Arrays.asList(words))); + + words.add(s.substring(lastPos, i)); + lastPos = i; + } } - /** - * Returns a string converted from snake case to pascal case - * - * @param s The input string - * @return The string converted to pascal case - */ - public String toPascal(String s) { - if (s.isEmpty()) { - return s; - } - String camel = toCamel(s); - return camel.substring(0, 1).toUpperCase() + camel.substring(1); + if (!s.substring(lastPos).isEmpty()) { + String w = s.substring(lastPos); + if (w.equals("s")) { + String lastWord = words.remove(words.size() - 1); + words.add(lastWord + w); + } else { + words.add(s.substring(lastPos)); + } } - /** - * gets the next sequence of capitalized letters as a single word. - *

- * If there is a word after capitalized sequence it leaves one letter as beginning of the next word - * - * @param s The input string - * @return A single word - */ - private String getCapWord(String s) { - for (int i = 0; i < s.length(); i++) { - if (!Character.isUpperCase(s.charAt(i))) { - if (i == 0) { - return ""; - } - return s.substring(0, i - 1); - } + return String.join("_", words).toLowerCase(); + } + + /** + * Returns a string converted from snake case to camel case. + * + *

+ * + * @param s The input string + * @return The string converted to camel case + */ + public String toCamel(String s) { + if (s.isEmpty()) { + return s; + } + List words = Arrays.asList(s.split("_")); + return String.join("", capitalize(words)); + } + + /** + * Returns a string converted from snake case to title case. + * + *

Title case is similar to camel case, but spaces are used in between words. + * + * @param s The input string + * @return The string converted to title case + */ + public String toTitle(String s) { + if (s.isEmpty()) { + return s; + } + String[] words = s.split("_"); + if (!snakeToCamelExceptions.containsKey(words[0].toLowerCase())) { + words[0] = words[0].substring(0, 1).toUpperCase() + words[0].substring(1).toLowerCase(); + } + return String.join(" ", capitalize(Arrays.asList(words))); + } + + /** + * Returns a string converted from snake case to pascal case + * + * @param s The input string + * @return The string converted to pascal case + */ + public String toPascal(String s) { + if (s.isEmpty()) { + return s; + } + String camel = toCamel(s); + return camel.substring(0, 1).toUpperCase() + camel.substring(1); + } + + /** + * gets the next sequence of capitalized letters as a single word. + * + *

If there is a word after capitalized sequence it leaves one letter as beginning of the next + * word + * + * @param s The input string + * @return A single word + */ + private String getCapWord(String s) { + for (int i = 0; i < s.length(); i++) { + if (!Character.isUpperCase(s.charAt(i))) { + if (i == 0) { + return ""; } - return s; + return s.substring(0, i - 1); + } + } + return s; + } + + /** + * Returns the initialism if the given string begins with it + * + * @param s The input string + * @return The initialism if the given string begins with it, otherwise an empty string + */ + private String startsWithInitialism(String s) { + String initialism = ""; + + // the longest initialism is 5 char, the shortest 2 we choose the longest match + for (int i = 1; i <= s.length() && i <= 5; i++) { + if (s.length() > i - 1 + && this.initialisms.contains(s.substring(0, i)) + && s.substring(0, i).length() > initialism.length()) { + initialism = s.substring(0, i); + } } - /** - * Returns the initialism if the given string begins with it - * - * @param s The input string - * @return The initialism if the given string begins with it, otherwise an empty string - */ - private String startsWithInitialism(String s) { - String initialism = ""; - - // the longest initialism is 5 char, the shortest 2 we choose the longest match - for (int i = 1; i <= s.length() && i <= 5; i++) { - if (s.length() > i - 1 && this.initialisms.contains(s.substring(0, i)) && s.substring(0, i).length() > initialism.length()) { - initialism = s.substring(0, i); - } - } + return initialism; + } - return initialism; - } + private List capitalize(List words) { + int n = words.stream().map(String::length).reduce(0, Integer::sum); + + List results = new ArrayList<>(); + for (int i = 0; i < words.size(); i++) { + if (snakeToCamelExceptions.containsKey(words.get(i))) { + results.add(snakeToCamelExceptions.get(words.get(i))); + continue; + } - private List capitalize(List words) { - int n = words.stream().map(String::length).reduce(0, Integer::sum); - - List results = new ArrayList<>(); - for (int i = 0; i < words.size(); i++) { - if (snakeToCamelExceptions.containsKey(words.get(i))) { - results.add(snakeToCamelExceptions.get(words.get(i))); - continue; - } - - if (i > 0) { - String upper = words.get(i).toUpperCase(); - if (n > i - 1 && initialisms.contains(upper)) { - results.add(upper); - continue; - } - } - - if (i > 0 && !words.get(i).isEmpty()) { - results.add(words.get(i).substring(0, 1).toUpperCase()+words.get(i).substring(1)); - } else { - results.add(words.get(i)); - } + if (i > 0) { + String upper = words.get(i).toUpperCase(); + if (n > i - 1 && initialisms.contains(upper)) { + results.add(upper); + continue; } - return results; + } + + if (i > 0 && !words.get(i).isEmpty()) { + results.add(words.get(i).substring(0, 1).toUpperCase() + words.get(i).substring(1)); + } else { + results.add(words.get(i)); + } } -} \ No newline at end of file + return results; + } +} diff --git a/lib/src/main/java/io/cloudquery/caser/Initialisms.java b/lib/src/main/java/io/cloudquery/caser/Initialisms.java index ffe498e..42fcb15 100644 --- a/lib/src/main/java/io/cloudquery/caser/Initialisms.java +++ b/lib/src/main/java/io/cloudquery/caser/Initialisms.java @@ -4,60 +4,18 @@ import java.util.Set; public class Initialisms { - public static final Set COMMON_INITIALISMS = Set.of( - "ACL", - "API", - "ASCII", - "CIDR", - "CPU", - "CSS", - "DNS", - "EOF", - "FQDN", - "GUID", - "HTML", - "HTTP", - "HTTPS", - "ID", - "IP", - "IPC", - "IPv4", - "IPv6", - "JSON", - "LHS", - "PID", - "QOS", - "QPS", - "RAM", - "RHS", - "RPC", - "SLA", - "SMTP", - "SQL", - "SSH", - "TCP", - "TLS", - "TTL", - "UDP", - "UI", - "UID", - "UUID", - "URI", - "URL", - "UTF8", - "VM", - "XML", - "XMPP", - "XSRF", - "XSS" - ); + public static final Set COMMON_INITIALISMS = + Set.of( + "ACL", "API", "ASCII", "CIDR", "CPU", "CSS", "DNS", "EOF", "FQDN", "GUID", "HTML", "HTTP", + "HTTPS", "ID", "IP", "IPC", "IPv4", "IPv6", "JSON", "LHS", "PID", "QOS", "QPS", "RAM", + "RHS", "RPC", "SLA", "SMTP", "SQL", "SSH", "TCP", "TLS", "TTL", "UDP", "UI", "UID", + "UUID", "URI", "URL", "UTF8", "VM", "XML", "XMPP", "XSRF", "XSS"); - public static final Map COMMON_EXCEPTIONS = Map.of( - "oauth", "OAuth", - "ipv4", "IPv4", - "ipv6", "IPv6" - ); + public static final Map COMMON_EXCEPTIONS = + Map.of( + "oauth", "OAuth", + "ipv4", "IPv4", + "ipv6", "IPv6"); - private Initialisms() { - } + private Initialisms() {} } diff --git a/lib/src/main/java/io/cloudquery/glob/Glob.java b/lib/src/main/java/io/cloudquery/glob/Glob.java index 14eb355..58ccd2d 100644 --- a/lib/src/main/java/io/cloudquery/glob/Glob.java +++ b/lib/src/main/java/io/cloudquery/glob/Glob.java @@ -1,42 +1,42 @@ package io.cloudquery.glob; public class Glob { - public static final String GLOB = "*"; + public static final String GLOB = "*"; - public static boolean match(String pattern, String subject) { - if (pattern.isEmpty()) { - return subject.equals(pattern); - } - - if (pattern.equals(GLOB)) { - return true; - } + public static boolean match(String pattern, String subject) { + if (pattern.isEmpty()) { + return subject.equals(pattern); + } - String[] parts = pattern.split("\\" + GLOB, -1); - if (parts.length == 1) { - return subject.equals(pattern); - } + if (pattern.equals(GLOB)) { + return true; + } - boolean leadingGlob = pattern.startsWith(GLOB); - boolean trailingGlob = pattern.endsWith(GLOB); - int end = parts.length - 1; + String[] parts = pattern.split("\\" + GLOB, -1); + if (parts.length == 1) { + return subject.equals(pattern); + } - for (int i = 0; i < end; i++) { - int idx = subject.indexOf(parts[i]); + boolean leadingGlob = pattern.startsWith(GLOB); + boolean trailingGlob = pattern.endsWith(GLOB); + int end = parts.length - 1; - if (i == 0) { - if (!leadingGlob && idx != 0) { - return false; - } - } else { - if (idx < 0) { - return false; - } - } + for (int i = 0; i < end; i++) { + int idx = subject.indexOf(parts[i]); - subject = subject.substring(idx + parts[i].length()); + if (i == 0) { + if (!leadingGlob && idx != 0) { + return false; } + } else { + if (idx < 0) { + return false; + } + } - return trailingGlob || subject.endsWith(parts[end]); + subject = subject.substring(idx + parts[i].length()); } + + return trailingGlob || subject.endsWith(parts[end]); + } } diff --git a/lib/src/main/java/io/cloudquery/helper/ReflectionPathResolver.java b/lib/src/main/java/io/cloudquery/helper/ReflectionPathResolver.java index 6ad605b..bb40dd7 100644 --- a/lib/src/main/java/io/cloudquery/helper/ReflectionPathResolver.java +++ b/lib/src/main/java/io/cloudquery/helper/ReflectionPathResolver.java @@ -2,56 +2,53 @@ import java.lang.reflect.Field; -/** - * A simple reflection-based path resolver. - */ +/** A simple reflection-based path resolver. */ public class ReflectionPathResolver { - - public static class PathResolverException extends Exception { - public PathResolverException(String message, Throwable ex) { - super(message, ex); - } + + public static class PathResolverException extends Exception { + public PathResolverException(String message, Throwable ex) { + super(message, ex); } + } - /** - * Resolve a path of an object using reflection. - *

- * e.g. if we have a class: - *

-     *      class TestClass {
-     *          private String name;
-     *          private TestClass child;
-     *      }
-     * 
- *

- * Then the following are valid paths to retrieve the associated values: - *

- * `name` - * `child.name` - *

- * NOTE: this implementation is currently very simplistic and only supports simple field and nested field resolution. - * It does not support collection resolution - unlike the Go SDK which uses go-funk. - * - * @param object The object to resolve the path on - * @param path The path to resolve - * @return The value of the property at the resolved path - * @throws PathResolverException If the path cannot be resolved - */ - public static Object resolve(Object object, String path) throws PathResolverException { - Object current = object; + /** + * Resolve a path of an object using reflection. + * + *

e.g. if we have a class: + * + *

+   *      class TestClass {
+   *          private String name;
+   *          private TestClass child;
+   *      }
+   * 
+ * + *

Then the following are valid paths to retrieve the associated values: + * + *

`name` `child.name` NOTE: this implementation is currently very simplistic and only supports + * simple field and nested field resolution. It does not support collection resolution - unlike + * the Go SDK which uses go-funk. + * + * @param object The object to resolve the path on + * @param path The path to resolve + * @return The value of the property at the resolved path + * @throws PathResolverException If the path cannot be resolved + */ + public static Object resolve(Object object, String path) throws PathResolverException { + Object current = object; - for (String currentPath : path.split("\\.")) { - try { - Field currentField = object.getClass().getDeclaredField(currentPath); - if (!currentField.canAccess(current)) { - currentField.setAccessible(true); - } - object = currentField.get(object); - } catch (NoSuchFieldException | IllegalAccessException e) { - throw new PathResolverException("Unable to resolve path " + currentPath, e); - } + for (String currentPath : path.split("\\.")) { + try { + Field currentField = object.getClass().getDeclaredField(currentPath); + if (!currentField.canAccess(current)) { + currentField.setAccessible(true); } - - return object; + object = currentField.get(object); + } catch (NoSuchFieldException | IllegalAccessException e) { + throw new PathResolverException("Unable to resolve path " + currentPath, e); + } } + + return object; + } } diff --git a/lib/src/main/java/io/cloudquery/internal/servers/discovery/v1/DiscoverServer.java b/lib/src/main/java/io/cloudquery/internal/servers/discovery/v1/DiscoverServer.java index 676ed44..26140d3 100644 --- a/lib/src/main/java/io/cloudquery/internal/servers/discovery/v1/DiscoverServer.java +++ b/lib/src/main/java/io/cloudquery/internal/servers/discovery/v1/DiscoverServer.java @@ -4,19 +4,18 @@ import io.cloudquery.discovery.v1.GetVersions.Request; import io.cloudquery.discovery.v1.GetVersions.Response; import io.grpc.stub.StreamObserver; - import java.util.List; public class DiscoverServer extends DiscoveryImplBase { - private final List versions; + private final List versions; - public DiscoverServer(List versions) { - this.versions = versions; - } + public DiscoverServer(List versions) { + this.versions = versions; + } - @Override - public void getVersions(Request request, StreamObserver responseObserver) { - responseObserver.onNext(Response.newBuilder().addAllVersions(versions).build()); - responseObserver.onCompleted(); - } + @Override + public void getVersions(Request request, StreamObserver responseObserver) { + responseObserver.onNext(Response.newBuilder().addAllVersions(versions).build()); + responseObserver.onCompleted(); + } } diff --git a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java index c7d800b..126c3c0 100644 --- a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java +++ b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java @@ -1,124 +1,130 @@ package io.cloudquery.internal.servers.plugin.v3; +import com.google.protobuf.ByteString; +import io.cloudquery.plugin.Plugin; import io.cloudquery.plugin.v3.PluginGrpc.PluginImplBase; -import io.cloudquery.schema.Table; import io.cloudquery.plugin.v3.Write; +import io.cloudquery.schema.Table; import io.grpc.stub.StreamObserver; - import java.io.ByteArrayOutputStream; import java.nio.channels.Channels; import java.util.ArrayList; import java.util.List; - import org.apache.arrow.memory.BufferAllocator; import org.apache.arrow.memory.RootAllocator; import org.apache.arrow.vector.VectorSchemaRoot; import org.apache.arrow.vector.ipc.ArrowStreamWriter; import org.apache.arrow.vector.types.pojo.Schema; -import com.google.protobuf.ByteString; - -import io.cloudquery.plugin.Plugin; public class PluginServer extends PluginImplBase { - private final Plugin plugin; - - public PluginServer(Plugin plugin) { - this.plugin = plugin; - } - - @Override - public void getName(io.cloudquery.plugin.v3.GetName.Request request, - StreamObserver responseObserver) { - responseObserver - .onNext(io.cloudquery.plugin.v3.GetName.Response.newBuilder().setName(plugin.getName()).build()); - responseObserver.onCompleted(); - } - - @Override - public void getVersion(io.cloudquery.plugin.v3.GetVersion.Request request, - StreamObserver responseObserver) { - responseObserver.onNext( - io.cloudquery.plugin.v3.GetVersion.Response.newBuilder().setVersion(plugin.getVersion()).build()); - responseObserver.onCompleted(); - } - - @Override - public void init(io.cloudquery.plugin.v3.Init.Request request, - StreamObserver responseObserver) { - plugin.init(); - responseObserver.onNext(io.cloudquery.plugin.v3.Init.Response.newBuilder().build()); - responseObserver.onCompleted(); - } - - @Override - public void getTables(io.cloudquery.plugin.v3.GetTables.Request request, - StreamObserver responseObserver) { - try { - List

tables = plugin.tables(); - List byteStrings = new ArrayList<>(); - for (Table table : tables) { - try (BufferAllocator bufferAllocator = new RootAllocator()) { - Schema schema = table.toArrowSchema(); - VectorSchemaRoot schemaRoot = VectorSchemaRoot.create(schema, bufferAllocator); - try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { - try (ArrowStreamWriter writer = new ArrowStreamWriter(schemaRoot, null, - Channels.newChannel(out))) { - writer.start(); - writer.end(); - byteStrings.add(ByteString.copyFrom(out.toByteArray())); - } - } - } + private final Plugin plugin; + + public PluginServer(Plugin plugin) { + this.plugin = plugin; + } + + @Override + public void getName( + io.cloudquery.plugin.v3.GetName.Request request, + StreamObserver responseObserver) { + responseObserver.onNext( + io.cloudquery.plugin.v3.GetName.Response.newBuilder().setName(plugin.getName()).build()); + responseObserver.onCompleted(); + } + + @Override + public void getVersion( + io.cloudquery.plugin.v3.GetVersion.Request request, + StreamObserver responseObserver) { + responseObserver.onNext( + io.cloudquery.plugin.v3.GetVersion.Response.newBuilder() + .setVersion(plugin.getVersion()) + .build()); + responseObserver.onCompleted(); + } + + @Override + public void init( + io.cloudquery.plugin.v3.Init.Request request, + StreamObserver responseObserver) { + plugin.init(); + responseObserver.onNext(io.cloudquery.plugin.v3.Init.Response.newBuilder().build()); + responseObserver.onCompleted(); + } + + @Override + public void getTables( + io.cloudquery.plugin.v3.GetTables.Request request, + StreamObserver responseObserver) { + try { + List
tables = plugin.tables(); + List byteStrings = new ArrayList<>(); + for (Table table : tables) { + try (BufferAllocator bufferAllocator = new RootAllocator()) { + Schema schema = table.toArrowSchema(); + VectorSchemaRoot schemaRoot = VectorSchemaRoot.create(schema, bufferAllocator); + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + try (ArrowStreamWriter writer = + new ArrowStreamWriter(schemaRoot, null, Channels.newChannel(out))) { + writer.start(); + writer.end(); + byteStrings.add(ByteString.copyFrom(out.toByteArray())); } - responseObserver - .onNext(io.cloudquery.plugin.v3.GetTables.Response.newBuilder().addAllTables(byteStrings).build()); - responseObserver.onCompleted(); - } catch (Exception e) { - responseObserver.onError(e); + } } + } + responseObserver.onNext( + io.cloudquery.plugin.v3.GetTables.Response.newBuilder() + .addAllTables(byteStrings) + .build()); + responseObserver.onCompleted(); + } catch (Exception e) { + responseObserver.onError(e); } - - @Override - public void sync(io.cloudquery.plugin.v3.Sync.Request request, - StreamObserver responseObserver) { - plugin.sync(); - responseObserver.onNext(io.cloudquery.plugin.v3.Sync.Response.newBuilder().build()); - responseObserver.onCompleted(); - } - - @Override - public void read(io.cloudquery.plugin.v3.Read.Request request, - StreamObserver responseObserver) { - plugin.read(); - responseObserver.onNext(io.cloudquery.plugin.v3.Read.Response.newBuilder().build()); - responseObserver.onCompleted(); - } - - @Override - public StreamObserver write(StreamObserver responseObserver) { - plugin.write(); - return new StreamObserver<>() { - @Override - public void onNext(Write.Request request) { - } - - @Override - public void onError(Throwable t) { - } - - @Override - public void onCompleted() { - responseObserver.onNext(Write.Response.newBuilder().build()); - responseObserver.onCompleted(); - } - }; - } - - @Override - public void close(io.cloudquery.plugin.v3.Close.Request request, - StreamObserver responseObserver) { - plugin.close(); - responseObserver.onNext(io.cloudquery.plugin.v3.Close.Response.newBuilder().build()); + } + + @Override + public void sync( + io.cloudquery.plugin.v3.Sync.Request request, + StreamObserver responseObserver) { + plugin.sync(); + responseObserver.onNext(io.cloudquery.plugin.v3.Sync.Response.newBuilder().build()); + responseObserver.onCompleted(); + } + + @Override + public void read( + io.cloudquery.plugin.v3.Read.Request request, + StreamObserver responseObserver) { + plugin.read(); + responseObserver.onNext(io.cloudquery.plugin.v3.Read.Response.newBuilder().build()); + responseObserver.onCompleted(); + } + + @Override + public StreamObserver write(StreamObserver responseObserver) { + plugin.write(); + return new StreamObserver<>() { + @Override + public void onNext(Write.Request request) {} + + @Override + public void onError(Throwable t) {} + + @Override + public void onCompleted() { + responseObserver.onNext(Write.Response.newBuilder().build()); responseObserver.onCompleted(); - } + } + }; + } + + @Override + public void close( + io.cloudquery.plugin.v3.Close.Request request, + StreamObserver responseObserver) { + plugin.close(); + responseObserver.onNext(io.cloudquery.plugin.v3.Close.Response.newBuilder().build()); + responseObserver.onCompleted(); + } } diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDB.java b/lib/src/main/java/io/cloudquery/memdb/MemDB.java index 0cfdaeb..f524fbd 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDB.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDB.java @@ -1,53 +1,56 @@ package io.cloudquery.memdb; -import java.util.List; - import io.cloudquery.plugin.Plugin; -import io.cloudquery.schema.Table; import io.cloudquery.schema.Column; import io.cloudquery.schema.SchemaException; - +import io.cloudquery.schema.Table; +import java.util.List; import org.apache.arrow.vector.types.pojo.ArrowType.Utf8; public class MemDB extends Plugin { - private List
allTables = List.of( - Table.builder().name("table1").columns(List.of(Column.builder().name("name1").type(new Utf8()).build())) - .build(), - Table.builder().name("table2").columns(List.of(Column.builder().name("name1").type(new Utf8()).build())) - .build()); - - public MemDB() { - super("memdb", "0.0.1"); - } - - @Override - public void init() { - // do nothing - } - - @Override - public List
tables() throws SchemaException { - return Table.filterDFS(allTables, List.of("*"), List.of(), false); - } - - @Override - public void sync() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'Sync'"); - } - - @Override - public void read() { - throw new UnsupportedOperationException("Unimplemented method 'Read'"); - } - - @Override - public void write() { - throw new UnsupportedOperationException("Unimplemented method 'Write'"); - } - - @Override - public void close() { - // do nothing - } + private List
allTables = + List.of( + Table.builder() + .name("table1") + .columns(List.of(Column.builder().name("name1").type(new Utf8()).build())) + .build(), + Table.builder() + .name("table2") + .columns(List.of(Column.builder().name("name1").type(new Utf8()).build())) + .build()); + + public MemDB() { + super("memdb", "0.0.1"); + } + + @Override + public void init() { + // do nothing + } + + @Override + public List
tables() throws SchemaException { + return Table.filterDFS(allTables, List.of("*"), List.of(), false); + } + + @Override + public void sync() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'Sync'"); + } + + @Override + public void read() { + throw new UnsupportedOperationException("Unimplemented method 'Read'"); + } + + @Override + public void write() { + throw new UnsupportedOperationException("Unimplemented method 'Write'"); + } + + @Override + public void close() { + // do nothing + } } diff --git a/lib/src/main/java/io/cloudquery/plugin/Plugin.java b/lib/src/main/java/io/cloudquery/plugin/Plugin.java index 57a968d..0e22eee 100644 --- a/lib/src/main/java/io/cloudquery/plugin/Plugin.java +++ b/lib/src/main/java/io/cloudquery/plugin/Plugin.java @@ -1,36 +1,30 @@ package io.cloudquery.plugin; -import java.util.List; - -import org.apache.logging.log4j.Logger; - import io.cloudquery.schema.SchemaException; import io.cloudquery.schema.Table; +import java.util.List; import lombok.Getter; import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.Setter; +import org.apache.logging.log4j.Logger; @RequiredArgsConstructor @Getter public abstract class Plugin { - @NonNull - protected final String name; - @NonNull - protected final String version; - @Setter - protected Logger logger; - - public abstract void init(); + @NonNull protected final String name; + @NonNull protected final String version; + @Setter protected Logger logger; - public abstract List
tables() throws SchemaException; + public abstract void init(); - public abstract void sync(); + public abstract List
tables() throws SchemaException; - public abstract void read(); + public abstract void sync(); - public abstract void write(); + public abstract void read(); - public abstract void close(); + public abstract void write(); + public abstract void close(); } diff --git a/lib/src/main/java/io/cloudquery/scalar/Binary.java b/lib/src/main/java/io/cloudquery/scalar/Binary.java index e24927e..9135631 100644 --- a/lib/src/main/java/io/cloudquery/scalar/Binary.java +++ b/lib/src/main/java/io/cloudquery/scalar/Binary.java @@ -1,76 +1,76 @@ package io.cloudquery.scalar; +import java.util.Arrays; import org.apache.arrow.vector.types.pojo.ArrowType; import org.apache.commons.codec.binary.Base64; -import java.util.Arrays; - public class Binary extends Scalar { - public Binary() { - super(); + public Binary() { + super(); + } + + public Binary(Object value) throws ValidationException { + super(value); + } + + @Override + public java.lang.String toString() { + if (this.value != null) { + return Base64.encodeBase64String(this.value); } + return NULL_VALUE_STRING; + } - public Binary(Object value) throws ValidationException { - super(value); + @Override + public ArrowType dataType() { + return ArrowType.Binary.INSTANCE; + } + + @Override + public void setValue(Object value) throws ValidationException { + if (value instanceof byte[] bytes) { + this.value = bytes; + return; } - @Override - public java.lang.String toString() { - if (this.value != null) { - return Base64.encodeBase64String(this.value); - } - return NULL_VALUE_STRING; + if (value instanceof CharSequence sequence) { + this.value = Base64.decodeBase64(sequence.toString()); + return; } - @Override - public ArrowType dataType() { - return ArrowType.Binary.INSTANCE; + if (value instanceof char[] chars) { + this.value = Base64.decodeBase64(new java.lang.String(chars)); + return; } - @Override - public void setValue(Object value) throws ValidationException { - if (value instanceof byte[] bytes) { - this.value = bytes; - return; - } + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + } - if (value instanceof CharSequence sequence) { - this.value = Base64.decodeBase64(sequence.toString()); - return; - } + @Override + public boolean equals(Object other) { + if (other instanceof Binary o) { + if (this.value == null) { + return o.value == null; + } + return Arrays.equals(this.value, o.value); + } + return false; + } - if (value instanceof char[] chars) { - this.value = Base64.decodeBase64(new java.lang.String(chars)); - return; - } + public static class LargeBinary extends Binary { - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + public LargeBinary() { + super(); } - @Override - public boolean equals(Object other) { - if (other instanceof Binary o) { - if (this.value == null) { - return o.value == null; - } - return Arrays.equals(this.value, o.value); - } - return false; + public LargeBinary(Object value) throws ValidationException { + super(value); } - public static class LargeBinary extends Binary { - - public LargeBinary() { - super(); - } - - public LargeBinary(Object value) throws ValidationException { - super(value); - } - - @Override - public ArrowType dataType() { - return ArrowType.LargeBinary.INSTANCE; - } + @Override + public ArrowType dataType() { + return ArrowType.LargeBinary.INSTANCE; } -} \ No newline at end of file + } +} diff --git a/lib/src/main/java/io/cloudquery/scalar/Bool.java b/lib/src/main/java/io/cloudquery/scalar/Bool.java index d92fda7..d8a242a 100644 --- a/lib/src/main/java/io/cloudquery/scalar/Bool.java +++ b/lib/src/main/java/io/cloudquery/scalar/Bool.java @@ -3,31 +3,32 @@ import org.apache.arrow.vector.types.pojo.ArrowType; public class Bool extends Scalar { - public Bool() { - super(); - } - - public Bool(Object value) throws ValidationException { - super(value); - } + public Bool() { + super(); + } - @Override - public ArrowType dataType() { - return ArrowType.Bool.INSTANCE; - } + public Bool(Object value) throws ValidationException { + super(value); + } - @Override - public void setValue(Object value) throws ValidationException { - if (value instanceof Boolean b) { - this.value = b; - return; - } + @Override + public ArrowType dataType() { + return ArrowType.Bool.INSTANCE; + } - if (value instanceof CharSequence sequence) { - this.value = Boolean.parseBoolean(sequence.toString()); - return; - } + @Override + public void setValue(Object value) throws ValidationException { + if (value instanceof Boolean b) { + this.value = b; + return; + } - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + if (value instanceof CharSequence sequence) { + this.value = Boolean.parseBoolean(sequence.toString()); + return; } + + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + } } diff --git a/lib/src/main/java/io/cloudquery/scalar/DateDay.java b/lib/src/main/java/io/cloudquery/scalar/DateDay.java index 2781c82..5a872f9 100644 --- a/lib/src/main/java/io/cloudquery/scalar/DateDay.java +++ b/lib/src/main/java/io/cloudquery/scalar/DateDay.java @@ -4,31 +4,32 @@ import org.apache.arrow.vector.types.pojo.ArrowType; public class DateDay extends Scalar { - public DateDay() { - super(); - } - - public DateDay(Object value) throws ValidationException { - super(value); - } + public DateDay() { + super(); + } - @Override - public ArrowType dataType() { - return new ArrowType.Date(DateUnit.DAY); - } + public DateDay(Object value) throws ValidationException { + super(value); + } - @Override - public void setValue(Object value) throws ValidationException { - if (value instanceof Integer b) { - this.value = b; - return; - } + @Override + public ArrowType dataType() { + return new ArrowType.Date(DateUnit.DAY); + } - if (value instanceof CharSequence sequence) { - this.value = Integer.parseInt(sequence.toString()); - return; - } + @Override + public void setValue(Object value) throws ValidationException { + if (value instanceof Integer b) { + this.value = b; + return; + } - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + if (value instanceof CharSequence sequence) { + this.value = Integer.parseInt(sequence.toString()); + return; } + + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + } } diff --git a/lib/src/main/java/io/cloudquery/scalar/DateMilli.java b/lib/src/main/java/io/cloudquery/scalar/DateMilli.java index d3cc0f8..524d585 100644 --- a/lib/src/main/java/io/cloudquery/scalar/DateMilli.java +++ b/lib/src/main/java/io/cloudquery/scalar/DateMilli.java @@ -4,36 +4,37 @@ import org.apache.arrow.vector.types.pojo.ArrowType; public class DateMilli extends Scalar { - public DateMilli() { - super(); + public DateMilli() { + super(); + } + + public DateMilli(Object value) throws ValidationException { + super(value); + } + + @Override + public ArrowType dataType() { + return new ArrowType.Date(DateUnit.MILLISECOND); + } + + @Override + public void setValue(Object value) throws ValidationException { + if (value instanceof Long b) { + this.value = b; + return; } - public DateMilli(Object value) throws ValidationException { - super(value); + if (value instanceof Integer b) { + this.value = Long.valueOf(b); + return; } - @Override - public ArrowType dataType() { - return new ArrowType.Date(DateUnit.MILLISECOND); + if (value instanceof CharSequence sequence) { + this.value = Long.parseLong(sequence.toString()); + return; } - @Override - public void setValue(Object value) throws ValidationException { - if (value instanceof Long b) { - this.value = b; - return; - } - - if (value instanceof Integer b) { - this.value = Long.valueOf(b); - return; - } - - if (value instanceof CharSequence sequence) { - this.value = Long.parseLong(sequence.toString()); - return; - } - - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); - } + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + } } diff --git a/lib/src/main/java/io/cloudquery/scalar/Duration.java b/lib/src/main/java/io/cloudquery/scalar/Duration.java index 56edac0..d5bcb77 100644 --- a/lib/src/main/java/io/cloudquery/scalar/Duration.java +++ b/lib/src/main/java/io/cloudquery/scalar/Duration.java @@ -4,44 +4,45 @@ import org.apache.arrow.vector.types.pojo.ArrowType; public class Duration extends Scalar { - // TODO: add more units support later - private static final ArrowType dt = new ArrowType.Duration(TimeUnit.MILLISECOND); - - public Duration() { - super(); + // TODO: add more units support later + private static final ArrowType dt = new ArrowType.Duration(TimeUnit.MILLISECOND); + + public Duration() { + super(); + } + + public Duration(Object value) throws ValidationException { + super(value); + } + + @Override + public ArrowType dataType() { + return dt; + } + + @Override + public void setValue(Object value) throws ValidationException { + if (value instanceof java.time.Duration duration) { + this.value = duration; + return; } - public Duration(Object value) throws ValidationException { - super(value); + if (value instanceof Integer integer) { + this.value = java.time.Duration.ofMillis(integer); + return; } - @Override - public ArrowType dataType() { - return dt; + if (value instanceof Long longValue) { + this.value = java.time.Duration.ofMillis(longValue); + return; } - @Override - public void setValue(Object value) throws ValidationException { - if (value instanceof java.time.Duration duration) { - this.value = duration; - return; - } - - if (value instanceof Integer integer) { - this.value = java.time.Duration.ofMillis(integer); - return; - } - - if (value instanceof Long longValue) { - this.value = java.time.Duration.ofMillis(longValue); - return; - } - - if (value instanceof CharSequence sequence) { - this.value = java.time.Duration.parse(sequence); - return; - } - - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + if (value instanceof CharSequence sequence) { + this.value = java.time.Duration.parse(sequence); + return; } + + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + } } diff --git a/lib/src/main/java/io/cloudquery/scalar/Number.java b/lib/src/main/java/io/cloudquery/scalar/Number.java index 50b96e3..c8891cf 100644 --- a/lib/src/main/java/io/cloudquery/scalar/Number.java +++ b/lib/src/main/java/io/cloudquery/scalar/Number.java @@ -8,330 +8,341 @@ import org.joou.UShort; public abstract class Number extends Scalar { - public Number() { + public Number() {} + + public Number(Object value) throws ValidationException { + this.set(value); + } + + public static class Int8 extends Number { + protected static final ArrowType dt = new ArrowType.Int(Byte.SIZE, true); + + public Int8() { + super(); + } + + public Int8(Object value) throws ValidationException { + super(value); } - public Number(Object value) throws ValidationException { - this.set(value); + @Override + public ArrowType dataType() { + return dt; } - public static class Int8 extends Number { - protected static final ArrowType dt = new ArrowType.Int(Byte.SIZE, true); + @Override + protected void setValue(Object value) throws ValidationException { + if (value instanceof CharSequence sequence) { + this.value = Byte.valueOf(sequence.toString()); + return; + } - public Int8() { - super(); - } + if (value instanceof java.lang.Number number) { + this.value = number.byteValue(); + return; + } - public Int8(Object value) throws ValidationException { - super(value); - } + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + } + } - @Override - public ArrowType dataType() { - return dt; - } + public static class Int16 extends Number { + protected static final ArrowType dt = new ArrowType.Int(Short.SIZE, true); - @Override - protected void setValue(Object value) throws ValidationException { - if (value instanceof CharSequence sequence) { - this.value = Byte.valueOf(sequence.toString()); - return; - } + public Int16() { + super(); + } - if (value instanceof java.lang.Number number) { - this.value = number.byteValue(); - return; - } + public Int16(Object value) throws ValidationException { + super(value); + } - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); - } + @Override + public ArrowType dataType() { + return dt; } - public static class Int16 extends Number { - protected static final ArrowType dt = new ArrowType.Int(Short.SIZE, true); + @Override + protected void setValue(Object value) throws ValidationException { + if (value instanceof CharSequence sequence) { + this.value = Short.valueOf(sequence.toString()); + return; + } - public Int16() { - super(); - } + if (value instanceof java.lang.Number number) { + this.value = number.shortValue(); + return; + } - public Int16(Object value) throws ValidationException { - super(value); - } + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + } + } - @Override - public ArrowType dataType() { - return dt; - } + public static class Int32 extends Number { + protected static final ArrowType dt = new ArrowType.Int(Integer.SIZE, true); - @Override - protected void setValue(Object value) throws ValidationException { - if (value instanceof CharSequence sequence) { - this.value = Short.valueOf(sequence.toString()); - return; - } + public Int32() { + super(); + } - if (value instanceof java.lang.Number number) { - this.value = number.shortValue(); - return; - } + public Int32(Object value) throws ValidationException { + super(value); + } - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); - } + @Override + public ArrowType dataType() { + return dt; } - public static class Int32 extends Number { - protected static final ArrowType dt = new ArrowType.Int(Integer.SIZE, true); + @Override + protected void setValue(Object value) throws ValidationException { + if (value instanceof CharSequence sequence) { + this.value = Integer.valueOf(sequence.toString()); + return; + } - public Int32() { - super(); - } + if (value instanceof java.lang.Number number) { + this.value = number.intValue(); + return; + } - public Int32(Object value) throws ValidationException { - super(value); - } + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + } + } - @Override - public ArrowType dataType() { - return dt; - } + public static class Int64 extends Number { + protected static final ArrowType dt = new ArrowType.Int(Long.SIZE, true); - @Override - protected void setValue(Object value) throws ValidationException { - if (value instanceof CharSequence sequence) { - this.value = Integer.valueOf(sequence.toString()); - return; - } + public Int64() { + super(); + } - if (value instanceof java.lang.Number number) { - this.value = number.intValue(); - return; - } + public Int64(Object value) throws ValidationException { + super(value); + } - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); - } + @Override + public ArrowType dataType() { + return dt; } - public static class Int64 extends Number { - protected static final ArrowType dt = new ArrowType.Int(Long.SIZE, true); + @Override + protected void setValue(Object value) throws ValidationException { + if (value instanceof CharSequence sequence) { + this.value = Long.valueOf(sequence.toString()); + return; + } - public Int64() { - super(); - } + if (value instanceof java.lang.Number number) { + this.value = number.longValue(); + return; + } - public Int64(Object value) throws ValidationException { - super(value); - } + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + } + } - @Override - public ArrowType dataType() { - return dt; - } - - @Override - protected void setValue(Object value) throws ValidationException { - if (value instanceof CharSequence sequence) { - this.value = Long.valueOf(sequence.toString()); - return; - } - - if (value instanceof java.lang.Number number) { - this.value = number.longValue(); - return; - } + public static class UInt8 extends Number { + protected static final ArrowType dt = new ArrowType.Int(Byte.SIZE, false); - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); - } + public UInt8() { + super(); } - public static class UInt8 extends Number { - protected static final ArrowType dt = new ArrowType.Int(Byte.SIZE, false); + public UInt8(Object value) throws ValidationException { + super(value); + } - public UInt8() { - super(); - } + @Override + public ArrowType dataType() { + return dt; + } - public UInt8(Object value) throws ValidationException { - super(value); - } + @Override + protected void setValue(Object value) throws ValidationException { + if (value instanceof CharSequence sequence) { + this.value = UByte.valueOf(sequence.toString()); + return; + } - @Override - public ArrowType dataType() { - return dt; - } - - @Override - protected void setValue(Object value) throws ValidationException { - if (value instanceof CharSequence sequence) { - this.value = UByte.valueOf(sequence.toString()); - return; - } - - if (value instanceof java.lang.Number number) { - this.value = UByte.valueOf(number.byteValue()); - return; - } + if (value instanceof java.lang.Number number) { + this.value = UByte.valueOf(number.byteValue()); + return; + } - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); - } + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); } + } - public static class UInt16 extends Number { - protected static final ArrowType dt = new ArrowType.Int(Short.SIZE, false); + public static class UInt16 extends Number { + protected static final ArrowType dt = new ArrowType.Int(Short.SIZE, false); - public UInt16() { - super(); - } + public UInt16() { + super(); + } - public UInt16(Object value) throws ValidationException { - super(value); - } + public UInt16(Object value) throws ValidationException { + super(value); + } - @Override - public ArrowType dataType() { - return dt; - } - - @Override - protected void setValue(Object value) throws ValidationException { - if (value instanceof CharSequence sequence) { - this.value = UShort.valueOf(sequence.toString()); - return; - } - - if (value instanceof java.lang.Number number) { - this.value = UShort.valueOf(number.shortValue()); - return; - } + @Override + public ArrowType dataType() { + return dt; + } - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); - } + @Override + protected void setValue(Object value) throws ValidationException { + if (value instanceof CharSequence sequence) { + this.value = UShort.valueOf(sequence.toString()); + return; + } + + if (value instanceof java.lang.Number number) { + this.value = UShort.valueOf(number.shortValue()); + return; + } + + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + } + } + + public static class UInt32 extends Number { + protected static final ArrowType dt = new ArrowType.Int(Integer.SIZE, false); + + public UInt32() { + super(); } - public static class UInt32 extends Number { - protected static final ArrowType dt = new ArrowType.Int(Integer.SIZE, false); + public UInt32(Object value) throws ValidationException { + super(value); + } - public UInt32() { - super(); - } + @Override + public ArrowType dataType() { + return dt; + } - public UInt32(Object value) throws ValidationException { - super(value); - } + @Override + protected void setValue(Object value) throws ValidationException { + if (value instanceof CharSequence sequence) { + this.value = UInteger.valueOf(sequence.toString()); + return; + } - @Override - public ArrowType dataType() { - return dt; - } - - @Override - protected void setValue(Object value) throws ValidationException { - if (value instanceof CharSequence sequence) { - this.value = UInteger.valueOf(sequence.toString()); - return; - } - - if (value instanceof java.lang.Number number) { - this.value = UInteger.valueOf(number.intValue()); - return; - } + if (value instanceof java.lang.Number number) { + this.value = UInteger.valueOf(number.intValue()); + return; + } - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); - } + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); } + } - public static class UInt64 extends Number { - protected static final ArrowType dt = new ArrowType.Int(Long.SIZE, false); + public static class UInt64 extends Number { + protected static final ArrowType dt = new ArrowType.Int(Long.SIZE, false); - public UInt64() { - super(); - } + public UInt64() { + super(); + } - public UInt64(Object value) throws ValidationException { - super(value); - } + public UInt64(Object value) throws ValidationException { + super(value); + } - @Override - public ArrowType dataType() { - return dt; - } - - @Override - protected void setValue(Object value) throws ValidationException { - if (value instanceof CharSequence sequence) { - this.value = ULong.valueOf(sequence.toString()); - return; - } + @Override + public ArrowType dataType() { + return dt; + } - if (value instanceof java.lang.Number number) { - this.value = ULong.valueOf(number.longValue()); - return; - } + @Override + protected void setValue(Object value) throws ValidationException { + if (value instanceof CharSequence sequence) { + this.value = ULong.valueOf(sequence.toString()); + return; + } - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); - } + if (value instanceof java.lang.Number number) { + this.value = ULong.valueOf(number.longValue()); + return; + } + + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); } + } - public static class Float32 extends Number { - protected static final ArrowType dt = new ArrowType.FloatingPoint(FloatingPointPrecision.SINGLE); + public static class Float32 extends Number { + protected static final ArrowType dt = + new ArrowType.FloatingPoint(FloatingPointPrecision.SINGLE); - public Float32() { - super(); - } + public Float32() { + super(); + } - public Float32(Object value) throws ValidationException { - super(value); - } + public Float32(Object value) throws ValidationException { + super(value); + } + + @Override + public ArrowType dataType() { + return dt; + } - @Override - public ArrowType dataType() { - return dt; - } - - @Override - protected void setValue(Object value) throws ValidationException { - if (value instanceof CharSequence sequence) { - this.value = Float.valueOf(sequence.toString()); - return; - } + @Override + protected void setValue(Object value) throws ValidationException { + if (value instanceof CharSequence sequence) { + this.value = Float.valueOf(sequence.toString()); + return; + } - if (value instanceof java.lang.Number number) { - this.value = number.floatValue(); - return; - } + if (value instanceof java.lang.Number number) { + this.value = number.floatValue(); + return; + } - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); - } + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); } + } - public static class Float64 extends Number { - protected static final ArrowType dt = new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE); + public static class Float64 extends Number { + protected static final ArrowType dt = + new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE); - public Float64() { - super(); - } + public Float64() { + super(); + } + + public Float64(Object value) throws ValidationException { + super(value); + } - public Float64(Object value) throws ValidationException { - super(value); - } + @Override + public ArrowType dataType() { + return dt; + } - @Override - public ArrowType dataType() { - return dt; - } - - @Override - protected void setValue(Object value) throws ValidationException { - if (value instanceof CharSequence sequence) { - this.value = Double.valueOf(sequence.toString()); - return; - } + @Override + protected void setValue(Object value) throws ValidationException { + if (value instanceof CharSequence sequence) { + this.value = Double.valueOf(sequence.toString()); + return; + } - if (value instanceof java.lang.Number number) { - this.value = number.doubleValue(); - return; - } + if (value instanceof java.lang.Number number) { + this.value = number.doubleValue(); + return; + } - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); - } + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); } + } } diff --git a/lib/src/main/java/io/cloudquery/scalar/Scalar.java b/lib/src/main/java/io/cloudquery/scalar/Scalar.java index f1c6337..232540e 100644 --- a/lib/src/main/java/io/cloudquery/scalar/Scalar.java +++ b/lib/src/main/java/io/cloudquery/scalar/Scalar.java @@ -1,161 +1,159 @@ package io.cloudquery.scalar; import io.cloudquery.types.UUIDType; -import org.apache.arrow.vector.types.pojo.ArrowType; - import java.util.Objects; +import org.apache.arrow.vector.types.pojo.ArrowType; public abstract class Scalar { - protected T value; + protected T value; - public Scalar() { - } + public Scalar() {} - public Scalar(Object value) throws ValidationException { - this.set(value); - } + public Scalar(Object value) throws ValidationException { + this.set(value); + } - protected abstract void setValue(Object value) throws ValidationException; + protected abstract void setValue(Object value) throws ValidationException; - public abstract ArrowType dataType(); + public abstract ArrowType dataType(); - public java.lang.String toString() { - if (this.value != null) { - return this.value.toString(); - } - return NULL_VALUE_STRING; + public java.lang.String toString() { + if (this.value != null) { + return this.value.toString(); } + return NULL_VALUE_STRING; + } - public boolean isValid() { - return this.value != null; - } + public boolean isValid() { + return this.value != null; + } - public void set(Object value) throws ValidationException { - if (value == null) { - this.value = null; - return; - } - - if (value instanceof Scalar scalar) { - if (!scalar.isValid()) { - this.value = null; - return; - } - - this.set(scalar.get()); - return; - } - - this.setValue(value); + public void set(Object value) throws ValidationException { + if (value == null) { + this.value = null; + return; } - public T get() { - return this.value; - } + if (value instanceof Scalar scalar) { + if (!scalar.isValid()) { + this.value = null; + return; + } - public boolean equals(Object other) { - if (!(other instanceof Scalar o)) { - return false; - } + this.set(scalar.get()); + return; + } - if (!o.getClass().equals(this.getClass())) { - return false; - } + this.setValue(value); + } - if (this.value == null) { - return o.value == null; - } + public T get() { + return this.value; + } - return this.value.equals(o.value); + public boolean equals(Object other) { + if (!(other instanceof Scalar o)) { + return false; } - public final int hashCode() { - return Objects.hash(value); + if (!o.getClass().equals(this.getClass())) { + return false; } - public static final java.lang.String NULL_VALUE_STRING = "(null)"; - - public static Scalar fromArrowType(ArrowType arrowType) { - switch (arrowType.getTypeID()) { - case Timestamp -> { - return new Timestamp(); - } - case Binary -> { - return new Binary(); - } - case LargeBinary -> { - return new Binary.LargeBinary(); - } - case Bool -> { - return new Bool(); - } - case Utf8, LargeUtf8 -> { - return new String(); - } - case Int -> { - return fromIntArrowType((ArrowType.Int) arrowType); - } - case FloatingPoint -> { - return fromFloatArrowType((ArrowType.FloatingPoint) arrowType); - } - case Date -> { - return fromDateArrowType((ArrowType.Date) arrowType); - } - case Duration -> { - return new Duration(); - } - } - - if (arrowType instanceof ArrowType.ExtensionType extensionType) { - //noinspection SwitchStatementWithTooFewBranches - switch (extensionType.extensionName()) { - case UUIDType.EXTENSION_NAME -> { - return new UUID(); - } - // TODO: Add support for these types when scalar available - // case JSONType.EXTENSION_NAME -> { - // return new JSON(); - // } - // case INETType.EXTENSION_NAME -> { - // return new INET(); - // } - } - } - - throw new UnsupportedOperationException("Unsupported type: " + arrowType); + if (this.value == null) { + return o.value == null; } - private static Scalar fromIntArrowType(ArrowType.Int intType) { - Number numberType; - switch (intType.getBitWidth()) { - case 8 -> numberType = intType.getIsSigned() ? new Number.Int8() : new Number.UInt8(); - case 16 -> numberType = intType.getIsSigned() ? new Number.Int16() : new Number.UInt16(); - case 32 -> numberType = intType.getIsSigned() ? new Number.Int32() : new Number.UInt32(); - case 64 -> numberType = intType.getIsSigned() ? new Number.Int64() : new Number.UInt64(); - default -> throw new UnsupportedOperationException("Unsupported type: " + intType); - } - return numberType; + return this.value.equals(o.value); + } + + public final int hashCode() { + return Objects.hash(value); + } + + public static final java.lang.String NULL_VALUE_STRING = "(null)"; + + public static Scalar fromArrowType(ArrowType arrowType) { + switch (arrowType.getTypeID()) { + case Timestamp -> { + return new Timestamp(); + } + case Binary -> { + return new Binary(); + } + case LargeBinary -> { + return new Binary.LargeBinary(); + } + case Bool -> { + return new Bool(); + } + case Utf8, LargeUtf8 -> { + return new String(); + } + case Int -> { + return fromIntArrowType((ArrowType.Int) arrowType); + } + case FloatingPoint -> { + return fromFloatArrowType((ArrowType.FloatingPoint) arrowType); + } + case Date -> { + return fromDateArrowType((ArrowType.Date) arrowType); + } + case Duration -> { + return new Duration(); + } } - private static Scalar fromFloatArrowType(ArrowType.FloatingPoint floatType) { - Number numberType; - switch (floatType.getPrecision()) { - case SINGLE -> numberType = new Number.Float32(); - case DOUBLE -> numberType = new Number.Float64(); - default -> throw new UnsupportedOperationException("Unsupported type: " + floatType); + if (arrowType instanceof ArrowType.ExtensionType extensionType) { + //noinspection SwitchStatementWithTooFewBranches + switch (extensionType.extensionName()) { + case UUIDType.EXTENSION_NAME -> { + return new UUID(); } - return numberType; + // TODO: Add support for these types when scalar available + // case JSONType.EXTENSION_NAME -> { + // return new JSON(); + // } + // case INETType.EXTENSION_NAME -> { + // return new INET(); + // } + } } - private static Scalar fromDateArrowType(ArrowType.Date dateType) { - switch (dateType.getUnit()) { - case DAY -> { - return new DateDay(); - } - case MILLISECOND -> { - return new DateMilli(); - } - } - throw new UnsupportedOperationException("Unsupported type: " + dateType); + throw new UnsupportedOperationException("Unsupported type: " + arrowType); + } + + private static Scalar fromIntArrowType(ArrowType.Int intType) { + Number numberType; + switch (intType.getBitWidth()) { + case 8 -> numberType = intType.getIsSigned() ? new Number.Int8() : new Number.UInt8(); + case 16 -> numberType = intType.getIsSigned() ? new Number.Int16() : new Number.UInt16(); + case 32 -> numberType = intType.getIsSigned() ? new Number.Int32() : new Number.UInt32(); + case 64 -> numberType = intType.getIsSigned() ? new Number.Int64() : new Number.UInt64(); + default -> throw new UnsupportedOperationException("Unsupported type: " + intType); + } + return numberType; + } + + private static Scalar fromFloatArrowType(ArrowType.FloatingPoint floatType) { + Number numberType; + switch (floatType.getPrecision()) { + case SINGLE -> numberType = new Number.Float32(); + case DOUBLE -> numberType = new Number.Float64(); + default -> throw new UnsupportedOperationException("Unsupported type: " + floatType); + } + return numberType; + } + + private static Scalar fromDateArrowType(ArrowType.Date dateType) { + switch (dateType.getUnit()) { + case DAY -> { + return new DateDay(); + } + case MILLISECOND -> { + return new DateMilli(); + } } + throw new UnsupportedOperationException("Unsupported type: " + dateType); + } } diff --git a/lib/src/main/java/io/cloudquery/scalar/String.java b/lib/src/main/java/io/cloudquery/scalar/String.java index 17a4780..23d0d53 100644 --- a/lib/src/main/java/io/cloudquery/scalar/String.java +++ b/lib/src/main/java/io/cloudquery/scalar/String.java @@ -4,21 +4,21 @@ public class String extends Scalar { - public String() { - super(); - } + public String() { + super(); + } - public String(Object value) throws ValidationException { - super(value); - } + public String(Object value) throws ValidationException { + super(value); + } - @Override - public ArrowType dataType() { - return ArrowType.Utf8.INSTANCE; - } + @Override + public ArrowType dataType() { + return ArrowType.Utf8.INSTANCE; + } - @Override - public void setValue(Object value) throws ValidationException { - this.value = value.toString(); - } + @Override + public void setValue(Object value) throws ValidationException { + this.value = value.toString(); + } } diff --git a/lib/src/main/java/io/cloudquery/scalar/Timestamp.java b/lib/src/main/java/io/cloudquery/scalar/Timestamp.java index d7daf57..0c28e4e 100644 --- a/lib/src/main/java/io/cloudquery/scalar/Timestamp.java +++ b/lib/src/main/java/io/cloudquery/scalar/Timestamp.java @@ -1,61 +1,62 @@ package io.cloudquery.scalar; +import java.time.*; import org.apache.arrow.vector.types.TimeUnit; import org.apache.arrow.vector.types.pojo.ArrowType; -import java.time.*; - public class Timestamp extends Scalar { - public static final ZoneId zoneID = ZoneOffset.UTC; + public static final ZoneId zoneID = ZoneOffset.UTC; + + // TODO: add more units support later + private static final ArrowType dt = + new ArrowType.Timestamp(TimeUnit.MILLISECOND, zoneID.toString()); + + public Timestamp() { + super(); + } + + public Timestamp(Object value) throws ValidationException { + super(value); + } + + @Override + public ArrowType dataType() { + return dt; + } + + @Override + public void setValue(Object value) throws ValidationException { + if (value instanceof ZonedDateTime timestamp) { + this.value = timestamp.withZoneSameInstant(zoneID); + return; + } - // TODO: add more units support later - private static final ArrowType dt = new ArrowType.Timestamp(TimeUnit.MILLISECOND, zoneID.toString()); + if (value instanceof LocalDate date) { + this.value = date.atStartOfDay(zoneID); + return; + } - public Timestamp() { - super(); + if (value instanceof LocalDateTime date) { + this.value = date.atZone(zoneID); + return; } - public Timestamp(Object value) throws ValidationException { - super(value); + if (value instanceof Integer integer) { + this.value = ZonedDateTime.ofInstant(Instant.ofEpochMilli(integer), ZoneOffset.UTC); + return; } - @Override - public ArrowType dataType() { - return dt; + if (value instanceof Long longValue) { + this.value = ZonedDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneOffset.UTC); + return; } - @Override - public void setValue(Object value) throws ValidationException { - if (value instanceof ZonedDateTime timestamp) { - this.value = timestamp.withZoneSameInstant(zoneID); - return; - } - - if (value instanceof LocalDate date) { - this.value = date.atStartOfDay(zoneID); - return; - } - - if (value instanceof LocalDateTime date) { - this.value = date.atZone(zoneID); - return; - } - - if (value instanceof Integer integer) { - this.value = ZonedDateTime.ofInstant(Instant.ofEpochMilli(integer), ZoneOffset.UTC); - return; - } - - if (value instanceof Long longValue) { - this.value = ZonedDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneOffset.UTC); - return; - } - - if (value instanceof CharSequence sequence) { - this.value = ZonedDateTime.parse(sequence); - return; - } - - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + if (value instanceof CharSequence sequence) { + this.value = ZonedDateTime.parse(sequence); + return; } + + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + } } diff --git a/lib/src/main/java/io/cloudquery/scalar/UUID.java b/lib/src/main/java/io/cloudquery/scalar/UUID.java index b156f69..9f42ba8 100644 --- a/lib/src/main/java/io/cloudquery/scalar/UUID.java +++ b/lib/src/main/java/io/cloudquery/scalar/UUID.java @@ -1,50 +1,51 @@ package io.cloudquery.scalar; +import java.nio.ByteBuffer; import org.apache.arrow.vector.types.pojo.ArrowType; import org.apache.arrow.vector.types.pojo.ArrowType.FixedSizeBinary; -import java.nio.ByteBuffer; - public class UUID extends Scalar { - private static final int BYTE_WIDTH = 16; - private static final FixedSizeBinary dt = new FixedSizeBinary(BYTE_WIDTH); - - public UUID() { - super(); + private static final int BYTE_WIDTH = 16; + private static final FixedSizeBinary dt = new FixedSizeBinary(BYTE_WIDTH); + + public UUID() { + super(); + } + + public UUID(Object value) throws ValidationException { + super(value); + } + + @Override + public ArrowType dataType() { + return dt; + } + + @Override + public void setValue(Object value) throws ValidationException { + if (value instanceof java.util.UUID uuid) { + this.value = uuid; + return; } - public UUID(Object value) throws ValidationException { - super(value); + if (value instanceof CharSequence sequence) { + this.value = java.util.UUID.fromString(sequence.toString()); + return; } - @Override - public ArrowType dataType() { - return dt; + if (value instanceof byte[] b) { + if (b.length != BYTE_WIDTH) { + throw new ValidationException( + "[]byte must be " + BYTE_WIDTH + " bytes to convert to UUID", this.dataType(), b); + } + ByteBuffer byteBuffer = ByteBuffer.wrap(b); + long mostSig = byteBuffer.getLong(); + long leastSig = byteBuffer.getLong(); + this.value = new java.util.UUID(mostSig, leastSig); + return; } - @Override - public void setValue(Object value) throws ValidationException { - if (value instanceof java.util.UUID uuid) { - this.value = uuid; - return; - } - - if (value instanceof CharSequence sequence) { - this.value = java.util.UUID.fromString(sequence.toString()); - return; - } - - if (value instanceof byte[] b) { - if (b.length != BYTE_WIDTH) { - throw new ValidationException("[]byte must be " + BYTE_WIDTH + " bytes to convert to UUID", this.dataType(), b); - } - ByteBuffer byteBuffer = ByteBuffer.wrap(b); - long mostSig = byteBuffer.getLong(); - long leastSig = byteBuffer.getLong(); - this.value = new java.util.UUID(mostSig, leastSig); - return; - } - - throw new ValidationException(ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); - } + throw new ValidationException( + ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); + } } diff --git a/lib/src/main/java/io/cloudquery/scalar/ValidationException.java b/lib/src/main/java/io/cloudquery/scalar/ValidationException.java index e775eb3..5efc451 100644 --- a/lib/src/main/java/io/cloudquery/scalar/ValidationException.java +++ b/lib/src/main/java/io/cloudquery/scalar/ValidationException.java @@ -3,40 +3,43 @@ import org.apache.arrow.vector.types.pojo.ArrowType; public class ValidationException extends Exception { - public Throwable cause; - public java.lang.String message; - public ArrowType type; - private final Object value; - - static final java.lang.String NO_CONVERSION_AVAILABLE = "no conversion available"; - - - ValidationException(Throwable cause, java.lang.String message, ArrowType type, Object value) { - super(message, cause); - this.cause = cause; - this.message = message; - this.type = type; - this.value = value; - } - - ValidationException(java.lang.String message, ArrowType type, Object value) { - super(message); - this.message = message; - this.type = type; - this.value = value; - } - - public java.lang.String Error() { - if (this.cause == null) { - return java.lang.String.format("cannot set `%s` with value `%s`: %s", this.type, this.value, this.message); - } - return java.lang.String.format("cannot set `%s` with value `%s`: %s (%s)", this.type, this.value, this.message, this.cause); + public Throwable cause; + public java.lang.String message; + public ArrowType type; + private final Object value; + + static final java.lang.String NO_CONVERSION_AVAILABLE = "no conversion available"; + + ValidationException(Throwable cause, java.lang.String message, ArrowType type, Object value) { + super(message, cause); + this.cause = cause; + this.message = message; + this.type = type; + this.value = value; + } + + ValidationException(java.lang.String message, ArrowType type, Object value) { + super(message); + this.message = message; + this.type = type; + this.value = value; + } + + public java.lang.String Error() { + if (this.cause == null) { + return java.lang.String.format( + "cannot set `%s` with value `%s`: %s", this.type, this.value, this.message); } - - public java.lang.String Masked() { - if (this.cause == null) { - return java.lang.String.format("cannot set `%s`: %s", this.type.toString(), this.message); - } - return java.lang.String.format("cannot set `%s`: %s (%s)", this.type.toString(), this.message, this.cause); + return java.lang.String.format( + "cannot set `%s` with value `%s`: %s (%s)", + this.type, this.value, this.message, this.cause); + } + + public java.lang.String Masked() { + if (this.cause == null) { + return java.lang.String.format("cannot set `%s`: %s", this.type.toString(), this.message); } + return java.lang.String.format( + "cannot set `%s`: %s (%s)", this.type.toString(), this.message, this.cause); + } } diff --git a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java index 8a99093..be1650a 100644 --- a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java +++ b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java @@ -1,6 +1,5 @@ package io.cloudquery.scheduler; public class Scheduler { - public Scheduler() { - } + public Scheduler() {} } diff --git a/lib/src/main/java/io/cloudquery/schema/ClientMeta.java b/lib/src/main/java/io/cloudquery/schema/ClientMeta.java index aa9dffd..8356cfb 100644 --- a/lib/src/main/java/io/cloudquery/schema/ClientMeta.java +++ b/lib/src/main/java/io/cloudquery/schema/ClientMeta.java @@ -3,5 +3,4 @@ import lombok.Builder; @Builder -public class ClientMeta { -} +public class ClientMeta {} diff --git a/lib/src/main/java/io/cloudquery/schema/Column.java b/lib/src/main/java/io/cloudquery/schema/Column.java index 502c46c..bccfc26 100644 --- a/lib/src/main/java/io/cloudquery/schema/Column.java +++ b/lib/src/main/java/io/cloudquery/schema/Column.java @@ -8,49 +8,51 @@ @Builder(toBuilder = true) @Getter public class Column { - private String name; - private String description; - private ArrowType type; - private ColumnResolver resolver; - private boolean primaryKey; - private boolean notNull; - private boolean unique; - private boolean incrementalKey; - private boolean ignoreInTests; + private String name; + private String description; + private ArrowType type; + private ColumnResolver resolver; + private boolean primaryKey; + private boolean notNull; + private boolean unique; + private boolean incrementalKey; + private boolean ignoreInTests; - public static final Column CQ_ID_COLUMN = Column.builder(). - name("_cq_id"). - type(new UUIDType()). - description("Internal CQ ID of the row"). - notNull(true). - unique(true). - build(); - public static final Column CQ_PARENT_ID_COLUMN = Column.builder(). - name("_cq_parent_id"). - type(new UUIDType()). - description("Internal CQ ID of the parent row"). - resolver(new ParentCQUUIDResolver()). - ignoreInTests(true). - build(); + public static final Column CQ_ID_COLUMN = + Column.builder() + .name("_cq_id") + .type(new UUIDType()) + .description("Internal CQ ID of the row") + .notNull(true) + .unique(true) + .build(); + public static final Column CQ_PARENT_ID_COLUMN = + Column.builder() + .name("_cq_parent_id") + .type(new UUIDType()) + .description("Internal CQ ID of the parent row") + .resolver(new ParentCQUUIDResolver()) + .ignoreInTests(true) + .build(); - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append(name); - sb.append(":"); - sb.append(type.toString()); - if (primaryKey) { - sb.append(":PK"); - } - if (notNull) { - sb.append(":NotNull"); - } - if (unique) { - sb.append(":Unique"); - } - if (incrementalKey) { - sb.append(":IncrementalKey"); - } - return sb.toString(); + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(name); + sb.append(":"); + sb.append(type.toString()); + if (primaryKey) { + sb.append(":PK"); } + if (notNull) { + sb.append(":NotNull"); + } + if (unique) { + sb.append(":Unique"); + } + if (incrementalKey) { + sb.append(":IncrementalKey"); + } + return sb.toString(); + } } diff --git a/lib/src/main/java/io/cloudquery/schema/ColumnResolver.java b/lib/src/main/java/io/cloudquery/schema/ColumnResolver.java index 4e19307..ca7f3dd 100644 --- a/lib/src/main/java/io/cloudquery/schema/ColumnResolver.java +++ b/lib/src/main/java/io/cloudquery/schema/ColumnResolver.java @@ -3,5 +3,5 @@ import io.cloudquery.transformers.TransformerException; public interface ColumnResolver { - void resolve(ClientMeta meta, Resource resource, Column column) throws TransformerException; + void resolve(ClientMeta meta, Resource resource, Column column) throws TransformerException; } diff --git a/lib/src/main/java/io/cloudquery/schema/ParentCQUUIDResolver.java b/lib/src/main/java/io/cloudquery/schema/ParentCQUUIDResolver.java index 579d2d2..15e2e95 100644 --- a/lib/src/main/java/io/cloudquery/schema/ParentCQUUIDResolver.java +++ b/lib/src/main/java/io/cloudquery/schema/ParentCQUUIDResolver.java @@ -1,40 +1,42 @@ package io.cloudquery.schema; +import static io.cloudquery.schema.Column.CQ_ID_COLUMN; + import io.cloudquery.scalar.Scalar; import io.cloudquery.scalar.UUID; import io.cloudquery.scalar.ValidationException; import io.cloudquery.transformers.TransformerException; -import static io.cloudquery.schema.Column.CQ_ID_COLUMN; - public class ParentCQUUIDResolver implements ColumnResolver { - @Override - public void resolve(ClientMeta meta, Resource resource, Column column) throws TransformerException { - Resource parent = resource.getParent(); - if (parent == null) { - setOrThrow(resource, column, null); - return; - } - - Scalar parentCqID = parent.get(CQ_ID_COLUMN.getName()); - if (parentCqID == null) { - setOrThrow(resource, column, null); - return; - } + @Override + public void resolve(ClientMeta meta, Resource resource, Column column) + throws TransformerException { + Resource parent = resource.getParent(); + if (parent == null) { + setOrThrow(resource, column, null); + return; + } - if (!(parentCqID instanceof UUID)) { - setOrThrow(resource, column, null); - return; - } + Scalar parentCqID = parent.get(CQ_ID_COLUMN.getName()); + if (parentCqID == null) { + setOrThrow(resource, column, null); + return; + } - setOrThrow(resource, column, parentCqID); + if (!(parentCqID instanceof UUID)) { + setOrThrow(resource, column, null); + return; } - private static void setOrThrow(Resource resource, Column column, Scalar parentCqID) throws TransformerException { - try { - resource.set(column.getName(), parentCqID); - } catch (ValidationException ex) { - throw new TransformerException("Failed to set parent CQ ID", ex); - } + setOrThrow(resource, column, parentCqID); + } + + private static void setOrThrow(Resource resource, Column column, Scalar parentCqID) + throws TransformerException { + try { + resource.set(column.getName(), parentCqID); + } catch (ValidationException ex) { + throw new TransformerException("Failed to set parent CQ ID", ex); } + } } diff --git a/lib/src/main/java/io/cloudquery/schema/Resource.java b/lib/src/main/java/io/cloudquery/schema/Resource.java index 47c562a..2300882 100644 --- a/lib/src/main/java/io/cloudquery/schema/Resource.java +++ b/lib/src/main/java/io/cloudquery/schema/Resource.java @@ -2,40 +2,39 @@ import io.cloudquery.scalar.Scalar; import io.cloudquery.scalar.ValidationException; +import java.util.ArrayList; +import java.util.List; import lombok.Builder; import lombok.Getter; import lombok.NonNull; -import java.util.ArrayList; -import java.util.List; - @Getter public class Resource { - private Object item; - private Resource parent; - private Table table; + private Object item; + private Resource parent; + private Table table; - private final List> data; + private final List> data; - @Builder(toBuilder = true) - public Resource(@NonNull Table table, Resource parent, Object item) { - this.item = item; - this.parent = parent; - this.table = table; - this.data = new ArrayList<>(); + @Builder(toBuilder = true) + public Resource(@NonNull Table table, Resource parent, Object item) { + this.item = item; + this.parent = parent; + this.table = table; + this.data = new ArrayList<>(); - for (Column column : this.table.getColumns()) { - this.data.add(Scalar.fromArrowType(column.getType())); - } + for (Column column : this.table.getColumns()) { + this.data.add(Scalar.fromArrowType(column.getType())); } + } - public void set(String columnName, Object value) throws ValidationException { - int index = table.indexOfColumn(columnName); - this.data.get(index).set(value); - } + public void set(String columnName, Object value) throws ValidationException { + int index = table.indexOfColumn(columnName); + this.data.get(index).set(value); + } - public Scalar get(String columnName) { - int index = table.indexOfColumn(columnName); - return this.data.get(index); - } + public Scalar get(String columnName) { + int index = table.indexOfColumn(columnName); + return this.data.get(index); + } } diff --git a/lib/src/main/java/io/cloudquery/schema/SchemaException.java b/lib/src/main/java/io/cloudquery/schema/SchemaException.java index c56fb1a..235194f 100644 --- a/lib/src/main/java/io/cloudquery/schema/SchemaException.java +++ b/lib/src/main/java/io/cloudquery/schema/SchemaException.java @@ -1,22 +1,22 @@ package io.cloudquery.schema; public class SchemaException extends Exception { - public SchemaException() { - } + public SchemaException() {} - public SchemaException(String message) { - super(message); - } + public SchemaException(String message) { + super(message); + } - public SchemaException(String message, Throwable cause) { - super(message, cause); - } + public SchemaException(String message, Throwable cause) { + super(message, cause); + } - public SchemaException(Throwable cause) { - super(cause); - } + public SchemaException(Throwable cause) { + super(cause); + } - public SchemaException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); - } + public SchemaException( + String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } } diff --git a/lib/src/main/java/io/cloudquery/schema/Table.java b/lib/src/main/java/io/cloudquery/schema/Table.java index 0fe0a43..d8216cd 100644 --- a/lib/src/main/java/io/cloudquery/schema/Table.java +++ b/lib/src/main/java/io/cloudquery/schema/Table.java @@ -1,13 +1,10 @@ package io.cloudquery.schema; +import static java.util.Arrays.asList; + import io.cloudquery.glob.Glob; import io.cloudquery.schema.Column.ColumnBuilder; import io.cloudquery.transformers.TransformerException; -import lombok.Builder; -import lombok.Getter; -import lombok.NonNull; -import lombok.Setter; - import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -15,210 +12,220 @@ import java.util.Map; import java.util.Optional; import java.util.function.Predicate; - +import lombok.Builder; +import lombok.Getter; +import lombok.NonNull; +import lombok.Setter; import org.apache.arrow.vector.types.pojo.Field; import org.apache.arrow.vector.types.pojo.Schema; -import static java.util.Arrays.asList; - @Builder(toBuilder = true) @Getter public class Table { - public interface Transform { - void transformTable(Table table) throws TransformerException; + public interface Transform { + void transformTable(Table table) throws TransformerException; + } + + public static List
flattenTables(List
tables) { + Map flattenMap = new HashMap<>(); + for (Table table : tables) { + Table newTable = table.toBuilder().relations(Collections.emptyList()).build(); + flattenMap.put(newTable.name, newTable); + for (Table child : flattenTables(table.getRelations())) { + flattenMap.put(child.name, child); + } + } + return flattenMap.values().stream().toList(); + } + + public static List
filterDFS( + List
tables, + List includeConfiguration, + List skipConfiguration, + boolean skipDependentTables) + throws SchemaException { + List
flattenedTables = flattenTables(tables); + for (String includePattern : includeConfiguration) { + boolean includeMatch = false; + for (Table table : flattenedTables) { + if (Glob.match(includePattern, table.getName())) { + includeMatch = true; + break; + } + } + if (!includeMatch) { + throw new SchemaException( + "table configuration includes a pattern \"" + includePattern + "\" with no matches"); + } + } + for (String excludePattern : skipConfiguration) { + boolean excludeMatch = false; + for (Table table : flattenedTables) { + if (Glob.match(excludePattern, table.getName())) { + excludeMatch = true; + break; + } + } + if (!excludeMatch) { + throw new SchemaException( + "skip configuration includes a pattern \"" + excludePattern + "\" with no matches"); + } } - public static List
flattenTables(List
tables) { - Map flattenMap = new HashMap<>(); - for (Table table : tables) { - Table newTable = table.toBuilder().relations(Collections.emptyList()).build(); - flattenMap.put(newTable.name, newTable); - for (Table child : flattenTables(table.getRelations())) { - flattenMap.put(child.name, child); - } - } - return flattenMap.values().stream().toList(); - } - - public static List
filterDFS(List
tables, List includeConfiguration, - List skipConfiguration, boolean skipDependentTables) throws SchemaException { - List
flattenedTables = flattenTables(tables); - for (String includePattern : includeConfiguration) { - boolean includeMatch = false; - for (Table table : flattenedTables) { - if (Glob.match(includePattern, table.getName())) { - includeMatch = true; - break; - } - } - if (!includeMatch) { - throw new SchemaException( - "table configuration includes a pattern \"" + includePattern + "\" with no matches"); - } - } - for (String excludePattern : skipConfiguration) { - boolean excludeMatch = false; - for (Table table : flattenedTables) { - if (Glob.match(excludePattern, table.getName())) { - excludeMatch = true; - break; - } - } - if (!excludeMatch) { - throw new SchemaException( - "skip configuration includes a pattern \"" + excludePattern + "\" with no matches"); - } - } - - Predicate
include = table -> { - for (String includePattern : includeConfiguration) { - if (Glob.match(includePattern, table.getName())) { - return true; - } + Predicate
include = + table -> { + for (String includePattern : includeConfiguration) { + if (Glob.match(includePattern, table.getName())) { + return true; } - return false; + } + return false; }; - Predicate
exclude = table -> { - for (String excludePattern : skipConfiguration) { - if (Glob.match(excludePattern, table.getName())) { - return true; - } + Predicate
exclude = + table -> { + for (String excludePattern : skipConfiguration) { + if (Glob.match(excludePattern, table.getName())) { + return true; } - return false; + } + return false; }; - return filterDFSFunc(tables, include, exclude, skipDependentTables); + return filterDFSFunc(tables, include, exclude, skipDependentTables); + } + + private static List
filterDFSFunc( + List
tables, + Predicate
include, + Predicate
exclude, + boolean skipDependentTables) { + List
filteredTables = new ArrayList<>(); + for (Table table : tables) { + Table filteredTable = table.toBuilder().parent(null).build(); + Optional
optionalFilteredTable = + filteredTable.filterDfs(false, include, exclude, skipDependentTables); + optionalFilteredTable.ifPresent(filteredTables::add); } + return filteredTables; + } - private static List
filterDFSFunc(List
tables, Predicate
include, Predicate
exclude, - boolean skipDependentTables) { - List
filteredTables = new ArrayList<>(); - for (Table table : tables) { - Table filteredTable = table.toBuilder().parent(null).build(); - Optional
optionalFilteredTable = filteredTable.filterDfs(false, include, exclude, - skipDependentTables); - optionalFilteredTable.ifPresent(filteredTables::add); - } - return filteredTables; + public static int maxDepth(List
tables) { + int depth = 0; + if (tables.isEmpty()) { + return 0; } - - public static int maxDepth(List
tables) { - int depth = 0; - if (tables.isEmpty()) { - return 0; - } - for (Table table : tables) { - int newDepth = 1 + maxDepth(table.getRelations()); - if (newDepth > depth) { - depth = newDepth; - } - } - return depth; + for (Table table : tables) { + int newDepth = 1 + maxDepth(table.getRelations()); + if (newDepth > depth) { + depth = newDepth; + } } + return depth; + } - @NonNull - private String name; - private String title; - private String description; - @Setter - private Table parent; - @Builder.Default - private List columns = new ArrayList<>(); + @NonNull private String name; + private String title; + private String description; + @Setter private Table parent; + @Builder.Default private List columns = new ArrayList<>(); - @Builder.Default - private List
relations = new ArrayList<>(); + @Builder.Default private List
relations = new ArrayList<>(); - private Transform transform; + private Transform transform; - public void transform() throws TransformerException { - if (transform != null) { - transform.transformTable(this); - } + public void transform() throws TransformerException { + if (transform != null) { + transform.transformTable(this); } + } - public void addCQIDs() { - boolean havePrimaryKeys = !primaryKeys().isEmpty(); - ColumnBuilder cqIdColumnBuilder = Column.CQ_ID_COLUMN.toBuilder(); - if (!havePrimaryKeys) { - cqIdColumnBuilder.primaryKey(true); - } - - List newColumns = List.of(cqIdColumnBuilder.build(), Column.CQ_PARENT_ID_COLUMN); - for (int i = 0; i < newColumns.size(); i++) { - columns.add(i, newColumns.get(i)); - } - - for (Table relation : relations) { - relation.addCQIDs(); - } + public void addCQIDs() { + boolean havePrimaryKeys = !primaryKeys().isEmpty(); + ColumnBuilder cqIdColumnBuilder = Column.CQ_ID_COLUMN.toBuilder(); + if (!havePrimaryKeys) { + cqIdColumnBuilder.primaryKey(true); } - public int indexOfColumn(String columnName) { - for (int index = 0; index < columns.size(); index++) { - if (columns.get(index).getName().equals(columnName)) { - return index; - } - } - return -1; + List newColumns = List.of(cqIdColumnBuilder.build(), Column.CQ_PARENT_ID_COLUMN); + for (int i = 0; i < newColumns.size(); i++) { + columns.add(i, newColumns.get(i)); } - public List primaryKeys() { - return columns.stream().filter(Column::isPrimaryKey).map(Column::getName).toList(); + for (Table relation : relations) { + relation.addCQIDs(); } + } - private Optional
filterDfs(boolean parentMatched, Predicate
include, Predicate
exclude, - boolean skipDependentTables) { - if (exclude.test(this)) { - return Optional.empty(); - } - boolean matched = parentMatched && !skipDependentTables; - if (include.test(this)) { - matched = true; - } - List
filteredRelations = new ArrayList<>(); - for (Table relation : relations) { - Optional
filteredChild = relation.filterDfs(matched, include, exclude, skipDependentTables); - if (filteredChild.isPresent()) { - matched = true; - filteredRelations.add(filteredChild.get()); - } - } - this.relations = filteredRelations; - if (matched) { - return Optional.of(this); - } - return Optional.empty(); + public int indexOfColumn(String columnName) { + for (int index = 0; index < columns.size(); index++) { + if (columns.get(index).getName().equals(columnName)) { + return index; + } } - - public Optional getColumn(String name) { - for (Column column : columns) { - if (column.getName().equals(name)) { - return Optional.of(column); - } - } - return Optional.empty(); + return -1; + } + + public List primaryKeys() { + return columns.stream().filter(Column::isPrimaryKey).map(Column::getName).toList(); + } + + private Optional
filterDfs( + boolean parentMatched, + Predicate
include, + Predicate
exclude, + boolean skipDependentTables) { + if (exclude.test(this)) { + return Optional.empty(); } - - public Schema toArrowSchema() { - Field[] fields = new Field[columns.size()]; - for (int i = 0; i < columns.size(); i++) { - Column column = columns.get(i); - Field field = Field.nullable(column.getName(), column.getType()); - fields[i] = field; - } - Map metadata = new HashMap<>(); - metadata.put("cq:table_name", name); - if (title != null) { - metadata.put("cq:table_title", title); - } - if (description != null) { - metadata.put("cq:table_description", description); - } - if (parent != null) { - metadata.put("cq:table_depends_on", parent.getName()); - } - Schema schema = new Schema(asList(fields), metadata); - return schema; + boolean matched = parentMatched && !skipDependentTables; + if (include.test(this)) { + matched = true; + } + List
filteredRelations = new ArrayList<>(); + for (Table relation : relations) { + Optional
filteredChild = + relation.filterDfs(matched, include, exclude, skipDependentTables); + if (filteredChild.isPresent()) { + matched = true; + filteredRelations.add(filteredChild.get()); + } + } + this.relations = filteredRelations; + if (matched) { + return Optional.of(this); + } + return Optional.empty(); + } + + public Optional getColumn(String name) { + for (Column column : columns) { + if (column.getName().equals(name)) { + return Optional.of(column); + } + } + return Optional.empty(); + } + + public Schema toArrowSchema() { + Field[] fields = new Field[columns.size()]; + for (int i = 0; i < columns.size(); i++) { + Column column = columns.get(i); + Field field = Field.nullable(column.getName(), column.getType()); + fields[i] = field; + } + Map metadata = new HashMap<>(); + metadata.put("cq:table_name", name); + if (title != null) { + metadata.put("cq:table_title", title); + } + if (description != null) { + metadata.put("cq:table_description", description); + } + if (parent != null) { + metadata.put("cq:table_depends_on", parent.getName()); } + Schema schema = new Schema(asList(fields), metadata); + return schema; + } } diff --git a/lib/src/main/java/io/cloudquery/server/AddressConverter.java b/lib/src/main/java/io/cloudquery/server/AddressConverter.java index ac424f5..e0a0cb6 100644 --- a/lib/src/main/java/io/cloudquery/server/AddressConverter.java +++ b/lib/src/main/java/io/cloudquery/server/AddressConverter.java @@ -3,20 +3,16 @@ import picocli.CommandLine.ITypeConverter; public class AddressConverter implements ITypeConverter { - public static class AddressParseException extends RuntimeException { + public static class AddressParseException extends RuntimeException {} - } - public record Address(String host, int port) { - } + public record Address(String host, int port) {} - @Override - public Address convert(String rawAddress) throws Exception { - String[] components = rawAddress.split(":"); - if (components.length != 2) { - throw new AddressParseException(); - } - return new Address(components[0], Integer.parseInt(components[1])); + @Override + public Address convert(String rawAddress) throws Exception { + String[] components = rawAddress.split(":"); + if (components.length != 2) { + throw new AddressParseException(); } - - + return new Address(components[0], Integer.parseInt(components[1])); + } } diff --git a/lib/src/main/java/io/cloudquery/server/PluginServe.java b/lib/src/main/java/io/cloudquery/server/PluginServe.java index 7fffc5a..3698af6 100644 --- a/lib/src/main/java/io/cloudquery/server/PluginServe.java +++ b/lib/src/main/java/io/cloudquery/server/PluginServe.java @@ -8,12 +8,10 @@ @Builder(access = AccessLevel.PUBLIC) public class PluginServe { - @NonNull - private final Plugin plugin; - @Builder.Default - private String[] args = new String[] {}; + @NonNull private final Plugin plugin; + @Builder.Default private String[] args = new String[] {}; - public int Serve() { - return new CommandLine(new RootCommand()).addSubcommand(new ServeCommand(plugin)).execute(args); - } + public int Serve() { + return new CommandLine(new RootCommand()).addSubcommand(new ServeCommand(plugin)).execute(args); + } } diff --git a/lib/src/main/java/io/cloudquery/server/RootCommand.java b/lib/src/main/java/io/cloudquery/server/RootCommand.java index aa8bbd9..fd4dedd 100644 --- a/lib/src/main/java/io/cloudquery/server/RootCommand.java +++ b/lib/src/main/java/io/cloudquery/server/RootCommand.java @@ -3,5 +3,4 @@ import picocli.CommandLine; @CommandLine.Command -public class RootCommand { -} \ No newline at end of file +public class RootCommand {} diff --git a/lib/src/main/java/io/cloudquery/server/ServeCommand.java b/lib/src/main/java/io/cloudquery/server/ServeCommand.java index b67cb82..4802e27 100644 --- a/lib/src/main/java/io/cloudquery/server/ServeCommand.java +++ b/lib/src/main/java/io/cloudquery/server/ServeCommand.java @@ -1,5 +1,7 @@ package io.cloudquery.server; +import static picocli.CommandLine.Option; + import io.cloudquery.internal.servers.discovery.v1.DiscoverServer; import io.cloudquery.internal.servers.plugin.v3.PluginServer; import io.cloudquery.plugin.Plugin; @@ -8,89 +10,104 @@ import io.grpc.InsecureServerCredentials; import io.grpc.Server; import io.grpc.protobuf.services.ProtoReflectionService; -import lombok.ToString; -import picocli.CommandLine.Command; import java.io.IOException; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.Executors; - -import org.apache.logging.log4j.Logger; +import lombok.ToString; import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.core.layout.JsonLayout; -import org.apache.logging.log4j.core.layout.PatternLayout; +import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.appender.ConsoleAppender; import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.config.LoggerConfig; - -import static picocli.CommandLine.Option; +import org.apache.logging.log4j.core.layout.JsonLayout; +import org.apache.logging.log4j.core.layout.PatternLayout; +import picocli.CommandLine.Command; @Command(name = "serve", description = "start plugin gRPC server") @ToString public class ServeCommand implements Callable { - private static Logger logger; - public static final List DISCOVERY_VERSIONS = List.of(3); - - @Option(names = "--address", converter = AddressConverter.class, description = "address to serve on. can be tcp: localhost:7777 or unix socket: `/tmp/plugin.rpc.sock` (default \"${DEFAULT-VALUE}\")") - private Address address = new Address("localhost", 7777); - - @Option(names = "--log-format", description = "log format. one of: text,json (default \"${DEFAULT-VALUE}\")") - private String logFormat = "text"; - - @Option(names = "--log-level", description = "log level. one of: trace,debug,info,warn,error (default \"${DEFAULT-VALUE}\")") - private String logLevel = "info"; - - @Option(names = "--network", description = "the network must be \"tcp\", \"tcp4\", \"tcp6\", \"unix\" or \"unixpacket\" (default \"${DEFAULT-VALUE}\")") - private String network = "tcp"; - - @Option(names = "--disable-sentry", description = "disable sentry") - private Boolean disableSentry = false; - - @Option(names = "--otel-endpoint", description = "Open Telemetry HTTP collector endpoint") - private String otelEndpoint = ""; - - @Option(names = "--otel-endpoint-insecure", description = "use Open Telemetry HTTP endpoint (for development only)") - private Boolean otelEndpointInsecure = false; - - private final Plugin plugin; - - public ServeCommand(Plugin plugin) { - this.plugin = plugin; + private static Logger logger; + public static final List DISCOVERY_VERSIONS = List.of(3); + + @Option( + names = "--address", + converter = AddressConverter.class, + description = + "address to serve on. can be tcp: localhost:7777 or unix socket: `/tmp/plugin.rpc.sock` (default \"${DEFAULT-VALUE}\")") + private Address address = new Address("localhost", 7777); + + @Option( + names = "--log-format", + description = "log format. one of: text,json (default \"${DEFAULT-VALUE}\")") + private String logFormat = "text"; + + @Option( + names = "--log-level", + description = "log level. one of: trace,debug,info,warn,error (default \"${DEFAULT-VALUE}\")") + private String logLevel = "info"; + + @Option( + names = "--network", + description = + "the network must be \"tcp\", \"tcp4\", \"tcp6\", \"unix\" or \"unixpacket\" (default \"${DEFAULT-VALUE}\")") + private String network = "tcp"; + + @Option(names = "--disable-sentry", description = "disable sentry") + private Boolean disableSentry = false; + + @Option(names = "--otel-endpoint", description = "Open Telemetry HTTP collector endpoint") + private String otelEndpoint = ""; + + @Option( + names = "--otel-endpoint-insecure", + description = "use Open Telemetry HTTP endpoint (for development only)") + private Boolean otelEndpointInsecure = false; + + private final Plugin plugin; + + public ServeCommand(Plugin plugin) { + this.plugin = plugin; + } + + private LoggerContext initLogger() { + ConsoleAppender appender = + ConsoleAppender.createDefaultAppenderForLayout( + this.logFormat == "text" + ? PatternLayout.createDefaultLayout() + : JsonLayout.createDefaultLayout()); + + Configuration configuration = ConfigurationFactory.newConfigurationBuilder().build(); + configuration.addAppender(appender); + LoggerConfig loggerConfig = new LoggerConfig("io.cloudquery", Level.getLevel(logLevel), false); + loggerConfig.addAppender(appender, null, null); + configuration.addLogger("io.cloudquery", loggerConfig); + LoggerContext context = new LoggerContext(ServeCommand.class.getName() + "Context"); + context.start(configuration); + + logger = context.getLogger(ServeCommand.class.getName()); + return context; + } + + @Override + public Integer call() { + try (LoggerContext context = this.initLogger()) { + Server server = + Grpc.newServerBuilderForPort(address.port(), InsecureServerCredentials.create()) + .addService(new DiscoverServer(DISCOVERY_VERSIONS)) + .addService(new PluginServer(plugin)) + .addService(ProtoReflectionService.newInstance()) + .executor(Executors.newFixedThreadPool(10)) + .build(); + server.start(); + logger.info("Started server on {}:{}", address.host(), address.port()); + server.awaitTermination(); + return 0; + } catch (IOException | InterruptedException e) { + logger.error("Failed to start server", e); + return 1; } - - private LoggerContext initLogger() { - ConsoleAppender appender = ConsoleAppender.createDefaultAppenderForLayout( - this.logFormat == "text" ? PatternLayout.createDefaultLayout() : JsonLayout.createDefaultLayout()); - - Configuration configuration = ConfigurationFactory.newConfigurationBuilder().build(); - configuration.addAppender(appender); - LoggerConfig loggerConfig = new LoggerConfig("io.cloudquery", Level.getLevel(logLevel), false); - loggerConfig.addAppender(appender, null, null); - configuration.addLogger("io.cloudquery", loggerConfig); - LoggerContext context = new LoggerContext(ServeCommand.class.getName() + "Context"); - context.start(configuration); - - logger = context.getLogger(ServeCommand.class.getName()); - return context; - } - - @Override - public Integer call() { - try (LoggerContext context = this.initLogger()) { - Server server = Grpc.newServerBuilderForPort(address.port(), InsecureServerCredentials.create()) - .addService(new DiscoverServer(DISCOVERY_VERSIONS)).addService(new PluginServer(plugin)) - .addService(ProtoReflectionService.newInstance()).executor(Executors.newFixedThreadPool(10)) - .build(); - server.start(); - logger.info("Started server on {}:{}", address.host(), address.port()); - server.awaitTermination(); - return 0; - } catch (IOException | InterruptedException e) { - logger.error("Failed to start server", e); - return 1; - } - } - + } } diff --git a/lib/src/main/java/io/cloudquery/transformers/IgnoreInTestsTransformer.java b/lib/src/main/java/io/cloudquery/transformers/IgnoreInTestsTransformer.java index 777cd4a..ce153f5 100644 --- a/lib/src/main/java/io/cloudquery/transformers/IgnoreInTestsTransformer.java +++ b/lib/src/main/java/io/cloudquery/transformers/IgnoreInTestsTransformer.java @@ -4,12 +4,12 @@ public interface IgnoreInTestsTransformer { - boolean transform(Field field); + boolean transform(Field field); - class DefaultIgnoreInTestsTransformer implements IgnoreInTestsTransformer { - @Override - public boolean transform(Field field) { - return false; - } + class DefaultIgnoreInTestsTransformer implements IgnoreInTestsTransformer { + @Override + public boolean transform(Field field) { + return false; } + } } diff --git a/lib/src/main/java/io/cloudquery/transformers/NameTransformer.java b/lib/src/main/java/io/cloudquery/transformers/NameTransformer.java index 7abc02d..875be32 100644 --- a/lib/src/main/java/io/cloudquery/transformers/NameTransformer.java +++ b/lib/src/main/java/io/cloudquery/transformers/NameTransformer.java @@ -2,30 +2,29 @@ import com.fasterxml.jackson.annotation.JsonProperty; import io.cloudquery.caser.Caser; - import java.lang.reflect.Field; public interface NameTransformer { - String transform(Field field) throws TransformerException; + String transform(Field field) throws TransformerException; - class DefaultNameTransformer implements NameTransformer { - private final Caser caser = Caser.builder().build(); + class DefaultNameTransformer implements NameTransformer { + private final Caser caser = Caser.builder().build(); - /** - * Transforms the field name to the name of the property in the JSON - * or use the {@link Caser#toSnake(String)} if no annotation. - * - * @param field Field to transform - * @return Transformed field name - */ - @Override - public String transform(Field field) { - JsonProperty annotation = field.getAnnotation(JsonProperty.class); - if (annotation != null) { - return annotation.value(); - } - return caser.toSnake(field.getName()); - } + /** + * Transforms the field name to the name of the property in the JSON or use the {@link + * Caser#toSnake(String)} if no annotation. + * + * @param field Field to transform + * @return Transformed field name + */ + @Override + public String transform(Field field) { + JsonProperty annotation = field.getAnnotation(JsonProperty.class); + if (annotation != null) { + return annotation.value(); + } + return caser.toSnake(field.getName()); } + } } diff --git a/lib/src/main/java/io/cloudquery/transformers/ResolverTransformer.java b/lib/src/main/java/io/cloudquery/transformers/ResolverTransformer.java index 2385147..2a1b517 100644 --- a/lib/src/main/java/io/cloudquery/transformers/ResolverTransformer.java +++ b/lib/src/main/java/io/cloudquery/transformers/ResolverTransformer.java @@ -4,23 +4,22 @@ import io.cloudquery.helper.ReflectionPathResolver.PathResolverException; import io.cloudquery.scalar.ValidationException; import io.cloudquery.schema.ColumnResolver; - import java.lang.reflect.Field; public interface ResolverTransformer { - ColumnResolver transform(Field field, String path) throws TransformerException; + ColumnResolver transform(Field field, String path) throws TransformerException; - class DefaulResolverTransformer implements ResolverTransformer { - @Override - public ColumnResolver transform(Field field, String path) throws TransformerException { - return (meta, resource, column) -> { - try { - resource.set(column.getName(), ReflectionPathResolver.resolve(resource.getItem(), path)); - } catch (PathResolverException | ValidationException ex) { - throw new TransformerException("Failed to resolve path: " + path, ex); - } - }; + class DefaulResolverTransformer implements ResolverTransformer { + @Override + public ColumnResolver transform(Field field, String path) throws TransformerException { + return (meta, resource, column) -> { + try { + resource.set(column.getName(), ReflectionPathResolver.resolve(resource.getItem(), path)); + } catch (PathResolverException | ValidationException ex) { + throw new TransformerException("Failed to resolve path: " + path, ex); } + }; } + } } diff --git a/lib/src/main/java/io/cloudquery/transformers/Tables.java b/lib/src/main/java/io/cloudquery/transformers/Tables.java index 47b4fad..f038c86 100644 --- a/lib/src/main/java/io/cloudquery/transformers/Tables.java +++ b/lib/src/main/java/io/cloudquery/transformers/Tables.java @@ -1,32 +1,32 @@ package io.cloudquery.transformers; -import io.cloudquery.schema.Table; +import static io.cloudquery.schema.Table.*; +import io.cloudquery.schema.Table; import java.util.List; -import static io.cloudquery.schema.Table.*; - class Tables { - public static void setParents(List
tables, Table parent) { - for (Table table : tables) { - table.setParent(parent); - setParents(table.getRelations(), table); - } + public static void setParents(List
tables, Table parent) { + for (Table table : tables) { + table.setParent(parent); + setParents(table.getRelations(), table); } + } - public static void transformTables(List
tables) throws TransformerException { - for (Table table : tables) { - table.transform(); - transformTables(table.getRelations()); - } + public static void transformTables(List
tables) throws TransformerException { + for (Table table : tables) { + table.transform(); + transformTables(table.getRelations()); } + } - public static void apply(List
tables, List extraTransformers) throws TransformerException { - for (Table table : tables) { - for (Transform extraTransformer : extraTransformers) { - extraTransformer.transformTable(table); - } - apply(table.getRelations(), extraTransformers); - } + public static void apply(List
tables, List extraTransformers) + throws TransformerException { + for (Table table : tables) { + for (Transform extraTransformer : extraTransformers) { + extraTransformer.transformTable(table); + } + apply(table.getRelations(), extraTransformers); } + } } diff --git a/lib/src/main/java/io/cloudquery/transformers/TransformWithClass.java b/lib/src/main/java/io/cloudquery/transformers/TransformWithClass.java index ef1c37d..f42b7a9 100644 --- a/lib/src/main/java/io/cloudquery/transformers/TransformWithClass.java +++ b/lib/src/main/java/io/cloudquery/transformers/TransformWithClass.java @@ -1,93 +1,92 @@ package io.cloudquery.transformers; +import static io.cloudquery.schema.Table.*; +import static io.cloudquery.transformers.IgnoreInTestsTransformer.DefaultIgnoreInTestsTransformer; +import static io.cloudquery.transformers.NameTransformer.DefaultNameTransformer; +import static io.cloudquery.transformers.ResolverTransformer.DefaulResolverTransformer; +import static io.cloudquery.transformers.TypeTransformer.DefaultTypeTransformer; + import io.cloudquery.schema.Column; import io.cloudquery.schema.Column.ColumnBuilder; import io.cloudquery.schema.Table; -import lombok.Builder; -import lombok.Singular; - import java.lang.reflect.Field; import java.util.HashSet; import java.util.Set; - -import static io.cloudquery.schema.Table.*; -import static io.cloudquery.transformers.IgnoreInTestsTransformer.DefaultIgnoreInTestsTransformer; -import static io.cloudquery.transformers.NameTransformer.DefaultNameTransformer; -import static io.cloudquery.transformers.ResolverTransformer.DefaulResolverTransformer; -import static io.cloudquery.transformers.TypeTransformer.DefaultTypeTransformer; +import lombok.Builder; +import lombok.Singular; @Builder(builderMethodName = "innerBuilder") public class TransformWithClass implements Transform { - @Builder.Default - private NameTransformer nameTransformer = new DefaultNameTransformer(); - @Builder.Default - private TypeTransformer typeTransformer = new DefaultTypeTransformer(); - @Builder.Default - private ResolverTransformer resolverTransformer = new DefaulResolverTransformer(); - @Builder.Default - private IgnoreInTestsTransformer ignoreInTestsTransformer = new DefaultIgnoreInTestsTransformer(); - - @Singular - private Set pkFields; - private final Set pkFieldsFound = new HashSet<>(); - - @Singular - private Set unwrapFields; - - private final Class clazz; - - @Override - public void transformTable(Table table) throws TransformerException { - for (Field field : clazz.getDeclaredFields()) { - if (shouldUnwrapField(field)) { - for (Field innerField : field.getType().getDeclaredFields()) { - addColumnFromField(table, innerField, field); - } - } else { - addColumnFromField(table, field, null); - } - } + @Builder.Default private NameTransformer nameTransformer = new DefaultNameTransformer(); + @Builder.Default private TypeTransformer typeTransformer = new DefaultTypeTransformer(); - validatePrimaryKeysHaveBeenFound(); - } + @Builder.Default + private ResolverTransformer resolverTransformer = new DefaulResolverTransformer(); + @Builder.Default + private IgnoreInTestsTransformer ignoreInTestsTransformer = new DefaultIgnoreInTestsTransformer(); - private void addColumnFromField(Table table, Field field, Field parent) throws TransformerException { - String path = field.getName(); - String name = nameTransformer.transform(field); + @Singular private Set pkFields; + private final Set pkFieldsFound = new HashSet<>(); - if (parent != null) { - name = nameTransformer.transform(parent) + "_" + name; - path = parent.getName() + "." + path; - } + @Singular private Set unwrapFields; - ColumnBuilder columnBuilder = Column.builder(). - name(name). - type(typeTransformer.transform(field)). - resolver(resolverTransformer.transform(field, path)). - ignoreInTests(ignoreInTestsTransformer.transform(field)); + private final Class clazz; - if (pkFields.contains(path)) { - columnBuilder.primaryKey(true); - pkFieldsFound.add(path); + @Override + public void transformTable(Table table) throws TransformerException { + for (Field field : clazz.getDeclaredFields()) { + if (shouldUnwrapField(field)) { + for (Field innerField : field.getType().getDeclaredFields()) { + addColumnFromField(table, innerField, field); } - - table.getColumns().add(columnBuilder.build()); + } else { + addColumnFromField(table, field, null); + } } - private boolean shouldUnwrapField(Field field) { - return unwrapFields.contains(field.getName()); + validatePrimaryKeysHaveBeenFound(); + } + + private void addColumnFromField(Table table, Field field, Field parent) + throws TransformerException { + String path = field.getName(); + String name = nameTransformer.transform(field); + + if (parent != null) { + name = nameTransformer.transform(parent) + "_" + name; + path = parent.getName() + "." + path; } - private void validatePrimaryKeysHaveBeenFound() throws TransformerException { - Set missingPrimaryKeys = new HashSet<>(pkFields); - missingPrimaryKeys.removeAll(pkFieldsFound); - if (!missingPrimaryKeys.isEmpty()) { - throw new TransformerException("failed to create all of the desired primary keys: " + missingPrimaryKeys); - } + ColumnBuilder columnBuilder = + Column.builder() + .name(name) + .type(typeTransformer.transform(field)) + .resolver(resolverTransformer.transform(field, path)) + .ignoreInTests(ignoreInTestsTransformer.transform(field)); + + if (pkFields.contains(path)) { + columnBuilder.primaryKey(true); + pkFieldsFound.add(path); } - public static TransformWithClassBuilder builder(Class clazz) { - return innerBuilder().clazz(clazz); + table.getColumns().add(columnBuilder.build()); + } + + private boolean shouldUnwrapField(Field field) { + return unwrapFields.contains(field.getName()); + } + + private void validatePrimaryKeysHaveBeenFound() throws TransformerException { + Set missingPrimaryKeys = new HashSet<>(pkFields); + missingPrimaryKeys.removeAll(pkFieldsFound); + if (!missingPrimaryKeys.isEmpty()) { + throw new TransformerException( + "failed to create all of the desired primary keys: " + missingPrimaryKeys); } + } + + public static TransformWithClassBuilder builder(Class clazz) { + return innerBuilder().clazz(clazz); + } } diff --git a/lib/src/main/java/io/cloudquery/transformers/TransformerException.java b/lib/src/main/java/io/cloudquery/transformers/TransformerException.java index a6bc918..17afc50 100644 --- a/lib/src/main/java/io/cloudquery/transformers/TransformerException.java +++ b/lib/src/main/java/io/cloudquery/transformers/TransformerException.java @@ -1,11 +1,11 @@ package io.cloudquery.transformers; public class TransformerException extends Exception { - public TransformerException(String message) { - super(message); - } + public TransformerException(String message) { + super(message); + } - public TransformerException(String message, Throwable ex) { - super(message, ex); - } + public TransformerException(String message, Throwable ex) { + super(message, ex); + } } diff --git a/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java b/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java index d35382e..b6ec63c 100644 --- a/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java +++ b/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java @@ -3,61 +3,61 @@ import io.cloudquery.types.InetType; import io.cloudquery.types.JSONType; import io.cloudquery.types.ListType; +import java.lang.reflect.Field; import org.apache.arrow.vector.types.FloatingPointPrecision; import org.apache.arrow.vector.types.TimeUnit; import org.apache.arrow.vector.types.pojo.ArrowType; -import java.lang.reflect.Field; - public interface TypeTransformer { - ArrowType transform(Field field) throws TransformerException; + ArrowType transform(Field field) throws TransformerException; - class DefaultTypeTransformer implements TypeTransformer { - @Override - public ArrowType transform(Field field) throws TransformerException { - return transformArrowType(field.getName(), field.getType()); - } + class DefaultTypeTransformer implements TypeTransformer { + @Override + public ArrowType transform(Field field) throws TransformerException { + return transformArrowType(field.getName(), field.getType()); + } - private static ArrowType transformArrowType(String name, Class type) throws TransformerException { - switch (type.getName()) { - case "java.lang.String" -> { - return ArrowType.Utf8.INSTANCE; - } - case "java.lang.Boolean", "boolean" -> { - return ArrowType.Bool.INSTANCE; - } - case "java.lang.Integer", "int", "java.lang.Long", "long" -> { - return new ArrowType.Int(64, true); - } - case "float", "double", "java.lang.Float", "java.lang.Double" -> { - return new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE); - } - case "java.util.Map" -> { - return JSONType.INSTANCE; - } - case "java.net.InetAddress" -> { - return InetType.INSTANCE; - } - case "java.time.LocalDateTime" -> { - return new ArrowType.Timestamp(TimeUnit.MICROSECOND, null); - } - default -> { - if (type.isArray()) { - Class componentType = type.getComponentType(); - if (componentType.getName().equals("byte")) { - return ArrowType.Binary.INSTANCE; - } - // if element type is already json just return JSON rather than a list of JSON - ArrowType elementType = transformArrowType(name, componentType); - return elementType == JSONType.INSTANCE ? elementType : ListType.listOf(elementType); - } - if (!type.isPrimitive()) { - return JSONType.INSTANCE; - } - } + private static ArrowType transformArrowType(String name, Class type) + throws TransformerException { + switch (type.getName()) { + case "java.lang.String" -> { + return ArrowType.Utf8.INSTANCE; + } + case "java.lang.Boolean", "boolean" -> { + return ArrowType.Bool.INSTANCE; + } + case "java.lang.Integer", "int", "java.lang.Long", "long" -> { + return new ArrowType.Int(64, true); + } + case "float", "double", "java.lang.Float", "java.lang.Double" -> { + return new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE); + } + case "java.util.Map" -> { + return JSONType.INSTANCE; + } + case "java.net.InetAddress" -> { + return InetType.INSTANCE; + } + case "java.time.LocalDateTime" -> { + return new ArrowType.Timestamp(TimeUnit.MICROSECOND, null); + } + default -> { + if (type.isArray()) { + Class componentType = type.getComponentType(); + if (componentType.getName().equals("byte")) { + return ArrowType.Binary.INSTANCE; } - throw new TransformerException("Unsupported type: " + type.getName() + " for field: " + name); + // if element type is already json just return JSON rather than a list of JSON + ArrowType elementType = transformArrowType(name, componentType); + return elementType == JSONType.INSTANCE ? elementType : ListType.listOf(elementType); + } + if (!type.isPrimitive()) { + return JSONType.INSTANCE; + } } + } + throw new TransformerException("Unsupported type: " + type.getName() + " for field: " + name); } + } } diff --git a/lib/src/main/java/io/cloudquery/types/InetType.java b/lib/src/main/java/io/cloudquery/types/InetType.java index 2347e8f..bd20ea9 100644 --- a/lib/src/main/java/io/cloudquery/types/InetType.java +++ b/lib/src/main/java/io/cloudquery/types/InetType.java @@ -6,36 +6,36 @@ import org.apache.arrow.vector.types.pojo.FieldType; public class InetType extends ArrowType.ExtensionType { - public static final InetType INSTANCE = new InetType(); - public static final String EXTENSION_NAME = "inet"; - - @Override - public ArrowType storageType() { - return Binary.INSTANCE; - } - - @Override - public String extensionName() { - return EXTENSION_NAME; - } - - @Override - public boolean extensionEquals(ExtensionType other) { - return other instanceof InetType; - } - - @Override - public String serialize() { - return null; - } - - @Override - public ArrowType deserialize(ArrowType storageType, String serializedData) { - return null; - } - - @Override - public FieldVector getNewVector(String name, FieldType fieldType, BufferAllocator allocator) { - return null; - } + public static final InetType INSTANCE = new InetType(); + public static final String EXTENSION_NAME = "inet"; + + @Override + public ArrowType storageType() { + return Binary.INSTANCE; + } + + @Override + public String extensionName() { + return EXTENSION_NAME; + } + + @Override + public boolean extensionEquals(ExtensionType other) { + return other instanceof InetType; + } + + @Override + public String serialize() { + return null; + } + + @Override + public ArrowType deserialize(ArrowType storageType, String serializedData) { + return null; + } + + @Override + public FieldVector getNewVector(String name, FieldType fieldType, BufferAllocator allocator) { + return null; + } } diff --git a/lib/src/main/java/io/cloudquery/types/JSONType.java b/lib/src/main/java/io/cloudquery/types/JSONType.java index 8d3ce7d..16e7852 100644 --- a/lib/src/main/java/io/cloudquery/types/JSONType.java +++ b/lib/src/main/java/io/cloudquery/types/JSONType.java @@ -10,81 +10,82 @@ import org.apache.arrow.vector.types.pojo.FieldType; public class JSONType extends ExtensionType { - public static final JSONType INSTANCE = new JSONType(); - public static final String EXTENSION_NAME = "json"; - - @Override - public ArrowType storageType() { - return Binary.INSTANCE; - } - - @Override - public String extensionName() { - return EXTENSION_NAME; + public static final JSONType INSTANCE = new JSONType(); + public static final String EXTENSION_NAME = "json"; + + @Override + public ArrowType storageType() { + return Binary.INSTANCE; + } + + @Override + public String extensionName() { + return EXTENSION_NAME; + } + + @Override + public boolean extensionEquals(ExtensionType other) { + return other instanceof JSONType; + } + + @Override + public String serialize() { + return "json-serialized"; + } + + @Override + public ArrowType deserialize(ArrowType storageType, String serializedData) { + if (!serializedData.equals("json-serialized")) { + throw new IllegalArgumentException("Type identifier did not match: " + serializedData); } - - @Override - public boolean extensionEquals(ExtensionType other) { - return other instanceof JSONType; + if (!storageType.equals(storageType())) { + throw new IllegalArgumentException( + "invalid storage type for JSONType: " + storageType.getTypeID()); } - - @Override - public String serialize() { - return "json-serialized"; + return new JSONType(); + } + + @Override + public FieldVector getNewVector(String name, FieldType fieldType, BufferAllocator allocator) { + return new JSONVector(name, allocator, new VarBinaryVector(name, allocator)); + } + + @Override + public int hashCode() { + return java.util.Arrays.deepHashCode(new Object[] {}); + } + + @Override + public boolean equals(Object obj) { + return obj instanceof JSONType; + } + + public static class JSONVector extends ExtensionTypeVector { + public JSONVector(String name, BufferAllocator allocator, VarBinaryVector underlyingVector) { + super(name, allocator, underlyingVector); } @Override - public ArrowType deserialize(ArrowType storageType, String serializedData) { - if (!serializedData.equals("json-serialized")) { - throw new IllegalArgumentException("Type identifier did not match: " + serializedData); - } - if (!storageType.equals(storageType())) { - throw new IllegalArgumentException("invalid storage type for JSONType: " + storageType.getTypeID()); - } - return new JSONType(); + public Object getObject(int index) { + return getUnderlyingVector().getObject(index); } @Override - public FieldVector getNewVector(String name, FieldType fieldType, BufferAllocator allocator) { - return new JSONVector(name, allocator, new VarBinaryVector(name, allocator)); + public int hashCode(int index) { + return hashCode(index, null); } @Override - public int hashCode() { - return java.util.Arrays.deepHashCode(new Object[]{}); + public int hashCode(int index, ArrowBufHasher hasher) { + return getUnderlyingVector().hashCode(index, hasher); } - @Override - public boolean equals(Object obj) { - return obj instanceof JSONType; + public String get(int index) { + return new String((byte[]) getObject(index)); } - public static class JSONVector extends ExtensionTypeVector { - public JSONVector(String name, BufferAllocator allocator, VarBinaryVector underlyingVector) { - super(name, allocator, underlyingVector); - } - - @Override - public Object getObject(int index) { - return getUnderlyingVector().getObject(index); - } - - @Override - public int hashCode(int index) { - return hashCode(index, null); - } - - @Override - public int hashCode(int index, ArrowBufHasher hasher) { - return getUnderlyingVector().hashCode(index, hasher); - } - - public String get(int index) { - return new String((byte[]) getObject(index)); - } - - public void set(int index, String value) { - getUnderlyingVector().setSafe(index, value.getBytes(), 0, value.getBytes().length); - } + public void set(int index, String value) { + getUnderlyingVector().setSafe(index, value.getBytes(), 0, value.getBytes().length); } + } } diff --git a/lib/src/main/java/io/cloudquery/types/ListType.java b/lib/src/main/java/io/cloudquery/types/ListType.java index c743138..de354fe 100644 --- a/lib/src/main/java/io/cloudquery/types/ListType.java +++ b/lib/src/main/java/io/cloudquery/types/ListType.java @@ -1,43 +1,40 @@ package io.cloudquery.types; -import org.apache.arrow.vector.types.pojo.ArrowType; - import java.util.Objects; +import org.apache.arrow.vector.types.pojo.ArrowType; public class ListType extends ArrowType.List { - public static ListType listOf(ArrowType elementType) { - return new ListType(elementType); - } - - private final ArrowType elementType; - - public ListType(ArrowType elementType) { - this.elementType = elementType; - } - - public ArrowType getElementType() { - return elementType; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - if (!super.equals(o)) return false; - ListType listType = (ListType) o; - return Objects.equals(elementType, listType.elementType); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), elementType); - } - - @Override - public String toString() { - return "ListType{" + - "elementType=" + elementType + - '}'; - } + public static ListType listOf(ArrowType elementType) { + return new ListType(elementType); + } + + private final ArrowType elementType; + + public ListType(ArrowType elementType) { + this.elementType = elementType; + } + + public ArrowType getElementType() { + return elementType; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + if (!super.equals(o)) return false; + ListType listType = (ListType) o; + return Objects.equals(elementType, listType.elementType); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), elementType); + } + + @Override + public String toString() { + return "ListType{" + "elementType=" + elementType + '}'; + } } diff --git a/lib/src/main/java/io/cloudquery/types/UUIDType.java b/lib/src/main/java/io/cloudquery/types/UUIDType.java index b7c1c05..4ae6ddf 100644 --- a/lib/src/main/java/io/cloudquery/types/UUIDType.java +++ b/lib/src/main/java/io/cloudquery/types/UUIDType.java @@ -1,5 +1,9 @@ package io.cloudquery.types; +import static org.apache.arrow.vector.types.pojo.ArrowType.ExtensionType; + +import java.nio.ByteBuffer; +import java.util.UUID; import org.apache.arrow.memory.BufferAllocator; import org.apache.arrow.memory.util.hash.ArrowBufHasher; import org.apache.arrow.vector.ExtensionTypeVector; @@ -8,81 +12,77 @@ import org.apache.arrow.vector.types.pojo.ArrowType; import org.apache.arrow.vector.types.pojo.FieldType; -import java.nio.ByteBuffer; -import java.util.UUID; - -import static org.apache.arrow.vector.types.pojo.ArrowType.ExtensionType; - public class UUIDType extends ExtensionType { - public static final int BYTE_WIDTH = 16; - public static final String EXTENSION_NAME = "uuid"; - - @Override - public ArrowType storageType() { - return new FixedSizeBinary(BYTE_WIDTH); + public static final int BYTE_WIDTH = 16; + public static final String EXTENSION_NAME = "uuid"; + + @Override + public ArrowType storageType() { + return new FixedSizeBinary(BYTE_WIDTH); + } + + @Override + public String extensionName() { + return EXTENSION_NAME; + } + + @Override + public boolean extensionEquals(ExtensionType other) { + return other instanceof UUIDType; + } + + @Override + public String serialize() { + return "uuid-serialized"; + } + + @Override + public ArrowType deserialize(ArrowType storageType, String serializedData) { + if (!serializedData.equals("uuid-serialized")) { + throw new IllegalArgumentException("Type identifier did not match: " + serializedData); } - - @Override - public String extensionName() { - return EXTENSION_NAME; + if (!storageType.equals(storageType())) { + throw new IllegalArgumentException( + "invalid storage type for UUIDType: " + storageType.getTypeID()); } + return new UUIDType(); + } - @Override - public boolean extensionEquals(ExtensionType other) { - return other instanceof UUIDType; + @Override + public FieldVector getNewVector(String name, FieldType fieldType, BufferAllocator allocator) { + return new UUIDVector(name, allocator, new FixedSizeBinaryVector(name, allocator, BYTE_WIDTH)); + } + + public static class UUIDVector extends ExtensionTypeVector { + public UUIDVector(String name, BufferAllocator allocator, FixedSizeBinaryVector valueVectors) { + super(name, allocator, valueVectors); } @Override - public String serialize() { - return "uuid-serialized"; + public Object getObject(int index) { + final ByteBuffer bb = ByteBuffer.wrap(getUnderlyingVector().getObject(index)); + return new UUID(bb.getLong(), bb.getLong()); } @Override - public ArrowType deserialize(ArrowType storageType, String serializedData) { - if (!serializedData.equals("uuid-serialized")) { - throw new IllegalArgumentException("Type identifier did not match: " + serializedData); - } - if (!storageType.equals(storageType())) { - throw new IllegalArgumentException("invalid storage type for UUIDType: " + storageType.getTypeID()); - } - return new UUIDType(); + public int hashCode(int index) { + return hashCode(index, null); } @Override - public FieldVector getNewVector(String name, FieldType fieldType, BufferAllocator allocator) { - return new UUIDVector(name, allocator, new FixedSizeBinaryVector(name, allocator, BYTE_WIDTH)); + public int hashCode(int index, ArrowBufHasher hasher) { + return getUnderlyingVector().hashCode(index, hasher); } - public static class UUIDVector extends ExtensionTypeVector { - public UUIDVector(String name, BufferAllocator allocator, FixedSizeBinaryVector valueVectors) { - super(name, allocator, valueVectors); - } - - @Override - public Object getObject(int index) { - final ByteBuffer bb = ByteBuffer.wrap(getUnderlyingVector().getObject(index)); - return new UUID(bb.getLong(), bb.getLong()); - } - - @Override - public int hashCode(int index) { - return hashCode(index, null); - } - - @Override - public int hashCode(int index, ArrowBufHasher hasher) { - return getUnderlyingVector().hashCode(index, hasher); - } - - public UUID get(int index) { - return (UUID) getObject(index); - } + public UUID get(int index) { + return (UUID) getObject(index); + } - public void set(int index, UUID uuid) { - ByteBuffer bb = ByteBuffer.allocate(BYTE_WIDTH); - bb.putLong(uuid.getMostSignificantBits()); - bb.putLong(uuid.getLeastSignificantBits()); - getUnderlyingVector().set(index, bb.array()); - } + public void set(int index, UUID uuid) { + ByteBuffer bb = ByteBuffer.allocate(BYTE_WIDTH); + bb.putLong(uuid.getMostSignificantBits()); + bb.putLong(uuid.getLeastSignificantBits()); + getUnderlyingVector().set(index, bb.array()); } + } } diff --git a/lib/src/test/java/io/cloudquery/caser/CaserTest.java b/lib/src/test/java/io/cloudquery/caser/CaserTest.java index f4144f8..3ac41d3 100644 --- a/lib/src/test/java/io/cloudquery/caser/CaserTest.java +++ b/lib/src/test/java/io/cloudquery/caser/CaserTest.java @@ -1,161 +1,154 @@ package io.cloudquery.caser; +import java.util.Map; +import java.util.Set; +import java.util.stream.Stream; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.util.Map; -import java.util.Set; -import java.util.stream.Stream; - public class CaserTest { - public static Stream toSnakeSource() { - return Stream.of( - Arguments.of("TestCamelCase", "test_camel_case"), - Arguments.of("TestCamelCase", "test_camel_case"), - Arguments.of("AccountID", "account_id"), - Arguments.of("IDs", "ids"), - Arguments.of("PostgreSQL", "postgre_sql"), - Arguments.of("QueryStoreRetention", "query_store_retention"), - Arguments.of("TestCamelCaseLongString", "test_camel_case_long_string"), - Arguments.of("testCamelCaseLongString", "test_camel_case_long_string"), - Arguments.of("testIPv4", "test_ipv4"), - Arguments.of("CoreIPs", "core_ips"), - Arguments.of("CoreIps", "core_ips"), - Arguments.of("CoreV1", "core_v1"), - Arguments.of("APIVersion", "api_version"), - Arguments.of("TTLSecondsAfterFinished", "ttl_seconds_after_finished"), - Arguments.of("PodCIDRs", "pod_cidrs"), - Arguments.of("IAMRoles", "iam_roles"), - Arguments.of("testIAM", "test_iam"), - Arguments.of("TestAWSMode", "test_aws_mode") - ); - } - - public static Stream toCamelSource() { - return Stream.of( - Arguments.of("testCamelCase", "test_camel_case"), - Arguments.of("accountID", "account_id"), - Arguments.of("arns", "arns"), - Arguments.of("postgreSQL", "postgre_sql"), - Arguments.of("queryStoreRetention", "query_store_retention"), - Arguments.of("testCamelCaseLongString", "test_camel_case_long_string"), - Arguments.of("testCamelCaseLongString", "test_camel_case_long_string"), - Arguments.of("testIPv4", "test_ipv4") - ); - } - - public static Stream toTitleSource() { - return Stream.of( - Arguments.of("Test Camel Case", "test_camel_case"), - Arguments.of("Account ID", "account_id"), - Arguments.of("ARNs", "arns"), - Arguments.of("Postgre SQL", "postgre_sql"), - Arguments.of("Query Store Retention", "query_store_retention"), - Arguments.of("Test Camel Case Long String", "test_camel_case_long_string"), - Arguments.of("Test Camel Case Long String", "test_camel_case_long_string"), - Arguments.of("Test IPv4", "test_ipv4"), - Arguments.of("AWS Test Table", "aws_test_table"), - Arguments.of("Gcp Test Table", "gcp_test_table") - ); - } - - public static Stream toPascalSource() { - return Stream.of( - Arguments.of("TestCamelCase", "test_camel_case"), - Arguments.of("AccountID", "account_id"), - Arguments.of("Arns", "arns"), - Arguments.of("PostgreSQL", "postgre_sql"), - Arguments.of("QueryStoreRetention", "query_store_retention"), - Arguments.of("TestCamelCaseLongString", "test_camel_case_long_string"), - Arguments.of("TestCamelCaseLongString", "test_camel_case_long_string"), - Arguments.of("TestV1", "test_v1"), - Arguments.of("TestIPv4", "test_ipv4"), - Arguments.of("Ec2", "ec2"), - Arguments.of("S3", "s3") - ); - } - - public static Stream inversionSource() { - return Stream.of( - Arguments.of("TestCamelCase"), - Arguments.of("AccountID"), - Arguments.of("Arns"), - Arguments.of("PostgreSQL"), - Arguments.of("QueryStoreRetention"), - Arguments.of("TestCamelCaseLongString"), - Arguments.of("TestCamelCaseLongString"), - Arguments.of("TestV1"), - Arguments.of("TestIPv4"), - Arguments.of("TestIPv4"), - Arguments.of("S3") - ); - } - - public static Stream configureSource() { - return Stream.of( - Arguments.of("CDNs", "cdns"), - Arguments.of("ARNs", "arns"), - Arguments.of("EC2", "ec2"), - Arguments.of("S3", "s3") - ); - } - - public static Stream customExceptionsSource() { - return Stream.of( - Arguments.of("TEst", "test"), - Arguments.of("TTv2", "ttv2") - ); - } - - @ParameterizedTest - @MethodSource("toSnakeSource") - public void testToSnake(String camel, String snake) { - Assertions.assertEquals(snake, Caser.builder().build().toSnake(camel)); - } - - @ParameterizedTest - @MethodSource("toCamelSource") - public void testToCamel(String camel, String snake) { - Assertions.assertEquals(camel, Caser.builder().build().toCamel(snake)); - } - - @ParameterizedTest - @MethodSource("toTitleSource") - public void testToTitle(String title, String snake) { - Caser caser = Caser.builder().customExceptions(Map.of( - "arns", "ARNs", - "aws", "AWS" - )).build(); - Assertions.assertEquals(title, caser.toTitle(snake)); - } - - @ParameterizedTest - @MethodSource("toPascalSource") - public void testToPascal(String pascal, String snake) { - Caser caser = Caser.builder().build(); - Assertions.assertEquals(pascal, caser.toPascal(snake)); - } - - @ParameterizedTest - @MethodSource("inversionSource") - public void testInversion(String pascal) { - Caser caser = Caser.builder().build(); - Assertions.assertEquals(pascal, caser.toPascal(caser.toSnake(pascal))); - } - - @ParameterizedTest - @MethodSource("configureSource") - public void testConfigure(String camel, String snake) { - Caser caser = Caser.builder().customInitialisms(Set.of("CDN", "ARN", "EC2")).build(); - Assertions.assertEquals(snake, caser.toSnake(camel)); - } - - @ParameterizedTest - @MethodSource("customExceptionsSource") - public void testCustomExceptions(String camel, String snake) { - Caser caser = Caser.builder().customExceptions(Map.of("test", "TEst", "ttv2", "TTv2")).build(); - Assertions.assertEquals(camel, caser.toCamel(snake)); - } -} \ No newline at end of file + public static Stream toSnakeSource() { + return Stream.of( + Arguments.of("TestCamelCase", "test_camel_case"), + Arguments.of("TestCamelCase", "test_camel_case"), + Arguments.of("AccountID", "account_id"), + Arguments.of("IDs", "ids"), + Arguments.of("PostgreSQL", "postgre_sql"), + Arguments.of("QueryStoreRetention", "query_store_retention"), + Arguments.of("TestCamelCaseLongString", "test_camel_case_long_string"), + Arguments.of("testCamelCaseLongString", "test_camel_case_long_string"), + Arguments.of("testIPv4", "test_ipv4"), + Arguments.of("CoreIPs", "core_ips"), + Arguments.of("CoreIps", "core_ips"), + Arguments.of("CoreV1", "core_v1"), + Arguments.of("APIVersion", "api_version"), + Arguments.of("TTLSecondsAfterFinished", "ttl_seconds_after_finished"), + Arguments.of("PodCIDRs", "pod_cidrs"), + Arguments.of("IAMRoles", "iam_roles"), + Arguments.of("testIAM", "test_iam"), + Arguments.of("TestAWSMode", "test_aws_mode")); + } + + public static Stream toCamelSource() { + return Stream.of( + Arguments.of("testCamelCase", "test_camel_case"), + Arguments.of("accountID", "account_id"), + Arguments.of("arns", "arns"), + Arguments.of("postgreSQL", "postgre_sql"), + Arguments.of("queryStoreRetention", "query_store_retention"), + Arguments.of("testCamelCaseLongString", "test_camel_case_long_string"), + Arguments.of("testCamelCaseLongString", "test_camel_case_long_string"), + Arguments.of("testIPv4", "test_ipv4")); + } + + public static Stream toTitleSource() { + return Stream.of( + Arguments.of("Test Camel Case", "test_camel_case"), + Arguments.of("Account ID", "account_id"), + Arguments.of("ARNs", "arns"), + Arguments.of("Postgre SQL", "postgre_sql"), + Arguments.of("Query Store Retention", "query_store_retention"), + Arguments.of("Test Camel Case Long String", "test_camel_case_long_string"), + Arguments.of("Test Camel Case Long String", "test_camel_case_long_string"), + Arguments.of("Test IPv4", "test_ipv4"), + Arguments.of("AWS Test Table", "aws_test_table"), + Arguments.of("Gcp Test Table", "gcp_test_table")); + } + + public static Stream toPascalSource() { + return Stream.of( + Arguments.of("TestCamelCase", "test_camel_case"), + Arguments.of("AccountID", "account_id"), + Arguments.of("Arns", "arns"), + Arguments.of("PostgreSQL", "postgre_sql"), + Arguments.of("QueryStoreRetention", "query_store_retention"), + Arguments.of("TestCamelCaseLongString", "test_camel_case_long_string"), + Arguments.of("TestCamelCaseLongString", "test_camel_case_long_string"), + Arguments.of("TestV1", "test_v1"), + Arguments.of("TestIPv4", "test_ipv4"), + Arguments.of("Ec2", "ec2"), + Arguments.of("S3", "s3")); + } + + public static Stream inversionSource() { + return Stream.of( + Arguments.of("TestCamelCase"), + Arguments.of("AccountID"), + Arguments.of("Arns"), + Arguments.of("PostgreSQL"), + Arguments.of("QueryStoreRetention"), + Arguments.of("TestCamelCaseLongString"), + Arguments.of("TestCamelCaseLongString"), + Arguments.of("TestV1"), + Arguments.of("TestIPv4"), + Arguments.of("TestIPv4"), + Arguments.of("S3")); + } + + public static Stream configureSource() { + return Stream.of( + Arguments.of("CDNs", "cdns"), + Arguments.of("ARNs", "arns"), + Arguments.of("EC2", "ec2"), + Arguments.of("S3", "s3")); + } + + public static Stream customExceptionsSource() { + return Stream.of(Arguments.of("TEst", "test"), Arguments.of("TTv2", "ttv2")); + } + + @ParameterizedTest + @MethodSource("toSnakeSource") + public void testToSnake(String camel, String snake) { + Assertions.assertEquals(snake, Caser.builder().build().toSnake(camel)); + } + + @ParameterizedTest + @MethodSource("toCamelSource") + public void testToCamel(String camel, String snake) { + Assertions.assertEquals(camel, Caser.builder().build().toCamel(snake)); + } + + @ParameterizedTest + @MethodSource("toTitleSource") + public void testToTitle(String title, String snake) { + Caser caser = + Caser.builder() + .customExceptions( + Map.of( + "arns", "ARNs", + "aws", "AWS")) + .build(); + Assertions.assertEquals(title, caser.toTitle(snake)); + } + + @ParameterizedTest + @MethodSource("toPascalSource") + public void testToPascal(String pascal, String snake) { + Caser caser = Caser.builder().build(); + Assertions.assertEquals(pascal, caser.toPascal(snake)); + } + + @ParameterizedTest + @MethodSource("inversionSource") + public void testInversion(String pascal) { + Caser caser = Caser.builder().build(); + Assertions.assertEquals(pascal, caser.toPascal(caser.toSnake(pascal))); + } + + @ParameterizedTest + @MethodSource("configureSource") + public void testConfigure(String camel, String snake) { + Caser caser = Caser.builder().customInitialisms(Set.of("CDN", "ARN", "EC2")).build(); + Assertions.assertEquals(snake, caser.toSnake(camel)); + } + + @ParameterizedTest + @MethodSource("customExceptionsSource") + public void testCustomExceptions(String camel, String snake) { + Caser caser = Caser.builder().customExceptions(Map.of("test", "TEst", "ttv2", "TTv2")).build(); + Assertions.assertEquals(camel, caser.toCamel(snake)); + } +} diff --git a/lib/src/test/java/io/cloudquery/glob/GlobTest.java b/lib/src/test/java/io/cloudquery/glob/GlobTest.java index a534ee4..d8c075e 100644 --- a/lib/src/test/java/io/cloudquery/glob/GlobTest.java +++ b/lib/src/test/java/io/cloudquery/glob/GlobTest.java @@ -1,99 +1,97 @@ package io.cloudquery.glob; -import org.junit.jupiter.api.Test; - -import java.util.List; - import static io.cloudquery.glob.Glob.GLOB; import static org.junit.jupiter.api.Assertions.*; -public class GlobTest { - @Test - public void testEmptyPattern() { - assertGlobMatch("", ""); - assertNotGlobMatch("", "test"); - } +import java.util.List; +import org.junit.jupiter.api.Test; - @Test - public void testEmptySubject() { - for (String s : List.of("", - "*", - "**", - "***", - "****************", - GLOB.repeat(1000000) - )) { - assertGlobMatch(s, ""); - } +public class GlobTest { + @Test + public void testEmptyPattern() { + assertGlobMatch("", ""); + assertNotGlobMatch("", "test"); + } - for (String pattern : List.of( - // No globs/non-glob characters - "test", - "*test*", + @Test + public void testEmptySubject() { + for (String s : List.of("", "*", "**", "***", "****************", GLOB.repeat(1000000))) { + assertGlobMatch(s, ""); + } - // Trailing characters - "*x", - "*****************x", - GLOB.repeat(1000000) + "x", + for (String pattern : + List.of( + // No globs/non-glob characters + "test", + "*test*", - // Leading characters - "x*", - "x*****************", - "x" + GLOB.repeat(1000000), + // Trailing characters + "*x", + "*****************x", + GLOB.repeat(1000000) + "x", - // Mixed leading/trailing characters - "x*x", - "x****************x", - "x" + GLOB.repeat(1000000) + "x" - )) { - assertNotGlobMatch(pattern, ""); - } - } + // Leading characters + "x*", + "x*****************", + "x" + GLOB.repeat(1000000), - @Test - public void testPatternWithoutGlobs() { - assertGlobMatch("test", "test"); + // Mixed leading/trailing characters + "x*x", + "x****************x", + "x" + GLOB.repeat(1000000) + "x")) { + assertNotGlobMatch(pattern, ""); } + } - @Test - public void testGlobs() { - for (String pattern : List.of( - "*test", // Leading glob - "this*", // Trailing glob - "this*test", // Middle glob - "*is *", // String in between two globs - "*is*a*", // Lots of globs - "**test**", // Double glob characters - "**is**a***test*", // Varying number of globs - "* *", // White space between globs - "*", // Lone glob - "**********", // Nothing but globs - "*ΡΎ*", // Unicode with globs - "*is a Ο—ΡΎ *" // Mixed ASCII/unicode - )) { - assertGlobMatch(pattern, "this is a Ο—ΡΎ test"); - } + @Test + public void testPatternWithoutGlobs() { + assertGlobMatch("test", "test"); + } - for (String pattern : List.of( - "test*", // Implicit substring match - "*is", // Partial match - "*no*", // Globs without a match between them - " ", // Plain white space - "* ", // Trailing white space - " *", // Leading white space - "*Κ€*", // Non-matching unicode - "this*this is a test" // Repeated prefix - )) { - assertNotGlobMatch(pattern, "this is a test"); - } + @Test + public void testGlobs() { + for (String pattern : + List.of( + "*test", // Leading glob + "this*", // Trailing glob + "this*test", // Middle glob + "*is *", // String in between two globs + "*is*a*", // Lots of globs + "**test**", // Double glob characters + "**is**a***test*", // Varying number of globs + "* *", // White space between globs + "*", // Lone glob + "**********", // Nothing but globs + "*ΡΎ*", // Unicode with globs + "*is a Ο—ΡΎ *" // Mixed ASCII/unicode + )) { + assertGlobMatch(pattern, "this is a Ο—ΡΎ test"); } - public void assertGlobMatch(String pattern, String subject) { - assertTrue(Glob.match(pattern, subject), String.format("\"%s\" should match \"%s\"", pattern, subject)); + for (String pattern : + List.of( + "test*", // Implicit substring match + "*is", // Partial match + "*no*", // Globs without a match between them + " ", // Plain white space + "* ", // Trailing white space + " *", // Leading white space + "*Κ€*", // Non-matching unicode + "this*this is a test" // Repeated prefix + )) { + assertNotGlobMatch(pattern, "this is a test"); } + } - public void assertNotGlobMatch(String pattern, String subject) { - assertFalse(Glob.match(pattern, subject), String.format("\"%s\" should not match \"%s\"", pattern, subject)); - } + public void assertGlobMatch(String pattern, String subject) { + assertTrue( + Glob.match(pattern, subject), + String.format("\"%s\" should match \"%s\"", pattern, subject)); + } -} \ No newline at end of file + public void assertNotGlobMatch(String pattern, String subject) { + assertFalse( + Glob.match(pattern, subject), + String.format("\"%s\" should not match \"%s\"", pattern, subject)); + } +} diff --git a/lib/src/test/java/io/cloudquery/helper/ReflectionPathResolverTest.java b/lib/src/test/java/io/cloudquery/helper/ReflectionPathResolverTest.java index 9c41208..f25e4dd 100644 --- a/lib/src/test/java/io/cloudquery/helper/ReflectionPathResolverTest.java +++ b/lib/src/test/java/io/cloudquery/helper/ReflectionPathResolverTest.java @@ -1,49 +1,49 @@ package io.cloudquery.helper; -import lombok.Builder; -import org.junit.jupiter.api.Test; - -import java.util.List; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; +import java.util.List; +import lombok.Builder; +import org.junit.jupiter.api.Test; + class ReflectionPathResolverTest { - @Builder - private static class TestClass { - private String name; - - @Builder.Default - private List numbers = List.of(1, 2, 3); - - private TestClass singleChild; - - private List multipleChildren; - } - - private static final TestClass TEST_DATA = TestClass.builder().name("root"). - singleChild(TestClass.builder().name("single-child1").build()). - multipleChildren( - List.of( - TestClass.builder().name("multi-child1").build(), - TestClass.builder().name("multi-child2").build() - ) - ). - build(); - - @Test - public void shouldResolveSimpleFields() throws ReflectionPathResolver.PathResolverException { - assertEquals("root", ReflectionPathResolver.resolve(TEST_DATA, "name")); - assertEquals(List.of(1, 2, 3), ReflectionPathResolver.resolve(TEST_DATA, "numbers")); - } - - @Test - public void shouldResolveNestedField() throws ReflectionPathResolver.PathResolverException { - assertEquals("single-child1", ReflectionPathResolver.resolve(TEST_DATA, "singleChild.name")); - } - - @Test - public void shouldThrowAnErrorIfWeEncounterACollection() { - assertThrows(ReflectionPathResolver.PathResolverException.class, () -> ReflectionPathResolver.resolve(TEST_DATA, "multiplChildren.name")); - } + @Builder + private static class TestClass { + private String name; + + @Builder.Default private List numbers = List.of(1, 2, 3); + + private TestClass singleChild; + + private List multipleChildren; + } + + private static final TestClass TEST_DATA = + TestClass.builder() + .name("root") + .singleChild(TestClass.builder().name("single-child1").build()) + .multipleChildren( + List.of( + TestClass.builder().name("multi-child1").build(), + TestClass.builder().name("multi-child2").build())) + .build(); + + @Test + public void shouldResolveSimpleFields() throws ReflectionPathResolver.PathResolverException { + assertEquals("root", ReflectionPathResolver.resolve(TEST_DATA, "name")); + assertEquals(List.of(1, 2, 3), ReflectionPathResolver.resolve(TEST_DATA, "numbers")); + } + + @Test + public void shouldResolveNestedField() throws ReflectionPathResolver.PathResolverException { + assertEquals("single-child1", ReflectionPathResolver.resolve(TEST_DATA, "singleChild.name")); + } + + @Test + public void shouldThrowAnErrorIfWeEncounterACollection() { + assertThrows( + ReflectionPathResolver.PathResolverException.class, + () -> ReflectionPathResolver.resolve(TEST_DATA, "multiplChildren.name")); + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/BinaryTest.java b/lib/src/test/java/io/cloudquery/scalar/BinaryTest.java index 485fdc2..33e7314 100644 --- a/lib/src/test/java/io/cloudquery/scalar/BinaryTest.java +++ b/lib/src/test/java/io/cloudquery/scalar/BinaryTest.java @@ -1,151 +1,174 @@ package io.cloudquery.scalar; -import org.apache.arrow.vector.types.pojo.ArrowType; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.*; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.junit.jupiter.api.Test; public class BinaryTest { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Binary(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Binary(); }); - } - - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Binary(new byte[]{'a', 'b', 'c'}); - new Binary("abc"); - new Binary(new char[]{'a', 'b', 'c'}); - - Scalar s = new Binary(new char[]{'a', 'b', 'c'}); - new Binary(s); + } + + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Binary(new byte[] {'a', 'b', 'c'}); + new Binary("abc"); + new Binary(new char[] {'a', 'b', 'c'}); + + Scalar s = new Binary(new char[] {'a', 'b', 'c'}); + new Binary(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Binary(false); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Binary(false); }); - } + } - @Test - public void testToString() { - Binary b = new Binary(); - assertEquals(Scalar.NULL_VALUE_STRING, b.toString()); + @Test + public void testToString() { + Binary b = new Binary(); + assertEquals(Scalar.NULL_VALUE_STRING, b.toString()); - assertDoesNotThrow(() -> { - b.set("abc"); + assertDoesNotThrow( + () -> { + b.set("abc"); }); - assertEquals("abc=", b.toString()); + assertEquals("abc=", b.toString()); - assertDoesNotThrow(() -> { - b.set(new byte[]{0, 1, 2, 3, 4, 5}); + assertDoesNotThrow( + () -> { + b.set(new byte[] {0, 1, 2, 3, 4, 5}); }); - assertEquals("AAECAwQF", b.toString()); - } - - @Test - public void testDataType() { - Binary b = new Binary(); - assertEquals(ArrowType.Binary.INSTANCE, b.dataType()); - assertEquals(new ArrowType.Binary(), b.dataType()); - } - - @Test - public void testIsValid() { - Binary b = new Binary(); - assertFalse(b.isValid()); - - assertDoesNotThrow(() -> { - b.set("abc"); + assertEquals("AAECAwQF", b.toString()); + } + + @Test + public void testDataType() { + Binary b = new Binary(); + assertEquals(ArrowType.Binary.INSTANCE, b.dataType()); + assertEquals(new ArrowType.Binary(), b.dataType()); + } + + @Test + public void testIsValid() { + Binary b = new Binary(); + assertFalse(b.isValid()); + + assertDoesNotThrow( + () -> { + b.set("abc"); }); - assertTrue(b.isValid()); - } - - @Test - public void testSet() { - Binary b = new Binary(); - assertDoesNotThrow(() -> { - b.set(new byte[]{'a', 'b', 'c'}); - b.set("abc"); - b.set(new char[]{'a', 'b', 'c'}); - - Scalar s = new Binary(new char[]{'a', 'b', 'c'}); - b.set(s); + assertTrue(b.isValid()); + } + + @Test + public void testSet() { + Binary b = new Binary(); + assertDoesNotThrow( + () -> { + b.set(new byte[] {'a', 'b', 'c'}); + b.set("abc"); + b.set(new char[] {'a', 'b', 'c'}); + + Scalar s = new Binary(new char[] {'a', 'b', 'c'}); + b.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Binary b = new Binary(); - assertThrows(ValidationException.class, () -> { - b.set(false); + } + + @Test + public void testSetWithInvalidParam() { + Binary b = new Binary(); + assertThrows( + ValidationException.class, + () -> { + b.set(false); }); - } + } - @Test - public void testGet() { - Binary b = new Binary(); - assertFalse(b.isValid()); - assertNull(b.get()); + @Test + public void testGet() { + Binary b = new Binary(); + assertFalse(b.isValid()); + assertNull(b.get()); - assertDoesNotThrow(() -> { - b.set(new byte[]{'a', 'b', 'c'}); + assertDoesNotThrow( + () -> { + b.set(new byte[] {'a', 'b', 'c'}); }); - assertTrue(b.isValid()); - assertArrayEquals(new byte[]{'a', 'b', 'c'}, (byte[]) b.get()); + assertTrue(b.isValid()); + assertArrayEquals(new byte[] {'a', 'b', 'c'}, (byte[]) b.get()); - assertDoesNotThrow(() -> { - b.set("abc"); + assertDoesNotThrow( + () -> { + b.set("abc"); }); - assertTrue(b.isValid()); - assertArrayEquals(new byte[]{105, -73}, (byte[]) b.get()); + assertTrue(b.isValid()); + assertArrayEquals(new byte[] {105, -73}, (byte[]) b.get()); - assertDoesNotThrow(() -> { - b.set(new char[]{'a', 'b', 'c'}); + assertDoesNotThrow( + () -> { + b.set(new char[] {'a', 'b', 'c'}); }); - assertTrue(b.isValid()); - assertArrayEquals(new byte[]{105, -73}, (byte[]) b.get()); + assertTrue(b.isValid()); + assertArrayEquals(new byte[] {105, -73}, (byte[]) b.get()); - assertDoesNotThrow(() -> { - Scalar s = new Binary(new char[]{'a', 'b', 'c'}); - b.set(s); + assertDoesNotThrow( + () -> { + Scalar s = new Binary(new char[] {'a', 'b', 'c'}); + b.set(s); }); - assertTrue(b.isValid()); - assertArrayEquals(new byte[]{105, -73}, (byte[]) b.get()); + assertTrue(b.isValid()); + assertArrayEquals(new byte[] {105, -73}, (byte[]) b.get()); - assertDoesNotThrow(() -> { - Scalar s = new Binary(new byte[]{'a', 'b', 'c'}); - b.set(s); + assertDoesNotThrow( + () -> { + Scalar s = new Binary(new byte[] {'a', 'b', 'c'}); + b.set(s); }); - assertTrue(b.isValid()); - assertArrayEquals(new byte[]{'a', 'b', 'c'}, (byte[]) b.get()); - } - - @Test - public void testEquals() { - Binary a = new Binary(); - Binary b = new Binary(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Bool()); // we can't cast Bool to Binary - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(new byte[]{'a', 'b', 'c'}); + assertTrue(b.isValid()); + assertArrayEquals(new byte[] {'a', 'b', 'c'}, (byte[]) b.get()); + } + + @Test + public void testEquals() { + Binary a = new Binary(); + Binary b = new Binary(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Bool()); // we can't cast Bool to Binary + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(new byte[] {'a', 'b', 'c'}); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, new byte[]{'a', 'b', 'c'}, new char[]{'a', 'b', 'c'}, "abc", new Binary("abc"),}) { - a.set(obj); - assertEquals(a, new Binary(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : + new Object[] { + null, + new byte[] {'a', 'b', 'c'}, + new char[] {'a', 'b', 'c'}, + "abc", + new Binary("abc"), + }) { + a.set(obj); + assertEquals(a, new Binary(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/BoolTest.java b/lib/src/test/java/io/cloudquery/scalar/BoolTest.java index 9a8abe7..330d64c 100644 --- a/lib/src/test/java/io/cloudquery/scalar/BoolTest.java +++ b/lib/src/test/java/io/cloudquery/scalar/BoolTest.java @@ -1,129 +1,142 @@ package io.cloudquery.scalar; -import org.apache.arrow.vector.types.pojo.ArrowType; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.*; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.junit.jupiter.api.Test; public class BoolTest { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Bool(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Bool(); }); - } + } - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Bool(true); - new Bool("true"); + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Bool(true); + new Bool("true"); - Scalar s = new Bool(true); - new Bool(s); + Scalar s = new Bool(true); + new Bool(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Bool(new char[]{'1'}); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Bool(new char[] {'1'}); }); - } + } - @Test - public void testToString() { - Bool b = new Bool(); - assertEquals(Scalar.NULL_VALUE_STRING, b.toString()); + @Test + public void testToString() { + Bool b = new Bool(); + assertEquals(Scalar.NULL_VALUE_STRING, b.toString()); - assertDoesNotThrow(() -> { - b.set(true); + assertDoesNotThrow( + () -> { + b.set(true); }); - assertEquals("true", b.toString()); + assertEquals("true", b.toString()); - assertDoesNotThrow(() -> { - b.set(false); + assertDoesNotThrow( + () -> { + b.set(false); }); - assertEquals("false", b.toString()); - } - - @Test - public void testDataType() { - Bool b = new Bool(); - assertEquals(ArrowType.Bool.INSTANCE, b.dataType()); - assertEquals(new ArrowType.Bool(), b.dataType()); - } - - @Test - public void testIsValid() { - Bool b = new Bool(); - assertFalse(b.isValid()); - - assertDoesNotThrow(() -> { - b.set("true"); + assertEquals("false", b.toString()); + } + + @Test + public void testDataType() { + Bool b = new Bool(); + assertEquals(ArrowType.Bool.INSTANCE, b.dataType()); + assertEquals(new ArrowType.Bool(), b.dataType()); + } + + @Test + public void testIsValid() { + Bool b = new Bool(); + assertFalse(b.isValid()); + + assertDoesNotThrow( + () -> { + b.set("true"); }); - assertTrue(b.isValid()); - } - - @Test - public void testSet() { - Bool b = new Bool(); - assertDoesNotThrow(() -> { - new Bool(true); - new Bool("true"); - - Scalar s = new Bool(true); - b.set(s); + assertTrue(b.isValid()); + } + + @Test + public void testSet() { + Bool b = new Bool(); + assertDoesNotThrow( + () -> { + new Bool(true); + new Bool("true"); + + Scalar s = new Bool(true); + b.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Bool b = new Bool(); - assertThrows(ValidationException.class, () -> { - b.set(new char[]{}); + } + + @Test + public void testSetWithInvalidParam() { + Bool b = new Bool(); + assertThrows( + ValidationException.class, + () -> { + b.set(new char[] {}); }); - } + } - @Test - public void testGet() { - Bool b = new Bool(); - assertFalse(b.isValid()); - assertNull(b.get()); + @Test + public void testGet() { + Bool b = new Bool(); + assertFalse(b.isValid()); + assertNull(b.get()); - assertDoesNotThrow(() -> { - b.set(true); + assertDoesNotThrow( + () -> { + b.set(true); }); - assertTrue(b.isValid()); - assertEquals(true, b.get()); + assertTrue(b.isValid()); + assertEquals(true, b.get()); - assertDoesNotThrow(() -> { - b.set("abc"); + assertDoesNotThrow( + () -> { + b.set("abc"); }); - assertTrue(b.isValid()); - assertEquals(false, b.get()); - } - - @Test - public void testEquals() { - Bool a = new Bool(); - Bool b = new Bool(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Binary()); // we can't cast Binary to Bool - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(true); + assertTrue(b.isValid()); + assertEquals(false, b.get()); + } + + @Test + public void testEquals() { + Bool a = new Bool(); + Bool b = new Bool(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Binary()); // we can't cast Binary to Bool + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(true); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, true, false, "abc", "true", "false"}) { - a.set(obj); - assertEquals(a, new Bool(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : new Object[] {null, true, false, "abc", "true", "false"}) { + a.set(obj); + assertEquals(a, new Bool(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/DateDayTest.java b/lib/src/test/java/io/cloudquery/scalar/DateDayTest.java index d361b6c..39f3ce7 100644 --- a/lib/src/test/java/io/cloudquery/scalar/DateDayTest.java +++ b/lib/src/test/java/io/cloudquery/scalar/DateDayTest.java @@ -1,129 +1,142 @@ package io.cloudquery.scalar; +import static org.junit.jupiter.api.Assertions.*; + import org.apache.arrow.vector.types.DateUnit; import org.apache.arrow.vector.types.pojo.ArrowType; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - - public class DateDayTest { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new DateDay(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new DateDay(); }); - } + } - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new DateDay(1); - new DateDay("1"); + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new DateDay(1); + new DateDay("1"); - Scalar s = new DateDay(2); - new DateDay(s); + Scalar s = new DateDay(2); + new DateDay(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new DateDay(new char[]{'q'}); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new DateDay(new char[] {'q'}); }); - } + } - @Test - public void testToString() { - DateDay dateDay = new DateDay(); - assertEquals(Scalar.NULL_VALUE_STRING, dateDay.toString()); + @Test + public void testToString() { + DateDay dateDay = new DateDay(); + assertEquals(Scalar.NULL_VALUE_STRING, dateDay.toString()); - assertDoesNotThrow(() -> { - dateDay.set("1"); + assertDoesNotThrow( + () -> { + dateDay.set("1"); }); - assertEquals("1", dateDay.toString()); + assertEquals("1", dateDay.toString()); - assertDoesNotThrow(() -> { - dateDay.set(2); + assertDoesNotThrow( + () -> { + dateDay.set(2); }); - assertEquals("2", dateDay.toString()); - } - - @Test - public void testDataType() { - DateDay dateDay = new DateDay(); - assertEquals(new ArrowType.Date(DateUnit.DAY), dateDay.dataType()); - } - - @Test - public void testIsValid() { - DateDay dateDay = new DateDay(); - assertFalse(dateDay.isValid()); - - assertDoesNotThrow(() -> { - dateDay.set("1"); + assertEquals("2", dateDay.toString()); + } + + @Test + public void testDataType() { + DateDay dateDay = new DateDay(); + assertEquals(new ArrowType.Date(DateUnit.DAY), dateDay.dataType()); + } + + @Test + public void testIsValid() { + DateDay dateDay = new DateDay(); + assertFalse(dateDay.isValid()); + + assertDoesNotThrow( + () -> { + dateDay.set("1"); }); - assertTrue(dateDay.isValid()); - } - - @Test - public void testSet() { - DateDay dateDay = new DateDay(); - assertDoesNotThrow(() -> { - new DateDay(1); - new DateDay("2"); - - Scalar s = new DateDay(1); - dateDay.set(s); + assertTrue(dateDay.isValid()); + } + + @Test + public void testSet() { + DateDay dateDay = new DateDay(); + assertDoesNotThrow( + () -> { + new DateDay(1); + new DateDay("2"); + + Scalar s = new DateDay(1); + dateDay.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - DateDay dateDay = new DateDay(); - assertThrows(ValidationException.class, () -> { - dateDay.set(new char[]{}); + } + + @Test + public void testSetWithInvalidParam() { + DateDay dateDay = new DateDay(); + assertThrows( + ValidationException.class, + () -> { + dateDay.set(new char[] {}); }); - } + } - @Test - public void testGet() { - DateDay dateDay = new DateDay(); - assertFalse(dateDay.isValid()); - assertNull(dateDay.get()); + @Test + public void testGet() { + DateDay dateDay = new DateDay(); + assertFalse(dateDay.isValid()); + assertNull(dateDay.get()); - assertDoesNotThrow(() -> { - dateDay.set(1); + assertDoesNotThrow( + () -> { + dateDay.set(1); }); - assertTrue(dateDay.isValid()); - assertEquals(1, dateDay.get()); + assertTrue(dateDay.isValid()); + assertEquals(1, dateDay.get()); - assertDoesNotThrow(() -> { - dateDay.set("-1"); + assertDoesNotThrow( + () -> { + dateDay.set("-1"); }); - assertTrue(dateDay.isValid()); - assertEquals(-1, dateDay.get()); - } - - @Test - public void testEquals() { - DateDay a = new DateDay(); - DateDay b = new DateDay(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Binary()); // we can't cast Binary to DateDay - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(1); + assertTrue(dateDay.isValid()); + assertEquals(-1, dateDay.get()); + } + + @Test + public void testEquals() { + DateDay a = new DateDay(); + DateDay b = new DateDay(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Binary()); // we can't cast Binary to DateDay + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(1); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 1, -1, "2"}) { - a.set(obj); - assertEquals(a, new DateDay(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : new Object[] {null, 1, -1, "2"}) { + a.set(obj); + assertEquals(a, new DateDay(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/DateMilliTest.java b/lib/src/test/java/io/cloudquery/scalar/DateMilliTest.java index 46fb58e..c0bf063 100644 --- a/lib/src/test/java/io/cloudquery/scalar/DateMilliTest.java +++ b/lib/src/test/java/io/cloudquery/scalar/DateMilliTest.java @@ -1,129 +1,142 @@ package io.cloudquery.scalar; +import static org.junit.jupiter.api.Assertions.*; + import org.apache.arrow.vector.types.DateUnit; import org.apache.arrow.vector.types.pojo.ArrowType; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - - public class DateMilliTest { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new DateMilli(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new DateMilli(); }); - } + } - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new DateMilli(1); - new DateMilli("1"); + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new DateMilli(1); + new DateMilli("1"); - Scalar s = new DateMilli(2); - new DateMilli(s); + Scalar s = new DateMilli(2); + new DateMilli(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new DateMilli(new char[]{'q'}); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new DateMilli(new char[] {'q'}); }); - } + } - @Test - public void testToString() { - DateMilli dateMilli = new DateMilli(); - assertEquals(Scalar.NULL_VALUE_STRING, dateMilli.toString()); + @Test + public void testToString() { + DateMilli dateMilli = new DateMilli(); + assertEquals(Scalar.NULL_VALUE_STRING, dateMilli.toString()); - assertDoesNotThrow(() -> { - dateMilli.set("1"); + assertDoesNotThrow( + () -> { + dateMilli.set("1"); }); - assertEquals("1", dateMilli.toString()); + assertEquals("1", dateMilli.toString()); - assertDoesNotThrow(() -> { - dateMilli.set(2); + assertDoesNotThrow( + () -> { + dateMilli.set(2); }); - assertEquals("2", dateMilli.toString()); - } - - @Test - public void testDataType() { - DateMilli dateMilli = new DateMilli(); - assertEquals(new ArrowType.Date(DateUnit.MILLISECOND), dateMilli.dataType()); - } - - @Test - public void testIsValid() { - DateMilli dateMilli = new DateMilli(); - assertFalse(dateMilli.isValid()); - - assertDoesNotThrow(() -> { - dateMilli.set("1"); + assertEquals("2", dateMilli.toString()); + } + + @Test + public void testDataType() { + DateMilli dateMilli = new DateMilli(); + assertEquals(new ArrowType.Date(DateUnit.MILLISECOND), dateMilli.dataType()); + } + + @Test + public void testIsValid() { + DateMilli dateMilli = new DateMilli(); + assertFalse(dateMilli.isValid()); + + assertDoesNotThrow( + () -> { + dateMilli.set("1"); }); - assertTrue(dateMilli.isValid()); - } - - @Test - public void testSet() { - DateMilli dateMilli = new DateMilli(); - assertDoesNotThrow(() -> { - new DateMilli(1); - new DateMilli("2"); - - Scalar s = new DateMilli(1); - dateMilli.set(s); + assertTrue(dateMilli.isValid()); + } + + @Test + public void testSet() { + DateMilli dateMilli = new DateMilli(); + assertDoesNotThrow( + () -> { + new DateMilli(1); + new DateMilli("2"); + + Scalar s = new DateMilli(1); + dateMilli.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - DateMilli dateMilli = new DateMilli(); - assertThrows(ValidationException.class, () -> { - dateMilli.set(new char[]{}); + } + + @Test + public void testSetWithInvalidParam() { + DateMilli dateMilli = new DateMilli(); + assertThrows( + ValidationException.class, + () -> { + dateMilli.set(new char[] {}); }); - } + } - @Test - public void testGet() { - DateMilli dateMilli = new DateMilli(); - assertFalse(dateMilli.isValid()); - assertNull(dateMilli.get()); + @Test + public void testGet() { + DateMilli dateMilli = new DateMilli(); + assertFalse(dateMilli.isValid()); + assertNull(dateMilli.get()); - assertDoesNotThrow(() -> { - dateMilli.set(1); + assertDoesNotThrow( + () -> { + dateMilli.set(1); }); - assertTrue(dateMilli.isValid()); - assertEquals(1L, dateMilli.get()); + assertTrue(dateMilli.isValid()); + assertEquals(1L, dateMilli.get()); - assertDoesNotThrow(() -> { - dateMilli.set("-1"); + assertDoesNotThrow( + () -> { + dateMilli.set("-1"); }); - assertTrue(dateMilli.isValid()); - assertEquals(-1L, dateMilli.get()); - } - - @Test - public void testEquals() { - DateMilli a = new DateMilli(); - DateMilli b = new DateMilli(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Binary()); // we can't cast Binary to DateMilli - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(1); + assertTrue(dateMilli.isValid()); + assertEquals(-1L, dateMilli.get()); + } + + @Test + public void testEquals() { + DateMilli a = new DateMilli(); + DateMilli b = new DateMilli(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Binary()); // we can't cast Binary to DateMilli + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(1); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 1, -1, 0, 1L, -2L, "2"}) { - a.set(obj); - assertEquals(a, new DateMilli(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : new Object[] {null, 1, -1, 0, 1L, -2L, "2"}) { + a.set(obj); + assertEquals(a, new DateMilli(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/DurationTest.java b/lib/src/test/java/io/cloudquery/scalar/DurationTest.java index 3965d35..6d68bad 100644 --- a/lib/src/test/java/io/cloudquery/scalar/DurationTest.java +++ b/lib/src/test/java/io/cloudquery/scalar/DurationTest.java @@ -1,133 +1,149 @@ package io.cloudquery.scalar; +import static org.junit.jupiter.api.Assertions.*; + import org.apache.arrow.vector.types.TimeUnit; import org.apache.arrow.vector.types.pojo.ArrowType; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - - public class DurationTest { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Duration(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Duration(); }); - } - - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Duration(1); - new Duration("PT8H6M12.345S"); - new Duration(java.time.Duration.ZERO); - new Duration(java.time.Duration.ofNanos(1)); - - Scalar s = new Duration(java.time.Duration.ZERO); - new Duration(s); + } + + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Duration(1); + new Duration("PT8H6M12.345S"); + new Duration(java.time.Duration.ZERO); + new Duration(java.time.Duration.ofNanos(1)); + + Scalar s = new Duration(java.time.Duration.ZERO); + new Duration(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Duration(false); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Duration(false); }); - } + } - @Test - public void testToString() { - Duration duration = new Duration(); - assertEquals(Scalar.NULL_VALUE_STRING, duration.toString()); + @Test + public void testToString() { + Duration duration = new Duration(); + assertEquals(Scalar.NULL_VALUE_STRING, duration.toString()); - assertDoesNotThrow(() -> { - duration.set(1); + assertDoesNotThrow( + () -> { + duration.set(1); }); - assertEquals("PT0.001S", duration.toString()); + assertEquals("PT0.001S", duration.toString()); - assertDoesNotThrow(() -> { - duration.set(java.time.Duration.ofDays(1L)); + assertDoesNotThrow( + () -> { + duration.set(java.time.Duration.ofDays(1L)); }); - assertEquals("PT24H", duration.toString()); - } - - @Test - public void testDataType() { - Duration duration = new Duration(); - assertEquals(new ArrowType.Duration(TimeUnit.MILLISECOND), duration.dataType()); - } - - @Test - public void testIsValid() { - Duration duration = new Duration(); - assertFalse(duration.isValid()); - - assertDoesNotThrow(() -> { - duration.set(1L); + assertEquals("PT24H", duration.toString()); + } + + @Test + public void testDataType() { + Duration duration = new Duration(); + assertEquals(new ArrowType.Duration(TimeUnit.MILLISECOND), duration.dataType()); + } + + @Test + public void testIsValid() { + Duration duration = new Duration(); + assertFalse(duration.isValid()); + + assertDoesNotThrow( + () -> { + duration.set(1L); }); - assertTrue(duration.isValid()); - } - - @Test - public void testSet() { - Duration duration = new Duration(); - assertDoesNotThrow(() -> { - duration.set(1); - duration.set(1L); - duration.set("PT8H6M12.345S"); - duration.set(java.time.Duration.ZERO); - - Scalar s = new Duration(java.time.Duration.ZERO); - duration.set(s); + assertTrue(duration.isValid()); + } + + @Test + public void testSet() { + Duration duration = new Duration(); + assertDoesNotThrow( + () -> { + duration.set(1); + duration.set(1L); + duration.set("PT8H6M12.345S"); + duration.set(java.time.Duration.ZERO); + + Scalar s = new Duration(java.time.Duration.ZERO); + duration.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Duration duration = new Duration(); - assertThrows(ValidationException.class, () -> { - duration.set(false); + } + + @Test + public void testSetWithInvalidParam() { + Duration duration = new Duration(); + assertThrows( + ValidationException.class, + () -> { + duration.set(false); }); - } + } - @Test - public void testGet() { - Duration duration = new Duration(); - assertFalse(duration.isValid()); - assertNull(duration.get()); + @Test + public void testGet() { + Duration duration = new Duration(); + assertFalse(duration.isValid()); + assertNull(duration.get()); - assertDoesNotThrow(() -> { - duration.set(-1L); + assertDoesNotThrow( + () -> { + duration.set(-1L); }); - assertTrue(duration.isValid()); - assertEquals(java.time.Duration.ofMillis(-1L), duration.get()); + assertTrue(duration.isValid()); + assertEquals(java.time.Duration.ofMillis(-1L), duration.get()); - assertDoesNotThrow(() -> { - duration.set(java.time.Duration.ZERO); + assertDoesNotThrow( + () -> { + duration.set(java.time.Duration.ZERO); }); - assertTrue(duration.isValid()); - assertEquals(java.time.Duration.ZERO, duration.get()); - } - - @Test - public void testEquals() { - Duration a = new Duration(); - Duration b = new Duration(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Bool()); // we can't cast Bool to Duration - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(-1L); + assertTrue(duration.isValid()); + assertEquals(java.time.Duration.ZERO, duration.get()); + } + + @Test + public void testEquals() { + Duration a = new Duration(); + Duration b = new Duration(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Bool()); // we can't cast Bool to Duration + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(-1L); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 0, 0L, -1, -1L, 1, 1L, "PT8H6M12.345S", java.time.Duration.ZERO}) { - a.set(obj); - assertEquals(a, new Duration(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : + new Object[] { + null, 0, 0L, -1, -1L, 1, 1L, "PT8H6M12.345S", java.time.Duration.ZERO + }) { + a.set(obj); + assertEquals(a, new Duration(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/Float32Test.java b/lib/src/test/java/io/cloudquery/scalar/Float32Test.java index be1d052..05228e9 100644 --- a/lib/src/test/java/io/cloudquery/scalar/Float32Test.java +++ b/lib/src/test/java/io/cloudquery/scalar/Float32Test.java @@ -1,129 +1,142 @@ package io.cloudquery.scalar; +import static org.junit.jupiter.api.Assertions.*; + import org.apache.arrow.vector.types.FloatingPointPrecision; import org.apache.arrow.vector.types.pojo.ArrowType; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - - public class Float32Test { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Number.Float32(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Number.Float32(); }); - } + } - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Number.Float32(1); - new Number.Float32("1"); + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Number.Float32(1); + new Number.Float32("1"); - Scalar s = new Number.Float32(2); - new Number.Float32(s); + Scalar s = new Number.Float32(2); + new Number.Float32(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Number.Float32(new char[]{'q'}); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Number.Float32(new char[] {'q'}); }); - } + } - @Test - public void testToString() { - Number.Float32 float32 = new Number.Float32(); - assertEquals(Scalar.NULL_VALUE_STRING, float32.toString()); + @Test + public void testToString() { + Number.Float32 float32 = new Number.Float32(); + assertEquals(Scalar.NULL_VALUE_STRING, float32.toString()); - assertDoesNotThrow(() -> { - float32.set("1"); + assertDoesNotThrow( + () -> { + float32.set("1"); }); - assertEquals("1.0", float32.toString()); + assertEquals("1.0", float32.toString()); - assertDoesNotThrow(() -> { - float32.set(2); + assertDoesNotThrow( + () -> { + float32.set(2); }); - assertEquals("2.0", float32.toString()); - } - - @Test - public void testDataType() { - Number.Float32 float32 = new Number.Float32(); - assertEquals(new ArrowType.FloatingPoint(FloatingPointPrecision.SINGLE), float32.dataType()); - } - - @Test - public void testIsValid() { - Number.Float32 float32 = new Number.Float32(); - assertFalse(float32.isValid()); - - assertDoesNotThrow(() -> { - float32.set("1"); + assertEquals("2.0", float32.toString()); + } + + @Test + public void testDataType() { + Number.Float32 float32 = new Number.Float32(); + assertEquals(new ArrowType.FloatingPoint(FloatingPointPrecision.SINGLE), float32.dataType()); + } + + @Test + public void testIsValid() { + Number.Float32 float32 = new Number.Float32(); + assertFalse(float32.isValid()); + + assertDoesNotThrow( + () -> { + float32.set("1"); }); - assertTrue(float32.isValid()); - } - - @Test - public void testSet() { - Number.Float32 float32 = new Number.Float32(); - assertDoesNotThrow(() -> { - new Number.Float32(1); - new Number.Float32("2"); - - Scalar s = new Number.Float32(1); - float32.set(s); + assertTrue(float32.isValid()); + } + + @Test + public void testSet() { + Number.Float32 float32 = new Number.Float32(); + assertDoesNotThrow( + () -> { + new Number.Float32(1); + new Number.Float32("2"); + + Scalar s = new Number.Float32(1); + float32.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Number.Float32 float32 = new Number.Float32(); - assertThrows(ValidationException.class, () -> { - float32.set(new char[]{}); + } + + @Test + public void testSetWithInvalidParam() { + Number.Float32 float32 = new Number.Float32(); + assertThrows( + ValidationException.class, + () -> { + float32.set(new char[] {}); }); - } + } - @Test - public void testGet() { - Number.Float32 float32 = new Number.Float32(); - assertFalse(float32.isValid()); - assertNull(float32.get()); + @Test + public void testGet() { + Number.Float32 float32 = new Number.Float32(); + assertFalse(float32.isValid()); + assertNull(float32.get()); - assertDoesNotThrow(() -> { - float32.set(1); + assertDoesNotThrow( + () -> { + float32.set(1); }); - assertTrue(float32.isValid()); - assertEquals(1, float32.get()); + assertTrue(float32.isValid()); + assertEquals(1, float32.get()); - assertDoesNotThrow(() -> { - float32.set("-1"); + assertDoesNotThrow( + () -> { + float32.set("-1"); }); - assertTrue(float32.isValid()); - assertEquals(-1, float32.get()); - } - - @Test - public void testEquals() { - Number.Float32 a = new Number.Float32(); - Number.Float32 b = new Number.Float32(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Binary()); // we can't cast Binary to Number.Float32 - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(1); + assertTrue(float32.isValid()); + assertEquals(-1, float32.get()); + } + + @Test + public void testEquals() { + Number.Float32 a = new Number.Float32(); + Number.Float32 b = new Number.Float32(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Binary()); // we can't cast Binary to Number.Float32 + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(1); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 1, -1, "2"}) { - a.set(obj); - assertEquals(a, new Number.Float32(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : new Object[] {null, 1, -1, "2"}) { + a.set(obj); + assertEquals(a, new Number.Float32(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/Float64Test.java b/lib/src/test/java/io/cloudquery/scalar/Float64Test.java index ac7ef3b..ee2eff6 100644 --- a/lib/src/test/java/io/cloudquery/scalar/Float64Test.java +++ b/lib/src/test/java/io/cloudquery/scalar/Float64Test.java @@ -1,129 +1,142 @@ package io.cloudquery.scalar; +import static org.junit.jupiter.api.Assertions.*; + import org.apache.arrow.vector.types.FloatingPointPrecision; import org.apache.arrow.vector.types.pojo.ArrowType; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - - public class Float64Test { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Number.Float64(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Number.Float64(); }); - } + } - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Number.Float64(1); - new Number.Float64("1"); + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Number.Float64(1); + new Number.Float64("1"); - Scalar s = new Number.Float64(2); - new Number.Float64(s); + Scalar s = new Number.Float64(2); + new Number.Float64(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Number.Float64(new char[]{'q'}); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Number.Float64(new char[] {'q'}); }); - } + } - @Test - public void testToString() { - Number.Float64 float64 = new Number.Float64(); - assertEquals(Scalar.NULL_VALUE_STRING, float64.toString()); + @Test + public void testToString() { + Number.Float64 float64 = new Number.Float64(); + assertEquals(Scalar.NULL_VALUE_STRING, float64.toString()); - assertDoesNotThrow(() -> { - float64.set("1"); + assertDoesNotThrow( + () -> { + float64.set("1"); }); - assertEquals("1.0", float64.toString()); + assertEquals("1.0", float64.toString()); - assertDoesNotThrow(() -> { - float64.set(2); + assertDoesNotThrow( + () -> { + float64.set(2); }); - assertEquals("2.0", float64.toString()); - } - - @Test - public void testDataType() { - Number.Float64 float64 = new Number.Float64(); - assertEquals(new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE), float64.dataType()); - } - - @Test - public void testIsValid() { - Number.Float64 float64 = new Number.Float64(); - assertFalse(float64.isValid()); - - assertDoesNotThrow(() -> { - float64.set("1"); + assertEquals("2.0", float64.toString()); + } + + @Test + public void testDataType() { + Number.Float64 float64 = new Number.Float64(); + assertEquals(new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE), float64.dataType()); + } + + @Test + public void testIsValid() { + Number.Float64 float64 = new Number.Float64(); + assertFalse(float64.isValid()); + + assertDoesNotThrow( + () -> { + float64.set("1"); }); - assertTrue(float64.isValid()); - } - - @Test - public void testSet() { - Number.Float64 float64 = new Number.Float64(); - assertDoesNotThrow(() -> { - new Number.Float64(1); - new Number.Float64("2"); - - Scalar s = new Number.Float64(1); - float64.set(s); + assertTrue(float64.isValid()); + } + + @Test + public void testSet() { + Number.Float64 float64 = new Number.Float64(); + assertDoesNotThrow( + () -> { + new Number.Float64(1); + new Number.Float64("2"); + + Scalar s = new Number.Float64(1); + float64.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Number.Float64 float64 = new Number.Float64(); - assertThrows(ValidationException.class, () -> { - float64.set(new char[]{}); + } + + @Test + public void testSetWithInvalidParam() { + Number.Float64 float64 = new Number.Float64(); + assertThrows( + ValidationException.class, + () -> { + float64.set(new char[] {}); }); - } + } - @Test - public void testGet() { - Number.Float64 float64 = new Number.Float64(); - assertFalse(float64.isValid()); - assertNull(float64.get()); + @Test + public void testGet() { + Number.Float64 float64 = new Number.Float64(); + assertFalse(float64.isValid()); + assertNull(float64.get()); - assertDoesNotThrow(() -> { - float64.set(1); + assertDoesNotThrow( + () -> { + float64.set(1); }); - assertTrue(float64.isValid()); - assertEquals(1, float64.get()); + assertTrue(float64.isValid()); + assertEquals(1, float64.get()); - assertDoesNotThrow(() -> { - float64.set("-1"); + assertDoesNotThrow( + () -> { + float64.set("-1"); }); - assertTrue(float64.isValid()); - assertEquals(-1, float64.get()); - } - - @Test - public void testEquals() { - Number.Float64 a = new Number.Float64(); - Number.Float64 b = new Number.Float64(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Binary()); // we can't cast Binary to Number.Float64 - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(1); + assertTrue(float64.isValid()); + assertEquals(-1, float64.get()); + } + + @Test + public void testEquals() { + Number.Float64 a = new Number.Float64(); + Number.Float64 b = new Number.Float64(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Binary()); // we can't cast Binary to Number.Float64 + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(1); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 1, -1, "2"}) { - a.set(obj); - assertEquals(a, new Number.Float64(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : new Object[] {null, 1, -1, "2"}) { + a.set(obj); + assertEquals(a, new Number.Float64(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/Int16Test.java b/lib/src/test/java/io/cloudquery/scalar/Int16Test.java index 06a62c5..8e07299 100644 --- a/lib/src/test/java/io/cloudquery/scalar/Int16Test.java +++ b/lib/src/test/java/io/cloudquery/scalar/Int16Test.java @@ -1,128 +1,141 @@ package io.cloudquery.scalar; -import org.apache.arrow.vector.types.pojo.ArrowType; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.*; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.junit.jupiter.api.Test; public class Int16Test { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Number.Int16(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Number.Int16(); }); - } + } - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Number.Int16(1); - new Number.Int16("1"); + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Number.Int16(1); + new Number.Int16("1"); - Scalar s = new Number.Int16(2); - new Number.Int16(s); + Scalar s = new Number.Int16(2); + new Number.Int16(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Number.Int16(new char[]{'q'}); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Number.Int16(new char[] {'q'}); }); - } + } - @Test - public void testToString() { - Number.Int16 int16 = new Number.Int16(); - assertEquals(Scalar.NULL_VALUE_STRING, int16.toString()); + @Test + public void testToString() { + Number.Int16 int16 = new Number.Int16(); + assertEquals(Scalar.NULL_VALUE_STRING, int16.toString()); - assertDoesNotThrow(() -> { - int16.set("1"); + assertDoesNotThrow( + () -> { + int16.set("1"); }); - assertEquals("1", int16.toString()); + assertEquals("1", int16.toString()); - assertDoesNotThrow(() -> { - int16.set(2); + assertDoesNotThrow( + () -> { + int16.set(2); }); - assertEquals("2", int16.toString()); - } - - @Test - public void testDataType() { - Number.Int16 int16 = new Number.Int16(); - assertEquals(new ArrowType.Int(Short.SIZE, true), int16.dataType()); - } - - @Test - public void testIsValid() { - Number.Int16 int16 = new Number.Int16(); - assertFalse(int16.isValid()); - - assertDoesNotThrow(() -> { - int16.set("1"); + assertEquals("2", int16.toString()); + } + + @Test + public void testDataType() { + Number.Int16 int16 = new Number.Int16(); + assertEquals(new ArrowType.Int(Short.SIZE, true), int16.dataType()); + } + + @Test + public void testIsValid() { + Number.Int16 int16 = new Number.Int16(); + assertFalse(int16.isValid()); + + assertDoesNotThrow( + () -> { + int16.set("1"); }); - assertTrue(int16.isValid()); - } - - @Test - public void testSet() { - Number.Int16 int16 = new Number.Int16(); - assertDoesNotThrow(() -> { - new Number.Int16(1); - new Number.Int16("2"); - - Scalar s = new Number.Int16(1); - int16.set(s); + assertTrue(int16.isValid()); + } + + @Test + public void testSet() { + Number.Int16 int16 = new Number.Int16(); + assertDoesNotThrow( + () -> { + new Number.Int16(1); + new Number.Int16("2"); + + Scalar s = new Number.Int16(1); + int16.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Number.Int16 int16 = new Number.Int16(); - assertThrows(ValidationException.class, () -> { - int16.set(new char[]{}); + } + + @Test + public void testSetWithInvalidParam() { + Number.Int16 int16 = new Number.Int16(); + assertThrows( + ValidationException.class, + () -> { + int16.set(new char[] {}); }); - } + } - @Test - public void testGet() { - Number.Int16 int16 = new Number.Int16(); - assertFalse(int16.isValid()); - assertNull(int16.get()); + @Test + public void testGet() { + Number.Int16 int16 = new Number.Int16(); + assertFalse(int16.isValid()); + assertNull(int16.get()); - assertDoesNotThrow(() -> { - int16.set(1); + assertDoesNotThrow( + () -> { + int16.set(1); }); - assertTrue(int16.isValid()); - assertEquals((byte) 1, int16.get()); + assertTrue(int16.isValid()); + assertEquals((byte) 1, int16.get()); - assertDoesNotThrow(() -> { - int16.set("-1"); + assertDoesNotThrow( + () -> { + int16.set("-1"); }); - assertTrue(int16.isValid()); - assertEquals((byte) -1, int16.get()); - } - - @Test - public void testEquals() { - Number.Int16 a = new Number.Int16(); - Number.Int16 b = new Number.Int16(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Binary()); // we can't cast Binary to Number.Int16 - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(1); + assertTrue(int16.isValid()); + assertEquals((byte) -1, int16.get()); + } + + @Test + public void testEquals() { + Number.Int16 a = new Number.Int16(); + Number.Int16 b = new Number.Int16(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Binary()); // we can't cast Binary to Number.Int16 + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(1); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 1, -1, "2"}) { - a.set(obj); - assertEquals(a, new Number.Int16(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : new Object[] {null, 1, -1, "2"}) { + a.set(obj); + assertEquals(a, new Number.Int16(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/Int32Test.java b/lib/src/test/java/io/cloudquery/scalar/Int32Test.java index eb14539..f4f6f1c 100644 --- a/lib/src/test/java/io/cloudquery/scalar/Int32Test.java +++ b/lib/src/test/java/io/cloudquery/scalar/Int32Test.java @@ -1,128 +1,141 @@ package io.cloudquery.scalar; -import org.apache.arrow.vector.types.pojo.ArrowType; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.*; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.junit.jupiter.api.Test; public class Int32Test { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Number.Int32(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Number.Int32(); }); - } + } - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Number.Int32(1); - new Number.Int32("1"); + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Number.Int32(1); + new Number.Int32("1"); - Scalar s = new Number.Int32(2); - new Number.Int32(s); + Scalar s = new Number.Int32(2); + new Number.Int32(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Number.Int32(new char[]{'q'}); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Number.Int32(new char[] {'q'}); }); - } + } - @Test - public void testToString() { - Number.Int32 int32 = new Number.Int32(); - assertEquals(Scalar.NULL_VALUE_STRING, int32.toString()); + @Test + public void testToString() { + Number.Int32 int32 = new Number.Int32(); + assertEquals(Scalar.NULL_VALUE_STRING, int32.toString()); - assertDoesNotThrow(() -> { - int32.set("1"); + assertDoesNotThrow( + () -> { + int32.set("1"); }); - assertEquals("1", int32.toString()); + assertEquals("1", int32.toString()); - assertDoesNotThrow(() -> { - int32.set(2); + assertDoesNotThrow( + () -> { + int32.set(2); }); - assertEquals("2", int32.toString()); - } - - @Test - public void testDataType() { - Number.Int32 int32 = new Number.Int32(); - assertEquals(new ArrowType.Int(Integer.SIZE, true), int32.dataType()); - } - - @Test - public void testIsValid() { - Number.Int32 int32 = new Number.Int32(); - assertFalse(int32.isValid()); - - assertDoesNotThrow(() -> { - int32.set("1"); + assertEquals("2", int32.toString()); + } + + @Test + public void testDataType() { + Number.Int32 int32 = new Number.Int32(); + assertEquals(new ArrowType.Int(Integer.SIZE, true), int32.dataType()); + } + + @Test + public void testIsValid() { + Number.Int32 int32 = new Number.Int32(); + assertFalse(int32.isValid()); + + assertDoesNotThrow( + () -> { + int32.set("1"); }); - assertTrue(int32.isValid()); - } - - @Test - public void testSet() { - Number.Int32 int32 = new Number.Int32(); - assertDoesNotThrow(() -> { - new Number.Int32(1); - new Number.Int32("2"); - - Scalar s = new Number.Int32(1); - int32.set(s); + assertTrue(int32.isValid()); + } + + @Test + public void testSet() { + Number.Int32 int32 = new Number.Int32(); + assertDoesNotThrow( + () -> { + new Number.Int32(1); + new Number.Int32("2"); + + Scalar s = new Number.Int32(1); + int32.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Number.Int32 int32 = new Number.Int32(); - assertThrows(ValidationException.class, () -> { - int32.set(new char[]{}); + } + + @Test + public void testSetWithInvalidParam() { + Number.Int32 int32 = new Number.Int32(); + assertThrows( + ValidationException.class, + () -> { + int32.set(new char[] {}); }); - } + } - @Test - public void testGet() { - Number.Int32 int32 = new Number.Int32(); - assertFalse(int32.isValid()); - assertNull(int32.get()); + @Test + public void testGet() { + Number.Int32 int32 = new Number.Int32(); + assertFalse(int32.isValid()); + assertNull(int32.get()); - assertDoesNotThrow(() -> { - int32.set(1); + assertDoesNotThrow( + () -> { + int32.set(1); }); - assertTrue(int32.isValid()); - assertEquals((byte) 1, int32.get()); + assertTrue(int32.isValid()); + assertEquals((byte) 1, int32.get()); - assertDoesNotThrow(() -> { - int32.set("-1"); + assertDoesNotThrow( + () -> { + int32.set("-1"); }); - assertTrue(int32.isValid()); - assertEquals((byte) -1, int32.get()); - } - - @Test - public void testEquals() { - Number.Int32 a = new Number.Int32(); - Number.Int32 b = new Number.Int32(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Binary()); // we can't cast Binary to Number.Int32 - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(1); + assertTrue(int32.isValid()); + assertEquals((byte) -1, int32.get()); + } + + @Test + public void testEquals() { + Number.Int32 a = new Number.Int32(); + Number.Int32 b = new Number.Int32(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Binary()); // we can't cast Binary to Number.Int32 + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(1); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 1, -1, "2"}) { - a.set(obj); - assertEquals(a, new Number.Int32(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : new Object[] {null, 1, -1, "2"}) { + a.set(obj); + assertEquals(a, new Number.Int32(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/Int64Test.java b/lib/src/test/java/io/cloudquery/scalar/Int64Test.java index f80b644..86d8ac1 100644 --- a/lib/src/test/java/io/cloudquery/scalar/Int64Test.java +++ b/lib/src/test/java/io/cloudquery/scalar/Int64Test.java @@ -1,128 +1,141 @@ package io.cloudquery.scalar; -import org.apache.arrow.vector.types.pojo.ArrowType; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.*; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.junit.jupiter.api.Test; public class Int64Test { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Number.Int64(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Number.Int64(); }); - } + } - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Number.Int64(1); - new Number.Int64("1"); + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Number.Int64(1); + new Number.Int64("1"); - Scalar s = new Number.Int64(2); - new Number.Int64(s); + Scalar s = new Number.Int64(2); + new Number.Int64(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Number.Int64(new char[]{'q'}); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Number.Int64(new char[] {'q'}); }); - } + } - @Test - public void testToString() { - Number.Int64 int64 = new Number.Int64(); - assertEquals(Scalar.NULL_VALUE_STRING, int64.toString()); + @Test + public void testToString() { + Number.Int64 int64 = new Number.Int64(); + assertEquals(Scalar.NULL_VALUE_STRING, int64.toString()); - assertDoesNotThrow(() -> { - int64.set("1"); + assertDoesNotThrow( + () -> { + int64.set("1"); }); - assertEquals("1", int64.toString()); + assertEquals("1", int64.toString()); - assertDoesNotThrow(() -> { - int64.set(2); + assertDoesNotThrow( + () -> { + int64.set(2); }); - assertEquals("2", int64.toString()); - } - - @Test - public void testDataType() { - Number.Int64 int64 = new Number.Int64(); - assertEquals(new ArrowType.Int(Long.SIZE, true), int64.dataType()); - } - - @Test - public void testIsValid() { - Number.Int64 int64 = new Number.Int64(); - assertFalse(int64.isValid()); - - assertDoesNotThrow(() -> { - int64.set("1"); + assertEquals("2", int64.toString()); + } + + @Test + public void testDataType() { + Number.Int64 int64 = new Number.Int64(); + assertEquals(new ArrowType.Int(Long.SIZE, true), int64.dataType()); + } + + @Test + public void testIsValid() { + Number.Int64 int64 = new Number.Int64(); + assertFalse(int64.isValid()); + + assertDoesNotThrow( + () -> { + int64.set("1"); }); - assertTrue(int64.isValid()); - } - - @Test - public void testSet() { - Number.Int64 int64 = new Number.Int64(); - assertDoesNotThrow(() -> { - new Number.Int64(1); - new Number.Int64("2"); - - Scalar s = new Number.Int64(1); - int64.set(s); + assertTrue(int64.isValid()); + } + + @Test + public void testSet() { + Number.Int64 int64 = new Number.Int64(); + assertDoesNotThrow( + () -> { + new Number.Int64(1); + new Number.Int64("2"); + + Scalar s = new Number.Int64(1); + int64.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Number.Int64 int64 = new Number.Int64(); - assertThrows(ValidationException.class, () -> { - int64.set(new char[]{}); + } + + @Test + public void testSetWithInvalidParam() { + Number.Int64 int64 = new Number.Int64(); + assertThrows( + ValidationException.class, + () -> { + int64.set(new char[] {}); }); - } + } - @Test - public void testGet() { - Number.Int64 int64 = new Number.Int64(); - assertFalse(int64.isValid()); - assertNull(int64.get()); + @Test + public void testGet() { + Number.Int64 int64 = new Number.Int64(); + assertFalse(int64.isValid()); + assertNull(int64.get()); - assertDoesNotThrow(() -> { - int64.set(1); + assertDoesNotThrow( + () -> { + int64.set(1); }); - assertTrue(int64.isValid()); - assertEquals((byte) 1, int64.get()); + assertTrue(int64.isValid()); + assertEquals((byte) 1, int64.get()); - assertDoesNotThrow(() -> { - int64.set("-1"); + assertDoesNotThrow( + () -> { + int64.set("-1"); }); - assertTrue(int64.isValid()); - assertEquals((byte) -1, int64.get()); - } - - @Test - public void testEquals() { - Number.Int64 a = new Number.Int64(); - Number.Int64 b = new Number.Int64(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Binary()); // we can't cast Binary to Number.Int64 - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(1); + assertTrue(int64.isValid()); + assertEquals((byte) -1, int64.get()); + } + + @Test + public void testEquals() { + Number.Int64 a = new Number.Int64(); + Number.Int64 b = new Number.Int64(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Binary()); // we can't cast Binary to Number.Int64 + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(1); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 1, -1, "2"}) { - a.set(obj); - assertEquals(a, new Number.Int64(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : new Object[] {null, 1, -1, "2"}) { + a.set(obj); + assertEquals(a, new Number.Int64(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/Int8Test.java b/lib/src/test/java/io/cloudquery/scalar/Int8Test.java index a71f480..a06bc66 100644 --- a/lib/src/test/java/io/cloudquery/scalar/Int8Test.java +++ b/lib/src/test/java/io/cloudquery/scalar/Int8Test.java @@ -1,129 +1,141 @@ package io.cloudquery.scalar; -import org.apache.arrow.vector.types.DateUnit; -import org.apache.arrow.vector.types.pojo.ArrowType; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.*; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.junit.jupiter.api.Test; public class Int8Test { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Number.Int8(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Number.Int8(); }); - } + } - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Number.Int8(1); - new Number.Int8("1"); + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Number.Int8(1); + new Number.Int8("1"); - Scalar s = new Number.Int8(2); - new Number.Int8(s); + Scalar s = new Number.Int8(2); + new Number.Int8(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Number.Int8(new char[]{'q'}); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Number.Int8(new char[] {'q'}); }); - } + } - @Test - public void testToString() { - Number.Int8 int8 = new Number.Int8(); - assertEquals(Scalar.NULL_VALUE_STRING, int8.toString()); + @Test + public void testToString() { + Number.Int8 int8 = new Number.Int8(); + assertEquals(Scalar.NULL_VALUE_STRING, int8.toString()); - assertDoesNotThrow(() -> { - int8.set("1"); + assertDoesNotThrow( + () -> { + int8.set("1"); }); - assertEquals("1", int8.toString()); + assertEquals("1", int8.toString()); - assertDoesNotThrow(() -> { - int8.set(2); + assertDoesNotThrow( + () -> { + int8.set(2); }); - assertEquals("2", int8.toString()); - } - - @Test - public void testDataType() { - Number.Int8 int8 = new Number.Int8(); - assertEquals(new ArrowType.Int(Byte.SIZE, true), int8.dataType()); - } - - @Test - public void testIsValid() { - Number.Int8 int8 = new Number.Int8(); - assertFalse(int8.isValid()); - - assertDoesNotThrow(() -> { - int8.set("1"); + assertEquals("2", int8.toString()); + } + + @Test + public void testDataType() { + Number.Int8 int8 = new Number.Int8(); + assertEquals(new ArrowType.Int(Byte.SIZE, true), int8.dataType()); + } + + @Test + public void testIsValid() { + Number.Int8 int8 = new Number.Int8(); + assertFalse(int8.isValid()); + + assertDoesNotThrow( + () -> { + int8.set("1"); }); - assertTrue(int8.isValid()); - } - - @Test - public void testSet() { - Number.Int8 int8 = new Number.Int8(); - assertDoesNotThrow(() -> { - new Number.Int8(1); - new Number.Int8("2"); - - Scalar s = new Number.Int8(1); - int8.set(s); + assertTrue(int8.isValid()); + } + + @Test + public void testSet() { + Number.Int8 int8 = new Number.Int8(); + assertDoesNotThrow( + () -> { + new Number.Int8(1); + new Number.Int8("2"); + + Scalar s = new Number.Int8(1); + int8.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Number.Int8 int8 = new Number.Int8(); - assertThrows(ValidationException.class, () -> { - int8.set(new char[]{}); + } + + @Test + public void testSetWithInvalidParam() { + Number.Int8 int8 = new Number.Int8(); + assertThrows( + ValidationException.class, + () -> { + int8.set(new char[] {}); }); - } + } - @Test - public void testGet() { - Number.Int8 int8 = new Number.Int8(); - assertFalse(int8.isValid()); - assertNull(int8.get()); + @Test + public void testGet() { + Number.Int8 int8 = new Number.Int8(); + assertFalse(int8.isValid()); + assertNull(int8.get()); - assertDoesNotThrow(() -> { - int8.set(1); + assertDoesNotThrow( + () -> { + int8.set(1); }); - assertTrue(int8.isValid()); - assertEquals((byte) 1, int8.get()); + assertTrue(int8.isValid()); + assertEquals((byte) 1, int8.get()); - assertDoesNotThrow(() -> { - int8.set("-1"); + assertDoesNotThrow( + () -> { + int8.set("-1"); }); - assertTrue(int8.isValid()); - assertEquals((byte) -1, int8.get()); - } - - @Test - public void testEquals() { - Number.Int8 a = new Number.Int8(); - Number.Int8 b = new Number.Int8(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Binary()); // we can't cast Binary to Number.Int8 - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(1); + assertTrue(int8.isValid()); + assertEquals((byte) -1, int8.get()); + } + + @Test + public void testEquals() { + Number.Int8 a = new Number.Int8(); + Number.Int8 b = new Number.Int8(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Binary()); // we can't cast Binary to Number.Int8 + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(1); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 1, -1, "2"}) { - a.set(obj); - assertEquals(a, new Number.Int8(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : new Object[] {null, 1, -1, "2"}) { + a.set(obj); + assertEquals(a, new Number.Int8(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/LargeBinaryTest.java b/lib/src/test/java/io/cloudquery/scalar/LargeBinaryTest.java index 9832228..caebaf6 100644 --- a/lib/src/test/java/io/cloudquery/scalar/LargeBinaryTest.java +++ b/lib/src/test/java/io/cloudquery/scalar/LargeBinaryTest.java @@ -1,157 +1,174 @@ package io.cloudquery.scalar; -import org.apache.arrow.vector.types.pojo.ArrowType; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.*; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.junit.jupiter.api.Test; public class LargeBinaryTest { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Binary.LargeBinary(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Binary.LargeBinary(); }); - } - - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Binary.LargeBinary(new byte[]{'a', 'b', 'c'}); - new Binary.LargeBinary("abc"); - new Binary.LargeBinary(new char[]{'a', 'b', 'c'}); - - Scalar s = new Binary.LargeBinary(new char[]{'a', 'b', 'c'}); - new Binary.LargeBinary(s); + } + + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Binary.LargeBinary(new byte[] {'a', 'b', 'c'}); + new Binary.LargeBinary("abc"); + new Binary.LargeBinary(new char[] {'a', 'b', 'c'}); + + Scalar s = new Binary.LargeBinary(new char[] {'a', 'b', 'c'}); + new Binary.LargeBinary(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Binary.LargeBinary(false); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Binary.LargeBinary(false); }); - } + } - @Test - public void testToString() { - Binary.LargeBinary b = new Binary.LargeBinary(); - assertEquals(Scalar.NULL_VALUE_STRING, b.toString()); + @Test + public void testToString() { + Binary.LargeBinary b = new Binary.LargeBinary(); + assertEquals(Scalar.NULL_VALUE_STRING, b.toString()); - assertDoesNotThrow(() -> { - b.set("abc"); + assertDoesNotThrow( + () -> { + b.set("abc"); }); - assertEquals("abc=", b.toString()); + assertEquals("abc=", b.toString()); - assertDoesNotThrow(() -> { - b.set(new byte[]{0, 1, 2, 3, 4, 5}); + assertDoesNotThrow( + () -> { + b.set(new byte[] {0, 1, 2, 3, 4, 5}); }); - assertEquals("AAECAwQF", b.toString()); - } - - @Test - public void testDataType() { - Binary.LargeBinary b = new Binary.LargeBinary(); - assertEquals(ArrowType.LargeBinary.INSTANCE, b.dataType()); - assertEquals(new ArrowType.LargeBinary(), b.dataType()); - } - - @Test - public void testIsValid() { - Binary.LargeBinary b = new Binary.LargeBinary(); - assertFalse(b.isValid()); - - assertDoesNotThrow(() -> { - b.set("abc"); + assertEquals("AAECAwQF", b.toString()); + } + + @Test + public void testDataType() { + Binary.LargeBinary b = new Binary.LargeBinary(); + assertEquals(ArrowType.LargeBinary.INSTANCE, b.dataType()); + assertEquals(new ArrowType.LargeBinary(), b.dataType()); + } + + @Test + public void testIsValid() { + Binary.LargeBinary b = new Binary.LargeBinary(); + assertFalse(b.isValid()); + + assertDoesNotThrow( + () -> { + b.set("abc"); }); - assertTrue(b.isValid()); - } - - @Test - public void testSet() { - Binary.LargeBinary b = new Binary.LargeBinary(); - assertDoesNotThrow(() -> { - b.set(new byte[]{'a', 'b', 'c'}); - b.set("abc"); - b.set(new char[]{'a', 'b', 'c'}); - - Scalar s = new Binary.LargeBinary(new char[]{'a', 'b', 'c'}); - b.set(s); + assertTrue(b.isValid()); + } + + @Test + public void testSet() { + Binary.LargeBinary b = new Binary.LargeBinary(); + assertDoesNotThrow( + () -> { + b.set(new byte[] {'a', 'b', 'c'}); + b.set("abc"); + b.set(new char[] {'a', 'b', 'c'}); + + Scalar s = new Binary.LargeBinary(new char[] {'a', 'b', 'c'}); + b.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Binary.LargeBinary b = new Binary.LargeBinary(); - assertThrows(ValidationException.class, () -> { - b.set(false); + } + + @Test + public void testSetWithInvalidParam() { + Binary.LargeBinary b = new Binary.LargeBinary(); + assertThrows( + ValidationException.class, + () -> { + b.set(false); }); - } + } - @Test - public void testGet() { - Binary.LargeBinary b = new Binary.LargeBinary(); - assertFalse(b.isValid()); - assertNull(b.get()); + @Test + public void testGet() { + Binary.LargeBinary b = new Binary.LargeBinary(); + assertFalse(b.isValid()); + assertNull(b.get()); - assertDoesNotThrow(() -> { - b.set(new byte[]{'a', 'b', 'c'}); + assertDoesNotThrow( + () -> { + b.set(new byte[] {'a', 'b', 'c'}); }); - assertTrue(b.isValid()); - assertArrayEquals(new byte[]{'a', 'b', 'c'}, (byte[]) b.get()); + assertTrue(b.isValid()); + assertArrayEquals(new byte[] {'a', 'b', 'c'}, (byte[]) b.get()); - assertDoesNotThrow(() -> { - b.set("abc"); + assertDoesNotThrow( + () -> { + b.set("abc"); }); - assertTrue(b.isValid()); - assertArrayEquals(new byte[]{105, -73}, (byte[]) b.get()); + assertTrue(b.isValid()); + assertArrayEquals(new byte[] {105, -73}, (byte[]) b.get()); - assertDoesNotThrow(() -> { - b.set(new char[]{'a', 'b', 'c'}); + assertDoesNotThrow( + () -> { + b.set(new char[] {'a', 'b', 'c'}); }); - assertTrue(b.isValid()); - assertArrayEquals(new byte[]{105, -73}, (byte[]) b.get()); + assertTrue(b.isValid()); + assertArrayEquals(new byte[] {105, -73}, (byte[]) b.get()); - assertDoesNotThrow(() -> { - Scalar s = new Binary.LargeBinary(new char[]{'a', 'b', 'c'}); - b.set(s); + assertDoesNotThrow( + () -> { + Scalar s = new Binary.LargeBinary(new char[] {'a', 'b', 'c'}); + b.set(s); }); - assertTrue(b.isValid()); - assertArrayEquals(new byte[]{105, -73}, (byte[]) b.get()); + assertTrue(b.isValid()); + assertArrayEquals(new byte[] {105, -73}, (byte[]) b.get()); - assertDoesNotThrow(() -> { - Scalar s = new Binary.LargeBinary(new byte[]{'a', 'b', 'c'}); - b.set(s); + assertDoesNotThrow( + () -> { + Scalar s = new Binary.LargeBinary(new byte[] {'a', 'b', 'c'}); + b.set(s); }); - assertTrue(b.isValid()); - assertArrayEquals(new byte[]{'a', 'b', 'c'}, (byte[]) b.get()); - } - - @Test - public void testEquals() { - Binary.LargeBinary a = new Binary.LargeBinary(); - Binary.LargeBinary b = new Binary.LargeBinary(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Bool()); // we can't cast Bool to Binary.LargeBinary - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(new byte[]{'a', 'b', 'c'}); + assertTrue(b.isValid()); + assertArrayEquals(new byte[] {'a', 'b', 'c'}, (byte[]) b.get()); + } + + @Test + public void testEquals() { + Binary.LargeBinary a = new Binary.LargeBinary(); + Binary.LargeBinary b = new Binary.LargeBinary(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Bool()); // we can't cast Bool to Binary.LargeBinary + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(new byte[] {'a', 'b', 'c'}); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{ - null, - new byte[]{'a', 'b', 'c'}, - new char[]{'a', 'b', 'c'}, - "abc", - new Binary.LargeBinary("abc"), - }) { - a.set(obj); - assertEquals(a, new Binary.LargeBinary(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : + new Object[] { + null, + new byte[] {'a', 'b', 'c'}, + new char[] {'a', 'b', 'c'}, + "abc", + new Binary.LargeBinary("abc"), + }) { + a.set(obj); + assertEquals(a, new Binary.LargeBinary(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/ScalarTest.java b/lib/src/test/java/io/cloudquery/scalar/ScalarTest.java index 33237db..3b21bf9 100644 --- a/lib/src/test/java/io/cloudquery/scalar/ScalarTest.java +++ b/lib/src/test/java/io/cloudquery/scalar/ScalarTest.java @@ -1,6 +1,10 @@ package io.cloudquery.scalar; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; + import io.cloudquery.types.UUIDType; +import java.time.ZoneOffset; +import java.util.stream.Stream; import org.apache.arrow.vector.types.DateUnit; import org.apache.arrow.vector.types.FloatingPointPrecision; import org.apache.arrow.vector.types.TimeUnit; @@ -10,62 +14,62 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.time.ZoneOffset; -import java.util.stream.Stream; - -import static org.junit.jupiter.api.Assertions.assertInstanceOf; - public class ScalarTest { - @ParameterizedTest - @MethodSource("testDataSource") - public void shouldCreateScalarFromArrowType(ArrowType arrowType, Class> scalarClazz) { - ExtensionTypeRegistry.register(new UUIDType()); + @ParameterizedTest + @MethodSource("testDataSource") + public void shouldCreateScalarFromArrowType( + ArrowType arrowType, Class> scalarClazz) { + ExtensionTypeRegistry.register(new UUIDType()); - assertInstanceOf(scalarClazz, Scalar.fromArrowType(arrowType)); - } + assertInstanceOf(scalarClazz, Scalar.fromArrowType(arrowType)); + } - public static Stream testDataSource() { - return Stream.of( - // Timestamp - Arguments.of(new ArrowType.Timestamp(TimeUnit.MILLISECOND, ZoneOffset.UTC.toString()), Timestamp.class), + public static Stream testDataSource() { + return Stream.of( + // Timestamp + Arguments.of( + new ArrowType.Timestamp(TimeUnit.MILLISECOND, ZoneOffset.UTC.toString()), + Timestamp.class), - // String - Arguments.of(new ArrowType.Utf8(), String.class), - Arguments.of(new ArrowType.LargeUtf8(), String.class), + // String + Arguments.of(new ArrowType.Utf8(), String.class), + Arguments.of(new ArrowType.LargeUtf8(), String.class), - // Binary - Arguments.of(new ArrowType.Binary(), Binary.class), - Arguments.of(new ArrowType.LargeBinary(), Binary.LargeBinary.class), + // Binary + Arguments.of(new ArrowType.Binary(), Binary.class), + Arguments.of(new ArrowType.LargeBinary(), Binary.LargeBinary.class), - // Boolean - Arguments.of(new ArrowType.Bool(), Bool.class), + // Boolean + Arguments.of(new ArrowType.Bool(), Bool.class), - // Signed Integers - Arguments.of(new ArrowType.Int(8, true), Number.Int8.class), - Arguments.of(new ArrowType.Int(16, true), Number.Int16.class), - Arguments.of(new ArrowType.Int(32, true), Number.Int32.class), - Arguments.of(new ArrowType.Int(64, true), Number.Int64.class), + // Signed Integers + Arguments.of(new ArrowType.Int(8, true), Number.Int8.class), + Arguments.of(new ArrowType.Int(16, true), Number.Int16.class), + Arguments.of(new ArrowType.Int(32, true), Number.Int32.class), + Arguments.of(new ArrowType.Int(64, true), Number.Int64.class), - // Unsigned Integers - Arguments.of(new ArrowType.Int(8, false), Number.UInt8.class), - Arguments.of(new ArrowType.Int(16, false), Number.UInt16.class), - Arguments.of(new ArrowType.Int(32, false), Number.UInt32.class), - Arguments.of(new ArrowType.Int(64, false), Number.UInt64.class), + // Unsigned Integers + Arguments.of(new ArrowType.Int(8, false), Number.UInt8.class), + Arguments.of(new ArrowType.Int(16, false), Number.UInt16.class), + Arguments.of(new ArrowType.Int(32, false), Number.UInt32.class), + Arguments.of(new ArrowType.Int(64, false), Number.UInt64.class), - // Float - // Arguments.of( new ArrowType.FloatingPoint(FloatingPointPrecision.HALF), Number.Float16.class), - Arguments.of(new ArrowType.FloatingPoint(FloatingPointPrecision.SINGLE), Number.Float32.class), - Arguments.of(new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE), Number.Float64.class), + // Float + // Arguments.of( new ArrowType.FloatingPoint(FloatingPointPrecision.HALF), + // Number.Float16.class), + Arguments.of( + new ArrowType.FloatingPoint(FloatingPointPrecision.SINGLE), Number.Float32.class), + Arguments.of( + new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE), Number.Float64.class), - // Extension - Arguments.of(new UUIDType(), UUID.class), + // Extension + Arguments.of(new UUIDType(), UUID.class), - // Date - Arguments.of(new ArrowType.Date(DateUnit.DAY), DateDay.class), - Arguments.of(new ArrowType.Date(DateUnit.MILLISECOND), DateMilli.class), + // Date + Arguments.of(new ArrowType.Date(DateUnit.DAY), DateDay.class), + Arguments.of(new ArrowType.Date(DateUnit.MILLISECOND), DateMilli.class), - // Duration - Arguments.of(new ArrowType.Duration(TimeUnit.MILLISECOND), Duration.class) - ); - } + // Duration + Arguments.of(new ArrowType.Duration(TimeUnit.MILLISECOND), Duration.class)); + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/StringTest.java b/lib/src/test/java/io/cloudquery/scalar/StringTest.java index 0b245d7..7d6e76b 100644 --- a/lib/src/test/java/io/cloudquery/scalar/StringTest.java +++ b/lib/src/test/java/io/cloudquery/scalar/StringTest.java @@ -1,117 +1,126 @@ package io.cloudquery.scalar; -import org.apache.arrow.vector.types.pojo.ArrowType; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.*; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.junit.jupiter.api.Test; public class StringTest { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new String(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new String(); }); - } - - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new String(1); - new String("PT8H6M12.345S"); - new String(""); - - Scalar s = new String(null); - new String(s); + } + + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new String(1); + new String("PT8H6M12.345S"); + new String(""); + + Scalar s = new String(null); + new String(s); }); - } + } - @Test - public void testToString() { - String string = new String(); - assertEquals(Scalar.NULL_VALUE_STRING, string.toString()); + @Test + public void testToString() { + String string = new String(); + assertEquals(Scalar.NULL_VALUE_STRING, string.toString()); - assertDoesNotThrow(() -> { - string.set(1); + assertDoesNotThrow( + () -> { + string.set(1); }); - assertEquals("1", string.toString()); + assertEquals("1", string.toString()); - assertDoesNotThrow(() -> { - string.set(-1L); + assertDoesNotThrow( + () -> { + string.set(-1L); }); - assertEquals("-1", string.toString()); - } - - @Test - public void testDataType() { - String string = new String(); - assertEquals(ArrowType.Utf8.INSTANCE, string.dataType()); - assertEquals(new ArrowType.Utf8(), string.dataType()); - } - - @Test - public void testIsValid() { - String string = new String(); - assertFalse(string.isValid()); - - assertDoesNotThrow(() -> { - string.set(1L); + assertEquals("-1", string.toString()); + } + + @Test + public void testDataType() { + String string = new String(); + assertEquals(ArrowType.Utf8.INSTANCE, string.dataType()); + assertEquals(new ArrowType.Utf8(), string.dataType()); + } + + @Test + public void testIsValid() { + String string = new String(); + assertFalse(string.isValid()); + + assertDoesNotThrow( + () -> { + string.set(1L); }); - assertTrue(string.isValid()); - } - - @Test - public void testSet() { - String string = new String(); - assertDoesNotThrow(() -> { - string.set(1); - string.set(1L); - string.set("PT8H6M12.345S"); - string.set(null); - - Scalar s = new String(""); - string.set(s); + assertTrue(string.isValid()); + } + + @Test + public void testSet() { + String string = new String(); + assertDoesNotThrow( + () -> { + string.set(1); + string.set(1L); + string.set("PT8H6M12.345S"); + string.set(null); + + Scalar s = new String(""); + string.set(s); }); - } + } - @Test - public void testGet() { - String string = new String(); - assertFalse(string.isValid()); - assertNull(string.get()); + @Test + public void testGet() { + String string = new String(); + assertFalse(string.isValid()); + assertNull(string.get()); - assertDoesNotThrow(() -> { - string.set(-1L); + assertDoesNotThrow( + () -> { + string.set(-1L); }); - assertTrue(string.isValid()); - assertEquals("-1", string.get()); + assertTrue(string.isValid()); + assertEquals("-1", string.get()); - assertDoesNotThrow(() -> { - string.set(""); + assertDoesNotThrow( + () -> { + string.set(""); }); - assertTrue(string.isValid()); - assertEquals("", string.get()); - } - - @Test - public void testEquals() { - String a = new String(); - String b = new String(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Bool()); // we can't cast Bool to String - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(-1L); + assertTrue(string.isValid()); + assertEquals("", string.get()); + } + + @Test + public void testEquals() { + String a = new String(); + String b = new String(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Bool()); // we can't cast Bool to String + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(-1L); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 0, 0L, -1, -1L, 1, 1L, "PT8H6M12.345S", ""}) { - a.set(obj); - assertEquals(a, new String(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : new Object[] {null, 0, 0L, -1, -1L, 1, 1L, "PT8H6M12.345S", ""}) { + a.set(obj); + assertEquals(a, new String(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/TimestampTest.java b/lib/src/test/java/io/cloudquery/scalar/TimestampTest.java index f66effa..bfcd0ce 100644 --- a/lib/src/test/java/io/cloudquery/scalar/TimestampTest.java +++ b/lib/src/test/java/io/cloudquery/scalar/TimestampTest.java @@ -1,138 +1,161 @@ package io.cloudquery.scalar; -import org.apache.arrow.vector.types.TimeUnit; -import org.apache.arrow.vector.types.pojo.ArrowType; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; import java.time.Instant; import java.time.ZoneOffset; import java.time.ZonedDateTime; - -import static org.junit.jupiter.api.Assertions.*; - +import org.apache.arrow.vector.types.TimeUnit; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.junit.jupiter.api.Test; public class TimestampTest { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Timestamp(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Timestamp(); }); - } - - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Timestamp(1); - new Timestamp("2011-12-03T10:15:30+01:00[Europe/Paris]"); - new Timestamp(ZonedDateTime.now()); - - Scalar s = new Timestamp(ZonedDateTime.now()); - new Timestamp(s); + } + + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Timestamp(1); + new Timestamp("2011-12-03T10:15:30+01:00[Europe/Paris]"); + new Timestamp(ZonedDateTime.now()); + + Scalar s = new Timestamp(ZonedDateTime.now()); + new Timestamp(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Timestamp(false); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Timestamp(false); }); - } + } - @Test - public void testToString() { - Timestamp timestamp = new Timestamp(); - assertEquals(Scalar.NULL_VALUE_STRING, timestamp.toString()); + @Test + public void testToString() { + Timestamp timestamp = new Timestamp(); + assertEquals(Scalar.NULL_VALUE_STRING, timestamp.toString()); - assertDoesNotThrow(() -> { - timestamp.set(1); + assertDoesNotThrow( + () -> { + timestamp.set(1); }); - assertEquals("1970-01-01T00:00:00.001Z", timestamp.toString()); + assertEquals("1970-01-01T00:00:00.001Z", timestamp.toString()); - java.lang.String ts = ZonedDateTime.now(ZoneOffset.UTC).toString(); - assertDoesNotThrow(() -> { - timestamp.set(ts); + java.lang.String ts = ZonedDateTime.now(ZoneOffset.UTC).toString(); + assertDoesNotThrow( + () -> { + timestamp.set(ts); }); - assertEquals(ts, timestamp.toString()); - } - - @Test - public void testDataType() { - Timestamp timestamp = new Timestamp(); - assertEquals(new ArrowType.Timestamp(TimeUnit.MILLISECOND, "Z"), timestamp.dataType()); - } - - @Test - public void testIsValid() { - Timestamp timestamp = new Timestamp(); - assertFalse(timestamp.isValid()); - - assertDoesNotThrow(() -> { - timestamp.set(1L); + assertEquals(ts, timestamp.toString()); + } + + @Test + public void testDataType() { + Timestamp timestamp = new Timestamp(); + assertEquals(new ArrowType.Timestamp(TimeUnit.MILLISECOND, "Z"), timestamp.dataType()); + } + + @Test + public void testIsValid() { + Timestamp timestamp = new Timestamp(); + assertFalse(timestamp.isValid()); + + assertDoesNotThrow( + () -> { + timestamp.set(1L); }); - assertTrue(timestamp.isValid()); - } - - @Test - public void testSet() { - Timestamp timestamp = new Timestamp(); - assertDoesNotThrow(() -> { - timestamp.set(1); - timestamp.set(1L); - timestamp.set("2011-12-03T10:15:30+01:00[Europe/Paris]"); - timestamp.set(ZonedDateTime.now()); - - Scalar s = new Timestamp(ZonedDateTime.now()); - timestamp.set(s); + assertTrue(timestamp.isValid()); + } + + @Test + public void testSet() { + Timestamp timestamp = new Timestamp(); + assertDoesNotThrow( + () -> { + timestamp.set(1); + timestamp.set(1L); + timestamp.set("2011-12-03T10:15:30+01:00[Europe/Paris]"); + timestamp.set(ZonedDateTime.now()); + + Scalar s = new Timestamp(ZonedDateTime.now()); + timestamp.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Timestamp timestamp = new Timestamp(); - assertThrows(ValidationException.class, () -> { - timestamp.set(false); + } + + @Test + public void testSetWithInvalidParam() { + Timestamp timestamp = new Timestamp(); + assertThrows( + ValidationException.class, + () -> { + timestamp.set(false); }); - } - - @Test - public void testGet() { - Timestamp timestamp = new Timestamp(); - assertFalse(timestamp.isValid()); - assertNull(timestamp.get()); - - ZonedDateTime ts = ZonedDateTime.now(ZoneOffset.UTC); - assertDoesNotThrow(() -> { - timestamp.set(ts); + } + + @Test + public void testGet() { + Timestamp timestamp = new Timestamp(); + assertFalse(timestamp.isValid()); + assertNull(timestamp.get()); + + ZonedDateTime ts = ZonedDateTime.now(ZoneOffset.UTC); + assertDoesNotThrow( + () -> { + timestamp.set(ts); }); - assertTrue(timestamp.isValid()); - assertEquals(ts, timestamp.get()); + assertTrue(timestamp.isValid()); + assertEquals(ts, timestamp.get()); - assertDoesNotThrow(() -> { - timestamp.set(0); + assertDoesNotThrow( + () -> { + timestamp.set(0); }); - assertTrue(timestamp.isValid()); - assertEquals(Instant.EPOCH.atZone(ZoneOffset.UTC), timestamp.get()); - } - - @Test - public void testEquals() { - Timestamp a = new Timestamp(); - Timestamp b = new Timestamp(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Bool()); // we can't cast Bool to Timestamp - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(-1L); + assertTrue(timestamp.isValid()); + assertEquals(Instant.EPOCH.atZone(ZoneOffset.UTC), timestamp.get()); + } + + @Test + public void testEquals() { + Timestamp a = new Timestamp(); + Timestamp b = new Timestamp(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Bool()); // we can't cast Bool to Timestamp + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(-1L); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 0, 0L, -1, -1L, 1, 1L, "1970-01-01T00:00:00.001Z", Instant.EPOCH.atZone(ZoneOffset.UTC)}) { - a.set(obj); - assertEquals(a, new Timestamp(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : + new Object[] { + null, + 0, + 0L, + -1, + -1L, + 1, + 1L, + "1970-01-01T00:00:00.001Z", + Instant.EPOCH.atZone(ZoneOffset.UTC) + }) { + a.set(obj); + assertEquals(a, new Timestamp(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/UInt16Test.java b/lib/src/test/java/io/cloudquery/scalar/UInt16Test.java index f7d769e..fb98976 100644 --- a/lib/src/test/java/io/cloudquery/scalar/UInt16Test.java +++ b/lib/src/test/java/io/cloudquery/scalar/UInt16Test.java @@ -1,128 +1,141 @@ package io.cloudquery.scalar; +import static org.junit.jupiter.api.Assertions.*; + import org.apache.arrow.vector.types.pojo.ArrowType; -import org.joou.UByte; import org.joou.UShort; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - - public class UInt16Test { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Number.UInt16(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Number.UInt16(); }); - } + } - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Number.UInt16(1); - new Number.UInt16("1"); + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Number.UInt16(1); + new Number.UInt16("1"); - Scalar s = new Number.UInt16(2); - new Number.UInt16(s); + Scalar s = new Number.UInt16(2); + new Number.UInt16(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Number.UInt16(new char[]{'q'}); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Number.UInt16(new char[] {'q'}); }); - } + } - @Test - public void testToString() { - Number.UInt16 uint16 = new Number.UInt16(); - assertEquals(Scalar.NULL_VALUE_STRING, uint16.toString()); + @Test + public void testToString() { + Number.UInt16 uint16 = new Number.UInt16(); + assertEquals(Scalar.NULL_VALUE_STRING, uint16.toString()); - assertDoesNotThrow(() -> { - uint16.set("1"); + assertDoesNotThrow( + () -> { + uint16.set("1"); }); - assertEquals("1", uint16.toString()); + assertEquals("1", uint16.toString()); - assertDoesNotThrow(() -> { - uint16.set(2); + assertDoesNotThrow( + () -> { + uint16.set(2); }); - assertEquals("2", uint16.toString()); - } - - @Test - public void testDataType() { - Number.UInt16 uint16 = new Number.UInt16(); - assertEquals(new ArrowType.Int(Short.SIZE, false), uint16.dataType()); - } - - @Test - public void testIsValid() { - Number.UInt16 uint16 = new Number.UInt16(); - assertFalse(uint16.isValid()); - - assertDoesNotThrow(() -> { - uint16.set("1"); + assertEquals("2", uint16.toString()); + } + + @Test + public void testDataType() { + Number.UInt16 uint16 = new Number.UInt16(); + assertEquals(new ArrowType.Int(Short.SIZE, false), uint16.dataType()); + } + + @Test + public void testIsValid() { + Number.UInt16 uint16 = new Number.UInt16(); + assertFalse(uint16.isValid()); + + assertDoesNotThrow( + () -> { + uint16.set("1"); }); - assertTrue(uint16.isValid()); - } - - @Test - public void testSet() { - Number.UInt16 uint16 = new Number.UInt16(); - assertDoesNotThrow(() -> { - new Number.UInt16(1); - new Number.UInt16("2"); - - Scalar s = new Number.UInt16(1); - uint16.set(s); + assertTrue(uint16.isValid()); + } + + @Test + public void testSet() { + Number.UInt16 uint16 = new Number.UInt16(); + assertDoesNotThrow( + () -> { + new Number.UInt16(1); + new Number.UInt16("2"); + + Scalar s = new Number.UInt16(1); + uint16.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Number.UInt16 uint16 = new Number.UInt16(); - assertThrows(ValidationException.class, () -> { - uint16.set(new char[]{}); + } + + @Test + public void testSetWithInvalidParam() { + Number.UInt16 uint16 = new Number.UInt16(); + assertThrows( + ValidationException.class, + () -> { + uint16.set(new char[] {}); }); - } + } - @Test - public void testGet() { - Number.UInt16 uint16 = new Number.UInt16(); - assertFalse(uint16.isValid()); - assertNull(uint16.get()); + @Test + public void testGet() { + Number.UInt16 uint16 = new Number.UInt16(); + assertFalse(uint16.isValid()); + assertNull(uint16.get()); - assertDoesNotThrow(() -> { - uint16.set(1); + assertDoesNotThrow( + () -> { + uint16.set(1); }); - assertTrue(uint16.isValid()); - assertEquals(UShort.valueOf(1), uint16.get()); + assertTrue(uint16.isValid()); + assertEquals(UShort.valueOf(1), uint16.get()); - assertThrows(NumberFormatException.class, () -> { - uint16.set("-1"); + assertThrows( + NumberFormatException.class, + () -> { + uint16.set("-1"); }); - } - - @Test - public void testEquals() { - Number.UInt16 a = new Number.UInt16(); - Number.UInt16 b = new Number.UInt16(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Binary()); // we can't cast Binary to Number.UInt16 - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(1); + } + + @Test + public void testEquals() { + Number.UInt16 a = new Number.UInt16(); + Number.UInt16 b = new Number.UInt16(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Binary()); // we can't cast Binary to Number.UInt16 + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(1); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 1, -1, "2"}) { - a.set(obj); - assertEquals(a, new Number.UInt16(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : new Object[] {null, 1, -1, "2"}) { + a.set(obj); + assertEquals(a, new Number.UInt16(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/UInt32Test.java b/lib/src/test/java/io/cloudquery/scalar/UInt32Test.java index 12f7049..3259d18 100644 --- a/lib/src/test/java/io/cloudquery/scalar/UInt32Test.java +++ b/lib/src/test/java/io/cloudquery/scalar/UInt32Test.java @@ -1,127 +1,141 @@ package io.cloudquery.scalar; +import static org.junit.jupiter.api.Assertions.*; + import org.apache.arrow.vector.types.pojo.ArrowType; import org.joou.UInteger; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - - public class UInt32Test { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Number.UInt32(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Number.UInt32(); }); - } + } - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Number.UInt32(1); - new Number.UInt32("1"); + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Number.UInt32(1); + new Number.UInt32("1"); - Scalar s = new Number.UInt32(2); - new Number.UInt32(s); + Scalar s = new Number.UInt32(2); + new Number.UInt32(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Number.UInt32(new char[]{'q'}); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Number.UInt32(new char[] {'q'}); }); - } + } - @Test - public void testToString() { - Number.UInt32 uint32 = new Number.UInt32(); - assertEquals(Scalar.NULL_VALUE_STRING, uint32.toString()); + @Test + public void testToString() { + Number.UInt32 uint32 = new Number.UInt32(); + assertEquals(Scalar.NULL_VALUE_STRING, uint32.toString()); - assertDoesNotThrow(() -> { - uint32.set("1"); + assertDoesNotThrow( + () -> { + uint32.set("1"); }); - assertEquals("1", uint32.toString()); + assertEquals("1", uint32.toString()); - assertDoesNotThrow(() -> { - uint32.set(2); + assertDoesNotThrow( + () -> { + uint32.set(2); }); - assertEquals("2", uint32.toString()); - } - - @Test - public void testDataType() { - Number.UInt32 uint32 = new Number.UInt32(); - assertEquals(new ArrowType.Int(Integer.SIZE, false), uint32.dataType()); - } - - @Test - public void testIsValid() { - Number.UInt32 uint32 = new Number.UInt32(); - assertFalse(uint32.isValid()); - - assertDoesNotThrow(() -> { - uint32.set("1"); + assertEquals("2", uint32.toString()); + } + + @Test + public void testDataType() { + Number.UInt32 uint32 = new Number.UInt32(); + assertEquals(new ArrowType.Int(Integer.SIZE, false), uint32.dataType()); + } + + @Test + public void testIsValid() { + Number.UInt32 uint32 = new Number.UInt32(); + assertFalse(uint32.isValid()); + + assertDoesNotThrow( + () -> { + uint32.set("1"); }); - assertTrue(uint32.isValid()); - } - - @Test - public void testSet() { - Number.UInt32 uint32 = new Number.UInt32(); - assertDoesNotThrow(() -> { - new Number.UInt32(1); - new Number.UInt32("2"); - - Scalar s = new Number.UInt32(1); - uint32.set(s); + assertTrue(uint32.isValid()); + } + + @Test + public void testSet() { + Number.UInt32 uint32 = new Number.UInt32(); + assertDoesNotThrow( + () -> { + new Number.UInt32(1); + new Number.UInt32("2"); + + Scalar s = new Number.UInt32(1); + uint32.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Number.UInt32 uint32 = new Number.UInt32(); - assertThrows(ValidationException.class, () -> { - uint32.set(new char[]{}); + } + + @Test + public void testSetWithInvalidParam() { + Number.UInt32 uint32 = new Number.UInt32(); + assertThrows( + ValidationException.class, + () -> { + uint32.set(new char[] {}); }); - } + } - @Test - public void testGet() { - Number.UInt32 uint32 = new Number.UInt32(); - assertFalse(uint32.isValid()); - assertNull(uint32.get()); + @Test + public void testGet() { + Number.UInt32 uint32 = new Number.UInt32(); + assertFalse(uint32.isValid()); + assertNull(uint32.get()); - assertDoesNotThrow(() -> { - uint32.set(1); + assertDoesNotThrow( + () -> { + uint32.set(1); }); - assertTrue(uint32.isValid()); - assertEquals(UInteger.valueOf(1), uint32.get()); + assertTrue(uint32.isValid()); + assertEquals(UInteger.valueOf(1), uint32.get()); - assertThrows(NumberFormatException.class, () -> { - uint32.set("-1"); + assertThrows( + NumberFormatException.class, + () -> { + uint32.set("-1"); }); - } - - @Test - public void testEquals() { - Number.UInt32 a = new Number.UInt32(); - Number.UInt32 b = new Number.UInt32(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Binary()); // we can't cast Binary to Number.UInt32 - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(1); + } + + @Test + public void testEquals() { + Number.UInt32 a = new Number.UInt32(); + Number.UInt32 b = new Number.UInt32(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Binary()); // we can't cast Binary to Number.UInt32 + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(1); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 1, -1, "2"}) { - a.set(obj); - assertEquals(a, new Number.UInt32(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : new Object[] {null, 1, -1, "2"}) { + a.set(obj); + assertEquals(a, new Number.UInt32(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/UInt64Test.java b/lib/src/test/java/io/cloudquery/scalar/UInt64Test.java index 9c2aa06..4d91b0c 100644 --- a/lib/src/test/java/io/cloudquery/scalar/UInt64Test.java +++ b/lib/src/test/java/io/cloudquery/scalar/UInt64Test.java @@ -1,128 +1,141 @@ package io.cloudquery.scalar; +import static org.junit.jupiter.api.Assertions.*; + import org.apache.arrow.vector.types.pojo.ArrowType; -import org.joou.UInteger; import org.joou.ULong; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - - public class UInt64Test { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Number.UInt64(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Number.UInt64(); }); - } + } - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Number.UInt64(1); - new Number.UInt64("1"); + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Number.UInt64(1); + new Number.UInt64("1"); - Scalar s = new Number.UInt64(2); - new Number.UInt64(s); + Scalar s = new Number.UInt64(2); + new Number.UInt64(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Number.UInt64(new char[]{'q'}); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Number.UInt64(new char[] {'q'}); }); - } + } - @Test - public void testToString() { - Number.UInt64 uint64 = new Number.UInt64(); - assertEquals(Scalar.NULL_VALUE_STRING, uint64.toString()); + @Test + public void testToString() { + Number.UInt64 uint64 = new Number.UInt64(); + assertEquals(Scalar.NULL_VALUE_STRING, uint64.toString()); - assertDoesNotThrow(() -> { - uint64.set("1"); + assertDoesNotThrow( + () -> { + uint64.set("1"); }); - assertEquals("1", uint64.toString()); + assertEquals("1", uint64.toString()); - assertDoesNotThrow(() -> { - uint64.set(2); + assertDoesNotThrow( + () -> { + uint64.set(2); }); - assertEquals("2", uint64.toString()); - } - - @Test - public void testDataType() { - Number.UInt64 uint64 = new Number.UInt64(); - assertEquals(new ArrowType.Int(Long.SIZE, false), uint64.dataType()); - } - - @Test - public void testIsValid() { - Number.UInt64 uint64 = new Number.UInt64(); - assertFalse(uint64.isValid()); - - assertDoesNotThrow(() -> { - uint64.set("1"); + assertEquals("2", uint64.toString()); + } + + @Test + public void testDataType() { + Number.UInt64 uint64 = new Number.UInt64(); + assertEquals(new ArrowType.Int(Long.SIZE, false), uint64.dataType()); + } + + @Test + public void testIsValid() { + Number.UInt64 uint64 = new Number.UInt64(); + assertFalse(uint64.isValid()); + + assertDoesNotThrow( + () -> { + uint64.set("1"); }); - assertTrue(uint64.isValid()); - } - - @Test - public void testSet() { - Number.UInt64 uint64 = new Number.UInt64(); - assertDoesNotThrow(() -> { - new Number.UInt64(1); - new Number.UInt64("2"); - - Scalar s = new Number.UInt64(1); - uint64.set(s); + assertTrue(uint64.isValid()); + } + + @Test + public void testSet() { + Number.UInt64 uint64 = new Number.UInt64(); + assertDoesNotThrow( + () -> { + new Number.UInt64(1); + new Number.UInt64("2"); + + Scalar s = new Number.UInt64(1); + uint64.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Number.UInt64 uint64 = new Number.UInt64(); - assertThrows(ValidationException.class, () -> { - uint64.set(new char[]{}); + } + + @Test + public void testSetWithInvalidParam() { + Number.UInt64 uint64 = new Number.UInt64(); + assertThrows( + ValidationException.class, + () -> { + uint64.set(new char[] {}); }); - } + } - @Test - public void testGet() { - Number.UInt64 uint64 = new Number.UInt64(); - assertFalse(uint64.isValid()); - assertNull(uint64.get()); + @Test + public void testGet() { + Number.UInt64 uint64 = new Number.UInt64(); + assertFalse(uint64.isValid()); + assertNull(uint64.get()); - assertDoesNotThrow(() -> { - uint64.set(1); + assertDoesNotThrow( + () -> { + uint64.set(1); }); - assertTrue(uint64.isValid()); - assertEquals(ULong.valueOf(1), uint64.get()); + assertTrue(uint64.isValid()); + assertEquals(ULong.valueOf(1), uint64.get()); - assertThrows(NumberFormatException.class, () -> { - uint64.set("-1"); + assertThrows( + NumberFormatException.class, + () -> { + uint64.set("-1"); }); - } - - @Test - public void testEquals() { - Number.UInt64 a = new Number.UInt64(); - Number.UInt64 b = new Number.UInt64(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Binary()); // we can't cast Binary to Number.UInt64 - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(1); + } + + @Test + public void testEquals() { + Number.UInt64 a = new Number.UInt64(); + Number.UInt64 b = new Number.UInt64(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Binary()); // we can't cast Binary to Number.UInt64 + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(1); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 1, -1, "2"}) { - a.set(obj); - assertEquals(a, new Number.UInt64(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : new Object[] {null, 1, -1, "2"}) { + a.set(obj); + assertEquals(a, new Number.UInt64(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/UInt8Test.java b/lib/src/test/java/io/cloudquery/scalar/UInt8Test.java index 1a49a08..6a8e474 100644 --- a/lib/src/test/java/io/cloudquery/scalar/UInt8Test.java +++ b/lib/src/test/java/io/cloudquery/scalar/UInt8Test.java @@ -1,127 +1,141 @@ package io.cloudquery.scalar; +import static org.junit.jupiter.api.Assertions.*; + import org.apache.arrow.vector.types.pojo.ArrowType; import org.joou.UByte; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - - public class UInt8Test { - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new Number.UInt8(); + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new Number.UInt8(); }); - } + } - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new Number.UInt8(1); - new Number.UInt8("1"); + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new Number.UInt8(1); + new Number.UInt8("1"); - Scalar s = new Number.UInt8(2); - new Number.UInt8(s); + Scalar s = new Number.UInt8(2); + new Number.UInt8(s); }); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new Number.UInt8(new char[]{'q'}); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new Number.UInt8(new char[] {'q'}); }); - } + } - @Test - public void testToString() { - Number.UInt8 uint8 = new Number.UInt8(); - assertEquals(Scalar.NULL_VALUE_STRING, uint8.toString()); + @Test + public void testToString() { + Number.UInt8 uint8 = new Number.UInt8(); + assertEquals(Scalar.NULL_VALUE_STRING, uint8.toString()); - assertDoesNotThrow(() -> { - uint8.set("1"); + assertDoesNotThrow( + () -> { + uint8.set("1"); }); - assertEquals("1", uint8.toString()); + assertEquals("1", uint8.toString()); - assertDoesNotThrow(() -> { - uint8.set(2); + assertDoesNotThrow( + () -> { + uint8.set(2); }); - assertEquals("2", uint8.toString()); - } - - @Test - public void testDataType() { - Number.UInt8 uint8 = new Number.UInt8(); - assertEquals(new ArrowType.Int(Byte.SIZE, false), uint8.dataType()); - } - - @Test - public void testIsValid() { - Number.UInt8 uint8 = new Number.UInt8(); - assertFalse(uint8.isValid()); - - assertDoesNotThrow(() -> { - uint8.set("1"); + assertEquals("2", uint8.toString()); + } + + @Test + public void testDataType() { + Number.UInt8 uint8 = new Number.UInt8(); + assertEquals(new ArrowType.Int(Byte.SIZE, false), uint8.dataType()); + } + + @Test + public void testIsValid() { + Number.UInt8 uint8 = new Number.UInt8(); + assertFalse(uint8.isValid()); + + assertDoesNotThrow( + () -> { + uint8.set("1"); }); - assertTrue(uint8.isValid()); - } - - @Test - public void testSet() { - Number.UInt8 uint8 = new Number.UInt8(); - assertDoesNotThrow(() -> { - new Number.UInt8(1); - new Number.UInt8("2"); - - Scalar s = new Number.UInt8(1); - uint8.set(s); + assertTrue(uint8.isValid()); + } + + @Test + public void testSet() { + Number.UInt8 uint8 = new Number.UInt8(); + assertDoesNotThrow( + () -> { + new Number.UInt8(1); + new Number.UInt8("2"); + + Scalar s = new Number.UInt8(1); + uint8.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - Number.UInt8 uint8 = new Number.UInt8(); - assertThrows(ValidationException.class, () -> { - uint8.set(new char[]{}); + } + + @Test + public void testSetWithInvalidParam() { + Number.UInt8 uint8 = new Number.UInt8(); + assertThrows( + ValidationException.class, + () -> { + uint8.set(new char[] {}); }); - } + } - @Test - public void testGet() { - Number.UInt8 uint8 = new Number.UInt8(); - assertFalse(uint8.isValid()); - assertNull(uint8.get()); + @Test + public void testGet() { + Number.UInt8 uint8 = new Number.UInt8(); + assertFalse(uint8.isValid()); + assertNull(uint8.get()); - assertDoesNotThrow(() -> { - uint8.set(1); + assertDoesNotThrow( + () -> { + uint8.set(1); }); - assertTrue(uint8.isValid()); - assertEquals(UByte.valueOf(1), uint8.get()); + assertTrue(uint8.isValid()); + assertEquals(UByte.valueOf(1), uint8.get()); - assertThrows(java.lang.NumberFormatException.class, () -> { - uint8.set("-1"); + assertThrows( + java.lang.NumberFormatException.class, + () -> { + uint8.set("-1"); }); - } - - @Test - public void testEquals() { - Number.UInt8 a = new Number.UInt8(); - Number.UInt8 b = new Number.UInt8(); - assertEquals(a, b); - assertNotEquals(a, null); - assertNotEquals(a, new Binary()); // we can't cast Binary to Number.UInt8 - assertNotEquals(null, a); - - assertDoesNotThrow(() -> { - a.set(1); + } + + @Test + public void testEquals() { + Number.UInt8 a = new Number.UInt8(); + Number.UInt8 b = new Number.UInt8(); + assertEquals(a, b); + assertNotEquals(a, null); + assertNotEquals(a, new Binary()); // we can't cast Binary to Number.UInt8 + assertNotEquals(null, a); + + assertDoesNotThrow( + () -> { + a.set(1); }); - assertNotEquals(a, b); - - assertDoesNotThrow(() -> { - for (Object obj : new Object[]{null, 1, -1, "2"}) { - a.set(obj); - assertEquals(a, new Number.UInt8(obj)); - } + assertNotEquals(a, b); + + assertDoesNotThrow( + () -> { + for (Object obj : new Object[] {null, 1, -1, "2"}) { + a.set(obj); + assertEquals(a, new Number.UInt8(obj)); + } }); - } + } } diff --git a/lib/src/test/java/io/cloudquery/scalar/UUIDTest.java b/lib/src/test/java/io/cloudquery/scalar/UUIDTest.java index 5decfc2..165f92f 100644 --- a/lib/src/test/java/io/cloudquery/scalar/UUIDTest.java +++ b/lib/src/test/java/io/cloudquery/scalar/UUIDTest.java @@ -1,11 +1,5 @@ package io.cloudquery.scalar; -import nl.jqno.equalsverifier.EqualsVerifier; -import nl.jqno.equalsverifier.Warning; -import org.apache.arrow.vector.types.pojo.ArrowType; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -14,151 +8,177 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -public class UUIDTest { - private static final byte[] COMPLETE_BYTE_SEQUENCE = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; - private static final byte[] INCOMPLETE_BYTE_SEQUENCE = {1, 2, 3, 4}; +import nl.jqno.equalsverifier.EqualsVerifier; +import nl.jqno.equalsverifier.Warning; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; - @Test - public void testNew() { - assertDoesNotThrow(() -> { - new UUID(); +public class UUIDTest { + private static final byte[] COMPLETE_BYTE_SEQUENCE = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + }; + private static final byte[] INCOMPLETE_BYTE_SEQUENCE = {1, 2, 3, 4}; + + @Test + public void testNew() { + assertDoesNotThrow( + () -> { + new UUID(); }); - } - - @Test - public void testNewWithValidParam() { - assertDoesNotThrow(() -> { - new UUID("123e4567-e89b-12d3-a456-426614174000"); - new UUID(java.util.UUID.randomUUID()); - new UUID(COMPLETE_BYTE_SEQUENCE); - - Scalar s = new UUID(java.util.UUID.randomUUID()); - new UUID(s); - } - ); - } - - @Test - public void testNewWithInvalidParam() { - assertThrows(ValidationException.class, () -> { - new UUID(false); + } + + @Test + public void testNewWithValidParam() { + assertDoesNotThrow( + () -> { + new UUID("123e4567-e89b-12d3-a456-426614174000"); + new UUID(java.util.UUID.randomUUID()); + new UUID(COMPLETE_BYTE_SEQUENCE); + + Scalar s = new UUID(java.util.UUID.randomUUID()); + new UUID(s); + }); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows( + ValidationException.class, + () -> { + new UUID(false); }); - assertThrows(ValidationException.class, () -> { - new UUID(INCOMPLETE_BYTE_SEQUENCE); + assertThrows( + ValidationException.class, + () -> { + new UUID(INCOMPLETE_BYTE_SEQUENCE); }); - } + } - @Test - public void testToString() { - UUID uuid = new UUID(); - assertEquals(Scalar.NULL_VALUE_STRING, uuid.toString()); + @Test + public void testToString() { + UUID uuid = new UUID(); + assertEquals(Scalar.NULL_VALUE_STRING, uuid.toString()); - java.util.UUID u = java.util.UUID.randomUUID(); - assertDoesNotThrow(() -> { - uuid.set(u); + java.util.UUID u = java.util.UUID.randomUUID(); + assertDoesNotThrow( + () -> { + uuid.set(u); }); - assertEquals(u.toString(), uuid.toString()); + assertEquals(u.toString(), uuid.toString()); - assertDoesNotThrow(() -> { - uuid.set(u.toString()); + assertDoesNotThrow( + () -> { + uuid.set(u.toString()); }); - assertEquals(u.toString(), uuid.toString()); - } - - @Test - public void testDataType() { - UUID uuid = new UUID(); - assertEquals(new ArrowType.FixedSizeBinary(16), uuid.dataType()); - } - - @Test - public void testIsValid() { - UUID uuid = new UUID(); - assertFalse(uuid.isValid()); - - assertDoesNotThrow(() -> { - uuid.set(java.util.UUID.randomUUID()); + assertEquals(u.toString(), uuid.toString()); + } + + @Test + public void testDataType() { + UUID uuid = new UUID(); + assertEquals(new ArrowType.FixedSizeBinary(16), uuid.dataType()); + } + + @Test + public void testIsValid() { + UUID uuid = new UUID(); + assertFalse(uuid.isValid()); + + assertDoesNotThrow( + () -> { + uuid.set(java.util.UUID.randomUUID()); }); - assertTrue(uuid.isValid()); - } - - @Test - public void testSet() { - UUID uuid = new UUID(); - assertDoesNotThrow(() -> { - uuid.set("123e4567-e89b-12d3-a456-426614174000"); - uuid.set(java.util.UUID.randomUUID()); - uuid.set(COMPLETE_BYTE_SEQUENCE); - - Scalar s = new UUID(java.util.UUID.randomUUID()); - uuid.set(s); + assertTrue(uuid.isValid()); + } + + @Test + public void testSet() { + UUID uuid = new UUID(); + assertDoesNotThrow( + () -> { + uuid.set("123e4567-e89b-12d3-a456-426614174000"); + uuid.set(java.util.UUID.randomUUID()); + uuid.set(COMPLETE_BYTE_SEQUENCE); + + Scalar s = new UUID(java.util.UUID.randomUUID()); + uuid.set(s); }); - } - - @Test - public void testSetWithInvalidParam() { - UUID uuid = new UUID(); - assertThrows(ValidationException.class, () -> { - uuid.set(false); + } + + @Test + public void testSetWithInvalidParam() { + UUID uuid = new UUID(); + assertThrows( + ValidationException.class, + () -> { + uuid.set(false); }); - assertThrows(ValidationException.class, () -> { - uuid.set(INCOMPLETE_BYTE_SEQUENCE); + assertThrows( + ValidationException.class, + () -> { + uuid.set(INCOMPLETE_BYTE_SEQUENCE); }); - } - - @Test - public void testGet() { - UUID uuid = new UUID(); - assertFalse(uuid.isValid()); - assertNull(uuid.get()); - - java.util.UUID u = java.util.UUID.randomUUID(); - assertDoesNotThrow(() -> { - uuid.set(u); + } + + @Test + public void testGet() { + UUID uuid = new UUID(); + assertFalse(uuid.isValid()); + assertNull(uuid.get()); + + java.util.UUID u = java.util.UUID.randomUUID(); + assertDoesNotThrow( + () -> { + uuid.set(u); }); - assertTrue(uuid.isValid()); - assertEquals(u, uuid.get()); - } - - @Test - public void testEquals() { - UUID uuid1 = new UUID(); - UUID uuid2 = new UUID(); - - assertEquals(uuid1, uuid2); - assertNotEquals(uuid1, null); - assertNotEquals(uuid1, new Bool()); - assertNotEquals(null, uuid1); - - assertDoesNotThrow(() -> { - uuid1.set(java.util.UUID.randomUUID()); + assertTrue(uuid.isValid()); + assertEquals(u, uuid.get()); + } + + @Test + public void testEquals() { + UUID uuid1 = new UUID(); + UUID uuid2 = new UUID(); + + assertEquals(uuid1, uuid2); + assertNotEquals(uuid1, null); + assertNotEquals(uuid1, new Bool()); + assertNotEquals(null, uuid1); + + assertDoesNotThrow( + () -> { + uuid1.set(java.util.UUID.randomUUID()); }); - assertNotEquals(uuid1, uuid2); + assertNotEquals(uuid1, uuid2); - java.util.UUID u = java.util.UUID.randomUUID(); - assertDoesNotThrow(() -> { - uuid1.set(u); - assertEquals(uuid1, new UUID(u)); + java.util.UUID u = java.util.UUID.randomUUID(); + assertDoesNotThrow( + () -> { + uuid1.set(u); + assertEquals(uuid1, new UUID(u)); }); - } + } - @Test - public void testCorrectEndianBehaviour() { - java.lang.String expectUUID = "00010203-0405-0607-0809-0a0b0c0d0e0f"; + @Test + public void testCorrectEndianBehaviour() { + java.lang.String expectUUID = "00010203-0405-0607-0809-0a0b0c0d0e0f"; - UUID uuid = new UUID(); - assertDoesNotThrow(() -> { - uuid.set(COMPLETE_BYTE_SEQUENCE); - assertEquals(expectUUID, uuid.toString()); + UUID uuid = new UUID(); + assertDoesNotThrow( + () -> { + uuid.set(COMPLETE_BYTE_SEQUENCE); + assertEquals(expectUUID, uuid.toString()); }); - } - - @Disabled - @Test - public void equalsContractVerification() { - EqualsVerifier.forClass(UUID.class). - suppress(Warning.NONFINAL_FIELDS). // Scalar classes are intentionally mutable - verify(); - } + } + + @Disabled + @Test + public void equalsContractVerification() { + EqualsVerifier.forClass(UUID.class) + .suppress(Warning.NONFINAL_FIELDS) + . // Scalar classes are intentionally mutable + verify(); + } } diff --git a/lib/src/test/java/io/cloudquery/schema/ParentCQUUIDResolverTest.java b/lib/src/test/java/io/cloudquery/schema/ParentCQUUIDResolverTest.java index 14d8931..350eb82 100644 --- a/lib/src/test/java/io/cloudquery/schema/ParentCQUUIDResolverTest.java +++ b/lib/src/test/java/io/cloudquery/schema/ParentCQUUIDResolverTest.java @@ -1,66 +1,72 @@ package io.cloudquery.schema; +import static org.junit.jupiter.api.Assertions.assertEquals; + import io.cloudquery.scalar.ValidationException; import io.cloudquery.transformers.TransformerException; import io.cloudquery.types.UUIDType; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import java.util.List; - -import static org.junit.jupiter.api.Assertions.assertEquals; - class ParentCQUUIDResolverTest { - private static final java.util.UUID PARENT_UUID = java.util.UUID.randomUUID(); - private static final java.util.UUID CHILD_UID = java.util.UUID.randomUUID(); - private static final String CHILD_COLUMN = "child_column"; - private static final Column COLUMN = Column.builder().name(CHILD_COLUMN).type(new UUIDType()).build(); - private static final Table parentTable = Table.builder().name("parent").columns(List.of(Column.CQ_ID_COLUMN)).build(); - private static final Table childTable = Table.builder().name("child").columns(List.of(COLUMN)).build(); - - private ColumnResolver resolver; - - @BeforeEach - void setUp() { - resolver = new ParentCQUUIDResolver(); - } - - @Test - public void shouldSetColumnToNullIfWeDoNotHaveAParent() throws TransformerException, ValidationException { - Resource resourceWithNoParent = Resource.builder().table(childTable).build(); - resourceWithNoParent.set(CHILD_COLUMN, CHILD_UID); - - assertEquals(CHILD_UID, resourceWithNoParent.get(CHILD_COLUMN).get()); - resolver.resolve(null, resourceWithNoParent, COLUMN); - - assertEquals(null, resourceWithNoParent.get(CHILD_COLUMN).get()); - } - - @Test - public void shouldSetColumnToNullIfParentDoesNotHaveCQID() throws TransformerException, ValidationException { - Resource resource = Resource.builder(). - table(childTable). - parent(Resource.builder().table(parentTable).build()). - build(); - resource.set(CHILD_COLUMN, CHILD_UID); - - assertEquals(CHILD_UID, resource.get(CHILD_COLUMN).get()); - resolver.resolve(null, resource, COLUMN); - - assertEquals(null, resource.get(CHILD_COLUMN).get()); - } - - @Test - public void shouldSetColumnToUUIDIfParentHasACQID() throws TransformerException, ValidationException { - Resource parentResource = Resource.builder().table(parentTable).build(); - parentResource.set(Column.CQ_ID_COLUMN.getName(), PARENT_UUID); - - Resource resource = Resource.builder().table(childTable).parent(parentResource).build(); - resource.set(CHILD_COLUMN, CHILD_UID); - - assertEquals(CHILD_UID, resource.get(CHILD_COLUMN).get()); - resolver.resolve(null, resource, COLUMN); - - assertEquals(PARENT_UUID, resource.get(CHILD_COLUMN).get()); - } + private static final java.util.UUID PARENT_UUID = java.util.UUID.randomUUID(); + private static final java.util.UUID CHILD_UID = java.util.UUID.randomUUID(); + private static final String CHILD_COLUMN = "child_column"; + private static final Column COLUMN = + Column.builder().name(CHILD_COLUMN).type(new UUIDType()).build(); + private static final Table parentTable = + Table.builder().name("parent").columns(List.of(Column.CQ_ID_COLUMN)).build(); + private static final Table childTable = + Table.builder().name("child").columns(List.of(COLUMN)).build(); + + private ColumnResolver resolver; + + @BeforeEach + void setUp() { + resolver = new ParentCQUUIDResolver(); + } + + @Test + public void shouldSetColumnToNullIfWeDoNotHaveAParent() + throws TransformerException, ValidationException { + Resource resourceWithNoParent = Resource.builder().table(childTable).build(); + resourceWithNoParent.set(CHILD_COLUMN, CHILD_UID); + + assertEquals(CHILD_UID, resourceWithNoParent.get(CHILD_COLUMN).get()); + resolver.resolve(null, resourceWithNoParent, COLUMN); + + assertEquals(null, resourceWithNoParent.get(CHILD_COLUMN).get()); + } + + @Test + public void shouldSetColumnToNullIfParentDoesNotHaveCQID() + throws TransformerException, ValidationException { + Resource resource = + Resource.builder() + .table(childTable) + .parent(Resource.builder().table(parentTable).build()) + .build(); + resource.set(CHILD_COLUMN, CHILD_UID); + + assertEquals(CHILD_UID, resource.get(CHILD_COLUMN).get()); + resolver.resolve(null, resource, COLUMN); + + assertEquals(null, resource.get(CHILD_COLUMN).get()); + } + + @Test + public void shouldSetColumnToUUIDIfParentHasACQID() + throws TransformerException, ValidationException { + Resource parentResource = Resource.builder().table(parentTable).build(); + parentResource.set(Column.CQ_ID_COLUMN.getName(), PARENT_UUID); + + Resource resource = Resource.builder().table(childTable).parent(parentResource).build(); + resource.set(CHILD_COLUMN, CHILD_UID); + + assertEquals(CHILD_UID, resource.get(CHILD_COLUMN).get()); + resolver.resolve(null, resource, COLUMN); + + assertEquals(PARENT_UUID, resource.get(CHILD_COLUMN).get()); + } } diff --git a/lib/src/test/java/io/cloudquery/schema/ResourceTest.java b/lib/src/test/java/io/cloudquery/schema/ResourceTest.java index c32ad18..ae388ef 100644 --- a/lib/src/test/java/io/cloudquery/schema/ResourceTest.java +++ b/lib/src/test/java/io/cloudquery/schema/ResourceTest.java @@ -1,45 +1,44 @@ package io.cloudquery.schema; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; + import io.cloudquery.scalar.ValidationException; import io.cloudquery.types.UUIDType; -import org.apache.arrow.vector.types.pojo.ArrowType; -import org.junit.jupiter.api.Test; - import java.util.List; import java.util.UUID; - -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.junit.jupiter.api.Test; public class ResourceTest { - private static final UUID UUID = java.util.UUID.randomUUID(); + private static final UUID UUID = java.util.UUID.randomUUID(); - @Test - public void shouldBuildWithNoErrors() { - assertDoesNotThrow(() -> Resource.builder().table(Table.builder().name("").build()).build()); - } + @Test + public void shouldBuildWithNoErrors() { + assertDoesNotThrow(() -> Resource.builder().table(Table.builder().name("").build()).build()); + } - @Test - public void shouldCreateScalarData() { - Column column1 = Column.builder().name("test_column1").type(new UUIDType()).build(); - Column column2 = Column.builder().name("test_column2").type(ArrowType.Utf8.INSTANCE).build(); - Table table = Table.builder().name("test").columns(List.of(column1, column2)).build(); + @Test + public void shouldCreateScalarData() { + Column column1 = Column.builder().name("test_column1").type(new UUIDType()).build(); + Column column2 = Column.builder().name("test_column2").type(ArrowType.Utf8.INSTANCE).build(); + Table table = Table.builder().name("test").columns(List.of(column1, column2)).build(); - Resource resource = Resource.builder().table(table).build(); + Resource resource = Resource.builder().table(table).build(); - assertInstanceOf(io.cloudquery.scalar.UUID.class, resource.get(column1.getName())); - assertInstanceOf(io.cloudquery.scalar.String.class, resource.get(column2.getName())); - } + assertInstanceOf(io.cloudquery.scalar.UUID.class, resource.get(column1.getName())); + assertInstanceOf(io.cloudquery.scalar.String.class, resource.get(column2.getName())); + } - @Test - public void shouldSetAndGetDataTypes() throws ValidationException { - Column column1 = Column.builder().name("test_column1").type(new UUIDType()).build(); - Table table = Table.builder().name("test").columns(List.of(column1)).build(); + @Test + public void shouldSetAndGetDataTypes() throws ValidationException { + Column column1 = Column.builder().name("test_column1").type(new UUIDType()).build(); + Table table = Table.builder().name("test").columns(List.of(column1)).build(); - Resource resource = Resource.builder().table(table).build(); + Resource resource = Resource.builder().table(table).build(); - resource.set(column1.getName(), UUID); - assertEquals(UUID, resource.get(column1.getName()).get()); - } + resource.set(column1.getName(), UUID); + assertEquals(UUID, resource.get(column1.getName()).get()); + } } diff --git a/lib/src/test/java/io/cloudquery/schema/TableFilterDFSTest.java b/lib/src/test/java/io/cloudquery/schema/TableFilterDFSTest.java index 113dc57..2e3ddaf 100644 --- a/lib/src/test/java/io/cloudquery/schema/TableFilterDFSTest.java +++ b/lib/src/test/java/io/cloudquery/schema/TableFilterDFSTest.java @@ -1,198 +1,245 @@ package io.cloudquery.schema; -import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; import java.util.Collections; import java.util.List; import java.util.stream.Stream; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; public class TableFilterDFSTest { - public static final List
BASIC_TABLES = Stream.of("table1", "table2", "table3").map( - name -> Table.builder().name(name).build() - ).toList(); - - public static final List
NESTED_TABLE = List.of( - Table.builder().name("main_table").relations( - List.of( - Table.builder().name("sub_table").relations( - List.of( - Table.builder().name("sub_sub_table").build() - ) - ).build() - ) - ).build() - ); - - public static final List EMPTY_CONFIGURATION = Collections.emptyList(); - - @Test - public void shouldReturnAllTables() throws SchemaException { - List includeConfiguration = List.of("*"); - - List
filteredTables = Table.filterDFS(BASIC_TABLES, includeConfiguration, EMPTY_CONFIGURATION, false); - - assertThat(extractTableNames(filteredTables)).containsOnly("table1", "table2", "table3"); - } - - @Test - public void shouldFilterTables() throws SchemaException { - List includeConfiguration = List.of("*"); - List skipConfiguration = List.of("table1", "table3"); - - List
filteredTables = Table.filterDFS(BASIC_TABLES, includeConfiguration, skipConfiguration, false); - - assertThat(extractTableNames(filteredTables)).containsOnly("table2"); - } - - @Test - public void shouldFilterSpecificTableWhenProvided() throws SchemaException { - List includeConfiguration = List.of("table2"); - - List
filteredTables = Table.filterDFS(BASIC_TABLES, includeConfiguration, EMPTY_CONFIGURATION, false); - - assertThat(extractTableNames(filteredTables)).containsOnly("table2"); - } - - @Test - public void shouldFilterTablesMatchingGlobPattern() throws SchemaException { - List includeConfiguration = List.of("table*"); - List skipConfiguration = List.of("table2", "table3"); - - List
filteredTables = Table.filterDFS(BASIC_TABLES, includeConfiguration, skipConfiguration, false); - - assertThat(extractTableNames(filteredTables)).containsOnly("table1"); - } - - @Test - public void shouldReturnTableOnlyOnceEvenIfMatchedByMultiplePatterns() throws SchemaException { - List includeConfiguration = List.of("*", "table1", "table*", "table2"); + public static final List
BASIC_TABLES = + Stream.of("table1", "table2", "table3") + .map(name -> Table.builder().name(name).build()) + .toList(); - List
filteredTables = Table.filterDFS(BASIC_TABLES, includeConfiguration, EMPTY_CONFIGURATION, false); + public static final List
NESTED_TABLE = + List.of( + Table.builder() + .name("main_table") + .relations( + List.of( + Table.builder() + .name("sub_table") + .relations(List.of(Table.builder().name("sub_sub_table").build())) + .build())) + .build()); - assertThat(extractTableNames(filteredTables)).containsOnly("table1", "table2", "table3"); - } + public static final List EMPTY_CONFIGURATION = Collections.emptyList(); - @Test - public void shouldMatchPrefixGlobs() throws SchemaException { - List includeConfiguration = List.of("*2"); + @Test + public void shouldReturnAllTables() throws SchemaException { + List includeConfiguration = List.of("*"); - List
filteredTables = Table.filterDFS(BASIC_TABLES, includeConfiguration, EMPTY_CONFIGURATION, false); + List
filteredTables = + Table.filterDFS(BASIC_TABLES, includeConfiguration, EMPTY_CONFIGURATION, false); - assertThat(extractTableNames(filteredTables)).containsOnly("table2"); - } + assertThat(extractTableNames(filteredTables)).containsOnly("table1", "table2", "table3"); + } - @Test - public void shouldMatchSuffixGlobs() throws SchemaException { - List includeConfiguration = List.of("table*"); + @Test + public void shouldFilterTables() throws SchemaException { + List includeConfiguration = List.of("*"); + List skipConfiguration = List.of("table1", "table3"); - List
filteredTables = Table.filterDFS(BASIC_TABLES, includeConfiguration, EMPTY_CONFIGURATION, false); - - assertThat(extractTableNames(filteredTables)).containsOnly("table1", "table2", "table3"); - } - - @Test - public void shouldSkipGlobs() throws SchemaException { - List includeConfiguration = List.of("*"); - List skipConfiguration = List.of("t*1"); - - List
filteredTables = Table.filterDFS(BASIC_TABLES, includeConfiguration, skipConfiguration, false); - - assertThat(extractTableNames(filteredTables)).containsOnly("table2", "table3"); - } - - @Test - public void shouldReturnTheParentAndAllDescendants() throws SchemaException { - List includeConfiguration = List.of("main_table"); - - List
filteredTables = Table.filterDFS(NESTED_TABLE, includeConfiguration, EMPTY_CONFIGURATION, false); - - assertThat(extractTableNames(filteredTables)).containsOnly("main_table", "sub_sub_table", "sub_table"); - } - - @Test - public void shouldThrowExceptionIfNoIncludeMatches() { - String tableMatch = "bad_match"; - List includeConfiguration = List.of(tableMatch); - - SchemaException schemaException = assertThrows(SchemaException.class, () -> Table.filterDFS(NESTED_TABLE, includeConfiguration, EMPTY_CONFIGURATION, false)); - assertEquals("table configuration includes a pattern \"" + tableMatch + "\" with no matches", schemaException.getMessage()); - } - - @Test - public void shouldThrowExceptionIfNoExcludeMatches() { - String tableMatch = "bad_match"; - List includeConfiguration = List.of("*"); - List skipConfiguration = List.of(tableMatch); - - SchemaException schemaException = assertThrows(SchemaException.class, () -> Table.filterDFS(NESTED_TABLE, includeConfiguration, skipConfiguration, false)); - assertEquals("skip configuration includes a pattern \"" + tableMatch + "\" with no matches", schemaException.getMessage()); - } - - @Test - public void shouldSkipChildTableButReturnSiblings() throws SchemaException { - List
tables = List.of( - Table.builder().name("main_table").relations( - List.of( - Table.builder().name("sub_table_1").parent(Table.builder().name("main_table").build()).build(), - Table.builder().name("sub_table_2").parent(Table.builder().name("main_table").build()).build() - ) - ).build() - ); - - List includeTables = List.of("main_table"); - List skipTables = List.of("sub_table_2"); - - List
filteredTables = Table.filterDFS(tables, includeTables, skipTables, false); - - assertThat(extractTableNames(filteredTables)).containsOnly("main_table", "sub_table_1"); - } - - @Test - public void shouldSkipChildTablesIfSkipDependentTrue() throws SchemaException { - List
tables = List.of( - Table.builder().name("main_table").relations( - List.of( - Table.builder().name("sub_table_1").parent(Table.builder().name("main_table").build()).build(), - Table.builder().name("sub_table_2").parent(Table.builder().name("main_table").build()).build() - ) - ).build() - ); - - List includeTables = List.of("main_table"); - List skipTables = List.of("sub_table_2"); - - List
filteredTables = Table.filterDFS(tables, includeTables, skipTables, true); - - assertThat(extractTableNames(filteredTables)).containsOnly("main_table"); - } - - @Test - public void shouldSkipChildTablesIfSkipDependentTablesIsTrueButNotIfExplicitlyIncluded() throws SchemaException { - List
tables = List.of( - Table.builder().name("main_table_1").relations( - List.of( - Table.builder().name("sub_table_1").parent(Table.builder().name("main_table_1").build()).build() - ) - ).build(), - Table.builder().name("main_table_2").relations( - List.of( - Table.builder().name("sub_table_2").parent(Table.builder().name("main_table_2").build()).build(), - Table.builder().name("sub_table_3").parent(Table.builder().name("main_table_2").build()).build() - ) - ).build() - ); - - List includeTables = List.of("main_table_1", "sub_table_2"); - - List
filteredTables = Table.filterDFS(tables, includeTables, EMPTY_CONFIGURATION, true); - - assertThat(extractTableNames(filteredTables)).containsOnly("main_table_1", "main_table_2", "sub_table_2"); - } - - private List extractTableNames(List
filteredTables) { - return Table.flattenTables(filteredTables).stream().map(Table::getName).toList(); - } + List
filteredTables = + Table.filterDFS(BASIC_TABLES, includeConfiguration, skipConfiguration, false); + + assertThat(extractTableNames(filteredTables)).containsOnly("table2"); + } + + @Test + public void shouldFilterSpecificTableWhenProvided() throws SchemaException { + List includeConfiguration = List.of("table2"); + + List
filteredTables = + Table.filterDFS(BASIC_TABLES, includeConfiguration, EMPTY_CONFIGURATION, false); + + assertThat(extractTableNames(filteredTables)).containsOnly("table2"); + } + + @Test + public void shouldFilterTablesMatchingGlobPattern() throws SchemaException { + List includeConfiguration = List.of("table*"); + List skipConfiguration = List.of("table2", "table3"); + + List
filteredTables = + Table.filterDFS(BASIC_TABLES, includeConfiguration, skipConfiguration, false); + + assertThat(extractTableNames(filteredTables)).containsOnly("table1"); + } + + @Test + public void shouldReturnTableOnlyOnceEvenIfMatchedByMultiplePatterns() throws SchemaException { + List includeConfiguration = List.of("*", "table1", "table*", "table2"); + + List
filteredTables = + Table.filterDFS(BASIC_TABLES, includeConfiguration, EMPTY_CONFIGURATION, false); + + assertThat(extractTableNames(filteredTables)).containsOnly("table1", "table2", "table3"); + } + + @Test + public void shouldMatchPrefixGlobs() throws SchemaException { + List includeConfiguration = List.of("*2"); + + List
filteredTables = + Table.filterDFS(BASIC_TABLES, includeConfiguration, EMPTY_CONFIGURATION, false); + + assertThat(extractTableNames(filteredTables)).containsOnly("table2"); + } + + @Test + public void shouldMatchSuffixGlobs() throws SchemaException { + List includeConfiguration = List.of("table*"); + + List
filteredTables = + Table.filterDFS(BASIC_TABLES, includeConfiguration, EMPTY_CONFIGURATION, false); + + assertThat(extractTableNames(filteredTables)).containsOnly("table1", "table2", "table3"); + } + + @Test + public void shouldSkipGlobs() throws SchemaException { + List includeConfiguration = List.of("*"); + List skipConfiguration = List.of("t*1"); + + List
filteredTables = + Table.filterDFS(BASIC_TABLES, includeConfiguration, skipConfiguration, false); + + assertThat(extractTableNames(filteredTables)).containsOnly("table2", "table3"); + } + + @Test + public void shouldReturnTheParentAndAllDescendants() throws SchemaException { + List includeConfiguration = List.of("main_table"); + + List
filteredTables = + Table.filterDFS(NESTED_TABLE, includeConfiguration, EMPTY_CONFIGURATION, false); + + assertThat(extractTableNames(filteredTables)) + .containsOnly("main_table", "sub_sub_table", "sub_table"); + } + + @Test + public void shouldThrowExceptionIfNoIncludeMatches() { + String tableMatch = "bad_match"; + List includeConfiguration = List.of(tableMatch); + + SchemaException schemaException = + assertThrows( + SchemaException.class, + () -> Table.filterDFS(NESTED_TABLE, includeConfiguration, EMPTY_CONFIGURATION, false)); + assertEquals( + "table configuration includes a pattern \"" + tableMatch + "\" with no matches", + schemaException.getMessage()); + } + + @Test + public void shouldThrowExceptionIfNoExcludeMatches() { + String tableMatch = "bad_match"; + List includeConfiguration = List.of("*"); + List skipConfiguration = List.of(tableMatch); + + SchemaException schemaException = + assertThrows( + SchemaException.class, + () -> Table.filterDFS(NESTED_TABLE, includeConfiguration, skipConfiguration, false)); + assertEquals( + "skip configuration includes a pattern \"" + tableMatch + "\" with no matches", + schemaException.getMessage()); + } + + @Test + public void shouldSkipChildTableButReturnSiblings() throws SchemaException { + List
tables = + List.of( + Table.builder() + .name("main_table") + .relations( + List.of( + Table.builder() + .name("sub_table_1") + .parent(Table.builder().name("main_table").build()) + .build(), + Table.builder() + .name("sub_table_2") + .parent(Table.builder().name("main_table").build()) + .build())) + .build()); + + List includeTables = List.of("main_table"); + List skipTables = List.of("sub_table_2"); + + List
filteredTables = Table.filterDFS(tables, includeTables, skipTables, false); + + assertThat(extractTableNames(filteredTables)).containsOnly("main_table", "sub_table_1"); + } + + @Test + public void shouldSkipChildTablesIfSkipDependentTrue() throws SchemaException { + List
tables = + List.of( + Table.builder() + .name("main_table") + .relations( + List.of( + Table.builder() + .name("sub_table_1") + .parent(Table.builder().name("main_table").build()) + .build(), + Table.builder() + .name("sub_table_2") + .parent(Table.builder().name("main_table").build()) + .build())) + .build()); + + List includeTables = List.of("main_table"); + List skipTables = List.of("sub_table_2"); + + List
filteredTables = Table.filterDFS(tables, includeTables, skipTables, true); + + assertThat(extractTableNames(filteredTables)).containsOnly("main_table"); + } + + @Test + public void shouldSkipChildTablesIfSkipDependentTablesIsTrueButNotIfExplicitlyIncluded() + throws SchemaException { + List
tables = + List.of( + Table.builder() + .name("main_table_1") + .relations( + List.of( + Table.builder() + .name("sub_table_1") + .parent(Table.builder().name("main_table_1").build()) + .build())) + .build(), + Table.builder() + .name("main_table_2") + .relations( + List.of( + Table.builder() + .name("sub_table_2") + .parent(Table.builder().name("main_table_2").build()) + .build(), + Table.builder() + .name("sub_table_3") + .parent(Table.builder().name("main_table_2").build()) + .build())) + .build()); + + List includeTables = List.of("main_table_1", "sub_table_2"); + + List
filteredTables = Table.filterDFS(tables, includeTables, EMPTY_CONFIGURATION, true); + + assertThat(extractTableNames(filteredTables)) + .containsOnly("main_table_1", "main_table_2", "sub_table_2"); + } + + private List extractTableNames(List
filteredTables) { + return Table.flattenTables(filteredTables).stream().map(Table::getName).toList(); + } } diff --git a/lib/src/test/java/io/cloudquery/schema/TableFlattenTest.java b/lib/src/test/java/io/cloudquery/schema/TableFlattenTest.java index 632cdc9..88d9132 100644 --- a/lib/src/test/java/io/cloudquery/schema/TableFlattenTest.java +++ b/lib/src/test/java/io/cloudquery/schema/TableFlattenTest.java @@ -1,38 +1,39 @@ package io.cloudquery.schema; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; import java.util.List; - -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; public class TableFlattenTest { - public Table testTable = Table.builder(). - name("test"). - relations(List.of( - Table.builder().name("test2").build(), - Table.builder().name("test3").build(), - Table.builder().name("test4").build() - )).build(); - - @Test - public void shouldFlattenTables() { - List
srcTables = List.of(testTable); - List
flattenedTables = Table.flattenTables(srcTables); - - assertEquals(1, srcTables.size()); - assertEquals(3, testTable.getRelations().size()); - assertEquals(4, flattenedTables.size()); - } - - @Test - public void shouldFlattenTablesWithDuplicates() { - List
srcTables = List.of(testTable, testTable, testTable); - List
flattenedTables = Table.flattenTables(srcTables); - - assertEquals(3, srcTables.size()); - assertEquals(3, testTable.getRelations().size()); - assertEquals(4, flattenedTables.size()); - } + public Table testTable = + Table.builder() + .name("test") + .relations( + List.of( + Table.builder().name("test2").build(), + Table.builder().name("test3").build(), + Table.builder().name("test4").build())) + .build(); + + @Test + public void shouldFlattenTables() { + List
srcTables = List.of(testTable); + List
flattenedTables = Table.flattenTables(srcTables); + + assertEquals(1, srcTables.size()); + assertEquals(3, testTable.getRelations().size()); + assertEquals(4, flattenedTables.size()); + } + + @Test + public void shouldFlattenTablesWithDuplicates() { + List
srcTables = List.of(testTable, testTable, testTable); + List
flattenedTables = Table.flattenTables(srcTables); + + assertEquals(3, srcTables.size()); + assertEquals(3, testTable.getRelations().size()); + assertEquals(4, flattenedTables.size()); + } } diff --git a/lib/src/test/java/io/cloudquery/schema/TableMaxTest.java b/lib/src/test/java/io/cloudquery/schema/TableMaxTest.java index fd49d7f..94a3488 100644 --- a/lib/src/test/java/io/cloudquery/schema/TableMaxTest.java +++ b/lib/src/test/java/io/cloudquery/schema/TableMaxTest.java @@ -1,26 +1,28 @@ package io.cloudquery.schema; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; import java.util.Collections; import java.util.List; - -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; public class TableMaxTest { - public Table testTable = Table.builder(). - name("test"). - relations(List.of( - Table.builder().name("test2").build(), - Table.builder().name("test3").build(), - Table.builder().name("test4").build() - )).build(); + public Table testTable = + Table.builder() + .name("test") + .relations( + List.of( + Table.builder().name("test2").build(), + Table.builder().name("test3").build(), + Table.builder().name("test4").build())) + .build(); - @Test - public void shouldReturnMaxDepth() { - assertEquals(0, Table.maxDepth(Collections.emptyList())); - assertEquals(2, Table.maxDepth(List.of(testTable))); - assertEquals(3, Table.maxDepth(List.of(testTable.toBuilder().relations(List.of(testTable)).build()))); - } + @Test + public void shouldReturnMaxDepth() { + assertEquals(0, Table.maxDepth(Collections.emptyList())); + assertEquals(2, Table.maxDepth(List.of(testTable))); + assertEquals( + 3, Table.maxDepth(List.of(testTable.toBuilder().relations(List.of(testTable)).build()))); + } } diff --git a/lib/src/test/java/io/cloudquery/schema/TableTest.java b/lib/src/test/java/io/cloudquery/schema/TableTest.java index 63af775..5b84aaf 100644 --- a/lib/src/test/java/io/cloudquery/schema/TableTest.java +++ b/lib/src/test/java/io/cloudquery/schema/TableTest.java @@ -1,68 +1,65 @@ package io.cloudquery.schema; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.ArrayList; import java.util.List; import java.util.Optional; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Test; class TableTest { - @Test - public void shouldAddDefaultCQColumns() { - Table table = Table.builder().name("test").build(); + @Test + public void shouldAddDefaultCQColumns() { + Table table = Table.builder().name("test").build(); - assertEquals(0, table.getColumns().size()); - table.addCQIDs(); + assertEquals(0, table.getColumns().size()); + table.addCQIDs(); - List expectedColumns = List.of(Column.CQ_ID_COLUMN, Column.CQ_PARENT_ID_COLUMN); - assertEquals(expectedColumns.size(), table.getColumns().size()); - for (int i = 0; i < expectedColumns.size(); i++) { - assertEquals(expectedColumns.get(i).getName(), table.getColumns().get(i).getName()); - } + List expectedColumns = List.of(Column.CQ_ID_COLUMN, Column.CQ_PARENT_ID_COLUMN); + assertEquals(expectedColumns.size(), table.getColumns().size()); + for (int i = 0; i < expectedColumns.size(); i++) { + assertEquals(expectedColumns.get(i).getName(), table.getColumns().get(i).getName()); } + } - @Test - public void shouldAddDefaultCQColumnsToRelations() { - Table table = Table.builder().name("test").build(); - Table relation = Table.builder().name("relation").build(); - table.getRelations().add(relation); + @Test + public void shouldAddDefaultCQColumnsToRelations() { + Table table = Table.builder().name("test").build(); + Table relation = Table.builder().name("relation").build(); + table.getRelations().add(relation); - assertEquals(0, relation.getColumns().size()); - table.addCQIDs(); + assertEquals(0, relation.getColumns().size()); + table.addCQIDs(); - List expectedColumns = List.of(Column.CQ_ID_COLUMN, Column.CQ_PARENT_ID_COLUMN); - assertEquals(expectedColumns.size(), relation.getColumns().size()); - for (int i = 0; i < expectedColumns.size(); i++) { - assertEquals(expectedColumns.get(i).getName(), relation.getColumns().get(i).getName()); - } + List expectedColumns = List.of(Column.CQ_ID_COLUMN, Column.CQ_PARENT_ID_COLUMN); + assertEquals(expectedColumns.size(), relation.getColumns().size()); + for (int i = 0; i < expectedColumns.size(); i++) { + assertEquals(expectedColumns.get(i).getName(), relation.getColumns().get(i).getName()); } + } - @Test - public void shouldSetDefaultColumnAsPrimaryKeyIfNoOtherPrimaryKey() { - Table table = Table.builder().name("test").build(); + @Test + public void shouldSetDefaultColumnAsPrimaryKeyIfNoOtherPrimaryKey() { + Table table = Table.builder().name("test").build(); - table.addCQIDs(); + table.addCQIDs(); - Optional column = table.getColumn(Column.CQ_ID_COLUMN.getName()); - assertTrue(column.isPresent()); - assertTrue(column.get().isPrimaryKey(), "CQ_ID_COLUMN should be primary key"); - } + Optional column = table.getColumn(Column.CQ_ID_COLUMN.getName()); + assertTrue(column.isPresent()); + assertTrue(column.get().isPrimaryKey(), "CQ_ID_COLUMN should be primary key"); + } - @Test - public void shouldUseExistingPrimaryKeyWhenPossible() { - Column pkColumn = Column.builder().name("mypk").primaryKey(true).build(); - Table table = Table.builder().name("test"). - columns(new ArrayList<>(List.of(pkColumn))). - build(); + @Test + public void shouldUseExistingPrimaryKeyWhenPossible() { + Column pkColumn = Column.builder().name("mypk").primaryKey(true).build(); + Table table = Table.builder().name("test").columns(new ArrayList<>(List.of(pkColumn))).build(); - table.addCQIDs(); + table.addCQIDs(); - Optional column = table.getColumn(Column.CQ_ID_COLUMN.getName()); - assertTrue(column.isPresent()); - assertFalse(column.get().isPrimaryKey(), "CQ_ID_COLUMN should not be primary key"); - } + Optional column = table.getColumn(Column.CQ_ID_COLUMN.getName()); + assertTrue(column.isPresent()); + assertFalse(column.get().isPrimaryKey(), "CQ_ID_COLUMN should not be primary key"); + } } diff --git a/lib/src/test/java/io/cloudquery/server/AddressTest.java b/lib/src/test/java/io/cloudquery/server/AddressTest.java index 8ef22ef..cf3473e 100644 --- a/lib/src/test/java/io/cloudquery/server/AddressTest.java +++ b/lib/src/test/java/io/cloudquery/server/AddressTest.java @@ -1,35 +1,36 @@ package io.cloudquery.server; +import static org.junit.jupiter.api.Assertions.*; + import io.cloudquery.server.AddressConverter.Address; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - public class AddressTest { - private AddressConverter addressConverter; + private AddressConverter addressConverter; - @BeforeEach - public void setUp() { - addressConverter = new AddressConverter(); - } + @BeforeEach + public void setUp() { + addressConverter = new AddressConverter(); + } - @Test - public void shouldParseAddressFromString() throws Exception { - String rawAddress = "127.0.0.1:12345"; + @Test + public void shouldParseAddressFromString() throws Exception { + String rawAddress = "127.0.0.1:12345"; - Address address = addressConverter.convert(rawAddress); + Address address = addressConverter.convert(rawAddress); - assertEquals(new Address("127.0.0.1", 12345), address); - } + assertEquals(new Address("127.0.0.1", 12345), address); + } - @Test - public void shouldThrowExceptionIfAddressNotFormattedCorrectly() { - String rawAddress = "bad address"; + @Test + public void shouldThrowExceptionIfAddressNotFormattedCorrectly() { + String rawAddress = "bad address"; - AddressConverter addressConverter = new AddressConverter(); + AddressConverter addressConverter = new AddressConverter(); - assertThrows(AddressConverter.AddressParseException.class, () -> addressConverter.convert(rawAddress)); - } -} \ No newline at end of file + assertThrows( + AddressConverter.AddressParseException.class, () -> addressConverter.convert(rawAddress)); + } +} diff --git a/lib/src/test/java/io/cloudquery/server/PluginServeTest.java b/lib/src/test/java/io/cloudquery/server/PluginServeTest.java index bf922e0..509f830 100644 --- a/lib/src/test/java/io/cloudquery/server/PluginServeTest.java +++ b/lib/src/test/java/io/cloudquery/server/PluginServeTest.java @@ -9,37 +9,41 @@ @Disabled(value = "blocking tests - only used manually to test the gRPC runs correctly") public class PluginServeTest { - public static final String URL = "https://sentry.url"; + public static final String URL = "https://sentry.url"; - private Plugin plugin; + private Plugin plugin; - @BeforeEach - public void setUp() { - plugin = new MemDB(); - } + @BeforeEach + public void setUp() { + plugin = new MemDB(); + } - @Test - public void simpleCallToServe() { - PluginServe pluginServe = new PluginServeBuilder().plugin(plugin).args(new String[] { "serve" }).build(); - pluginServe.Serve(); - } + @Test + public void simpleCallToServe() { + PluginServe pluginServe = + new PluginServeBuilder().plugin(plugin).args(new String[] {"serve"}).build(); + pluginServe.Serve(); + } - @Test - public void simpleCallToServeHelp() { - PluginServe pluginServe = new PluginServeBuilder().plugin(plugin).args(new String[] { "serve", "--help" }) - .build(); - pluginServe.Serve(); - } + @Test + public void simpleCallToServeHelp() { + PluginServe pluginServe = + new PluginServeBuilder().plugin(plugin).args(new String[] {"serve", "--help"}).build(); + pluginServe.Serve(); + } - @Test - public void simpleOverrideCommandLineArguments() { - String[] args = new String[] { - "serve", - "--address", "foo.bar.com:7777", - "--disable-sentry", - "--otel-endpoint", "some-endpoint" + @Test + public void simpleOverrideCommandLineArguments() { + String[] args = + new String[] { + "serve", + "--address", + "foo.bar.com:7777", + "--disable-sentry", + "--otel-endpoint", + "some-endpoint" }; - PluginServe pluginServe = new PluginServeBuilder().plugin(plugin).args(args).build(); - pluginServe.Serve(); - } -} \ No newline at end of file + PluginServe pluginServe = new PluginServeBuilder().plugin(plugin).args(args).build(); + pluginServe.Serve(); + } +} diff --git a/lib/src/test/java/io/cloudquery/transformers/DefaultNameTransformerTest.java b/lib/src/test/java/io/cloudquery/transformers/DefaultNameTransformerTest.java index fc6552e..46c84f5 100644 --- a/lib/src/test/java/io/cloudquery/transformers/DefaultNameTransformerTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/DefaultNameTransformerTest.java @@ -1,44 +1,43 @@ package io.cloudquery.transformers; +import static org.junit.jupiter.api.Assertions.assertEquals; + import com.fasterxml.jackson.annotation.JsonProperty; import io.cloudquery.transformers.NameTransformer.DefaultNameTransformer; +import java.lang.reflect.Field; +import javax.xml.transform.TransformerException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import javax.xml.transform.TransformerException; -import java.lang.reflect.Field; - -import static org.junit.jupiter.api.Assertions.assertEquals; - public class DefaultNameTransformerTest { - private DefaultNameTransformer transformer; + private DefaultNameTransformer transformer; - @SuppressWarnings("unused") - private static class SimpleClass { - // Simple fields with no custom property mapping - private String simpleField; - private String aLongerFieldName; + @SuppressWarnings("unused") + private static class SimpleClass { + // Simple fields with no custom property mapping + private String simpleField; + private String aLongerFieldName; - // Fields with custom property mapping - @JsonProperty("id") - private String userID; - } + // Fields with custom property mapping + @JsonProperty("id") + private String userID; + } - @BeforeEach - void setUp() { - transformer = new DefaultNameTransformer(); - } + @BeforeEach + void setUp() { + transformer = new DefaultNameTransformer(); + } - @Test - public void shouldReturnSnakeCaseFieldNamesByDefault() throws TransformerException { - Field[] declaredFields = SimpleClass.class.getDeclaredFields(); + @Test + public void shouldReturnSnakeCaseFieldNamesByDefault() throws TransformerException { + Field[] declaredFields = SimpleClass.class.getDeclaredFields(); - // Simple fields with no custom property mapping - assertEquals("simple_field", transformer.transform(declaredFields[0])); - assertEquals("a_longer_field_name", transformer.transform(declaredFields[1])); + // Simple fields with no custom property mapping + assertEquals("simple_field", transformer.transform(declaredFields[0])); + assertEquals("a_longer_field_name", transformer.transform(declaredFields[1])); - // Fields with custom property mapping - assertEquals("id", transformer.transform(declaredFields[2])); - } + // Fields with custom property mapping + assertEquals("id", transformer.transform(declaredFields[2])); + } } diff --git a/lib/src/test/java/io/cloudquery/transformers/DefaultResolverTransformerTest.java b/lib/src/test/java/io/cloudquery/transformers/DefaultResolverTransformerTest.java index 8dc7e89..98fde53 100644 --- a/lib/src/test/java/io/cloudquery/transformers/DefaultResolverTransformerTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/DefaultResolverTransformerTest.java @@ -1,5 +1,10 @@ package io.cloudquery.transformers; +import static org.junit.Assert.assertThrows; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + import io.cloudquery.scalar.ValidationException; import io.cloudquery.schema.Column; import io.cloudquery.schema.Resource; @@ -11,44 +16,41 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import static org.junit.Assert.assertThrows; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - @ExtendWith(MockitoExtension.class) class DefaultResolverTransformerTest { - @Builder - public static class ResourceItem { - public String myCustomID; - } + @Builder + public static class ResourceItem { + public String myCustomID; + } - private DefaulResolverTransformer transformer; + private DefaulResolverTransformer transformer; - @Mock - private Resource resource; + @Mock private Resource resource; - @BeforeEach - void setUp() { - transformer = new DefaulResolverTransformer(); + @BeforeEach + void setUp() { + transformer = new DefaulResolverTransformer(); - when(resource.getItem()).thenReturn(ResourceItem.builder().myCustomID("1234").build()); - } + when(resource.getItem()).thenReturn(ResourceItem.builder().myCustomID("1234").build()); + } - @Test - public void shouldTransformCustomFieldNamesFromResource() throws TransformerException, ValidationException { - Column targetColumn = Column.builder().name("id").build(); + @Test + public void shouldTransformCustomFieldNamesFromResource() + throws TransformerException, ValidationException { + Column targetColumn = Column.builder().name("id").build(); - transformer.transform(null, "myCustomID").resolve(null, resource, targetColumn); + transformer.transform(null, "myCustomID").resolve(null, resource, targetColumn); - verify(resource).set(eq("id"), eq("1234")); - } + verify(resource).set(eq("id"), eq("1234")); + } - @Test - public void shouldThrowExceptionIfResourceFieldNameNotFound() throws TransformerException { - Column targetColumn = Column.builder().name("id").build(); + @Test + public void shouldThrowExceptionIfResourceFieldNameNotFound() throws TransformerException { + Column targetColumn = Column.builder().name("id").build(); - assertThrows(TransformerException.class, () -> transformer.transform(null, "badFieldName").resolve(null, resource, targetColumn)); - } + assertThrows( + TransformerException.class, + () -> transformer.transform(null, "badFieldName").resolve(null, resource, targetColumn)); + } } diff --git a/lib/src/test/java/io/cloudquery/transformers/IgnoreInTestsTransformerTest.java b/lib/src/test/java/io/cloudquery/transformers/IgnoreInTestsTransformerTest.java index f664bf3..509c8c4 100644 --- a/lib/src/test/java/io/cloudquery/transformers/IgnoreInTestsTransformerTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/IgnoreInTestsTransformerTest.java @@ -1,13 +1,13 @@ package io.cloudquery.transformers; +import static org.junit.jupiter.api.Assertions.*; + import io.cloudquery.transformers.IgnoreInTestsTransformer.DefaultIgnoreInTestsTransformer; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - class IgnoreInTestsTransformerTest { - @Test - public void shouldRetrunFalse() { - assertFalse(new DefaultIgnoreInTestsTransformer().transform(null)); - } + @Test + public void shouldRetrunFalse() { + assertFalse(new DefaultIgnoreInTestsTransformer().transform(null)); + } } diff --git a/lib/src/test/java/io/cloudquery/transformers/TablesTest.java b/lib/src/test/java/io/cloudquery/transformers/TablesTest.java index e8d0eef..7886d93 100644 --- a/lib/src/test/java/io/cloudquery/transformers/TablesTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/TablesTest.java @@ -1,16 +1,5 @@ package io.cloudquery.transformers; -import io.cloudquery.schema.Table; -import io.cloudquery.schema.Table.Transform; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import java.util.List; -import java.util.Map; -import java.util.Set; - import static java.util.stream.Collectors.groupingBy; import static java.util.stream.Collectors.mapping; import static java.util.stream.Collectors.toSet; @@ -20,76 +9,87 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; +import io.cloudquery.schema.Table; +import io.cloudquery.schema.Table.Transform; +import java.util.List; +import java.util.Map; +import java.util.Set; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + @ExtendWith(MockitoExtension.class) class TablesTest { - @Mock - private Transform child1Transformer; - @Mock - private Transform child1aTransformer, child1bTransformer; - @Mock - private Transform extraTransformer1, extraTransformer2; - - @Test - void shouldSetTheParentOnACollectionOfTables() { - List
tables = List.of( - Table.builder().name("child1").relations(List.of( + @Mock private Transform child1Transformer; + @Mock private Transform child1aTransformer, child1bTransformer; + @Mock private Transform extraTransformer1, extraTransformer2; + + @Test + void shouldSetTheParentOnACollectionOfTables() { + List
tables = + List.of( + Table.builder() + .name("child1") + .relations( + List.of( Table.builder().name("child1a").build(), - Table.builder().name("child1b").build() - )).build(), - Table.builder().name("child2").relations(List.of( + Table.builder().name("child1b").build())) + .build(), + Table.builder() + .name("child2") + .relations( + List.of( Table.builder().name("child2a").build(), - Table.builder().name("child2b").build() - )).build() - ); - - Tables.setParents(tables, Table.builder().name("parent").build()); - - Map> tablesByParent = tablesByParent(tables); - assertEquals(tablesByParent.get("parent"), Set.of("child1", "child2")); - assertEquals(tablesByParent.get("child1"), Set.of("child1a", "child1b")); - assertEquals(tablesByParent.get("child2"), Set.of("child2a", "child2b")); - } - - - @Test - void shouldCallTransformOnEachTableIncludingRelations() throws TransformerException { - List
tables = List.of( - Table.builder().name("child1").transform(child1Transformer). - relations(List.of( - Table.builder().name("child1a").transform(child1aTransformer).build(), - Table.builder().name("child1b").transform(child1bTransformer).build() - )).build() - ); - - Tables.transformTables(tables); - - verify(child1Transformer, times(1)).transformTable(any()); - verify(child1aTransformer, times(1)).transformTable(any()); - verify(child1bTransformer, times(1)).transformTable(any()); - } - - @Test - void shouldApplyExtraTransformationToTables() throws TransformerException { - Table child1a = Table.builder().name("child1a").build(); - Table child1 = Table.builder().name("child1").relations(List.of(child1a)).build(); - - Tables.apply(List.of(child1), List.of(extraTransformer1, extraTransformer2)); - - verify(extraTransformer1, times(1)).transformTable(child1); - verify(extraTransformer1, times(1)).transformTable(child1a); - verify(extraTransformer2, times(1)).transformTable(child1); - verify(extraTransformer2, times(1)).transformTable(child1a); - verifyNoMoreInteractions(extraTransformer1, extraTransformer2); - } - - private static Map> tablesByParent(List
tables) { - return Table.flattenTables(tables).stream(). - collect( - groupingBy( - table -> table.getParent().getName(), - mapping(Table::getName, toSet()) - ) - ); - } + Table.builder().name("child2b").build())) + .build()); + + Tables.setParents(tables, Table.builder().name("parent").build()); + + Map> tablesByParent = tablesByParent(tables); + assertEquals(tablesByParent.get("parent"), Set.of("child1", "child2")); + assertEquals(tablesByParent.get("child1"), Set.of("child1a", "child1b")); + assertEquals(tablesByParent.get("child2"), Set.of("child2a", "child2b")); + } + + @Test + void shouldCallTransformOnEachTableIncludingRelations() throws TransformerException { + List
tables = + List.of( + Table.builder() + .name("child1") + .transform(child1Transformer) + .relations( + List.of( + Table.builder().name("child1a").transform(child1aTransformer).build(), + Table.builder().name("child1b").transform(child1bTransformer).build())) + .build()); + + Tables.transformTables(tables); + + verify(child1Transformer, times(1)).transformTable(any()); + verify(child1aTransformer, times(1)).transformTable(any()); + verify(child1bTransformer, times(1)).transformTable(any()); + } + + @Test + void shouldApplyExtraTransformationToTables() throws TransformerException { + Table child1a = Table.builder().name("child1a").build(); + Table child1 = Table.builder().name("child1").relations(List.of(child1a)).build(); + + Tables.apply(List.of(child1), List.of(extraTransformer1, extraTransformer2)); + + verify(extraTransformer1, times(1)).transformTable(child1); + verify(extraTransformer1, times(1)).transformTable(child1a); + verify(extraTransformer2, times(1)).transformTable(child1); + verify(extraTransformer2, times(1)).transformTable(child1a); + verifyNoMoreInteractions(extraTransformer1, extraTransformer2); + } + + private static Map> tablesByParent(List
tables) { + return Table.flattenTables(tables).stream() + .collect( + groupingBy(table -> table.getParent().getName(), mapping(Table::getName, toSet()))); + } } diff --git a/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java b/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java index 4146d94..9f40426 100644 --- a/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java @@ -1,20 +1,5 @@ package io.cloudquery.transformers; -import io.cloudquery.schema.Column; -import io.cloudquery.schema.Table; -import io.cloudquery.types.InetType; -import io.cloudquery.types.JSONType; -import io.cloudquery.types.ListType; -import org.apache.arrow.vector.types.FloatingPointPrecision; -import org.apache.arrow.vector.types.TimeUnit; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.net.InetAddress; -import java.time.LocalDateTime; -import java.util.List; -import java.util.Optional; - import static org.apache.arrow.vector.types.pojo.ArrowType.Binary; import static org.apache.arrow.vector.types.pojo.ArrowType.Bool; import static org.apache.arrow.vector.types.pojo.ArrowType.FloatingPoint; @@ -25,154 +10,189 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -class TransformWithClassTest { - @SuppressWarnings("unused") - public static final class InnerTestClass { - private String name; - private Integer id; - } - - @SuppressWarnings("unused") - public static final class SimpleClass { - private Integer id; - private String name; - private InnerTestClass innerTestClass; - } - - @SuppressWarnings("unused") - public static final class TestClass { - private int intCol; - private Integer intObjectCol; - private long longCol; - private Long longObjectCol; - private String stringCol; - private float floatCol; - private Float floatObjectCol; - private double doubleCol; - private Double doubleObjectCol; - private boolean booleanCol; - private Boolean booleanObjectCol; - private InnerTestClass jsonCol; - private int[] intArrayCol; - private List intListCol; - private String[] stringArrayCol; - private List stringListCol; - private InetAddress inetAddressCol; - private byte[] byteArrayCol; - private Object[] anyArrayCol; - private LocalDateTime timeCol; - } - - public static final List expectedColumnsTestClass = List.of( - Column.builder().name("int_col").type(new Int(64, true)).build(), - Column.builder().name("int_object_col").type(new Int(64, true)).build(), - Column.builder().name("long_col").type(new Int(64, true)).build(), - Column.builder().name("long_object_col").type(new Int(64, true)).build(), - Column.builder().name("string_col").type(Utf8.INSTANCE).build(), - Column.builder().name("float_col").type(new FloatingPoint(FloatingPointPrecision.DOUBLE)).build(), - Column.builder().name("float_object_col").type(new FloatingPoint(FloatingPointPrecision.DOUBLE)).build(), - Column.builder().name("double_col").type(new FloatingPoint(FloatingPointPrecision.DOUBLE)).build(), - Column.builder().name("double_object_col").type(new FloatingPoint(FloatingPointPrecision.DOUBLE)).build(), - Column.builder().name("boolean_col").type(Bool.INSTANCE).build(), - Column.builder().name("boolean_object_col").type(Bool.INSTANCE).build(), - Column.builder().name("json_col").type(JSONType.INSTANCE).build(), - Column.builder().name("int_array_col").type(ListType.listOf(new Int(64, true))).build(), - Column.builder().name("int_list_col").type(JSONType.INSTANCE).build(), - Column.builder().name("string_array_col").type(ListType.listOf(Utf8.INSTANCE)).build(), - Column.builder().name("string_list_col").type(JSONType.INSTANCE).build(), - Column.builder().name("inet_address_col").type(InetType.INSTANCE).build(), - Column.builder().name("byte_array_col").type(Binary.INSTANCE).build(), - Column.builder().name("any_array_col").type(JSONType.INSTANCE).build(), - Column.builder().name("time_col").type(new Timestamp(TimeUnit.MICROSECOND, null)).build() - ); - - public static final List expectedColumnsSimpleClass = List.of( - Column.builder().name("id").type(new Int(64, true)).build(), - Column.builder().name("name").type(Utf8.INSTANCE).build(), - Column.builder().name("inner_test_class_name").type(Utf8.INSTANCE).build(), - Column.builder().name("inner_test_class_id").type(new Int(64, true)).build() - ); - - private Table table; - - @BeforeEach - void setUp() { - table = Table.builder().name("test_table").build(); - } - - @Test - public void shouldTransformTableWithDefaultOptions() throws TransformerException { - TransformWithClass transformer = TransformWithClass.builder(TestClass.class).build(); - - transformer.transformTable(table); - - assertColumnsAreEqual(expectedColumnsTestClass, table.getColumns()); - } - - - @Test - public void shouldUnwrapConfiguredFields() throws TransformerException { - TransformWithClass transformer = TransformWithClass.builder(SimpleClass.class). - unwrapField("innerTestClass"). - build(); - - transformer.transformTable(table); - - assertColumnsAreEqual(expectedColumnsSimpleClass, table.getColumns()); - } - - @Test - public void shouldConfigureTopLevelPrimaryKey() throws TransformerException { - TransformWithClass transformer = TransformWithClass.builder(SimpleClass.class). - pkField("id"). - unwrapField("innerTestClass"). - build(); - - transformer.transformTable(table); - - assertColumnsAreEqual(expectedColumnsSimpleClass, table.getColumns()); - assertTrue(table.getColumn("id").isPresent(), "id column not found"); - assertTrue(table.getColumn("id").get().isPrimaryKey(), "id column not primary key"); - } - - @Test - public void shouldConfigureUnwrappedPrimaryKey() throws TransformerException { - TransformWithClass transformer = TransformWithClass.builder(SimpleClass.class). - pkField("innerTestClass.id"). - unwrapField("innerTestClass"). - build(); - - transformer.transformTable(table); - - assertColumnsAreEqual(expectedColumnsSimpleClass, table.getColumns()); - assertTrue(table.getColumn("inner_test_class_id").isPresent(), "id column not found"); - assertTrue(table.getColumn("inner_test_class_id").get().isPrimaryKey(), "id column not primary key"); - } - - @Test - public void shouldThrowAnExceptionIfPrimaryKeysAreMissing() { - TransformWithClass transformer = TransformWithClass.builder(SimpleClass.class). - pkField("innerTestClass.id"). - pkField("badPrimaryKey"). - unwrapField("innerTestClass"). - build(); +import io.cloudquery.schema.Column; +import io.cloudquery.schema.Table; +import io.cloudquery.types.InetType; +import io.cloudquery.types.JSONType; +import io.cloudquery.types.ListType; +import java.net.InetAddress; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; +import org.apache.arrow.vector.types.FloatingPointPrecision; +import org.apache.arrow.vector.types.TimeUnit; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; - TransformerException transformerException = assertThrows(TransformerException.class, () -> transformer.transformTable(table)); - assertEquals("failed to create all of the desired primary keys: [badPrimaryKey]", transformerException.getMessage()); +class TransformWithClassTest { + @SuppressWarnings("unused") + public static final class InnerTestClass { + private String name; + private Integer id; + } + + @SuppressWarnings("unused") + public static final class SimpleClass { + private Integer id; + private String name; + private InnerTestClass innerTestClass; + } + + @SuppressWarnings("unused") + public static final class TestClass { + private int intCol; + private Integer intObjectCol; + private long longCol; + private Long longObjectCol; + private String stringCol; + private float floatCol; + private Float floatObjectCol; + private double doubleCol; + private Double doubleObjectCol; + private boolean booleanCol; + private Boolean booleanObjectCol; + private InnerTestClass jsonCol; + private int[] intArrayCol; + private List intListCol; + private String[] stringArrayCol; + private List stringListCol; + private InetAddress inetAddressCol; + private byte[] byteArrayCol; + private Object[] anyArrayCol; + private LocalDateTime timeCol; + } + + public static final List expectedColumnsTestClass = + List.of( + Column.builder().name("int_col").type(new Int(64, true)).build(), + Column.builder().name("int_object_col").type(new Int(64, true)).build(), + Column.builder().name("long_col").type(new Int(64, true)).build(), + Column.builder().name("long_object_col").type(new Int(64, true)).build(), + Column.builder().name("string_col").type(Utf8.INSTANCE).build(), + Column.builder() + .name("float_col") + .type(new FloatingPoint(FloatingPointPrecision.DOUBLE)) + .build(), + Column.builder() + .name("float_object_col") + .type(new FloatingPoint(FloatingPointPrecision.DOUBLE)) + .build(), + Column.builder() + .name("double_col") + .type(new FloatingPoint(FloatingPointPrecision.DOUBLE)) + .build(), + Column.builder() + .name("double_object_col") + .type(new FloatingPoint(FloatingPointPrecision.DOUBLE)) + .build(), + Column.builder().name("boolean_col").type(Bool.INSTANCE).build(), + Column.builder().name("boolean_object_col").type(Bool.INSTANCE).build(), + Column.builder().name("json_col").type(JSONType.INSTANCE).build(), + Column.builder().name("int_array_col").type(ListType.listOf(new Int(64, true))).build(), + Column.builder().name("int_list_col").type(JSONType.INSTANCE).build(), + Column.builder().name("string_array_col").type(ListType.listOf(Utf8.INSTANCE)).build(), + Column.builder().name("string_list_col").type(JSONType.INSTANCE).build(), + Column.builder().name("inet_address_col").type(InetType.INSTANCE).build(), + Column.builder().name("byte_array_col").type(Binary.INSTANCE).build(), + Column.builder().name("any_array_col").type(JSONType.INSTANCE).build(), + Column.builder() + .name("time_col") + .type(new Timestamp(TimeUnit.MICROSECOND, null)) + .build()); + + public static final List expectedColumnsSimpleClass = + List.of( + Column.builder().name("id").type(new Int(64, true)).build(), + Column.builder().name("name").type(Utf8.INSTANCE).build(), + Column.builder().name("inner_test_class_name").type(Utf8.INSTANCE).build(), + Column.builder().name("inner_test_class_id").type(new Int(64, true)).build()); + + private Table table; + + @BeforeEach + void setUp() { + table = Table.builder().name("test_table").build(); + } + + @Test + public void shouldTransformTableWithDefaultOptions() throws TransformerException { + TransformWithClass transformer = TransformWithClass.builder(TestClass.class).build(); + + transformer.transformTable(table); + + assertColumnsAreEqual(expectedColumnsTestClass, table.getColumns()); + } + + @Test + public void shouldUnwrapConfiguredFields() throws TransformerException { + TransformWithClass transformer = + TransformWithClass.builder(SimpleClass.class).unwrapField("innerTestClass").build(); + + transformer.transformTable(table); + + assertColumnsAreEqual(expectedColumnsSimpleClass, table.getColumns()); + } + + @Test + public void shouldConfigureTopLevelPrimaryKey() throws TransformerException { + TransformWithClass transformer = + TransformWithClass.builder(SimpleClass.class) + .pkField("id") + .unwrapField("innerTestClass") + .build(); + + transformer.transformTable(table); + + assertColumnsAreEqual(expectedColumnsSimpleClass, table.getColumns()); + assertTrue(table.getColumn("id").isPresent(), "id column not found"); + assertTrue(table.getColumn("id").get().isPrimaryKey(), "id column not primary key"); + } + + @Test + public void shouldConfigureUnwrappedPrimaryKey() throws TransformerException { + TransformWithClass transformer = + TransformWithClass.builder(SimpleClass.class) + .pkField("innerTestClass.id") + .unwrapField("innerTestClass") + .build(); + + transformer.transformTable(table); + + assertColumnsAreEqual(expectedColumnsSimpleClass, table.getColumns()); + assertTrue(table.getColumn("inner_test_class_id").isPresent(), "id column not found"); + assertTrue( + table.getColumn("inner_test_class_id").get().isPrimaryKey(), "id column not primary key"); + } + + @Test + public void shouldThrowAnExceptionIfPrimaryKeysAreMissing() { + TransformWithClass transformer = + TransformWithClass.builder(SimpleClass.class) + .pkField("innerTestClass.id") + .pkField("badPrimaryKey") + .unwrapField("innerTestClass") + .build(); + + TransformerException transformerException = + assertThrows(TransformerException.class, () -> transformer.transformTable(table)); + assertEquals( + "failed to create all of the desired primary keys: [badPrimaryKey]", + transformerException.getMessage()); + } + + private void assertColumnsAreEqual(List expectedColumns, List actualColumns) { + assertEquals(expectedColumns.size(), actualColumns.size(), "Columns size mismatch"); + + // Check column types match + for (int i = 0; i < actualColumns.size(); i++) { + assertEquals( + expectedColumns.get(i).getType(), actualColumns.get(i).getType(), "Column type mismatch"); } - private void assertColumnsAreEqual(List expectedColumns, List actualColumns) { - assertEquals(expectedColumns.size(), actualColumns.size(), "Columns size mismatch"); - - // Check column types match - for (int i = 0; i < actualColumns.size(); i++) { - assertEquals(expectedColumns.get(i).getType(), actualColumns.get(i).getType(), "Column type mismatch"); - } - - // Check table now has column - for (Column expectedColumn : expectedColumns) { - Optional optionalColumn = table.getColumn(expectedColumn.getName()); - assertTrue(optionalColumn.isPresent(), "Column " + expectedColumn.getName() + " not found"); - } + // Check table now has column + for (Column expectedColumn : expectedColumns) { + Optional optionalColumn = table.getColumn(expectedColumn.getName()); + assertTrue(optionalColumn.isPresent(), "Column " + expectedColumn.getName() + " not found"); } + } } diff --git a/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java b/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java index 24a2af1..52ece49 100644 --- a/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java @@ -1,9 +1,15 @@ package io.cloudquery.transformers; +import static org.junit.jupiter.api.Assertions.assertEquals; + import io.cloudquery.transformers.TypeTransformer.DefaultTypeTransformer; import io.cloudquery.types.InetType; import io.cloudquery.types.JSONType; import io.cloudquery.types.ListType; +import java.net.InetAddress; +import java.time.LocalDateTime; +import java.util.Map; +import java.util.stream.Stream; import org.apache.arrow.vector.types.FloatingPointPrecision; import org.apache.arrow.vector.types.TimeUnit; import org.apache.arrow.vector.types.pojo.ArrowType; @@ -11,105 +17,100 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.net.InetAddress; -import java.time.LocalDateTime; -import java.util.Map; -import java.util.stream.Stream; - -import static org.junit.jupiter.api.Assertions.assertEquals; - class TypeTransformerTest { - @SuppressWarnings("unused") - private static class InnerClass { - private String innerClassStringField; - } + @SuppressWarnings("unused") + private static class InnerClass { + private String innerClassStringField; + } - @SuppressWarnings("unused") - private static class SimpleClass { - private String stringField; + @SuppressWarnings("unused") + private static class SimpleClass { + private String stringField; - private boolean booleanField; - private Boolean booleanObjectField; + private boolean booleanField; + private Boolean booleanObjectField; - private int intField; - private Integer integerObjectField; - private long longField; - private Long longObjectField; + private int intField; + private Integer integerObjectField; + private long longField; + private Long longObjectField; - private float floatField; - private Float floatObjectField; - private double doubleField; - private Double doubleObjectField; + private float floatField; + private Float floatObjectField; + private double doubleField; + private Double doubleObjectField; - private Map mapField; + private Map mapField; - private InnerClass innerClassObjectField; + private InnerClass innerClassObjectField; - private int[] intArrayField; - private String[] stringArrayField; + private int[] intArrayField; + private String[] stringArrayField; - private LocalDateTime timeField; + private LocalDateTime timeField; - private InetAddress inetField; + private InetAddress inetField; - private byte[] byteArrayField; + private byte[] byteArrayField; - private Object[] objectArrayField; - } + private Object[] objectArrayField; + } - @ParameterizedTest - @MethodSource("testArgumentsSource") - public void shouldTransformFields(String fieldName, ArrowType expectedArrowType) throws NoSuchFieldException, TransformerException { - DefaultTypeTransformer transfomer = new DefaultTypeTransformer(); + @ParameterizedTest + @MethodSource("testArgumentsSource") + public void shouldTransformFields(String fieldName, ArrowType expectedArrowType) + throws NoSuchFieldException, TransformerException { + DefaultTypeTransformer transfomer = new DefaultTypeTransformer(); - ArrowType arrowType = transfomer.transform(SimpleClass.class.getDeclaredField(fieldName)); + ArrowType arrowType = transfomer.transform(SimpleClass.class.getDeclaredField(fieldName)); - assertEquals(expectedArrowType, arrowType); - } + assertEquals(expectedArrowType, arrowType); + } - public static Stream testArgumentsSource() { - return Stream.of( - // Integer arguments - Arguments.of("intField", new ArrowType.Int(64, true)), - Arguments.of("integerObjectField", new ArrowType.Int(64, true)), - Arguments.of("longField", new ArrowType.Int(64, true)), - Arguments.of("longObjectField", new ArrowType.Int(64, true)), + public static Stream testArgumentsSource() { + return Stream.of( + // Integer arguments + Arguments.of("intField", new ArrowType.Int(64, true)), + Arguments.of("integerObjectField", new ArrowType.Int(64, true)), + Arguments.of("longField", new ArrowType.Int(64, true)), + Arguments.of("longObjectField", new ArrowType.Int(64, true)), - // String arguments - Arguments.of("stringField", ArrowType.Utf8.INSTANCE), + // String arguments + Arguments.of("stringField", ArrowType.Utf8.INSTANCE), - // Boolean arguments - Arguments.of("booleanField", ArrowType.Bool.INSTANCE), - Arguments.of("booleanObjectField", ArrowType.Bool.INSTANCE), + // Boolean arguments + Arguments.of("booleanField", ArrowType.Bool.INSTANCE), + Arguments.of("booleanObjectField", ArrowType.Bool.INSTANCE), - // Float field - Arguments.of("floatField", new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE)), - Arguments.of("floatObjectField", new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE)), - Arguments.of("doubleField", new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE)), - Arguments.of("doubleObjectField", new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE)), + // Float field + Arguments.of("floatField", new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE)), + Arguments.of( + "floatObjectField", new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE)), + Arguments.of("doubleField", new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE)), + Arguments.of( + "doubleObjectField", new ArrowType.FloatingPoint(FloatingPointPrecision.DOUBLE)), - // Map field - Arguments.of("mapField", JSONType.INSTANCE), + // Map field + Arguments.of("mapField", JSONType.INSTANCE), - // Inner class - Arguments.of("innerClassObjectField", JSONType.INSTANCE), + // Inner class + Arguments.of("innerClassObjectField", JSONType.INSTANCE), - // Array field - Arguments.of("intArrayField", ListType.listOf(new ArrowType.Int(64, true))), - Arguments.of("stringArrayField", ListType.listOf(ArrowType.Utf8.INSTANCE)), + // Array field + Arguments.of("intArrayField", ListType.listOf(new ArrowType.Int(64, true))), + Arguments.of("stringArrayField", ListType.listOf(ArrowType.Utf8.INSTANCE)), - // Time - Arguments.of("timeField", new ArrowType.Timestamp(TimeUnit.MICROSECOND, null)), + // Time + Arguments.of("timeField", new ArrowType.Timestamp(TimeUnit.MICROSECOND, null)), - // Byte - Arguments.of("byteArrayField", ArrowType.Binary.INSTANCE), + // Byte + Arguments.of("byteArrayField", ArrowType.Binary.INSTANCE), - // Inet - Arguments.of("inetField", InetType.INSTANCE), + // Inet + Arguments.of("inetField", InetType.INSTANCE), - // Object array - Arguments.of("objectArrayField", JSONType.INSTANCE) - ); - } + // Object array + Arguments.of("objectArrayField", JSONType.INSTANCE)); + } } diff --git a/lib/src/test/java/io/cloudquery/types/JSONTypeTest.java b/lib/src/test/java/io/cloudquery/types/JSONTypeTest.java index a04ac90..996dcda 100644 --- a/lib/src/test/java/io/cloudquery/types/JSONTypeTest.java +++ b/lib/src/test/java/io/cloudquery/types/JSONTypeTest.java @@ -1,7 +1,21 @@ package io.cloudquery.types; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + import com.fasterxml.jackson.databind.ObjectMapper; import io.cloudquery.types.JSONType.JSONVector; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.channels.FileChannel; +import java.nio.channels.WritableByteChannel; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; +import java.util.Collections; +import java.util.List; import lombok.AllArgsConstructor; import lombok.Data; import org.apache.arrow.memory.BufferAllocator; @@ -18,129 +32,120 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.OutputStream; -import java.nio.channels.FileChannel; -import java.nio.channels.WritableByteChannel; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.nio.file.StandardOpenOption; -import java.util.Collections; -import java.util.List; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - public class JSONTypeTest { - private static final String FIELD_NAME = "json"; - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - - @Data - @AllArgsConstructor - public static class Person { - private String name; - private Integer age; - private List hobbies; + private static final String FIELD_NAME = "json"; + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + @Data + @AllArgsConstructor + public static class Person { + private String name; + private Integer age; + private List hobbies; + } + + private File file; + private List jsonData; + + @BeforeAll + public static void setUpTest() { + ExtensionTypeRegistry.register(new JSONType()); + } + + @AfterAll + public static void tearDown() { + ExtensionTypeRegistry.unregister(new JSONType()); + } + + @BeforeEach + void setUp() throws IOException { + file = File.createTempFile("json_test", ".arrow"); + jsonData = + List.of( + toJSON(new Person("John", 30, List.of("hiking", "swimming"))), + toJSON(new Person("Jane", 25, List.of("reading", "cooking")))); + } + + @Test + public void shouldSetJSONOnJSONVector() throws IOException { + + try (BufferAllocator allocator = new RootAllocator()) { + ArrowType.ExtensionType jsonType = ExtensionTypeRegistry.lookup("json"); + try (JSONVector vector = (JSONVector) jsonType.getNewVector("vector", null, allocator)) { + vector.set(0, jsonData.get(0)); + vector.setNull(1); + vector.set(2, jsonData.get(1)); + vector.setNull(3); + vector.setValueCount(4); + + // Assert that the values were set correctly + assertEquals(jsonData.get(0), vector.get(0), "JSON should match"); + assertTrue(vector.isNull(1), "Should be null"); + assertEquals(jsonData.get(1), vector.get(2), "JSON should match"); + assertTrue(vector.isNull(3), "Should be null"); + + // Assert that the value count and null count are correct + assertEquals(4, vector.getValueCount(), "Value count should match"); + assertEquals(2, vector.getNullCount(), "Null count should match"); + } } - - private File file; - private List jsonData; - - @BeforeAll - public static void setUpTest() { - ExtensionTypeRegistry.register(new JSONType()); + } + + @Test + public void roundTripJSON() throws IOException { + // Generate some data and write it to a file + try (BufferAllocator allocator = new RootAllocator(); + VectorSchemaRoot root = createVectorSchemaRoot(allocator)) { + generateDataAndWriteToFile(root); } - @AfterAll - public static void tearDown() { - ExtensionTypeRegistry.unregister(new JSONType()); - } + // Read the data back from the file and assert that it matches what we wrote + try (BufferAllocator allocator = new RootAllocator(); + ArrowFileReader reader = + new ArrowFileReader( + Files.newByteChannel(Paths.get(file.getAbsolutePath())), allocator)) { - @BeforeEach - void setUp() throws IOException { - file = File.createTempFile("json_test", ".arrow"); - jsonData = List.of( - toJSON(new Person("John", 30, List.of("hiking", "swimming"))), - toJSON(new Person("Jane", 25, List.of("reading", "cooking"))) - ); - } + reader.loadNextBatch(); - @Test - public void shouldSetJSONOnJSONVector() throws IOException { - - try (BufferAllocator allocator = new RootAllocator()) { - ArrowType.ExtensionType jsonType = ExtensionTypeRegistry.lookup("json"); - try (JSONVector vector = (JSONVector) jsonType.getNewVector("vector", null, allocator)) { - vector.set(0, jsonData.get(0)); - vector.setNull(1); - vector.set(2, jsonData.get(1)); - vector.setNull(3); - vector.setValueCount(4); - - // Assert that the values were set correctly - assertEquals(jsonData.get(0), vector.get(0), "JSON should match"); - assertTrue(vector.isNull(1), "Should be null"); - assertEquals(jsonData.get(1), vector.get(2), "JSON should match"); - assertTrue(vector.isNull(3), "Should be null"); - - // Assert that the value count and null count are correct - assertEquals(4, vector.getValueCount(), "Value count should match"); - assertEquals(2, vector.getNullCount(), "Null count should match"); - } - } + JSONVector fieldVector = (JSONVector) reader.getVectorSchemaRoot().getVector(FIELD_NAME); + assertEquals(jsonData.size(), fieldVector.getValueCount(), "Value count should match"); + for (int i = 0; i < jsonData.size(); i++) { + assertEquals(jsonData.get(i), fieldVector.get(i), "JSON should match"); + } } - - @Test - public void roundTripJSON() throws IOException { - // Generate some data and write it to a file - try (BufferAllocator allocator = new RootAllocator(); VectorSchemaRoot root = createVectorSchemaRoot(allocator)) { - generateDataAndWriteToFile(root); - } - - // Read the data back from the file and assert that it matches what we wrote - try (BufferAllocator allocator = new RootAllocator(); - ArrowFileReader reader = new ArrowFileReader(Files.newByteChannel(Paths.get(file.getAbsolutePath())), allocator)) { - - reader.loadNextBatch(); - - JSONVector fieldVector = (JSONVector) reader.getVectorSchemaRoot().getVector(FIELD_NAME); - assertEquals(jsonData.size(), fieldVector.getValueCount(), "Value count should match"); - for (int i = 0; i < jsonData.size(); i++) { - assertEquals(jsonData.get(i), fieldVector.get(i), "JSON should match"); - } - } - } - - private static VectorSchemaRoot createVectorSchemaRoot(BufferAllocator allocator) { - return VectorSchemaRoot.create(new Schema(Collections.singletonList(Field.nullable(FIELD_NAME, new JSONType()))), allocator); + } + + private static VectorSchemaRoot createVectorSchemaRoot(BufferAllocator allocator) { + return VectorSchemaRoot.create( + new Schema(Collections.singletonList(Field.nullable(FIELD_NAME, new JSONType()))), + allocator); + } + + private void generateDataAndWriteToFile(VectorSchemaRoot root) throws IOException { + // Get the vector representing the column + JSONVector vector = (JSONVector) root.getVector(FIELD_NAME); + + // Generate some JSON data + vector.setValueCount(jsonData.size()); + for (int i = 0; i < jsonData.size(); i++) { + vector.set(i, jsonData.get(i)); } - - private void generateDataAndWriteToFile(VectorSchemaRoot root) throws IOException { - // Get the vector representing the column - JSONVector vector = (JSONVector) root.getVector(FIELD_NAME); - - // Generate some JSON data - vector.setValueCount(jsonData.size()); - for (int i = 0; i < jsonData.size(); i++) { - vector.set(i, jsonData.get(i)); - } - root.setRowCount(jsonData.size()); - - // Write the data to a file - try (WritableByteChannel channel = FileChannel.open(Paths.get(file.getAbsolutePath()), StandardOpenOption.WRITE); - ArrowFileWriter writer = new ArrowFileWriter(root, null, channel)) { - writer.start(); - writer.writeBatch(); - writer.end(); - } + root.setRowCount(jsonData.size()); + + // Write the data to a file + try (WritableByteChannel channel = + FileChannel.open(Paths.get(file.getAbsolutePath()), StandardOpenOption.WRITE); + ArrowFileWriter writer = new ArrowFileWriter(root, null, channel)) { + writer.start(); + writer.writeBatch(); + writer.end(); } + } - private static String toJSON(Object object) throws IOException { - try (OutputStream outputStream = new ByteArrayOutputStream()) { - OBJECT_MAPPER.writeValue(outputStream, object); - return outputStream.toString(); - } + private static String toJSON(Object object) throws IOException { + try (OutputStream outputStream = new ByteArrayOutputStream()) { + OBJECT_MAPPER.writeValue(outputStream, object); + return outputStream.toString(); } + } } diff --git a/lib/src/test/java/io/cloudquery/types/ListTypeTest.java b/lib/src/test/java/io/cloudquery/types/ListTypeTest.java index daa8858..64b1261 100644 --- a/lib/src/test/java/io/cloudquery/types/ListTypeTest.java +++ b/lib/src/test/java/io/cloudquery/types/ListTypeTest.java @@ -1,19 +1,19 @@ package io.cloudquery.types; -import org.apache.arrow.vector.types.pojo.ArrowType; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.junit.jupiter.api.Test; + class ListTypeTest { - @Test - public void testEquality() { - ListType listType1 = ListType.listOf(new ArrowType.Int(64, true)); - ListType listType2 = ListType.listOf(new ArrowType.Int(64, true)); - ListType listType3 = ListType.listOf(new ArrowType.Int(32, true)); + @Test + public void testEquality() { + ListType listType1 = ListType.listOf(new ArrowType.Int(64, true)); + ListType listType2 = ListType.listOf(new ArrowType.Int(64, true)); + ListType listType3 = ListType.listOf(new ArrowType.Int(32, true)); - assertEquals(listType1, listType2); - assertNotEquals(listType1, listType3); - } + assertEquals(listType1, listType2); + assertNotEquals(listType1, listType3); + } } diff --git a/lib/src/test/java/io/cloudquery/types/UUIDTypeTest.java b/lib/src/test/java/io/cloudquery/types/UUIDTypeTest.java index 187c843..f2f4cc9 100644 --- a/lib/src/test/java/io/cloudquery/types/UUIDTypeTest.java +++ b/lib/src/test/java/io/cloudquery/types/UUIDTypeTest.java @@ -1,6 +1,20 @@ package io.cloudquery.types; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + import io.cloudquery.types.UUIDType.UUIDVector; +import java.io.File; +import java.io.IOException; +import java.nio.channels.FileChannel; +import java.nio.channels.WritableByteChannel; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; +import java.util.Collections; +import java.util.List; +import java.util.UUID; +import java.util.stream.IntStream; import org.apache.arrow.memory.BufferAllocator; import org.apache.arrow.memory.RootAllocator; import org.apache.arrow.vector.FieldVector; @@ -16,112 +30,103 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import java.io.File; -import java.io.IOException; -import java.nio.channels.FileChannel; -import java.nio.channels.WritableByteChannel; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.nio.file.StandardOpenOption; -import java.util.Collections; -import java.util.List; -import java.util.UUID; -import java.util.stream.IntStream; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - class UUIDTypeTest { - private static final String FIELD_NAME = "uuid"; - private static final List UUIDS = IntStream.range(0, 10).mapToObj(i -> UUID.randomUUID()).toList(); - - private File file; - - @BeforeAll - public static void setUpTest() { - ExtensionTypeRegistry.register(new UUIDType()); + private static final String FIELD_NAME = "uuid"; + private static final List UUIDS = + IntStream.range(0, 10).mapToObj(i -> UUID.randomUUID()).toList(); + + private File file; + + @BeforeAll + public static void setUpTest() { + ExtensionTypeRegistry.register(new UUIDType()); + } + + @AfterAll + public static void tearDown() { + ExtensionTypeRegistry.unregister(new UUIDType()); + } + + @BeforeEach + void setUp() throws IOException { + file = File.createTempFile("uuid_test", ".arrow"); + } + + @Test + public void shouldSetUUIDsOnUUIDVector() { + UUID uuid1 = UUID.randomUUID(); + UUID uuid2 = UUID.randomUUID(); + + try (BufferAllocator allocator = new RootAllocator()) { + ExtensionType uuidType = ExtensionTypeRegistry.lookup("uuid"); + try (UUIDVector vector = (UUIDVector) uuidType.getNewVector("vector", null, allocator)) { + vector.setValueCount(4); + vector.set(0, uuid1); + vector.setNull(1); + vector.set(2, uuid2); + vector.setNull(3); + + // Assert that the values were set correctly + assertEquals(uuid1, vector.get(0), "UUIDs should match"); + assertTrue(vector.isNull(1), "Should be null"); + assertEquals(uuid2, vector.get(2), "UUIDs should match"); + assertTrue(vector.isNull(3), "Should be null"); + + // Assert that the value count and null count are correct + assertEquals(4, vector.getValueCount(), "Value count should match"); + assertEquals(2, vector.getNullCount(), "Null count should match"); + } } - - @AfterAll - public static void tearDown() { - ExtensionTypeRegistry.unregister(new UUIDType()); + } + + @Test + public void roundTripUUID() throws IOException { + // Generate some data and write it to a file + try (BufferAllocator allocator = new RootAllocator(); + VectorSchemaRoot root = createVectorSchemaRoot(allocator)) { + generateDataAndWriteToFile(root); } + // Read the data back from the file and assert that it matches what we wrote + try (BufferAllocator allocator = new RootAllocator(); + ArrowFileReader reader = + new ArrowFileReader( + Files.newByteChannel(Paths.get(file.getAbsolutePath())), allocator)) { - @BeforeEach - void setUp() throws IOException { - file = File.createTempFile("uuid_test", ".arrow"); - } + reader.loadNextBatch(); - @Test - public void shouldSetUUIDsOnUUIDVector() { - UUID uuid1 = UUID.randomUUID(); - UUID uuid2 = UUID.randomUUID(); - - try (BufferAllocator allocator = new RootAllocator()) { - ExtensionType uuidType = ExtensionTypeRegistry.lookup("uuid"); - try (UUIDVector vector = (UUIDVector) uuidType.getNewVector("vector", null, allocator)) { - vector.setValueCount(4); - vector.set(0, uuid1); - vector.setNull(1); - vector.set(2, uuid2); - vector.setNull(3); - - // Assert that the values were set correctly - assertEquals(uuid1, vector.get(0), "UUIDs should match"); - assertTrue(vector.isNull(1), "Should be null"); - assertEquals(uuid2, vector.get(2), "UUIDs should match"); - assertTrue(vector.isNull(3), "Should be null"); - - // Assert that the value count and null count are correct - assertEquals(4, vector.getValueCount(), "Value count should match"); - assertEquals(2, vector.getNullCount(), "Null count should match"); - } - } + FieldVector fieldVector = reader.getVectorSchemaRoot().getVector(FIELD_NAME); + assertEquals(UUIDS.size(), fieldVector.getValueCount(), "Value count should match"); + for (int i = 0; i < UUIDS.size(); i++) { + assertEquals(UUIDS.get(i), fieldVector.getObject(i), "UUIDs should match"); + } } - - @Test - public void roundTripUUID() throws IOException { - // Generate some data and write it to a file - try (BufferAllocator allocator = new RootAllocator(); VectorSchemaRoot root = createVectorSchemaRoot(allocator)) { - generateDataAndWriteToFile(root); - } - - // Read the data back from the file and assert that it matches what we wrote - try (BufferAllocator allocator = new RootAllocator(); - ArrowFileReader reader = new ArrowFileReader(Files.newByteChannel(Paths.get(file.getAbsolutePath())), allocator)) { - - reader.loadNextBatch(); - - FieldVector fieldVector = reader.getVectorSchemaRoot().getVector(FIELD_NAME); - assertEquals(UUIDS.size(), fieldVector.getValueCount(), "Value count should match"); - for (int i = 0; i < UUIDS.size(); i++) { - assertEquals(UUIDS.get(i), fieldVector.getObject(i), "UUIDs should match"); - } - } - } - - private static VectorSchemaRoot createVectorSchemaRoot(BufferAllocator allocator) { - return VectorSchemaRoot.create(new Schema(Collections.singletonList(Field.nullable(FIELD_NAME, new UUIDType()))), allocator); + } + + private static VectorSchemaRoot createVectorSchemaRoot(BufferAllocator allocator) { + return VectorSchemaRoot.create( + new Schema(Collections.singletonList(Field.nullable(FIELD_NAME, new UUIDType()))), + allocator); + } + + private void generateDataAndWriteToFile(VectorSchemaRoot root) throws IOException { + // Get the vector representing the column + UUIDVector vector = (UUIDVector) root.getVector(FIELD_NAME); + + // Generate some UUIDs + vector.setValueCount(UUIDS.size()); + for (int i = 0; i < UUIDS.size(); i++) { + vector.set(i, UUIDS.get(i)); } - - private void generateDataAndWriteToFile(VectorSchemaRoot root) throws IOException { - // Get the vector representing the column - UUIDVector vector = (UUIDVector) root.getVector(FIELD_NAME); - - // Generate some UUIDs - vector.setValueCount(UUIDS.size()); - for (int i = 0; i < UUIDS.size(); i++) { - vector.set(i, UUIDS.get(i)); - } - root.setRowCount(UUIDS.size()); - - // Write the data to a file - try (WritableByteChannel channel = FileChannel.open(Paths.get(file.getAbsolutePath()), StandardOpenOption.WRITE); - ArrowFileWriter writer = new ArrowFileWriter(root, null, channel)) { - writer.start(); - writer.writeBatch(); - writer.end(); - } + root.setRowCount(UUIDS.size()); + + // Write the data to a file + try (WritableByteChannel channel = + FileChannel.open(Paths.get(file.getAbsolutePath()), StandardOpenOption.WRITE); + ArrowFileWriter writer = new ArrowFileWriter(root, null, channel)) { + writer.start(); + writer.writeBatch(); + writer.end(); } + } } From 22f2b1fe73d509af0556f2d35f0eed20ac7b91d6 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Mon, 21 Aug 2023 16:12:40 +0200 Subject: [PATCH 004/376] chore: Add formatter pre commit hook (#77) Also kept the default large file hook --- .pre-commit-config.yaml | 11 +++++++++++ README.md | 7 +++++++ 2 files changed, 18 insertions(+) create mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..7af0671 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,11 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v3.2.0 + hooks: + - id: check-added-large-files + + - repo: https://github.com/jguttman94/pre-commit-gradle + rev: v0.3.0 + hooks: + - id: gradle-spotless + args: ["-w"] diff --git a/README.md b/README.md index 8bf0ffe..5af09dc 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ This is the high-level package to use for developing CloudQuery plugins in Java. ## Setup +### Authenticate to GitHub Packages + ```bash # Set up authentication to GitHub Packages, more in https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-gradle-registry#authenticating-to-github-packages export GITHUB_ACTOR= @@ -11,6 +13,11 @@ export GITHUB_ACTOR= export GITHUB_TOKEN= ``` +### Install pre-commit hooks + +- Install `pre-commit` from +- Run `pre-commit install` to install the hooks + ## Build ```bash From 4b77a2fd29da9b81346303588f741b42a828e988 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Mon, 21 Aug 2023 16:32:27 +0200 Subject: [PATCH 005/376] fix: Pass options to tables method (#78) --- lib/build.gradle | 2 +- .../cloudquery/internal/servers/plugin/v3/PluginServer.java | 6 +++++- lib/src/main/java/io/cloudquery/memdb/MemDB.java | 6 ++++-- lib/src/main/java/io/cloudquery/plugin/Plugin.java | 4 +++- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index fb72220..48372ea 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation "io.grpc:grpc-stub:1.57.1" implementation "io.grpc:grpc-services:1.57.1" implementation "io.grpc:grpc-testing:1.57.1" - implementation "io.cloudquery:plugin-pb-java:0.0.5" + implementation "io.cloudquery:plugin-pb-java:0.0.6" implementation "org.apache.arrow:arrow-memory-core:12.0.1" implementation "org.apache.arrow:arrow-vector:12.0.1" diff --git a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java index 126c3c0..8b665a1 100644 --- a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java +++ b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java @@ -57,7 +57,11 @@ public void getTables( io.cloudquery.plugin.v3.GetTables.Request request, StreamObserver responseObserver) { try { - List
tables = plugin.tables(); + List
tables = + plugin.tables( + request.getTablesList(), + request.getSkipTablesList(), + request.getSkipDependentTables()); List byteStrings = new ArrayList<>(); for (Table table : tables) { try (BufferAllocator bufferAllocator = new RootAllocator()) { diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDB.java b/lib/src/main/java/io/cloudquery/memdb/MemDB.java index f524fbd..be3d2fd 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDB.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDB.java @@ -29,8 +29,10 @@ public void init() { } @Override - public List
tables() throws SchemaException { - return Table.filterDFS(allTables, List.of("*"), List.of(), false); + public List
tables( + List includeList, List skipList, boolean skipDependentTables) + throws SchemaException { + return Table.filterDFS(allTables, includeList, skipList, skipDependentTables); } @Override diff --git a/lib/src/main/java/io/cloudquery/plugin/Plugin.java b/lib/src/main/java/io/cloudquery/plugin/Plugin.java index 0e22eee..9f5cc1f 100644 --- a/lib/src/main/java/io/cloudquery/plugin/Plugin.java +++ b/lib/src/main/java/io/cloudquery/plugin/Plugin.java @@ -18,7 +18,9 @@ public abstract class Plugin { public abstract void init(); - public abstract List
tables() throws SchemaException; + public abstract List
tables( + List includeList, List skipList, boolean skipDependentTables) + throws SchemaException; public abstract void sync(); From dd2c1a5c590b8d828f12d3b95d6b58b2ef095bef Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Mon, 21 Aug 2023 17:49:21 +0200 Subject: [PATCH 006/376] feat(sync): Send migrate messages (#79) First part of the sync, sending migrate table messages to the client --- .../servers/plugin/v3/PluginServer.java | 36 ++++++++----------- .../main/java/io/cloudquery/memdb/MemDB.java | 22 ++++++++++-- .../io/cloudquery/plugin/BackendOptions.java | 11 ++++++ .../java/io/cloudquery/plugin/Plugin.java | 10 +++++- .../io/cloudquery/scheduler/Scheduler.java | 32 ++++++++++++++++- .../main/java/io/cloudquery/schema/Table.java | 23 ++++++++++++ .../io/cloudquery/server/ServeCommand.java | 1 + 7 files changed, 108 insertions(+), 27 deletions(-) create mode 100644 lib/src/main/java/io/cloudquery/plugin/BackendOptions.java diff --git a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java index 8b665a1..51b2796 100644 --- a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java +++ b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java @@ -1,20 +1,14 @@ package io.cloudquery.internal.servers.plugin.v3; import com.google.protobuf.ByteString; +import io.cloudquery.plugin.BackendOptions; import io.cloudquery.plugin.Plugin; import io.cloudquery.plugin.v3.PluginGrpc.PluginImplBase; import io.cloudquery.plugin.v3.Write; import io.cloudquery.schema.Table; import io.grpc.stub.StreamObserver; -import java.io.ByteArrayOutputStream; -import java.nio.channels.Channels; import java.util.ArrayList; import java.util.List; -import org.apache.arrow.memory.BufferAllocator; -import org.apache.arrow.memory.RootAllocator; -import org.apache.arrow.vector.VectorSchemaRoot; -import org.apache.arrow.vector.ipc.ArrowStreamWriter; -import org.apache.arrow.vector.types.pojo.Schema; public class PluginServer extends PluginImplBase { private final Plugin plugin; @@ -64,18 +58,7 @@ public void getTables( request.getSkipDependentTables()); List byteStrings = new ArrayList<>(); for (Table table : tables) { - try (BufferAllocator bufferAllocator = new RootAllocator()) { - Schema schema = table.toArrowSchema(); - VectorSchemaRoot schemaRoot = VectorSchemaRoot.create(schema, bufferAllocator); - try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { - try (ArrowStreamWriter writer = - new ArrowStreamWriter(schemaRoot, null, Channels.newChannel(out))) { - writer.start(); - writer.end(); - byteStrings.add(ByteString.copyFrom(out.toByteArray())); - } - } - } + byteStrings.add(table.encode()); } responseObserver.onNext( io.cloudquery.plugin.v3.GetTables.Response.newBuilder() @@ -91,9 +74,18 @@ public void getTables( public void sync( io.cloudquery.plugin.v3.Sync.Request request, StreamObserver responseObserver) { - plugin.sync(); - responseObserver.onNext(io.cloudquery.plugin.v3.Sync.Response.newBuilder().build()); - responseObserver.onCompleted(); + try { + plugin.sync( + request.getTablesList(), + request.getSkipTablesList(), + request.getSkipDependentTables(), + request.getDeterministicCqId(), + new BackendOptions( + request.getBackend().getTableName(), request.getBackend().getConnection()), + responseObserver); + } catch (Exception e) { + responseObserver.onError(e); + } } @Override diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDB.java b/lib/src/main/java/io/cloudquery/memdb/MemDB.java index be3d2fd..a4f08f9 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDB.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDB.java @@ -1,9 +1,12 @@ package io.cloudquery.memdb; +import io.cloudquery.plugin.BackendOptions; import io.cloudquery.plugin.Plugin; +import io.cloudquery.scheduler.Scheduler; import io.cloudquery.schema.Column; import io.cloudquery.schema.SchemaException; import io.cloudquery.schema.Table; +import io.grpc.stub.StreamObserver; import java.util.List; import org.apache.arrow.vector.types.pojo.ArrowType.Utf8; @@ -36,9 +39,22 @@ public List
tables( } @Override - public void sync() { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'Sync'"); + public void sync( + List includeList, + List skipList, + boolean skipDependentTables, + boolean deterministicCqId, + BackendOptions backendOptions, + StreamObserver syncStream) + throws SchemaException { + List
filtered = Table.filterDFS(allTables, includeList, skipList, skipDependentTables); + Scheduler.builder() + .tables(filtered) + .syncStream(syncStream) + .deterministicCqId(deterministicCqId) + .logger(getLogger()) + .build() + .sync(); } @Override diff --git a/lib/src/main/java/io/cloudquery/plugin/BackendOptions.java b/lib/src/main/java/io/cloudquery/plugin/BackendOptions.java new file mode 100644 index 0000000..d5ebdab --- /dev/null +++ b/lib/src/main/java/io/cloudquery/plugin/BackendOptions.java @@ -0,0 +1,11 @@ +package io.cloudquery.plugin; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public class BackendOptions { + private final String tableName; + private final String connection; +} diff --git a/lib/src/main/java/io/cloudquery/plugin/Plugin.java b/lib/src/main/java/io/cloudquery/plugin/Plugin.java index 9f5cc1f..b27fc1d 100644 --- a/lib/src/main/java/io/cloudquery/plugin/Plugin.java +++ b/lib/src/main/java/io/cloudquery/plugin/Plugin.java @@ -2,6 +2,7 @@ import io.cloudquery.schema.SchemaException; import io.cloudquery.schema.Table; +import io.grpc.stub.StreamObserver; import java.util.List; import lombok.Getter; import lombok.NonNull; @@ -22,7 +23,14 @@ public abstract List
tables( List includeList, List skipList, boolean skipDependentTables) throws SchemaException; - public abstract void sync(); + public abstract void sync( + List includeList, + List skipList, + boolean skipDependentTables, + boolean deterministicCqId, + BackendOptions backendOptions, + StreamObserver syncStream) + throws SchemaException; public abstract void read(); diff --git a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java index be1650a..7d484f6 100644 --- a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java +++ b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java @@ -1,5 +1,35 @@ package io.cloudquery.scheduler; +import io.cloudquery.plugin.v3.Sync; +import io.cloudquery.schema.Table; +import io.grpc.stub.StreamObserver; +import java.io.IOException; +import java.util.List; +import lombok.Builder; +import lombok.NonNull; +import org.apache.logging.log4j.Logger; + +@Builder public class Scheduler { - public Scheduler() {} + @NonNull private final List
tables; + @NonNull private final StreamObserver syncStream; + @NonNull private final Logger logger; + + private boolean deterministicCqId; + + public void sync() { + for (Table table : tables) { + try { + logger.info("sending migrate message for table: {}", table.getName()); + Sync.MessageMigrateTable migrateTable = + Sync.MessageMigrateTable.newBuilder().setTable(table.encode()).build(); + Sync.Response response = Sync.Response.newBuilder().setMigrateTable(migrateTable).build(); + syncStream.onNext(response); + } catch (IOException e) { + syncStream.onError(e); + return; + } + } + syncStream.onCompleted(); + } } diff --git a/lib/src/main/java/io/cloudquery/schema/Table.java b/lib/src/main/java/io/cloudquery/schema/Table.java index d8216cd..ca47d8a 100644 --- a/lib/src/main/java/io/cloudquery/schema/Table.java +++ b/lib/src/main/java/io/cloudquery/schema/Table.java @@ -2,9 +2,13 @@ import static java.util.Arrays.asList; +import com.google.protobuf.ByteString; import io.cloudquery.glob.Glob; import io.cloudquery.schema.Column.ColumnBuilder; import io.cloudquery.transformers.TransformerException; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.channels.Channels; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -16,6 +20,10 @@ import lombok.Getter; import lombok.NonNull; import lombok.Setter; +import org.apache.arrow.memory.BufferAllocator; +import org.apache.arrow.memory.RootAllocator; +import org.apache.arrow.vector.VectorSchemaRoot; +import org.apache.arrow.vector.ipc.ArrowStreamWriter; import org.apache.arrow.vector.types.pojo.Field; import org.apache.arrow.vector.types.pojo.Schema; @@ -228,4 +236,19 @@ public Schema toArrowSchema() { Schema schema = new Schema(asList(fields), metadata); return schema; } + + public ByteString encode() throws IOException { + try (BufferAllocator bufferAllocator = new RootAllocator()) { + Schema schema = toArrowSchema(); + VectorSchemaRoot schemaRoot = VectorSchemaRoot.create(schema, bufferAllocator); + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + try (ArrowStreamWriter writer = + new ArrowStreamWriter(schemaRoot, null, Channels.newChannel(out))) { + writer.start(); + writer.end(); + return ByteString.copyFrom(out.toByteArray()); + } + } + } + } } diff --git a/lib/src/main/java/io/cloudquery/server/ServeCommand.java b/lib/src/main/java/io/cloudquery/server/ServeCommand.java index 4802e27..539bf9c 100644 --- a/lib/src/main/java/io/cloudquery/server/ServeCommand.java +++ b/lib/src/main/java/io/cloudquery/server/ServeCommand.java @@ -88,6 +88,7 @@ private LoggerContext initLogger() { context.start(configuration); logger = context.getLogger(ServeCommand.class.getName()); + this.plugin.setLogger(logger); return context; } From 8c9872a463b689b9ddb57c520bdee488ce7fdf72 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Mon, 21 Aug 2023 17:51:11 +0200 Subject: [PATCH 007/376] fix: Flatten tables in getTables gRPC call (#80) We need to flatten tables in the `getTables` call otherwise relations will not be migrated in `cloudquery migrate` (see https://github.com/cloudquery/plugin-sdk-python/pull/41) --- .../io/cloudquery/internal/servers/plugin/v3/PluginServer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java index 51b2796..9c5a5fd 100644 --- a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java +++ b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java @@ -57,7 +57,7 @@ public void getTables( request.getSkipTablesList(), request.getSkipDependentTables()); List byteStrings = new ArrayList<>(); - for (Table table : tables) { + for (Table table : Table.flattenTables(tables)) { byteStrings.add(table.encode()); } responseObserver.onNext( From fc92542cb402d1ac0241aa781847eb8f2d211f87 Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Tue, 22 Aug 2023 09:50:37 +0100 Subject: [PATCH 008/376] feat: adding JSON scalar (#82) fixes: #63 --- lib/build.gradle | 2 + .../main/java/io/cloudquery/scalar/JSON.java | 82 ++++++++++++ .../java/io/cloudquery/scalar/JSONTest.java | 121 ++++++++++++++++++ 3 files changed, 205 insertions(+) create mode 100644 lib/src/main/java/io/cloudquery/scalar/JSON.java create mode 100644 lib/src/test/java/io/cloudquery/scalar/JSONTest.java diff --git a/lib/build.gradle b/lib/build.gradle index 48372ea..0e9148a 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -42,6 +42,8 @@ dependencies { implementation "org.apache.arrow:arrow-memory-core:12.0.1" implementation "org.apache.arrow:arrow-vector:12.0.1" + implementation "com.fasterxml.jackson.core:jackson-core:2.15.1" + implementation 'org.apache.logging.log4j:log4j-api:2.20.0' implementation 'org.apache.logging.log4j:log4j-core:2.20.0' diff --git a/lib/src/main/java/io/cloudquery/scalar/JSON.java b/lib/src/main/java/io/cloudquery/scalar/JSON.java new file mode 100644 index 0000000..66f50a5 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/scalar/JSON.java @@ -0,0 +1,82 @@ +package io.cloudquery.scalar; + +import static io.cloudquery.scalar.ValidationException.NO_CONVERSION_AVAILABLE; + +import com.fasterxml.jackson.databind.ObjectMapper; +import io.cloudquery.types.JSONType; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Arrays; +import org.apache.arrow.vector.types.pojo.ArrowType; + +public class JSON extends Scalar { + private static final JSONType dt = new JSONType(); + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + public JSON() { + super(); + } + + public JSON(Object value) throws ValidationException { + super(value); + } + + @Override + protected void setValue(Object value) throws ValidationException { + if (value instanceof byte[] bytes) { + if (bytes.length == 0) { + return; + } + if (!isValidJSON(bytes)) { + throw new ValidationException("invalid json", dt, value); + } + this.value = bytes; + } else if (value instanceof java.lang.String string) { + set(string.getBytes()); + } else { + set(parseAsJSONBytes(value)); + } + } + + @Override + public ArrowType dataType() { + return dt; + } + + @Override + public boolean equals(Object other) { + if (other instanceof JSON o) { + if (this.value == null) { + return o.value == null; + } + return Arrays.equals(this.value, o.value); + } + return super.equals(other); + } + + @Override + public java.lang.String toString() { + if (this.value != null) { + return new java.lang.String(this.value); + } + return NULL_VALUE_STRING; + } + + private byte[] parseAsJSONBytes(Object value) throws ValidationException { + try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { + OBJECT_MAPPER.writeValue(outputStream, value); + return outputStream.toByteArray(); + } catch (IOException e) { + throw new ValidationException(NO_CONVERSION_AVAILABLE, this.dataType(), value); + } + } + + private boolean isValidJSON(byte[] bytes) { + try { + OBJECT_MAPPER.readTree(bytes); + return true; + } catch (IOException ex) { + return false; + } + } +} diff --git a/lib/src/test/java/io/cloudquery/scalar/JSONTest.java b/lib/src/test/java/io/cloudquery/scalar/JSONTest.java new file mode 100644 index 0000000..14ec19f --- /dev/null +++ b/lib/src/test/java/io/cloudquery/scalar/JSONTest.java @@ -0,0 +1,121 @@ +package io.cloudquery.scalar; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import io.cloudquery.types.JSONType; +import java.util.Collections; +import java.util.Map; +import lombok.AllArgsConstructor; +import org.junit.jupiter.api.Test; + +public class JSONTest { + @AllArgsConstructor + public static class JsonData { + public java.lang.String name; + public int value; + } + + @Test + public void testNew() { + assertDoesNotThrow(() -> new JSON()); + } + + @Test + public void testNewWithValidParam() { + assertDoesNotThrow(() -> new JSON("{}")); + assertDoesNotThrow(() -> new JSON("{}".getBytes())); + assertDoesNotThrow(() -> new JsonData("test", 1)); + assertDoesNotThrow(() -> new JSON(new JsonData("test", 1))); + assertDoesNotThrow(() -> new JSON(new int[] {1, 2, 3})); + } + + @Test + public void testNewWithInvalidParam() { + assertThrows(ValidationException.class, () -> new JSON("{\"name\":\"test\", incomplete")); + assertThrows( + ValidationException.class, () -> new JSON("{\"name\":\"test\", incomplete".getBytes())); + } + + @Test + public void testToString() throws ValidationException { + JSON json = new JSON("{\"name\":\"test\", \"value\":1}"); + + assertEquals("{\"name\":\"test\", \"value\":1}", json.toString()); + } + + @Test + public void testDataType() { + JSON json = new JSON(); + + assertEquals(new JSONType(), json.dataType()); + } + + @Test + public void testIsValid() throws ValidationException { + assertTrue(new JSON("{}").isValid()); + + assertTrue(new JSON("{\"name\":\"test\", \"value\":1}").isValid()); + assertTrue(new JSON(new int[] {1, 2, 3}).isValid()); + assertTrue(new JSON(Collections.emptyList()).isValid()); + assertTrue(new JSON(Map.of("foo", "bar")).isValid()); + assertTrue(new JSON(Collections.emptyMap()).isValid()); + assertTrue(new JSON(new String("{\"name\":\"test\", \"value\":1}")).isValid()); + + assertFalse(new JSON("").isValid()); + assertFalse(new JSON(null).isValid()); + assertFalse(new JSON(new byte[] {}).isValid()); + } + + @Test + public void testSet() throws ValidationException { + JSON json = new JSON(); + + json.set("{}"); + json.set(new JsonData("test", 1)); + json.set(new String("{\"name\":\"test\", \"value\":1}")); + json.set(new int[] {1, 2, 3}); + } + + @Test + public void testSetWithInvalidParam() {} + + @Test + public void testGet() throws ValidationException { + assertByteEquals("{}", new JSON("{}")); + assertByteEquals("[1,2,3]", new JSON(new int[] {1, 2, 3})); + assertByteEquals("[1,2,3]", new JSON(new int[] {1, 2, 3})); + assertByteEquals("{\"name\":\"test\",\"value\":1}", new JSON(new JsonData("test", 1))); + assertByteEquals("{\"foo\":\"bar\"}", new JSON(Map.of("foo", "bar"))); + assertByteEquals("{}", new JSON(Collections.emptyMap())); + assertByteEquals("[]", new JSON(Collections.emptyList())); + } + + @Test + public void testEquals() throws ValidationException { + JSON json1 = new JSON(); + JSON json2 = new JSON(); + + assertEquals(json1, json2); + assertNotEquals(json1, null); + assertNotEquals(json1, new Bool()); + assertNotEquals(null, json1); + + json1.set(new JsonData("test", 1)); + assertNotEquals(json1, json2); + json2.set(new JsonData("test", 1)); + assertEquals(json1, json2); + } + + private void assertByteEquals(java.lang.String expected, JSON json) throws ValidationException { + assertArrayEquals( + expected.getBytes(), + json.get(), + "expected: " + expected + ", actual: " + new java.lang.String(json.get())); + } +} From ead7dd90e52f4b6277d1e4c1410aeab331451f96 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Tue, 22 Aug 2023 11:01:47 +0200 Subject: [PATCH 009/376] fix: Add `jackson-annotations` to `build.gradle` (#83) I removed this by mistake in https://github.com/cloudquery/plugin-sdk-java/pull/82 --- lib/build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 0e9148a..69debe4 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -43,6 +43,7 @@ dependencies { implementation "org.apache.arrow:arrow-vector:12.0.1" implementation "com.fasterxml.jackson.core:jackson-core:2.15.1" + implementation "com.fasterxml.jackson.core:jackson-annotations:2.15.1" implementation 'org.apache.logging.log4j:log4j-api:2.20.0' implementation 'org.apache.logging.log4j:log4j-core:2.20.0' @@ -105,4 +106,4 @@ spotless { java { googleJavaFormat() } -} \ No newline at end of file +} From bd729bbb7c18a9767f238027d38cc76f956c9eec Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Tue, 22 Aug 2023 13:40:53 +0200 Subject: [PATCH 010/376] feat(sync): Initial insert message support (#81) --- .../servers/plugin/v3/PluginServer.java | 13 +++- .../main/java/io/cloudquery/memdb/MemDB.java | 61 ++++++++++++++++--- .../java/io/cloudquery/memdb/MemDBClient.java | 18 ++++++ .../main/java/io/cloudquery/memdb/Spec.java | 24 ++++++++ .../java/io/cloudquery/memdb/Table1Data.java | 10 +++ .../java/io/cloudquery/memdb/Table2Data.java | 10 +++ .../plugin/ClientNotInitializedException.java | 6 ++ .../cloudquery/plugin/NewClientOptions.java | 10 +++ .../java/io/cloudquery/plugin/Plugin.java | 12 +++- .../cloudquery/plugin/TableOutputStream.java | 5 ++ .../io/cloudquery/scheduler/Scheduler.java | 22 +++++++ .../scheduler/SchedulerTableOutputStream.java | 52 ++++++++++++++++ .../java/io/cloudquery/schema/ClientMeta.java | 7 +-- .../java/io/cloudquery/schema/Resource.java | 7 +++ .../main/java/io/cloudquery/schema/Table.java | 1 + .../io/cloudquery/schema/TableResolver.java | 7 +++ 16 files changed, 245 insertions(+), 20 deletions(-) create mode 100644 lib/src/main/java/io/cloudquery/memdb/MemDBClient.java create mode 100644 lib/src/main/java/io/cloudquery/memdb/Spec.java create mode 100644 lib/src/main/java/io/cloudquery/memdb/Table1Data.java create mode 100644 lib/src/main/java/io/cloudquery/memdb/Table2Data.java create mode 100644 lib/src/main/java/io/cloudquery/plugin/ClientNotInitializedException.java create mode 100644 lib/src/main/java/io/cloudquery/plugin/NewClientOptions.java create mode 100644 lib/src/main/java/io/cloudquery/plugin/TableOutputStream.java create mode 100644 lib/src/main/java/io/cloudquery/scheduler/SchedulerTableOutputStream.java create mode 100644 lib/src/main/java/io/cloudquery/schema/TableResolver.java diff --git a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java index 9c5a5fd..21a8743 100644 --- a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java +++ b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java @@ -2,6 +2,7 @@ import com.google.protobuf.ByteString; import io.cloudquery.plugin.BackendOptions; +import io.cloudquery.plugin.NewClientOptions; import io.cloudquery.plugin.Plugin; import io.cloudquery.plugin.v3.PluginGrpc.PluginImplBase; import io.cloudquery.plugin.v3.Write; @@ -41,9 +42,15 @@ public void getVersion( public void init( io.cloudquery.plugin.v3.Init.Request request, StreamObserver responseObserver) { - plugin.init(); - responseObserver.onNext(io.cloudquery.plugin.v3.Init.Response.newBuilder().build()); - responseObserver.onCompleted(); + try { + plugin.init( + request.getSpec().toStringUtf8(), + NewClientOptions.builder().noConnection(request.getNoConnection()).build()); + responseObserver.onNext(io.cloudquery.plugin.v3.Init.Response.newBuilder().build()); + responseObserver.onCompleted(); + } catch (Exception e) { + responseObserver.onError(e); + } } @Override diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDB.java b/lib/src/main/java/io/cloudquery/memdb/MemDB.java index a4f08f9..dbb0348 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDB.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDB.java @@ -1,11 +1,17 @@ package io.cloudquery.memdb; import io.cloudquery.plugin.BackendOptions; +import io.cloudquery.plugin.ClientNotInitializedException; +import io.cloudquery.plugin.NewClientOptions; import io.cloudquery.plugin.Plugin; +import io.cloudquery.plugin.TableOutputStream; import io.cloudquery.scheduler.Scheduler; +import io.cloudquery.schema.ClientMeta; import io.cloudquery.schema.Column; +import io.cloudquery.schema.Resource; import io.cloudquery.schema.SchemaException; import io.cloudquery.schema.Table; +import io.cloudquery.schema.TableResolver; import io.grpc.stub.StreamObserver; import java.util.List; import org.apache.arrow.vector.types.pojo.ArrowType.Utf8; @@ -15,26 +21,44 @@ public class MemDB extends Plugin { List.of( Table.builder() .name("table1") - .columns(List.of(Column.builder().name("name1").type(new Utf8()).build())) + .resolver( + new TableResolver() { + @Override + public void resolve( + ClientMeta clientMeta, Resource parent, TableOutputStream stream) { + stream.write(Table1Data.builder().name("name1").build()); + stream.write(Table1Data.builder().name("name2").build()); + } + }) + .columns(List.of(Column.builder().name("name").type(new Utf8()).build())) .build(), Table.builder() .name("table2") - .columns(List.of(Column.builder().name("name1").type(new Utf8()).build())) + .resolver( + new TableResolver() { + @Override + public void resolve( + ClientMeta clientMeta, Resource parent, TableOutputStream stream) { + stream.write(Table2Data.builder().id("id1").build()); + stream.write(Table2Data.builder().id("id2").build()); + } + }) + .columns(List.of(Column.builder().name("id").type(new Utf8()).build())) .build()); + private Spec spec; + public MemDB() { super("memdb", "0.0.1"); } - @Override - public void init() { - // do nothing - } - @Override public List
tables( List includeList, List skipList, boolean skipDependentTables) - throws SchemaException { + throws SchemaException, ClientNotInitializedException { + if (this.client == null) { + throw new ClientNotInitializedException(); + } return Table.filterDFS(allTables, includeList, skipList, skipDependentTables); } @@ -46,13 +70,19 @@ public void sync( boolean deterministicCqId, BackendOptions backendOptions, StreamObserver syncStream) - throws SchemaException { + throws SchemaException, ClientNotInitializedException { + if (this.client == null) { + throw new ClientNotInitializedException(); + } + List
filtered = Table.filterDFS(allTables, includeList, skipList, skipDependentTables); Scheduler.builder() + .client(client) .tables(filtered) .syncStream(syncStream) .deterministicCqId(deterministicCqId) .logger(getLogger()) + .concurrency(this.spec.getConcurrency()) .build() .sync(); } @@ -69,6 +99,17 @@ public void write() { @Override public void close() { - // do nothing + if (this.client != null) { + ((MemDBClient) this.client).close(); + } + } + + @Override + public ClientMeta newClient(String spec, NewClientOptions options) throws Exception { + if (options.isNoConnection()) { + return null; + } + this.spec = Spec.fromJSON(spec); + return new MemDBClient(); } } diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java b/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java new file mode 100644 index 0000000..9a640b5 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java @@ -0,0 +1,18 @@ +package io.cloudquery.memdb; + +import io.cloudquery.schema.ClientMeta; + +public class MemDBClient implements ClientMeta { + private static final String id = "memdb"; + + public MemDBClient() {} + + @Override + public String getId() { + return id; + } + + public void close() { + // do nothing + } +} diff --git a/lib/src/main/java/io/cloudquery/memdb/Spec.java b/lib/src/main/java/io/cloudquery/memdb/Spec.java new file mode 100644 index 0000000..316bcd2 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/memdb/Spec.java @@ -0,0 +1,24 @@ +package io.cloudquery.memdb; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Spec { + public static Spec fromJSON(String json) throws JsonMappingException, JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + Spec spec = objectMapper.readValue(json, Spec.class); + if (spec.getConcurrency() == 0) { + spec.setConcurrency(10000); + } + return spec; + } + + private int concurrency; + + public Spec() {} +} diff --git a/lib/src/main/java/io/cloudquery/memdb/Table1Data.java b/lib/src/main/java/io/cloudquery/memdb/Table1Data.java new file mode 100644 index 0000000..7eee118 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/memdb/Table1Data.java @@ -0,0 +1,10 @@ +package io.cloudquery.memdb; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +public class Table1Data { + private String name; +} diff --git a/lib/src/main/java/io/cloudquery/memdb/Table2Data.java b/lib/src/main/java/io/cloudquery/memdb/Table2Data.java new file mode 100644 index 0000000..7715300 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/memdb/Table2Data.java @@ -0,0 +1,10 @@ +package io.cloudquery.memdb; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +public class Table2Data { + private String id; +} diff --git a/lib/src/main/java/io/cloudquery/plugin/ClientNotInitializedException.java b/lib/src/main/java/io/cloudquery/plugin/ClientNotInitializedException.java new file mode 100644 index 0000000..650012b --- /dev/null +++ b/lib/src/main/java/io/cloudquery/plugin/ClientNotInitializedException.java @@ -0,0 +1,6 @@ +package io.cloudquery.plugin; + +public class ClientNotInitializedException extends Exception { + + public ClientNotInitializedException() {} +} diff --git a/lib/src/main/java/io/cloudquery/plugin/NewClientOptions.java b/lib/src/main/java/io/cloudquery/plugin/NewClientOptions.java new file mode 100644 index 0000000..051d2e6 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/plugin/NewClientOptions.java @@ -0,0 +1,10 @@ +package io.cloudquery.plugin; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +public class NewClientOptions { + private final boolean noConnection; +} diff --git a/lib/src/main/java/io/cloudquery/plugin/Plugin.java b/lib/src/main/java/io/cloudquery/plugin/Plugin.java index b27fc1d..f04623d 100644 --- a/lib/src/main/java/io/cloudquery/plugin/Plugin.java +++ b/lib/src/main/java/io/cloudquery/plugin/Plugin.java @@ -1,5 +1,6 @@ package io.cloudquery.plugin; +import io.cloudquery.schema.ClientMeta; import io.cloudquery.schema.SchemaException; import io.cloudquery.schema.Table; import io.grpc.stub.StreamObserver; @@ -16,12 +17,17 @@ public abstract class Plugin { @NonNull protected final String name; @NonNull protected final String version; @Setter protected Logger logger; + protected ClientMeta client; - public abstract void init(); + public void init(String spec, NewClientOptions options) throws Exception { + client = newClient(spec, options); + } + + public abstract ClientMeta newClient(String spec, NewClientOptions options) throws Exception; public abstract List
tables( List includeList, List skipList, boolean skipDependentTables) - throws SchemaException; + throws SchemaException, ClientNotInitializedException; public abstract void sync( List includeList, @@ -30,7 +36,7 @@ public abstract void sync( boolean deterministicCqId, BackendOptions backendOptions, StreamObserver syncStream) - throws SchemaException; + throws SchemaException, ClientNotInitializedException; public abstract void read(); diff --git a/lib/src/main/java/io/cloudquery/plugin/TableOutputStream.java b/lib/src/main/java/io/cloudquery/plugin/TableOutputStream.java new file mode 100644 index 0000000..328c4d0 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/plugin/TableOutputStream.java @@ -0,0 +1,5 @@ +package io.cloudquery.plugin; + +public interface TableOutputStream { + public void write(Object data); +} diff --git a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java index 7d484f6..d8bc475 100644 --- a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java +++ b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java @@ -1,6 +1,7 @@ package io.cloudquery.scheduler; import io.cloudquery.plugin.v3.Sync; +import io.cloudquery.schema.ClientMeta; import io.cloudquery.schema.Table; import io.grpc.stub.StreamObserver; import java.io.IOException; @@ -14,7 +15,9 @@ public class Scheduler { @NonNull private final List
tables; @NonNull private final StreamObserver syncStream; @NonNull private final Logger logger; + @NonNull private final ClientMeta client; + private int concurrency; private boolean deterministicCqId; public void sync() { @@ -30,6 +33,25 @@ public void sync() { return; } } + + for (Table table : tables) { + try { + logger.info("resolving table: {}", table.getName()); + SchedulerTableOutputStream schedulerTableOutputStream = + SchedulerTableOutputStream.builder() + .table(table) + .client(client) + .logger(logger) + .syncStream(syncStream) + .build(); + table.getResolver().resolve(client, null, schedulerTableOutputStream); + logger.info("resolved table: {}", table.getName()); + } catch (Exception e) { + syncStream.onError(e); + return; + } + } + syncStream.onCompleted(); } } diff --git a/lib/src/main/java/io/cloudquery/scheduler/SchedulerTableOutputStream.java b/lib/src/main/java/io/cloudquery/scheduler/SchedulerTableOutputStream.java new file mode 100644 index 0000000..a13bf2f --- /dev/null +++ b/lib/src/main/java/io/cloudquery/scheduler/SchedulerTableOutputStream.java @@ -0,0 +1,52 @@ +package io.cloudquery.scheduler; + +import io.cloudquery.plugin.TableOutputStream; +import io.cloudquery.plugin.v3.Sync; +import io.cloudquery.schema.ClientMeta; +import io.cloudquery.schema.Column; +import io.cloudquery.schema.Resource; +import io.cloudquery.schema.Table; +import io.cloudquery.transformers.TransformerException; +import io.grpc.stub.StreamObserver; +import java.io.IOException; +import lombok.Builder; +import lombok.NonNull; +import org.apache.logging.log4j.Logger; + +@Builder +public class SchedulerTableOutputStream implements TableOutputStream { + @NonNull private final Table table; + private final Resource parent; + @NonNull private final ClientMeta client; + @NonNull private final Logger logger; + @NonNull private final StreamObserver syncStream; + + @Override + public void write(Object data) { + Resource resource = Resource.builder().table(table).parent(parent).item(data).build(); + for (Column column : table.getColumns()) { + try { + logger.info("resolving column: {}", column.getName()); + if (column.getResolver() == null) { + // TODO: Fall back to path resolver + continue; + } + column.getResolver().resolve(client, resource, column); + logger.info("resolved column: {}", column.getName()); + } catch (TransformerException e) { + logger.error("Failed to resolve column: {}", column.getName(), e); + return; + } + } + + try { + Sync.MessageInsert insert = + Sync.MessageInsert.newBuilder().setRecord(resource.encode()).build(); + Sync.Response response = Sync.Response.newBuilder().setInsert(insert).build(); + syncStream.onNext(response); + } catch (IOException e) { + logger.error("Failed to encode resource: {}", resource, e); + return; + } + } +} diff --git a/lib/src/main/java/io/cloudquery/schema/ClientMeta.java b/lib/src/main/java/io/cloudquery/schema/ClientMeta.java index 8356cfb..cf0b64a 100644 --- a/lib/src/main/java/io/cloudquery/schema/ClientMeta.java +++ b/lib/src/main/java/io/cloudquery/schema/ClientMeta.java @@ -1,6 +1,5 @@ package io.cloudquery.schema; -import lombok.Builder; - -@Builder -public class ClientMeta {} +public interface ClientMeta { + String getId(); +} diff --git a/lib/src/main/java/io/cloudquery/schema/Resource.java b/lib/src/main/java/io/cloudquery/schema/Resource.java index 2300882..198a1d5 100644 --- a/lib/src/main/java/io/cloudquery/schema/Resource.java +++ b/lib/src/main/java/io/cloudquery/schema/Resource.java @@ -1,7 +1,9 @@ package io.cloudquery.schema; +import com.google.protobuf.ByteString; import io.cloudquery.scalar.Scalar; import io.cloudquery.scalar.ValidationException; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import lombok.Builder; @@ -37,4 +39,9 @@ public Scalar get(String columnName) { int index = table.indexOfColumn(columnName); return this.data.get(index); } + + public ByteString encode() throws IOException { + // TODO: Encode data and not only schema + return table.encode(); + } } diff --git a/lib/src/main/java/io/cloudquery/schema/Table.java b/lib/src/main/java/io/cloudquery/schema/Table.java index ca47d8a..9acdc0f 100644 --- a/lib/src/main/java/io/cloudquery/schema/Table.java +++ b/lib/src/main/java/io/cloudquery/schema/Table.java @@ -133,6 +133,7 @@ public static int maxDepth(List
tables) { } @NonNull private String name; + private TableResolver resolver; private String title; private String description; @Setter private Table parent; diff --git a/lib/src/main/java/io/cloudquery/schema/TableResolver.java b/lib/src/main/java/io/cloudquery/schema/TableResolver.java new file mode 100644 index 0000000..417bac9 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/schema/TableResolver.java @@ -0,0 +1,7 @@ +package io.cloudquery.schema; + +import io.cloudquery.plugin.TableOutputStream; + +public interface TableResolver { + void resolve(ClientMeta clientMeta, Resource parent, TableOutputStream stream); +} From 6abae6d134eb0b8177fa7ddcdd05dc723c0440e0 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Tue, 22 Aug 2023 13:53:03 +0200 Subject: [PATCH 011/376] refactor: Rename `DefaulResolverTransformer` to `DefaultResolverTransformer` (#84) --- .../io/cloudquery/transformers/ResolverTransformer.java | 2 +- .../java/io/cloudquery/transformers/TransformWithClass.java | 4 ++-- .../transformers/DefaultResolverTransformerTest.java | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/src/main/java/io/cloudquery/transformers/ResolverTransformer.java b/lib/src/main/java/io/cloudquery/transformers/ResolverTransformer.java index 2a1b517..5c76307 100644 --- a/lib/src/main/java/io/cloudquery/transformers/ResolverTransformer.java +++ b/lib/src/main/java/io/cloudquery/transformers/ResolverTransformer.java @@ -10,7 +10,7 @@ public interface ResolverTransformer { ColumnResolver transform(Field field, String path) throws TransformerException; - class DefaulResolverTransformer implements ResolverTransformer { + class DefaultResolverTransformer implements ResolverTransformer { @Override public ColumnResolver transform(Field field, String path) throws TransformerException { return (meta, resource, column) -> { diff --git a/lib/src/main/java/io/cloudquery/transformers/TransformWithClass.java b/lib/src/main/java/io/cloudquery/transformers/TransformWithClass.java index f42b7a9..cc5deba 100644 --- a/lib/src/main/java/io/cloudquery/transformers/TransformWithClass.java +++ b/lib/src/main/java/io/cloudquery/transformers/TransformWithClass.java @@ -3,7 +3,6 @@ import static io.cloudquery.schema.Table.*; import static io.cloudquery.transformers.IgnoreInTestsTransformer.DefaultIgnoreInTestsTransformer; import static io.cloudquery.transformers.NameTransformer.DefaultNameTransformer; -import static io.cloudquery.transformers.ResolverTransformer.DefaulResolverTransformer; import static io.cloudquery.transformers.TypeTransformer.DefaultTypeTransformer; import io.cloudquery.schema.Column; @@ -21,7 +20,8 @@ public class TransformWithClass implements Transform { @Builder.Default private TypeTransformer typeTransformer = new DefaultTypeTransformer(); @Builder.Default - private ResolverTransformer resolverTransformer = new DefaulResolverTransformer(); + private ResolverTransformer resolverTransformer = + new ResolverTransformer.DefaultResolverTransformer(); @Builder.Default private IgnoreInTestsTransformer ignoreInTestsTransformer = new DefaultIgnoreInTestsTransformer(); diff --git a/lib/src/test/java/io/cloudquery/transformers/DefaultResolverTransformerTest.java b/lib/src/test/java/io/cloudquery/transformers/DefaultResolverTransformerTest.java index 98fde53..fb8eeeb 100644 --- a/lib/src/test/java/io/cloudquery/transformers/DefaultResolverTransformerTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/DefaultResolverTransformerTest.java @@ -8,7 +8,7 @@ import io.cloudquery.scalar.ValidationException; import io.cloudquery.schema.Column; import io.cloudquery.schema.Resource; -import io.cloudquery.transformers.ResolverTransformer.DefaulResolverTransformer; +import io.cloudquery.transformers.ResolverTransformer.DefaultResolverTransformer; import lombok.Builder; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -24,13 +24,13 @@ public static class ResourceItem { public String myCustomID; } - private DefaulResolverTransformer transformer; + private DefaultResolverTransformer transformer; @Mock private Resource resource; @BeforeEach void setUp() { - transformer = new DefaulResolverTransformer(); + transformer = new DefaultResolverTransformer(); when(resource.getItem()).thenReturn(ResourceItem.builder().myCustomID("1234").build()); } From 07639219a43685dfdaff73270b03830bdaeeb836 Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Tue, 22 Aug 2023 14:01:44 +0100 Subject: [PATCH 012/376] refactor: moving arrow conversion methods into a helper class (#86) Working towards adding the write logic, which will need arrow decoding logic. This seems like a good point to create an Arrow helper class to contain the encoding and decoding steps. refs: #85 --- .../io/cloudquery/helper/ArrowHelper.java | 58 +++++++++++++++++++ .../servers/plugin/v3/PluginServer.java | 3 +- .../io/cloudquery/scheduler/Scheduler.java | 3 +- .../java/io/cloudquery/schema/Resource.java | 3 +- .../main/java/io/cloudquery/schema/Table.java | 49 ---------------- 5 files changed, 64 insertions(+), 52 deletions(-) create mode 100644 lib/src/main/java/io/cloudquery/helper/ArrowHelper.java diff --git a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java new file mode 100644 index 0000000..f3bc626 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java @@ -0,0 +1,58 @@ +package io.cloudquery.helper; + +import static java.util.Arrays.asList; + +import com.google.protobuf.ByteString; +import io.cloudquery.schema.Column; +import io.cloudquery.schema.Table; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.channels.Channels; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.apache.arrow.memory.BufferAllocator; +import org.apache.arrow.memory.RootAllocator; +import org.apache.arrow.vector.VectorSchemaRoot; +import org.apache.arrow.vector.ipc.ArrowStreamWriter; +import org.apache.arrow.vector.types.pojo.Field; +import org.apache.arrow.vector.types.pojo.Schema; + +public class ArrowHelper { + public static ByteString encode(Table table) throws IOException { + try (BufferAllocator bufferAllocator = new RootAllocator()) { + Schema schema = toArrowSchema(table); + VectorSchemaRoot schemaRoot = VectorSchemaRoot.create(schema, bufferAllocator); + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + try (ArrowStreamWriter writer = + new ArrowStreamWriter(schemaRoot, null, Channels.newChannel(out))) { + writer.start(); + writer.end(); + return ByteString.copyFrom(out.toByteArray()); + } + } + } + } + + public static Schema toArrowSchema(Table table) { + List columns = table.getColumns(); + Field[] fields = new Field[columns.size()]; + for (int i = 0; i < columns.size(); i++) { + Column column = columns.get(i); + Field field = Field.nullable(column.getName(), column.getType()); + fields[i] = field; + } + Map metadata = new HashMap<>(); + metadata.put("cq:table_name", table.getName()); + if (table.getTitle() != null) { + metadata.put("cq:table_title", table.getTitle()); + } + if (table.getDescription() != null) { + metadata.put("cq:table_description", table.getDescription()); + } + if (table.getParent() != null) { + metadata.put("cq:table_depends_on", table.getParent().getName()); + } + return new Schema(asList(fields), metadata); + } +} diff --git a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java index 21a8743..3a1ed6c 100644 --- a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java +++ b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java @@ -1,6 +1,7 @@ package io.cloudquery.internal.servers.plugin.v3; import com.google.protobuf.ByteString; +import io.cloudquery.helper.ArrowHelper; import io.cloudquery.plugin.BackendOptions; import io.cloudquery.plugin.NewClientOptions; import io.cloudquery.plugin.Plugin; @@ -65,7 +66,7 @@ public void getTables( request.getSkipDependentTables()); List byteStrings = new ArrayList<>(); for (Table table : Table.flattenTables(tables)) { - byteStrings.add(table.encode()); + byteStrings.add(ArrowHelper.encode(table)); } responseObserver.onNext( io.cloudquery.plugin.v3.GetTables.Response.newBuilder() diff --git a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java index d8bc475..4b4049d 100644 --- a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java +++ b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java @@ -1,5 +1,6 @@ package io.cloudquery.scheduler; +import io.cloudquery.helper.ArrowHelper; import io.cloudquery.plugin.v3.Sync; import io.cloudquery.schema.ClientMeta; import io.cloudquery.schema.Table; @@ -25,7 +26,7 @@ public void sync() { try { logger.info("sending migrate message for table: {}", table.getName()); Sync.MessageMigrateTable migrateTable = - Sync.MessageMigrateTable.newBuilder().setTable(table.encode()).build(); + Sync.MessageMigrateTable.newBuilder().setTable(ArrowHelper.encode(table)).build(); Sync.Response response = Sync.Response.newBuilder().setMigrateTable(migrateTable).build(); syncStream.onNext(response); } catch (IOException e) { diff --git a/lib/src/main/java/io/cloudquery/schema/Resource.java b/lib/src/main/java/io/cloudquery/schema/Resource.java index 198a1d5..33b2141 100644 --- a/lib/src/main/java/io/cloudquery/schema/Resource.java +++ b/lib/src/main/java/io/cloudquery/schema/Resource.java @@ -1,6 +1,7 @@ package io.cloudquery.schema; import com.google.protobuf.ByteString; +import io.cloudquery.helper.ArrowHelper; import io.cloudquery.scalar.Scalar; import io.cloudquery.scalar.ValidationException; import java.io.IOException; @@ -42,6 +43,6 @@ public Scalar get(String columnName) { public ByteString encode() throws IOException { // TODO: Encode data and not only schema - return table.encode(); + return ArrowHelper.encode(table); } } diff --git a/lib/src/main/java/io/cloudquery/schema/Table.java b/lib/src/main/java/io/cloudquery/schema/Table.java index 9acdc0f..f900253 100644 --- a/lib/src/main/java/io/cloudquery/schema/Table.java +++ b/lib/src/main/java/io/cloudquery/schema/Table.java @@ -1,14 +1,8 @@ package io.cloudquery.schema; -import static java.util.Arrays.asList; - -import com.google.protobuf.ByteString; import io.cloudquery.glob.Glob; import io.cloudquery.schema.Column.ColumnBuilder; import io.cloudquery.transformers.TransformerException; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.channels.Channels; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -20,12 +14,6 @@ import lombok.Getter; import lombok.NonNull; import lombok.Setter; -import org.apache.arrow.memory.BufferAllocator; -import org.apache.arrow.memory.RootAllocator; -import org.apache.arrow.vector.VectorSchemaRoot; -import org.apache.arrow.vector.ipc.ArrowStreamWriter; -import org.apache.arrow.vector.types.pojo.Field; -import org.apache.arrow.vector.types.pojo.Schema; @Builder(toBuilder = true) @Getter @@ -215,41 +203,4 @@ public Optional getColumn(String name) { } return Optional.empty(); } - - public Schema toArrowSchema() { - Field[] fields = new Field[columns.size()]; - for (int i = 0; i < columns.size(); i++) { - Column column = columns.get(i); - Field field = Field.nullable(column.getName(), column.getType()); - fields[i] = field; - } - Map metadata = new HashMap<>(); - metadata.put("cq:table_name", name); - if (title != null) { - metadata.put("cq:table_title", title); - } - if (description != null) { - metadata.put("cq:table_description", description); - } - if (parent != null) { - metadata.put("cq:table_depends_on", parent.getName()); - } - Schema schema = new Schema(asList(fields), metadata); - return schema; - } - - public ByteString encode() throws IOException { - try (BufferAllocator bufferAllocator = new RootAllocator()) { - Schema schema = toArrowSchema(); - VectorSchemaRoot schemaRoot = VectorSchemaRoot.create(schema, bufferAllocator); - try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { - try (ArrowStreamWriter writer = - new ArrowStreamWriter(schemaRoot, null, Channels.newChannel(out))) { - writer.start(); - writer.end(); - return ByteString.copyFrom(out.toByteArray()); - } - } - } - } } From 4159f14a02fa3e039aa4af55a0f5f97db5a88d01 Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Wed, 23 Aug 2023 08:55:32 +0100 Subject: [PATCH 013/376] chore: adding the table getChanges method (#87) refs: #85 --- .../main/java/io/cloudquery/schema/Table.java | 40 +++++++ .../cloudquery/schema/TableColumnChange.java | 13 +++ .../schema/TableColumnChangeType.java | 7 ++ .../schema/TableColumnChangeTest.java | 104 ++++++++++++++++++ 4 files changed, 164 insertions(+) create mode 100644 lib/src/main/java/io/cloudquery/schema/TableColumnChange.java create mode 100644 lib/src/main/java/io/cloudquery/schema/TableColumnChangeType.java create mode 100644 lib/src/test/java/io/cloudquery/schema/TableColumnChangeTest.java diff --git a/lib/src/main/java/io/cloudquery/schema/Table.java b/lib/src/main/java/io/cloudquery/schema/Table.java index f900253..8f91c09 100644 --- a/lib/src/main/java/io/cloudquery/schema/Table.java +++ b/lib/src/main/java/io/cloudquery/schema/Table.java @@ -1,5 +1,9 @@ package io.cloudquery.schema; +import static io.cloudquery.schema.TableColumnChangeType.ADD; +import static io.cloudquery.schema.TableColumnChangeType.REMOVE; +import static io.cloudquery.schema.TableColumnChangeType.UPDATE; + import io.cloudquery.glob.Glob; import io.cloudquery.schema.Column.ColumnBuilder; import io.cloudquery.transformers.TransformerException; @@ -18,6 +22,7 @@ @Builder(toBuilder = true) @Getter public class Table { + public interface Transform { void transformTable(Table table) throws TransformerException; } @@ -203,4 +208,39 @@ public Optional getColumn(String name) { } return Optional.empty(); } + + public List getChanges(Table old) { + List changes = new ArrayList<>(); + for (Column currentColumn : columns) { + Optional oldColumn = old.getColumn(currentColumn.getName()); + if (oldColumn.isEmpty()) { + changes.add(new TableColumnChange(ADD, currentColumn.getName(), currentColumn, null)); + continue; + } + if (shouldUpdate(currentColumn, oldColumn.get())) { + changes.add( + new TableColumnChange(UPDATE, currentColumn.getName(), currentColumn, oldColumn.get())); + } + } + for (Column column : old.columns) { + Optional otherColumn = getColumn(column.getName()); + if (otherColumn.isEmpty()) { + changes.add(new TableColumnChange(REMOVE, column.getName(), null, column)); + } + } + return changes; + } + + private static boolean shouldUpdate(Column currentColumn, Column oldColumn) { + if (!oldColumn.getType().equals(currentColumn.getType())) { + return true; + } + if (oldColumn.isPrimaryKey() != currentColumn.isPrimaryKey()) { + return true; + } + if (oldColumn.isNotNull() != currentColumn.isNotNull()) { + return true; + } + return oldColumn.isUnique() != currentColumn.isUnique(); + } } diff --git a/lib/src/main/java/io/cloudquery/schema/TableColumnChange.java b/lib/src/main/java/io/cloudquery/schema/TableColumnChange.java new file mode 100644 index 0000000..8af4f13 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/schema/TableColumnChange.java @@ -0,0 +1,13 @@ +package io.cloudquery.schema; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class TableColumnChange { + private TableColumnChangeType type; + private String columnName; + private Column current; + private Column previous; +} diff --git a/lib/src/main/java/io/cloudquery/schema/TableColumnChangeType.java b/lib/src/main/java/io/cloudquery/schema/TableColumnChangeType.java new file mode 100644 index 0000000..9948294 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/schema/TableColumnChangeType.java @@ -0,0 +1,7 @@ +package io.cloudquery.schema; + +public enum TableColumnChangeType { + REMOVE, + UPDATE, + ADD +} diff --git a/lib/src/test/java/io/cloudquery/schema/TableColumnChangeTest.java b/lib/src/test/java/io/cloudquery/schema/TableColumnChangeTest.java new file mode 100644 index 0000000..a7a339e --- /dev/null +++ b/lib/src/test/java/io/cloudquery/schema/TableColumnChangeTest.java @@ -0,0 +1,104 @@ +package io.cloudquery.schema; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import io.cloudquery.schema.Table.TableBuilder; +import java.util.List; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class TableColumnChangeTest { + + private TableBuilder tableBuilder; + + @BeforeEach + public void setUp() { + tableBuilder = + Table.builder() + .name("test") + .columns( + List.of( + Column.builder().name("basic_column").type(ArrowType.Bool.INSTANCE).build())); + } + + @Test + public void shouldBeNoChangesWithIdenticalTables() { + Table old = tableBuilder.build(); + Table current = tableBuilder.build(); + + List changes = current.getChanges(old); + + assertEquals(0, changes.size(), "should be no changes"); + } + + @Test + public void shouldAddColumnIfNewTableHasAdditionalColumn() { + Table old = tableBuilder.build(); + Table current = + tableBuilder + .columns( + List.of( + Column.builder().name("basic_column").type(ArrowType.Bool.INSTANCE).build(), + Column.builder() + .name("additional_column") + .type(ArrowType.Bool.INSTANCE) + .build())) + .build(); + + List changes = current.getChanges(old); + + assertEquals(1, changes.size(), "should be 1 change"); + TableColumnChange change = changes.get(0); + assertEquals(TableColumnChangeType.ADD, change.getType()); + assertEquals("additional_column", change.getColumnName()); + assertEquals("additional_column", change.getCurrent().getName()); + } + + @Test + public void shouldRemoveColumnIfNewTableHasLessColumns() { + Table old = + Table.builder() + .name("test") + .columns( + List.of( + Column.builder().name("basic_column").type(ArrowType.Bool.INSTANCE).build(), + Column.builder() + .name("additional_column") + .type(ArrowType.Bool.INSTANCE) + .build())) + .build(); + + Table current = tableBuilder.build(); + + List changes = current.getChanges(old); + + assertEquals(1, changes.size(), "should be 1 change"); + TableColumnChange change = changes.get(0); + assertEquals(TableColumnChangeType.REMOVE, change.getType()); + assertEquals("additional_column", change.getColumnName()); + assertEquals("additional_column", change.getPrevious().getName()); + } + + @Test + public void shouldUpdateColumnIfNewTableHasUpdateChange() { + Table old = tableBuilder.build(); + Table current = + tableBuilder + .columns( + List.of( + Column.builder().name("basic_column").type(ArrowType.Utf8.INSTANCE).build())) + .build(); + + List changes = current.getChanges(old); + + assertEquals(1, changes.size(), "should be 1 change"); + TableColumnChange change = changes.get(0); + assertEquals(TableColumnChangeType.UPDATE, change.getType()); + assertEquals("basic_column", change.getColumnName()); + assertEquals("basic_column", change.getCurrent().getName()); + assertEquals("basic_column", change.getPrevious().getName()); + assertEquals(ArrowType.Bool.INSTANCE, change.getPrevious().getType()); + assertEquals(ArrowType.Utf8.INSTANCE, change.getCurrent().getType()); + } +} From 2b82e0416fb9be482cf696264ebcec64d55ddffd Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Wed, 23 Aug 2023 11:14:37 +0100 Subject: [PATCH 014/376] chore: adding supporting decode for write logic (#89) Adding support for the `MessageMigrateTable` requests refs: #85 --- .../io/cloudquery/helper/ArrowHelper.java | 52 ++++++++++- .../servers/plugin/v3/PluginServer.java | 26 +++++- .../main/java/io/cloudquery/memdb/MemDB.java | 5 +- .../java/io/cloudquery/memdb/MemDBClient.java | 43 +++++++++ .../io/cloudquery/messages/WriteMessage.java | 3 + .../messages/WriteMigrateTable.java | 12 +++ .../java/io/cloudquery/plugin/Plugin.java | 3 +- .../java/io/cloudquery/schema/ClientMeta.java | 4 + .../io/cloudquery/helper/ArrowHelperTest.java | 85 ++++++++++++++++++ .../servers/plugin/v3/PluginServerTest.java | 87 +++++++++++++++++++ 10 files changed, 310 insertions(+), 10 deletions(-) create mode 100644 lib/src/main/java/io/cloudquery/messages/WriteMessage.java create mode 100644 lib/src/main/java/io/cloudquery/messages/WriteMigrateTable.java create mode 100644 lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java create mode 100644 lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java diff --git a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java index f3bc626..f68aec2 100644 --- a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java +++ b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java @@ -5,20 +5,29 @@ import com.google.protobuf.ByteString; import io.cloudquery.schema.Column; import io.cloudquery.schema.Table; +import io.cloudquery.schema.Table.TableBuilder; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.channels.Channels; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.arrow.memory.BufferAllocator; import org.apache.arrow.memory.RootAllocator; import org.apache.arrow.vector.VectorSchemaRoot; +import org.apache.arrow.vector.ipc.ArrowReader; +import org.apache.arrow.vector.ipc.ArrowStreamReader; import org.apache.arrow.vector.ipc.ArrowStreamWriter; import org.apache.arrow.vector.types.pojo.Field; import org.apache.arrow.vector.types.pojo.Schema; public class ArrowHelper { + public static final String CQ_TABLE_NAME = "cq:table_name"; + public static final String CQ_TABLE_TITLE = "cq:table_title"; + public static final String CQ_TABLE_DESCRIPTION = "cq:table_description"; + public static final String CQ_TABLE_DEPENDS_ON = "cq:table_depends_on"; + public static ByteString encode(Table table) throws IOException { try (BufferAllocator bufferAllocator = new RootAllocator()) { Schema schema = toArrowSchema(table); @@ -34,6 +43,15 @@ public static ByteString encode(Table table) throws IOException { } } + public static Table decode(ByteString byteString) throws IOException { + try (BufferAllocator bufferAllocator = new RootAllocator()) { + try (ArrowReader reader = new ArrowStreamReader(byteString.newInput(), bufferAllocator)) { + VectorSchemaRoot vectorSchemaRoot = reader.getVectorSchemaRoot(); + return fromArrowSchema(vectorSchemaRoot.getSchema()); + } + } + } + public static Schema toArrowSchema(Table table) { List columns = table.getColumns(); Field[] fields = new Field[columns.size()]; @@ -43,16 +61,42 @@ public static Schema toArrowSchema(Table table) { fields[i] = field; } Map metadata = new HashMap<>(); - metadata.put("cq:table_name", table.getName()); + metadata.put(CQ_TABLE_NAME, table.getName()); if (table.getTitle() != null) { - metadata.put("cq:table_title", table.getTitle()); + metadata.put(CQ_TABLE_TITLE, table.getTitle()); } if (table.getDescription() != null) { - metadata.put("cq:table_description", table.getDescription()); + metadata.put(CQ_TABLE_DESCRIPTION, table.getDescription()); } if (table.getParent() != null) { - metadata.put("cq:table_depends_on", table.getParent().getName()); + metadata.put(CQ_TABLE_DEPENDS_ON, table.getParent().getName()); } return new Schema(asList(fields), metadata); } + + public static Table fromArrowSchema(Schema schema) { + List columns = new ArrayList<>(); + for (Field field : schema.getFields()) { + columns.add(Column.builder().name(field.getName()).type(field.getType()).build()); + } + + Map metaData = schema.getCustomMetadata(); + String name = metaData.get(CQ_TABLE_NAME); + String title = metaData.get(CQ_TABLE_TITLE); + String description = metaData.get(CQ_TABLE_DESCRIPTION); + String parent = metaData.get(CQ_TABLE_DEPENDS_ON); + + TableBuilder tableBuilder = Table.builder().name(name).columns(columns); + if (title != null) { + tableBuilder.title(title); + } + if (description != null) { + tableBuilder.description(description); + } + if (parent != null) { + tableBuilder.parent(Table.builder().name(parent).build()); + } + + return tableBuilder.build(); + } } diff --git a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java index 3a1ed6c..0439fb5 100644 --- a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java +++ b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java @@ -2,13 +2,16 @@ import com.google.protobuf.ByteString; import io.cloudquery.helper.ArrowHelper; +import io.cloudquery.messages.WriteMigrateTable; import io.cloudquery.plugin.BackendOptions; import io.cloudquery.plugin.NewClientOptions; import io.cloudquery.plugin.Plugin; import io.cloudquery.plugin.v3.PluginGrpc.PluginImplBase; import io.cloudquery.plugin.v3.Write; +import io.cloudquery.plugin.v3.Write.MessageMigrateTable; import io.cloudquery.schema.Table; import io.grpc.stub.StreamObserver; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -107,13 +110,23 @@ public void read( @Override public StreamObserver write(StreamObserver responseObserver) { - plugin.write(); return new StreamObserver<>() { @Override - public void onNext(Write.Request request) {} + public void onNext(Write.Request request) { + Write.Request.MessageCase messageCase = request.getMessageCase(); + try { + if (messageCase == Write.Request.MessageCase.MIGRATE_TABLE) { + plugin.write(processMigrateTableRequest(request)); + } + } catch (IOException ex) { + onError(ex); + } + } @Override - public void onError(Throwable t) {} + public void onError(Throwable t) { + responseObserver.onError(t); + } @Override public void onCompleted() { @@ -131,4 +144,11 @@ public void close( responseObserver.onNext(io.cloudquery.plugin.v3.Close.Response.newBuilder().build()); responseObserver.onCompleted(); } + + private WriteMigrateTable processMigrateTableRequest(Write.Request request) throws IOException { + MessageMigrateTable migrateTable = request.getMigrateTable(); + ByteString byteString = migrateTable.getTable(); + boolean migrateForce = request.getMigrateTable().getMigrateForce(); + return new WriteMigrateTable(ArrowHelper.decode(byteString), migrateForce); + } } diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDB.java b/lib/src/main/java/io/cloudquery/memdb/MemDB.java index dbb0348..593cf83 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDB.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDB.java @@ -1,5 +1,6 @@ package io.cloudquery.memdb; +import io.cloudquery.messages.WriteMessage; import io.cloudquery.plugin.BackendOptions; import io.cloudquery.plugin.ClientNotInitializedException; import io.cloudquery.plugin.NewClientOptions; @@ -93,8 +94,8 @@ public void read() { } @Override - public void write() { - throw new UnsupportedOperationException("Unimplemented method 'Write'"); + public void write(WriteMessage message) { + client.write(message); } @Override diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java b/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java index 9a640b5..f5e5283 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java @@ -1,10 +1,24 @@ package io.cloudquery.memdb; +import io.cloudquery.messages.WriteMessage; +import io.cloudquery.messages.WriteMigrateTable; import io.cloudquery.schema.ClientMeta; +import io.cloudquery.schema.Table; +import io.cloudquery.schema.TableColumnChange; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.locks.ReentrantReadWriteLock; +import org.apache.arrow.vector.VectorSchemaRoot; public class MemDBClient implements ClientMeta { private static final String id = "memdb"; + private ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); + private Map tables = new HashMap<>(); + private Map> memDB = new HashMap<>(); + public MemDBClient() {} @Override @@ -12,7 +26,36 @@ public String getId() { return id; } + @Override + public void write(WriteMessage message) { + if (message instanceof WriteMigrateTable migrateTable) { + migrate(migrateTable); + } + } + public void close() { // do nothing } + + private void migrate(WriteMigrateTable migrateTable) { + lock.writeLock().lock(); + try { + Table table = migrateTable.getTable(); + String tableName = table.getName(); + if (!memDB.containsKey(tableName)) { + memDB.put(tableName, new ArrayList<>()); + tables.put(tableName, table); + return; + } + + List changes = table.getChanges(tables.get(tableName)); + if (changes.isEmpty()) { + return; + } + memDB.put(tableName, new ArrayList<>()); + tables.put(tableName, table); + } finally { + lock.writeLock().unlock(); + } + } } diff --git a/lib/src/main/java/io/cloudquery/messages/WriteMessage.java b/lib/src/main/java/io/cloudquery/messages/WriteMessage.java new file mode 100644 index 0000000..81e6129 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/messages/WriteMessage.java @@ -0,0 +1,3 @@ +package io.cloudquery.messages; + +public abstract class WriteMessage {} diff --git a/lib/src/main/java/io/cloudquery/messages/WriteMigrateTable.java b/lib/src/main/java/io/cloudquery/messages/WriteMigrateTable.java new file mode 100644 index 0000000..bf8123b --- /dev/null +++ b/lib/src/main/java/io/cloudquery/messages/WriteMigrateTable.java @@ -0,0 +1,12 @@ +package io.cloudquery.messages; + +import io.cloudquery.schema.Table; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public class WriteMigrateTable extends WriteMessage { + private Table table; + private boolean migrateForce; +} diff --git a/lib/src/main/java/io/cloudquery/plugin/Plugin.java b/lib/src/main/java/io/cloudquery/plugin/Plugin.java index f04623d..5c02701 100644 --- a/lib/src/main/java/io/cloudquery/plugin/Plugin.java +++ b/lib/src/main/java/io/cloudquery/plugin/Plugin.java @@ -1,5 +1,6 @@ package io.cloudquery.plugin; +import io.cloudquery.messages.WriteMessage; import io.cloudquery.schema.ClientMeta; import io.cloudquery.schema.SchemaException; import io.cloudquery.schema.Table; @@ -40,7 +41,7 @@ public abstract void sync( public abstract void read(); - public abstract void write(); + public abstract void write(WriteMessage message); public abstract void close(); } diff --git a/lib/src/main/java/io/cloudquery/schema/ClientMeta.java b/lib/src/main/java/io/cloudquery/schema/ClientMeta.java index cf0b64a..b0e382a 100644 --- a/lib/src/main/java/io/cloudquery/schema/ClientMeta.java +++ b/lib/src/main/java/io/cloudquery/schema/ClientMeta.java @@ -1,5 +1,9 @@ package io.cloudquery.schema; +import io.cloudquery.messages.WriteMessage; + public interface ClientMeta { String getId(); + + void write(WriteMessage message); } diff --git a/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java b/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java new file mode 100644 index 0000000..cdb041f --- /dev/null +++ b/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java @@ -0,0 +1,85 @@ +package io.cloudquery.helper; + +import static io.cloudquery.helper.ArrowHelper.CQ_TABLE_DEPENDS_ON; +import static io.cloudquery.helper.ArrowHelper.CQ_TABLE_DESCRIPTION; +import static io.cloudquery.helper.ArrowHelper.CQ_TABLE_NAME; +import static io.cloudquery.helper.ArrowHelper.CQ_TABLE_TITLE; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import com.google.protobuf.ByteString; +import io.cloudquery.schema.Column; +import io.cloudquery.schema.Table; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import org.apache.arrow.vector.types.pojo.ArrowType; +import org.apache.arrow.vector.types.pojo.Field; +import org.apache.arrow.vector.types.pojo.Schema; +import org.junit.jupiter.api.Test; + +public class ArrowHelperTest { + + public static final Table TEST_TABLE = + Table.builder() + .name("table1") + .description("A simple test table") + .title("Test table title") + .parent(Table.builder().name("parent").build()) + .columns( + List.of( + Column.builder().name("column1").type(ArrowType.Utf8.INSTANCE).build(), + Column.builder().name("column2").type(ArrowType.Utf8.INSTANCE).build())) + .build(); + + @Test + public void testToArrowSchema() { + Schema arrowSchema = ArrowHelper.toArrowSchema(TEST_TABLE); + + assertEquals(arrowSchema.getFields().get(0).getName(), "column1"); + assertEquals(arrowSchema.getFields().get(1).getName(), "column2"); + + assertEquals( + arrowSchema.getCustomMetadata(), + Map.of( + CQ_TABLE_NAME, "table1", + CQ_TABLE_DESCRIPTION, "A simple test table", + CQ_TABLE_TITLE, "Test table title", + CQ_TABLE_DEPENDS_ON, "parent")); + } + + @Test + public void testFromArrowSchema() { + List fields = + List.of( + Field.nullable("column1", ArrowType.Utf8.INSTANCE), + Field.nullable("column2", ArrowType.Utf8.INSTANCE)); + + Schema schema = new Schema(fields, Map.of(CQ_TABLE_NAME, "table1")); + + Table table = ArrowHelper.fromArrowSchema(schema); + + assertEquals(table.getName(), "table1"); + + for (int i = 0; i < table.getColumns().size(); i++) { + Column column = table.getColumns().get(i); + assertEquals(column.getName(), fields.get(i).getName()); + assertEquals(column.getType(), fields.get(i).getType()); + } + } + + @Test + public void testRoundTrip() throws IOException { + ByteString byteString = ArrowHelper.encode(TEST_TABLE); + Table table = ArrowHelper.decode(byteString); + + assertEquals(table.getName(), TEST_TABLE.getName()); + assertEquals(table.getDescription(), TEST_TABLE.getDescription()); + assertEquals(table.getTitle(), TEST_TABLE.getTitle()); + assertEquals(table.getParent().getName(), TEST_TABLE.getParent().getName()); + + for (int i = 0; i < TEST_TABLE.getColumns().size(); i++) { + assertEquals(TEST_TABLE.getColumns().get(i).getName(), table.getColumns().get(i).getName()); + assertEquals(TEST_TABLE.getColumns().get(i).getType(), table.getColumns().get(i).getType()); + } + } +} diff --git a/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java b/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java new file mode 100644 index 0000000..fdaad00 --- /dev/null +++ b/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java @@ -0,0 +1,87 @@ +package io.cloudquery.internal.servers.plugin.v3; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.verify; + +import io.cloudquery.helper.ArrowHelper; +import io.cloudquery.messages.WriteMigrateTable; +import io.cloudquery.plugin.Plugin; +import io.cloudquery.plugin.v3.PluginGrpc; +import io.cloudquery.plugin.v3.PluginGrpc.PluginStub; +import io.cloudquery.plugin.v3.Write; +import io.cloudquery.schema.Table; +import io.grpc.Server; +import io.grpc.inprocess.InProcessChannelBuilder; +import io.grpc.inprocess.InProcessServerBuilder; +import io.grpc.stub.StreamObserver; +import io.grpc.testing.GrpcCleanupRule; +import java.io.IOException; +import java.util.concurrent.CountDownLatch; +import org.junit.Rule; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +public class PluginServerTest { + + @Mock private Plugin plugin; + + @Rule public final GrpcCleanupRule grpcCleanupRule = new GrpcCleanupRule(); + + private PluginStub pluginStub; + + @BeforeEach + public void setUp() throws IOException { + PluginServer pluginServer = new PluginServer(plugin); + + String generatedName = InProcessServerBuilder.generateName(); + Server server = InProcessServerBuilder.forName(generatedName).addService(pluginServer).build(); + server.start(); + + InProcessChannelBuilder inProcessChannelBuilder = + InProcessChannelBuilder.forName(generatedName).directExecutor(); + pluginStub = PluginGrpc.newStub(grpcCleanupRule.register(inProcessChannelBuilder.build())); + } + + @Test + public void shouldSendWriteMigrateTableMessage() throws IOException, InterruptedException { + NullResponseStream responseObserver = new NullResponseStream<>(); + + StreamObserver writeService = pluginStub.write(responseObserver); + writeService.onNext(generateMigrateTableMessage()); + writeService.onCompleted(); + responseObserver.await(); + + verify(plugin).write(any(WriteMigrateTable.class)); + } + + private static Write.Request generateMigrateTableMessage() throws IOException { + Table table = Table.builder().name("test").build(); + return Write.Request.newBuilder() + .setMigrateTable( + Write.MessageMigrateTable.newBuilder().setTable(ArrowHelper.encode(table)).build()) + .build(); + } + + private static class NullResponseStream implements StreamObserver { + private final CountDownLatch countDownLatch = new CountDownLatch(1); + + @Override + public void onNext(T value) {} + + @Override + public void onError(Throwable t) {} + + @Override + public void onCompleted() { + countDownLatch.countDown(); + } + + public void await() throws InterruptedException { + countDownLatch.await(); + } + } +} From 2c7060f9d75d0159334b57256a86778499303743 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Wed, 23 Aug 2023 13:36:30 +0200 Subject: [PATCH 015/376] feat: Encode resources with data (#88) --- lib/build.gradle | 3 +- .../io/cloudquery/helper/ArrowHelper.java | 178 +++++++++++++++++- .../servers/plugin/v3/PluginServer.java | 3 + .../main/java/io/cloudquery/memdb/MemDB.java | 77 ++++---- .../java/io/cloudquery/memdb/Table1Data.java | 2 + .../java/io/cloudquery/memdb/Table2Data.java | 3 +- .../java/io/cloudquery/plugin/SyncStream.java | 5 + .../java/io/cloudquery/scalar/Scalar.java | 5 +- .../java/io/cloudquery/scalar/String.java | 6 +- .../java/io/cloudquery/scalar/Timestamp.java | 28 ++- .../scheduler/OnResourceResolved.java | 3 + .../io/cloudquery/scheduler/Scheduler.java | 7 +- .../scheduler/SchedulerTableOutputStream.java | 10 +- .../java/io/cloudquery/schema/Resource.java | 3 +- .../main/java/io/cloudquery/schema/Table.java | 1 + .../io/cloudquery/transformers/Tables.java | 2 +- .../transformers/TypeTransformer.java | 4 + .../java/io/cloudquery/types/JSONType.java | 8 +- .../java/io/cloudquery/types/UUIDType.java | 1 + .../io/cloudquery/helper/ArrowHelperTest.java | 33 +++- .../java/io/cloudquery/scalar/StringTest.java | 4 +- .../io/cloudquery/scalar/TimestampTest.java | 14 +- .../io/cloudquery/types/JSONTypeTest.java | 24 +-- 23 files changed, 331 insertions(+), 93 deletions(-) create mode 100644 lib/src/main/java/io/cloudquery/plugin/SyncStream.java create mode 100644 lib/src/main/java/io/cloudquery/scheduler/OnResourceResolved.java diff --git a/lib/build.gradle b/lib/build.gradle index 69debe4..4cd2306 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -64,7 +64,7 @@ dependencies { test { useJUnitPlatform() testLogging { - events "passed", "skipped", "failed" + events "skipped", "failed" } jvmArgs("--add-opens=java.base/java.nio=ALL-UNNAMED") } @@ -100,6 +100,7 @@ task runMemDBServe(type: JavaExec) { classpath = sourceSets.main.runtimeClasspath main = javaMainClass args = ["serve"] + jvmArgs = ["--add-opens=java.base/java.nio=ALL-UNNAMED"] } spotless { diff --git a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java index f68aec2..cd4b7c9 100644 --- a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java +++ b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java @@ -4,8 +4,11 @@ import com.google.protobuf.ByteString; import io.cloudquery.schema.Column; +import io.cloudquery.schema.Resource; import io.cloudquery.schema.Table; import io.cloudquery.schema.Table.TableBuilder; +import io.cloudquery.types.JSONType.JSONVector; +import io.cloudquery.types.UUIDType.UUIDVector; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.channels.Channels; @@ -15,29 +18,136 @@ import java.util.Map; import org.apache.arrow.memory.BufferAllocator; import org.apache.arrow.memory.RootAllocator; +import org.apache.arrow.vector.BigIntVector; +import org.apache.arrow.vector.BitVector; +import org.apache.arrow.vector.FieldVector; +import org.apache.arrow.vector.FixedSizeBinaryVector; +import org.apache.arrow.vector.Float4Vector; +import org.apache.arrow.vector.Float8Vector; +import org.apache.arrow.vector.IntVector; +import org.apache.arrow.vector.LargeVarBinaryVector; +import org.apache.arrow.vector.LargeVarCharVector; +import org.apache.arrow.vector.SmallIntVector; +import org.apache.arrow.vector.TimeStampVector; +import org.apache.arrow.vector.TinyIntVector; +import org.apache.arrow.vector.UInt1Vector; +import org.apache.arrow.vector.UInt2Vector; +import org.apache.arrow.vector.UInt4Vector; +import org.apache.arrow.vector.UInt8Vector; +import org.apache.arrow.vector.VarBinaryVector; +import org.apache.arrow.vector.VarCharVector; import org.apache.arrow.vector.VectorSchemaRoot; import org.apache.arrow.vector.ipc.ArrowReader; import org.apache.arrow.vector.ipc.ArrowStreamReader; import org.apache.arrow.vector.ipc.ArrowStreamWriter; import org.apache.arrow.vector.types.pojo.Field; +import org.apache.arrow.vector.types.pojo.FieldType; import org.apache.arrow.vector.types.pojo.Schema; +import org.apache.arrow.vector.util.Text; public class ArrowHelper { + public static final String CQ_EXTENSION_INCREMENTAL = "cq:extension:incremental"; + public static final String CQ_EXTENSION_CONSTRAINT_NAME = "cq:extension:constraint_name"; + public static final String CQ_EXTENSION_PRIMARY_KEY = "cq:extension:primary_key"; + public static final String CQ_EXTENSION_UNIQUE = "cq:extension:unique"; public static final String CQ_TABLE_NAME = "cq:table_name"; public static final String CQ_TABLE_TITLE = "cq:table_title"; public static final String CQ_TABLE_DESCRIPTION = "cq:table_description"; public static final String CQ_TABLE_DEPENDS_ON = "cq:table_depends_on"; + private static void setVectorData(FieldVector vector, Object data) { + vector.allocateNew(); + if (vector instanceof BigIntVector) { + ((BigIntVector) vector).set(0, (long) data); + return; + } + if (vector instanceof BitVector) { + ((BitVector) vector).set(0, (int) data); + return; + } + if (vector instanceof FixedSizeBinaryVector) { + ((FixedSizeBinaryVector) vector).set(0, (byte[]) data); + return; + } + if (vector instanceof Float4Vector) { + ((Float4Vector) vector).set(0, (float) data); + return; + } + if (vector instanceof Float8Vector) { + ((Float8Vector) vector).set(0, (double) data); + return; + } + if (vector instanceof IntVector) { + ((IntVector) vector).set(0, (int) data); + return; + } + if (vector instanceof LargeVarBinaryVector) { + ((LargeVarBinaryVector) vector).set(0, (byte[]) data); + return; + } + if (vector instanceof LargeVarCharVector) { + ((LargeVarCharVector) vector).set(0, (Text) data); + return; + } + if (vector instanceof SmallIntVector) { + ((SmallIntVector) vector).set(0, (short) data); + return; + } + if (vector instanceof TimeStampVector) { + ((TimeStampVector) vector).set(0, (long) data); + return; + } + if (vector instanceof TinyIntVector) { + ((TinyIntVector) vector).set(0, (byte) data); + return; + } + if (vector instanceof UInt1Vector) { + ((UInt1Vector) vector).set(0, (byte) data); + return; + } + if (vector instanceof UInt2Vector) { + ((UInt2Vector) vector).set(0, (short) data); + return; + } + if (vector instanceof UInt4Vector) { + ((UInt4Vector) vector).set(0, (int) data); + return; + } + if (vector instanceof UInt8Vector) { + ((UInt8Vector) vector).set(0, (long) data); + return; + } + if (vector instanceof VarBinaryVector) { + ((VarBinaryVector) vector).set(0, (byte[]) data); + return; + } + if (vector instanceof VarCharVector) { + ((VarCharVector) vector).set(0, (Text) data); + return; + } + if (vector instanceof UUIDVector) { + ((UUIDVector) vector).set(0, (java.util.UUID) data); + return; + } + if (vector instanceof JSONVector) { + ((JSONVector) vector).setSafe(0, (byte[]) data); + return; + } + + throw new IllegalArgumentException("Unsupported vector type: " + vector.getClass()); + } + public static ByteString encode(Table table) throws IOException { try (BufferAllocator bufferAllocator = new RootAllocator()) { Schema schema = toArrowSchema(table); - VectorSchemaRoot schemaRoot = VectorSchemaRoot.create(schema, bufferAllocator); - try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { - try (ArrowStreamWriter writer = - new ArrowStreamWriter(schemaRoot, null, Channels.newChannel(out))) { - writer.start(); - writer.end(); - return ByteString.copyFrom(out.toByteArray()); + try (VectorSchemaRoot schemaRoot = VectorSchemaRoot.create(schema, bufferAllocator)) { + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + try (ArrowStreamWriter writer = + new ArrowStreamWriter(schemaRoot, null, Channels.newChannel(out))) { + writer.start(); + writer.end(); + return ByteString.copyFrom(out.toByteArray()); + } } } } @@ -57,7 +167,15 @@ public static Schema toArrowSchema(Table table) { Field[] fields = new Field[columns.size()]; for (int i = 0; i < columns.size(); i++) { Column column = columns.get(i); - Field field = Field.nullable(column.getName(), column.getType()); + Map metadata = new HashMap<>(); + metadata.put(CQ_EXTENSION_UNIQUE, column.isUnique() ? "true" : "false"); + metadata.put(CQ_EXTENSION_PRIMARY_KEY, column.isPrimaryKey() ? "true" : "false"); + metadata.put(CQ_EXTENSION_INCREMENTAL, column.isIncrementalKey() ? "true" : "false"); + Field field = + new Field( + column.getName(), + new FieldType(!column.isNotNull(), column.getType(), null, metadata), + null); fields[i] = field; } Map metadata = new HashMap<>(); @@ -71,13 +189,25 @@ public static Schema toArrowSchema(Table table) { if (table.getParent() != null) { metadata.put(CQ_TABLE_DEPENDS_ON, table.getParent().getName()); } + metadata.put(CQ_EXTENSION_CONSTRAINT_NAME, table.getConstraintName()); return new Schema(asList(fields), metadata); } public static Table fromArrowSchema(Schema schema) { List columns = new ArrayList<>(); for (Field field : schema.getFields()) { - columns.add(Column.builder().name(field.getName()).type(field.getType()).build()); + boolean isUnique = field.getMetadata().get(CQ_EXTENSION_UNIQUE) == "true"; + boolean isPrimaryKey = field.getMetadata().get(CQ_EXTENSION_PRIMARY_KEY) == "true"; + boolean isIncrementalKey = field.getMetadata().get(CQ_EXTENSION_INCREMENTAL) == "true"; + + columns.add( + Column.builder() + .name(field.getName()) + .unique(isUnique) + .primaryKey(isPrimaryKey) + .incrementalKey(isIncrementalKey) + .type(field.getType()) + .build()); } Map metaData = schema.getCustomMetadata(); @@ -85,8 +215,11 @@ public static Table fromArrowSchema(Schema schema) { String title = metaData.get(CQ_TABLE_TITLE); String description = metaData.get(CQ_TABLE_DESCRIPTION); String parent = metaData.get(CQ_TABLE_DEPENDS_ON); + String constraintName = metaData.get(CQ_EXTENSION_CONSTRAINT_NAME); + + TableBuilder tableBuilder = + Table.builder().name(name).constraintName(constraintName).columns(columns); - TableBuilder tableBuilder = Table.builder().name(name).columns(columns); if (title != null) { tableBuilder.title(title); } @@ -99,4 +232,29 @@ public static Table fromArrowSchema(Schema schema) { return tableBuilder.build(); } + + public static ByteString encode(Resource resource) throws IOException { + try (BufferAllocator bufferAllocator = new RootAllocator()) { + Table table = resource.getTable(); + Schema schema = toArrowSchema(table); + try (VectorSchemaRoot vectorRoot = VectorSchemaRoot.create(schema, bufferAllocator)) { + for (int i = 0; i < table.getColumns().size(); i++) { + FieldVector vector = vectorRoot.getVector(i); + Object data = resource.getData().get(i).get(); + setVectorData(vector, data); + } + // TODO: Support encoding multiple resources + vectorRoot.setRowCount(1); + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + try (ArrowStreamWriter writer = + new ArrowStreamWriter(vectorRoot, null, Channels.newChannel(out))) { + writer.start(); + writer.writeBatch(); + writer.end(); + return ByteString.copyFrom(out.toByteArray()); + } + } + } + } + } } diff --git a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java index 0439fb5..43cb1a7 100644 --- a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java +++ b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java @@ -53,6 +53,7 @@ public void init( responseObserver.onNext(io.cloudquery.plugin.v3.Init.Response.newBuilder().build()); responseObserver.onCompleted(); } catch (Exception e) { + plugin.getLogger().error("Error initializing plugin", e); responseObserver.onError(e); } } @@ -77,6 +78,7 @@ public void getTables( .build()); responseObserver.onCompleted(); } catch (Exception e) { + plugin.getLogger().error("Error getting tables", e); responseObserver.onError(e); } } @@ -95,6 +97,7 @@ public void sync( request.getBackend().getTableName(), request.getBackend().getConnection()), responseObserver); } catch (Exception e) { + plugin.getLogger().error("Error syncing tables", e); responseObserver.onError(e); } } diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDB.java b/lib/src/main/java/io/cloudquery/memdb/MemDB.java index 593cf83..8d90932 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDB.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDB.java @@ -8,44 +8,56 @@ import io.cloudquery.plugin.TableOutputStream; import io.cloudquery.scheduler.Scheduler; import io.cloudquery.schema.ClientMeta; -import io.cloudquery.schema.Column; import io.cloudquery.schema.Resource; import io.cloudquery.schema.SchemaException; import io.cloudquery.schema.Table; import io.cloudquery.schema.TableResolver; +import io.cloudquery.transformers.Tables; +import io.cloudquery.transformers.TransformWithClass; import io.grpc.stub.StreamObserver; import java.util.List; -import org.apache.arrow.vector.types.pojo.ArrowType.Utf8; +import java.util.UUID; public class MemDB extends Plugin { - private List
allTables = - List.of( - Table.builder() - .name("table1") - .resolver( - new TableResolver() { - @Override - public void resolve( - ClientMeta clientMeta, Resource parent, TableOutputStream stream) { - stream.write(Table1Data.builder().name("name1").build()); - stream.write(Table1Data.builder().name("name2").build()); - } - }) - .columns(List.of(Column.builder().name("name").type(new Utf8()).build())) - .build(), - Table.builder() - .name("table2") - .resolver( - new TableResolver() { - @Override - public void resolve( - ClientMeta clientMeta, Resource parent, TableOutputStream stream) { - stream.write(Table2Data.builder().id("id1").build()); - stream.write(Table2Data.builder().id("id2").build()); - } - }) - .columns(List.of(Column.builder().name("id").type(new Utf8()).build())) - .build()); + private static List
getTables() { + return List.of( + Table.builder() + .name("table1") + .resolver( + new TableResolver() { + @Override + public void resolve( + ClientMeta clientMeta, Resource parent, TableOutputStream stream) { + stream.write( + Table1Data.builder() + .id(UUID.fromString("46b2b6e6-8f3e-4340-a721-4aa0786b1cc0")) + .name("name1") + .build()); + stream.write( + Table1Data.builder() + .id(UUID.fromString("e89f95df-a389-4f1b-9ba6-1fab565523d6")) + .name("name2") + .build()); + } + }) + .transform(TransformWithClass.builder(Table1Data.class).pkField("id").build()) + .build(), + Table.builder() + .name("table2") + .resolver( + new TableResolver() { + @Override + public void resolve( + ClientMeta clientMeta, Resource parent, TableOutputStream stream) { + stream.write(Table2Data.builder().id(1).name("name1").build()); + stream.write(Table2Data.builder().id(2).name("name2").build()); + } + }) + .transform(TransformWithClass.builder(Table2Data.class).pkField("id").build()) + .build()); + } + + private List
allTables; private Spec spec; @@ -107,10 +119,9 @@ public void close() { @Override public ClientMeta newClient(String spec, NewClientOptions options) throws Exception { - if (options.isNoConnection()) { - return null; - } this.spec = Spec.fromJSON(spec); + this.allTables = getTables(); + Tables.transformTables(allTables); return new MemDBClient(); } } diff --git a/lib/src/main/java/io/cloudquery/memdb/Table1Data.java b/lib/src/main/java/io/cloudquery/memdb/Table1Data.java index 7eee118..f4ba5d0 100644 --- a/lib/src/main/java/io/cloudquery/memdb/Table1Data.java +++ b/lib/src/main/java/io/cloudquery/memdb/Table1Data.java @@ -1,10 +1,12 @@ package io.cloudquery.memdb; +import java.util.UUID; import lombok.Builder; import lombok.Getter; @Builder @Getter public class Table1Data { + private UUID id; private String name; } diff --git a/lib/src/main/java/io/cloudquery/memdb/Table2Data.java b/lib/src/main/java/io/cloudquery/memdb/Table2Data.java index 7715300..494b331 100644 --- a/lib/src/main/java/io/cloudquery/memdb/Table2Data.java +++ b/lib/src/main/java/io/cloudquery/memdb/Table2Data.java @@ -6,5 +6,6 @@ @Builder @Getter public class Table2Data { - private String id; + private int id; + private String name; } diff --git a/lib/src/main/java/io/cloudquery/plugin/SyncStream.java b/lib/src/main/java/io/cloudquery/plugin/SyncStream.java new file mode 100644 index 0000000..684e82d --- /dev/null +++ b/lib/src/main/java/io/cloudquery/plugin/SyncStream.java @@ -0,0 +1,5 @@ +package io.cloudquery.plugin; + +import io.grpc.stub.StreamObserver; + +public interface SyncStream extends StreamObserver {} diff --git a/lib/src/main/java/io/cloudquery/scalar/Scalar.java b/lib/src/main/java/io/cloudquery/scalar/Scalar.java index 232540e..c996079 100644 --- a/lib/src/main/java/io/cloudquery/scalar/Scalar.java +++ b/lib/src/main/java/io/cloudquery/scalar/Scalar.java @@ -48,7 +48,10 @@ public void set(Object value) throws ValidationException { } public T get() { - return this.value; + if (this.isValid()) { + return this.value; + } + return null; } public boolean equals(Object other) { diff --git a/lib/src/main/java/io/cloudquery/scalar/String.java b/lib/src/main/java/io/cloudquery/scalar/String.java index 23d0d53..cb02aab 100644 --- a/lib/src/main/java/io/cloudquery/scalar/String.java +++ b/lib/src/main/java/io/cloudquery/scalar/String.java @@ -1,9 +1,9 @@ package io.cloudquery.scalar; import org.apache.arrow.vector.types.pojo.ArrowType; +import org.apache.arrow.vector.util.Text; -public class String extends Scalar { - +public class String extends Scalar { public String() { super(); } @@ -19,6 +19,6 @@ public ArrowType dataType() { @Override public void setValue(Object value) throws ValidationException { - this.value = value.toString(); + this.value = new Text(value.toString()); } } diff --git a/lib/src/main/java/io/cloudquery/scalar/Timestamp.java b/lib/src/main/java/io/cloudquery/scalar/Timestamp.java index 0c28e4e..37d00f0 100644 --- a/lib/src/main/java/io/cloudquery/scalar/Timestamp.java +++ b/lib/src/main/java/io/cloudquery/scalar/Timestamp.java @@ -4,12 +4,11 @@ import org.apache.arrow.vector.types.TimeUnit; import org.apache.arrow.vector.types.pojo.ArrowType; -public class Timestamp extends Scalar { +public class Timestamp extends Scalar { public static final ZoneId zoneID = ZoneOffset.UTC; // TODO: add more units support later - private static final ArrowType dt = - new ArrowType.Timestamp(TimeUnit.MILLISECOND, zoneID.toString()); + private static final ArrowType dt = new ArrowType.Timestamp(TimeUnit.SECOND, zoneID.toString()); public Timestamp() { super(); @@ -27,36 +26,47 @@ public ArrowType dataType() { @Override public void setValue(Object value) throws ValidationException { if (value instanceof ZonedDateTime timestamp) { - this.value = timestamp.withZoneSameInstant(zoneID); + this.value = timestamp.withZoneSameInstant(zoneID).toEpochSecond(); return; } if (value instanceof LocalDate date) { - this.value = date.atStartOfDay(zoneID); + this.value = date.atStartOfDay(zoneID).toEpochSecond(); return; } if (value instanceof LocalDateTime date) { - this.value = date.atZone(zoneID); + this.value = date.atZone(zoneID).toEpochSecond(); return; } if (value instanceof Integer integer) { - this.value = ZonedDateTime.ofInstant(Instant.ofEpochMilli(integer), ZoneOffset.UTC); + this.value = + ZonedDateTime.ofInstant(Instant.ofEpochMilli(integer), ZoneOffset.UTC).toEpochSecond(); return; } if (value instanceof Long longValue) { - this.value = ZonedDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneOffset.UTC); + this.value = + ZonedDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneOffset.UTC).toEpochSecond(); return; } if (value instanceof CharSequence sequence) { - this.value = ZonedDateTime.parse(sequence); + this.value = ZonedDateTime.parse(sequence).toEpochSecond(); return; } throw new ValidationException( ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); } + + @Override + public java.lang.String toString() { + if (this.value != null) { + return ZonedDateTime.ofInstant(Instant.ofEpochSecond((Long) this.value), zoneID).toString(); + } + + return NULL_VALUE_STRING; + } } diff --git a/lib/src/main/java/io/cloudquery/scheduler/OnResourceResolved.java b/lib/src/main/java/io/cloudquery/scheduler/OnResourceResolved.java new file mode 100644 index 0000000..288c001 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/scheduler/OnResourceResolved.java @@ -0,0 +1,3 @@ +package io.cloudquery.scheduler; + +public class OnResourceResolved {} diff --git a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java index 4b4049d..897d0b9 100644 --- a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java +++ b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java @@ -5,7 +5,6 @@ import io.cloudquery.schema.ClientMeta; import io.cloudquery.schema.Table; import io.grpc.stub.StreamObserver; -import java.io.IOException; import java.util.List; import lombok.Builder; import lombok.NonNull; @@ -29,7 +28,7 @@ public void sync() { Sync.MessageMigrateTable.newBuilder().setTable(ArrowHelper.encode(table)).build(); Sync.Response response = Sync.Response.newBuilder().setMigrateTable(migrateTable).build(); syncStream.onNext(response); - } catch (IOException e) { + } catch (Exception e) { syncStream.onError(e); return; } @@ -38,6 +37,10 @@ public void sync() { for (Table table : tables) { try { logger.info("resolving table: {}", table.getName()); + if (table.getResolver() == null) { + logger.error("no resolver for table: {}", table.getName()); + continue; + } SchedulerTableOutputStream schedulerTableOutputStream = SchedulerTableOutputStream.builder() .table(table) diff --git a/lib/src/main/java/io/cloudquery/scheduler/SchedulerTableOutputStream.java b/lib/src/main/java/io/cloudquery/scheduler/SchedulerTableOutputStream.java index a13bf2f..f25ebad 100644 --- a/lib/src/main/java/io/cloudquery/scheduler/SchedulerTableOutputStream.java +++ b/lib/src/main/java/io/cloudquery/scheduler/SchedulerTableOutputStream.java @@ -1,5 +1,6 @@ package io.cloudquery.scheduler; +import com.google.protobuf.ByteString; import io.cloudquery.plugin.TableOutputStream; import io.cloudquery.plugin.v3.Sync; import io.cloudquery.schema.ClientMeta; @@ -8,7 +9,6 @@ import io.cloudquery.schema.Table; import io.cloudquery.transformers.TransformerException; import io.grpc.stub.StreamObserver; -import java.io.IOException; import lombok.Builder; import lombok.NonNull; import org.apache.logging.log4j.Logger; @@ -28,7 +28,7 @@ public void write(Object data) { try { logger.info("resolving column: {}", column.getName()); if (column.getResolver() == null) { - // TODO: Fall back to path resolver + logger.error("no resolver for column: {}", column.getName()); continue; } column.getResolver().resolve(client, resource, column); @@ -40,11 +40,11 @@ public void write(Object data) { } try { - Sync.MessageInsert insert = - Sync.MessageInsert.newBuilder().setRecord(resource.encode()).build(); + ByteString record = resource.encode(); + Sync.MessageInsert insert = Sync.MessageInsert.newBuilder().setRecord(record).build(); Sync.Response response = Sync.Response.newBuilder().setInsert(insert).build(); syncStream.onNext(response); - } catch (IOException e) { + } catch (Exception e) { logger.error("Failed to encode resource: {}", resource, e); return; } diff --git a/lib/src/main/java/io/cloudquery/schema/Resource.java b/lib/src/main/java/io/cloudquery/schema/Resource.java index 33b2141..e2b6c2a 100644 --- a/lib/src/main/java/io/cloudquery/schema/Resource.java +++ b/lib/src/main/java/io/cloudquery/schema/Resource.java @@ -42,7 +42,6 @@ public Scalar get(String columnName) { } public ByteString encode() throws IOException { - // TODO: Encode data and not only schema - return ArrowHelper.encode(table); + return ArrowHelper.encode(this); } } diff --git a/lib/src/main/java/io/cloudquery/schema/Table.java b/lib/src/main/java/io/cloudquery/schema/Table.java index 8f91c09..9ac307b 100644 --- a/lib/src/main/java/io/cloudquery/schema/Table.java +++ b/lib/src/main/java/io/cloudquery/schema/Table.java @@ -126,6 +126,7 @@ public static int maxDepth(List
tables) { } @NonNull private String name; + @Builder.Default private String constraintName = ""; private TableResolver resolver; private String title; private String description; diff --git a/lib/src/main/java/io/cloudquery/transformers/Tables.java b/lib/src/main/java/io/cloudquery/transformers/Tables.java index f038c86..b0b276f 100644 --- a/lib/src/main/java/io/cloudquery/transformers/Tables.java +++ b/lib/src/main/java/io/cloudquery/transformers/Tables.java @@ -5,7 +5,7 @@ import io.cloudquery.schema.Table; import java.util.List; -class Tables { +public class Tables { public static void setParents(List
tables, Table parent) { for (Table table : tables) { table.setParent(parent); diff --git a/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java b/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java index b6ec63c..b1cc640 100644 --- a/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java +++ b/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java @@ -3,6 +3,7 @@ import io.cloudquery.types.InetType; import io.cloudquery.types.JSONType; import io.cloudquery.types.ListType; +import io.cloudquery.types.UUIDType; import java.lang.reflect.Field; import org.apache.arrow.vector.types.FloatingPointPrecision; import org.apache.arrow.vector.types.TimeUnit; @@ -42,6 +43,9 @@ private static ArrowType transformArrowType(String name, Class type) case "java.time.LocalDateTime" -> { return new ArrowType.Timestamp(TimeUnit.MICROSECOND, null); } + case "java.util.UUID" -> { + return new UUIDType(); + } default -> { if (type.isArray()) { Class componentType = type.getComponentType(); diff --git a/lib/src/main/java/io/cloudquery/types/JSONType.java b/lib/src/main/java/io/cloudquery/types/JSONType.java index 16e7852..2484d05 100644 --- a/lib/src/main/java/io/cloudquery/types/JSONType.java +++ b/lib/src/main/java/io/cloudquery/types/JSONType.java @@ -80,12 +80,12 @@ public int hashCode(int index, ArrowBufHasher hasher) { return getUnderlyingVector().hashCode(index, hasher); } - public String get(int index) { - return new String((byte[]) getObject(index)); + public byte[] get(int index) { + return (byte[]) getObject(index); } - public void set(int index, String value) { - getUnderlyingVector().setSafe(index, value.getBytes(), 0, value.getBytes().length); + public void setSafe(int index, byte[] bytes) { + getUnderlyingVector().setSafe(index, bytes); } } } diff --git a/lib/src/main/java/io/cloudquery/types/UUIDType.java b/lib/src/main/java/io/cloudquery/types/UUIDType.java index 4ae6ddf..6f7350d 100644 --- a/lib/src/main/java/io/cloudquery/types/UUIDType.java +++ b/lib/src/main/java/io/cloudquery/types/UUIDType.java @@ -10,6 +10,7 @@ import org.apache.arrow.vector.FieldVector; import org.apache.arrow.vector.FixedSizeBinaryVector; import org.apache.arrow.vector.types.pojo.ArrowType; +import org.apache.arrow.vector.types.pojo.ArrowType.ExtensionType; import org.apache.arrow.vector.types.pojo.FieldType; public class UUIDType extends ExtensionType { diff --git a/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java b/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java index cdb041f..ff5dc46 100644 --- a/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java +++ b/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java @@ -1,5 +1,9 @@ package io.cloudquery.helper; +import static io.cloudquery.helper.ArrowHelper.CQ_EXTENSION_CONSTRAINT_NAME; +import static io.cloudquery.helper.ArrowHelper.CQ_EXTENSION_INCREMENTAL; +import static io.cloudquery.helper.ArrowHelper.CQ_EXTENSION_PRIMARY_KEY; +import static io.cloudquery.helper.ArrowHelper.CQ_EXTENSION_UNIQUE; import static io.cloudquery.helper.ArrowHelper.CQ_TABLE_DEPENDS_ON; import static io.cloudquery.helper.ArrowHelper.CQ_TABLE_DESCRIPTION; import static io.cloudquery.helper.ArrowHelper.CQ_TABLE_NAME; @@ -27,7 +31,13 @@ public class ArrowHelperTest { .parent(Table.builder().name("parent").build()) .columns( List.of( - Column.builder().name("column1").type(ArrowType.Utf8.INSTANCE).build(), + Column.builder() + .name("column1") + .type(ArrowType.Utf8.INSTANCE) + .unique(true) + .incrementalKey(true) + .primaryKey(true) + .build(), Column.builder().name("column2").type(ArrowType.Utf8.INSTANCE).build())) .build(); @@ -36,7 +46,25 @@ public void testToArrowSchema() { Schema arrowSchema = ArrowHelper.toArrowSchema(TEST_TABLE); assertEquals(arrowSchema.getFields().get(0).getName(), "column1"); + assertEquals( + arrowSchema.getFields().get(0).getMetadata(), + Map.of( + CQ_EXTENSION_UNIQUE, + "true", + CQ_EXTENSION_INCREMENTAL, + "true", + CQ_EXTENSION_PRIMARY_KEY, + "true")); assertEquals(arrowSchema.getFields().get(1).getName(), "column2"); + assertEquals( + arrowSchema.getFields().get(1).getMetadata(), + Map.of( + CQ_EXTENSION_UNIQUE, + "false", + CQ_EXTENSION_INCREMENTAL, + "false", + CQ_EXTENSION_PRIMARY_KEY, + "false")); assertEquals( arrowSchema.getCustomMetadata(), @@ -44,7 +72,8 @@ public void testToArrowSchema() { CQ_TABLE_NAME, "table1", CQ_TABLE_DESCRIPTION, "A simple test table", CQ_TABLE_TITLE, "Test table title", - CQ_TABLE_DEPENDS_ON, "parent")); + CQ_TABLE_DEPENDS_ON, "parent", + CQ_EXTENSION_CONSTRAINT_NAME, "")); } @Test diff --git a/lib/src/test/java/io/cloudquery/scalar/StringTest.java b/lib/src/test/java/io/cloudquery/scalar/StringTest.java index 7d6e76b..5266657 100644 --- a/lib/src/test/java/io/cloudquery/scalar/StringTest.java +++ b/lib/src/test/java/io/cloudquery/scalar/StringTest.java @@ -90,14 +90,14 @@ public void testGet() { string.set(-1L); }); assertTrue(string.isValid()); - assertEquals("-1", string.get()); + assertEquals("-1", string.get().toString()); assertDoesNotThrow( () -> { string.set(""); }); assertTrue(string.isValid()); - assertEquals("", string.get()); + assertEquals("", string.get().toString()); } @Test diff --git a/lib/src/test/java/io/cloudquery/scalar/TimestampTest.java b/lib/src/test/java/io/cloudquery/scalar/TimestampTest.java index bfcd0ce..8f74f1d 100644 --- a/lib/src/test/java/io/cloudquery/scalar/TimestampTest.java +++ b/lib/src/test/java/io/cloudquery/scalar/TimestampTest.java @@ -49,9 +49,13 @@ public void testToString() { () -> { timestamp.set(1); }); - assertEquals("1970-01-01T00:00:00.001Z", timestamp.toString()); + assertEquals("1970-01-01T00:00Z", timestamp.toString()); - java.lang.String ts = ZonedDateTime.now(ZoneOffset.UTC).toString(); + java.lang.String ts = + ZonedDateTime.ofInstant( + Instant.ofEpochSecond(ZonedDateTime.now(ZoneOffset.UTC).toEpochSecond()), + ZoneOffset.UTC) + .toString(); assertDoesNotThrow( () -> { timestamp.set(ts); @@ -62,7 +66,7 @@ public void testToString() { @Test public void testDataType() { Timestamp timestamp = new Timestamp(); - assertEquals(new ArrowType.Timestamp(TimeUnit.MILLISECOND, "Z"), timestamp.dataType()); + assertEquals(new ArrowType.Timestamp(TimeUnit.SECOND, "Z"), timestamp.dataType()); } @Test @@ -114,14 +118,14 @@ public void testGet() { timestamp.set(ts); }); assertTrue(timestamp.isValid()); - assertEquals(ts, timestamp.get()); + assertEquals(ts.toEpochSecond(), timestamp.get()); assertDoesNotThrow( () -> { timestamp.set(0); }); assertTrue(timestamp.isValid()); - assertEquals(Instant.EPOCH.atZone(ZoneOffset.UTC), timestamp.get()); + assertEquals(Instant.EPOCH.atZone(ZoneOffset.UTC).toEpochSecond(), timestamp.get()); } @Test diff --git a/lib/src/test/java/io/cloudquery/types/JSONTypeTest.java b/lib/src/test/java/io/cloudquery/types/JSONTypeTest.java index 996dcda..a1acdea 100644 --- a/lib/src/test/java/io/cloudquery/types/JSONTypeTest.java +++ b/lib/src/test/java/io/cloudquery/types/JSONTypeTest.java @@ -1,5 +1,6 @@ package io.cloudquery.types; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -8,7 +9,6 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; -import java.io.OutputStream; import java.nio.channels.FileChannel; import java.nio.channels.WritableByteChannel; import java.nio.file.Files; @@ -45,7 +45,7 @@ public static class Person { } private File file; - private List jsonData; + private List jsonData; @BeforeAll public static void setUpTest() { @@ -72,16 +72,16 @@ public void shouldSetJSONOnJSONVector() throws IOException { try (BufferAllocator allocator = new RootAllocator()) { ArrowType.ExtensionType jsonType = ExtensionTypeRegistry.lookup("json"); try (JSONVector vector = (JSONVector) jsonType.getNewVector("vector", null, allocator)) { - vector.set(0, jsonData.get(0)); + vector.setValueCount(4); + vector.setSafe(0, jsonData.get(0)); vector.setNull(1); - vector.set(2, jsonData.get(1)); + vector.setSafe(2, jsonData.get(1)); vector.setNull(3); - vector.setValueCount(4); // Assert that the values were set correctly - assertEquals(jsonData.get(0), vector.get(0), "JSON should match"); + assertArrayEquals(jsonData.get(0), vector.get(0), "JSON should match"); assertTrue(vector.isNull(1), "Should be null"); - assertEquals(jsonData.get(1), vector.get(2), "JSON should match"); + assertArrayEquals(jsonData.get(1), vector.get(2), "JSON should match"); assertTrue(vector.isNull(3), "Should be null"); // Assert that the value count and null count are correct @@ -110,7 +110,7 @@ public void roundTripJSON() throws IOException { JSONVector fieldVector = (JSONVector) reader.getVectorSchemaRoot().getVector(FIELD_NAME); assertEquals(jsonData.size(), fieldVector.getValueCount(), "Value count should match"); for (int i = 0; i < jsonData.size(); i++) { - assertEquals(jsonData.get(i), fieldVector.get(i), "JSON should match"); + assertArrayEquals(jsonData.get(i), fieldVector.get(i), "JSON should match"); } } } @@ -128,7 +128,7 @@ private void generateDataAndWriteToFile(VectorSchemaRoot root) throws IOExceptio // Generate some JSON data vector.setValueCount(jsonData.size()); for (int i = 0; i < jsonData.size(); i++) { - vector.set(i, jsonData.get(i)); + vector.setSafe(i, jsonData.get(i)); } root.setRowCount(jsonData.size()); @@ -142,10 +142,10 @@ private void generateDataAndWriteToFile(VectorSchemaRoot root) throws IOExceptio } } - private static String toJSON(Object object) throws IOException { - try (OutputStream outputStream = new ByteArrayOutputStream()) { + private static byte[] toJSON(Object object) throws IOException { + try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { OBJECT_MAPPER.writeValue(outputStream, object); - return outputStream.toString(); + return outputStream.toByteArray(); } } } From 1fe0c7fbebfe976932007116040b3861e41b024a Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Wed, 23 Aug 2023 15:02:59 +0200 Subject: [PATCH 016/376] refactor: Avoid casting, use Optional, use equals, use Boolean.toString (#90) Follow up to https://medium.com/@johnpang/optionals-and-lombok-a414639dca1e --- .../io/cloudquery/helper/ArrowHelper.java | 91 ++++++++++--------- .../io/cloudquery/scheduler/Scheduler.java | 4 +- .../main/java/io/cloudquery/schema/Table.java | 4 + 3 files changed, 53 insertions(+), 46 deletions(-) diff --git a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java index cd4b7c9..3dc8ff7 100644 --- a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java +++ b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java @@ -16,6 +16,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import org.apache.arrow.memory.BufferAllocator; import org.apache.arrow.memory.RootAllocator; import org.apache.arrow.vector.BigIntVector; @@ -57,80 +58,80 @@ public class ArrowHelper { private static void setVectorData(FieldVector vector, Object data) { vector.allocateNew(); - if (vector instanceof BigIntVector) { - ((BigIntVector) vector).set(0, (long) data); + if (vector instanceof BigIntVector bigIntVector) { + bigIntVector.set(0, (long) data); return; } - if (vector instanceof BitVector) { - ((BitVector) vector).set(0, (int) data); + if (vector instanceof BitVector bitVector) { + bitVector.set(0, (int) data); return; } - if (vector instanceof FixedSizeBinaryVector) { - ((FixedSizeBinaryVector) vector).set(0, (byte[]) data); + if (vector instanceof FixedSizeBinaryVector fixedSizeBinaryVector) { + fixedSizeBinaryVector.set(0, (byte[]) data); return; } - if (vector instanceof Float4Vector) { - ((Float4Vector) vector).set(0, (float) data); + if (vector instanceof Float4Vector float4Vector) { + float4Vector.set(0, (float) data); return; } - if (vector instanceof Float8Vector) { - ((Float8Vector) vector).set(0, (double) data); + if (vector instanceof Float8Vector float8Vector) { + float8Vector.set(0, (double) data); return; } - if (vector instanceof IntVector) { - ((IntVector) vector).set(0, (int) data); + if (vector instanceof IntVector intVector) { + intVector.set(0, (int) data); return; } - if (vector instanceof LargeVarBinaryVector) { - ((LargeVarBinaryVector) vector).set(0, (byte[]) data); + if (vector instanceof LargeVarBinaryVector largeVarBinaryVector) { + largeVarBinaryVector.set(0, (byte[]) data); return; } - if (vector instanceof LargeVarCharVector) { - ((LargeVarCharVector) vector).set(0, (Text) data); + if (vector instanceof LargeVarCharVector largeVarCharVector) { + largeVarCharVector.set(0, (Text) data); return; } - if (vector instanceof SmallIntVector) { - ((SmallIntVector) vector).set(0, (short) data); + if (vector instanceof SmallIntVector smallIntVector) { + smallIntVector.set(0, (short) data); return; } - if (vector instanceof TimeStampVector) { - ((TimeStampVector) vector).set(0, (long) data); + if (vector instanceof TimeStampVector timeStampVector) { + timeStampVector.set(0, (long) data); return; } - if (vector instanceof TinyIntVector) { - ((TinyIntVector) vector).set(0, (byte) data); + if (vector instanceof TinyIntVector tinyIntVector) { + tinyIntVector.set(0, (byte) data); return; } - if (vector instanceof UInt1Vector) { - ((UInt1Vector) vector).set(0, (byte) data); + if (vector instanceof UInt1Vector uInt1Vector) { + uInt1Vector.set(0, (byte) data); return; } - if (vector instanceof UInt2Vector) { - ((UInt2Vector) vector).set(0, (short) data); + if (vector instanceof UInt2Vector uInt2Vector) { + uInt2Vector.set(0, (short) data); return; } - if (vector instanceof UInt4Vector) { - ((UInt4Vector) vector).set(0, (int) data); + if (vector instanceof UInt4Vector uInt4Vector) { + uInt4Vector.set(0, (int) data); return; } - if (vector instanceof UInt8Vector) { - ((UInt8Vector) vector).set(0, (long) data); + if (vector instanceof UInt8Vector uInt8Vector) { + uInt8Vector.set(0, (long) data); return; } - if (vector instanceof VarBinaryVector) { - ((VarBinaryVector) vector).set(0, (byte[]) data); + if (vector instanceof VarBinaryVector varBinaryVector) { + varBinaryVector.set(0, (byte[]) data); return; } - if (vector instanceof VarCharVector) { - ((VarCharVector) vector).set(0, (Text) data); + if (vector instanceof VarCharVector vectorCharVector) { + vectorCharVector.set(0, (Text) data); return; } - if (vector instanceof UUIDVector) { - ((UUIDVector) vector).set(0, (java.util.UUID) data); + if (vector instanceof UUIDVector uuidVector) { + uuidVector.set(0, (java.util.UUID) data); return; } - if (vector instanceof JSONVector) { - ((JSONVector) vector).setSafe(0, (byte[]) data); + if (vector instanceof JSONVector jsonVector) { + jsonVector.setSafe(0, (byte[]) data); return; } @@ -168,9 +169,9 @@ public static Schema toArrowSchema(Table table) { for (int i = 0; i < columns.size(); i++) { Column column = columns.get(i); Map metadata = new HashMap<>(); - metadata.put(CQ_EXTENSION_UNIQUE, column.isUnique() ? "true" : "false"); - metadata.put(CQ_EXTENSION_PRIMARY_KEY, column.isPrimaryKey() ? "true" : "false"); - metadata.put(CQ_EXTENSION_INCREMENTAL, column.isIncrementalKey() ? "true" : "false"); + metadata.put(CQ_EXTENSION_UNIQUE, Boolean.toString(column.isUnique())); + metadata.put(CQ_EXTENSION_PRIMARY_KEY, Boolean.toString(column.isPrimaryKey())); + metadata.put(CQ_EXTENSION_INCREMENTAL, Boolean.toString(column.isIncrementalKey())); Field field = new Field( column.getName(), @@ -196,9 +197,11 @@ public static Schema toArrowSchema(Table table) { public static Table fromArrowSchema(Schema schema) { List columns = new ArrayList<>(); for (Field field : schema.getFields()) { - boolean isUnique = field.getMetadata().get(CQ_EXTENSION_UNIQUE) == "true"; - boolean isPrimaryKey = field.getMetadata().get(CQ_EXTENSION_PRIMARY_KEY) == "true"; - boolean isIncrementalKey = field.getMetadata().get(CQ_EXTENSION_INCREMENTAL) == "true"; + boolean isUnique = Objects.equals(field.getMetadata().get(CQ_EXTENSION_UNIQUE), "true"); + boolean isPrimaryKey = + Objects.equals(field.getMetadata().get(CQ_EXTENSION_PRIMARY_KEY), "true"); + boolean isIncrementalKey = + Objects.equals(field.getMetadata().get(CQ_EXTENSION_INCREMENTAL), "true"); columns.add( Column.builder() diff --git a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java index 897d0b9..560ee02 100644 --- a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java +++ b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java @@ -37,7 +37,7 @@ public void sync() { for (Table table : tables) { try { logger.info("resolving table: {}", table.getName()); - if (table.getResolver() == null) { + if (!table.getResolver().isPresent()) { logger.error("no resolver for table: {}", table.getName()); continue; } @@ -48,7 +48,7 @@ public void sync() { .logger(logger) .syncStream(syncStream) .build(); - table.getResolver().resolve(client, null, schedulerTableOutputStream); + table.getResolver().get().resolve(client, null, schedulerTableOutputStream); logger.info("resolved table: {}", table.getName()); } catch (Exception e) { syncStream.onError(e); diff --git a/lib/src/main/java/io/cloudquery/schema/Table.java b/lib/src/main/java/io/cloudquery/schema/Table.java index 9ac307b..d5ca9e6 100644 --- a/lib/src/main/java/io/cloudquery/schema/Table.java +++ b/lib/src/main/java/io/cloudquery/schema/Table.java @@ -210,6 +210,10 @@ public Optional getColumn(String name) { return Optional.empty(); } + public Optional getResolver() { + return Optional.ofNullable(resolver); + } + public List getChanges(Table old) { List changes = new ArrayList<>(); for (Column currentColumn : columns) { From 0a470b7277fb2aed0c306022e6a11f45147cb5c6 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Thu, 24 Aug 2023 09:15:26 +0200 Subject: [PATCH 017/376] feat: Implement concurrency and relations resolving (#91) --- .../main/java/io/cloudquery/memdb/MemDB.java | 21 +++++ .../main/java/io/cloudquery/memdb/Spec.java | 2 +- .../io/cloudquery/memdb/Table2ChildData.java | 10 +++ .../scheduler/OnResourceResolved.java | 3 - .../io/cloudquery/scheduler/Scheduler.java | 83 ++++++++++++++----- .../scheduler/SchedulerTableOutputStream.java | 73 ++++++++++------ .../main/java/io/cloudquery/schema/Table.java | 4 +- 7 files changed, 142 insertions(+), 54 deletions(-) create mode 100644 lib/src/main/java/io/cloudquery/memdb/Table2ChildData.java delete mode 100644 lib/src/main/java/io/cloudquery/scheduler/OnResourceResolved.java diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDB.java b/lib/src/main/java/io/cloudquery/memdb/MemDB.java index 8d90932..cd53cf2 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDB.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDB.java @@ -54,6 +54,27 @@ public void resolve( } }) .transform(TransformWithClass.builder(Table2Data.class).pkField("id").build()) + .relations( + List.of( + Table.builder() + .name("table2_child") + .resolver( + new TableResolver() { + + @Override + public void resolve( + ClientMeta clientMeta, + Resource parent, + TableOutputStream stream) { + String parentName = parent.get("name").toString(); + stream.write( + Table2ChildData.builder().name(parentName + "_name1").build()); + stream.write( + Table2ChildData.builder().name(parentName + "_name2").build()); + } + }) + .transform(TransformWithClass.builder(Table2ChildData.class).build()) + .build())) .build()); } diff --git a/lib/src/main/java/io/cloudquery/memdb/Spec.java b/lib/src/main/java/io/cloudquery/memdb/Spec.java index 316bcd2..359360e 100644 --- a/lib/src/main/java/io/cloudquery/memdb/Spec.java +++ b/lib/src/main/java/io/cloudquery/memdb/Spec.java @@ -13,7 +13,7 @@ public static Spec fromJSON(String json) throws JsonMappingException, JsonProces ObjectMapper objectMapper = new ObjectMapper(); Spec spec = objectMapper.readValue(json, Spec.class); if (spec.getConcurrency() == 0) { - spec.setConcurrency(10000); + spec.setConcurrency(100); } return spec; } diff --git a/lib/src/main/java/io/cloudquery/memdb/Table2ChildData.java b/lib/src/main/java/io/cloudquery/memdb/Table2ChildData.java new file mode 100644 index 0000000..4597b67 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/memdb/Table2ChildData.java @@ -0,0 +1,10 @@ +package io.cloudquery.memdb; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +public class Table2ChildData { + private String name; +} diff --git a/lib/src/main/java/io/cloudquery/scheduler/OnResourceResolved.java b/lib/src/main/java/io/cloudquery/scheduler/OnResourceResolved.java deleted file mode 100644 index 288c001..0000000 --- a/lib/src/main/java/io/cloudquery/scheduler/OnResourceResolved.java +++ /dev/null @@ -1,3 +0,0 @@ -package io.cloudquery.scheduler; - -public class OnResourceResolved {} diff --git a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java index 560ee02..ba734f7 100644 --- a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java +++ b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java @@ -1,11 +1,16 @@ package io.cloudquery.scheduler; +import com.google.protobuf.ByteString; import io.cloudquery.helper.ArrowHelper; import io.cloudquery.plugin.v3.Sync; import io.cloudquery.schema.ClientMeta; +import io.cloudquery.schema.Resource; import io.cloudquery.schema.Table; import io.grpc.stub.StreamObserver; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import lombok.Builder; import lombok.NonNull; import org.apache.logging.log4j.Logger; @@ -20,8 +25,58 @@ public class Scheduler { private int concurrency; private boolean deterministicCqId; - public void sync() { + private void resolveTables(List
tables, Resource parent, int concurrency) + throws InterruptedException { + if (tables == null || tables.isEmpty()) { + return; + } + ExecutorService executor = Executors.newFixedThreadPool(Math.min(tables.size(), concurrency)); for (Table table : tables) { + final int nextLevelConcurrency = Math.max(1, concurrency / 2); + executor.submit( + new Runnable() { + @Override + public void run() { + try { + String tableMessage = + parent != null + ? "table " + table.getName() + " of parent" + parent.getTable().getName() + : "table " + table.getName(); + + logger.info("resolving {}", tableMessage); + if (!table.getResolver().isPresent()) { + logger.error("no resolver for {}", tableMessage); + return; + } + + SchedulerTableOutputStream schedulerTableOutputStream = + new SchedulerTableOutputStream(table, parent, client, logger); + table.getResolver().get().resolve(client, parent, schedulerTableOutputStream); + + for (Resource resource : schedulerTableOutputStream.getResources()) { + ByteString record = resource.encode(); + Sync.MessageInsert insert = + Sync.MessageInsert.newBuilder().setRecord(record).build(); + Sync.Response response = Sync.Response.newBuilder().setInsert(insert).build(); + syncStream.onNext(response); + resolveTables(table.getRelations(), resource, nextLevelConcurrency); + } + + logger.info("resolved {}", tableMessage); + } catch (Exception e) { + logger.error("Failed to resolve table: {}", table.getName(), e); + syncStream.onError(e); + return; + } + } + }); + } + executor.shutdown(); + executor.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); + } + + public void sync() { + for (Table table : Table.flattenTables(tables)) { try { logger.info("sending migrate message for table: {}", table.getName()); Sync.MessageMigrateTable migrateTable = @@ -34,26 +89,12 @@ public void sync() { } } - for (Table table : tables) { - try { - logger.info("resolving table: {}", table.getName()); - if (!table.getResolver().isPresent()) { - logger.error("no resolver for table: {}", table.getName()); - continue; - } - SchedulerTableOutputStream schedulerTableOutputStream = - SchedulerTableOutputStream.builder() - .table(table) - .client(client) - .logger(logger) - .syncStream(syncStream) - .build(); - table.getResolver().get().resolve(client, null, schedulerTableOutputStream); - logger.info("resolved table: {}", table.getName()); - } catch (Exception e) { - syncStream.onError(e); - return; - } + try { + resolveTables(this.tables, null, this.concurrency); + } catch (InterruptedException e) { + logger.error("Failed to resolve tables", e); + syncStream.onError(e); + return; } syncStream.onCompleted(); diff --git a/lib/src/main/java/io/cloudquery/scheduler/SchedulerTableOutputStream.java b/lib/src/main/java/io/cloudquery/scheduler/SchedulerTableOutputStream.java index f25ebad..0ac4f72 100644 --- a/lib/src/main/java/io/cloudquery/scheduler/SchedulerTableOutputStream.java +++ b/lib/src/main/java/io/cloudquery/scheduler/SchedulerTableOutputStream.java @@ -1,52 +1,71 @@ package io.cloudquery.scheduler; -import com.google.protobuf.ByteString; import io.cloudquery.plugin.TableOutputStream; -import io.cloudquery.plugin.v3.Sync; import io.cloudquery.schema.ClientMeta; import io.cloudquery.schema.Column; import io.cloudquery.schema.Resource; import io.cloudquery.schema.Table; import io.cloudquery.transformers.TransformerException; -import io.grpc.stub.StreamObserver; -import lombok.Builder; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import lombok.NonNull; import org.apache.logging.log4j.Logger; -@Builder public class SchedulerTableOutputStream implements TableOutputStream { + private static final int RESOURCE_RESOLVE_CONCURRENCY = 100; + private static final int RESOURCE_RESOLVE_TIMEOUT_MINUTES = 10; @NonNull private final Table table; private final Resource parent; @NonNull private final ClientMeta client; @NonNull private final Logger logger; - @NonNull private final StreamObserver syncStream; + + private List resources = new ArrayList(); + + private ExecutorService executor; + + public SchedulerTableOutputStream( + @NonNull Table table, Resource parent, @NonNull ClientMeta client, @NonNull Logger logger) { + this.table = table; + this.parent = parent; + this.client = client; + this.logger = logger; + this.executor = Executors.newFixedThreadPool(RESOURCE_RESOLVE_CONCURRENCY); + } @Override public void write(Object data) { Resource resource = Resource.builder().table(table).parent(parent).item(data).build(); for (Column column : table.getColumns()) { - try { - logger.info("resolving column: {}", column.getName()); - if (column.getResolver() == null) { - logger.error("no resolver for column: {}", column.getName()); - continue; - } - column.getResolver().resolve(client, resource, column); - logger.info("resolved column: {}", column.getName()); - } catch (TransformerException e) { - logger.error("Failed to resolve column: {}", column.getName(), e); - return; - } + executor.submit( + new Runnable() { + @Override + public void run() { + try { + logger.debug("resolving column: {}", column.getName()); + if (column.getResolver() == null) { + logger.error("no resolver for column: {}", column.getName()); + return; + } + column.getResolver().resolve(client, resource, column); + logger.debug("resolved column: {}", column.getName()); + return; + } catch (TransformerException e) { + logger.error("Failed to resolve column: {}", column.getName(), e); + return; + } + } + }); } + resources.add(resource); + } - try { - ByteString record = resource.encode(); - Sync.MessageInsert insert = Sync.MessageInsert.newBuilder().setRecord(record).build(); - Sync.Response response = Sync.Response.newBuilder().setInsert(insert).build(); - syncStream.onNext(response); - } catch (Exception e) { - logger.error("Failed to encode resource: {}", resource, e); - return; - } + public List getResources() throws InterruptedException { + // TODO: Optimize this to not wait for all resources to complete + executor.shutdown(); + executor.awaitTermination(RESOURCE_RESOLVE_TIMEOUT_MINUTES, TimeUnit.MINUTES); + return this.resources; } } diff --git a/lib/src/main/java/io/cloudquery/schema/Table.java b/lib/src/main/java/io/cloudquery/schema/Table.java index d5ca9e6..6700784 100644 --- a/lib/src/main/java/io/cloudquery/schema/Table.java +++ b/lib/src/main/java/io/cloudquery/schema/Table.java @@ -9,7 +9,7 @@ import io.cloudquery.transformers.TransformerException; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Optional; @@ -28,7 +28,7 @@ public interface Transform { } public static List
flattenTables(List
tables) { - Map flattenMap = new HashMap<>(); + Map flattenMap = new LinkedHashMap<>(); for (Table table : tables) { Table newTable = table.toBuilder().relations(Collections.emptyList()).build(); flattenMap.put(newTable.name, newTable); From b2dfcd8036379d08a0246556e270e59134b35274 Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Thu, 24 Aug 2023 09:15:12 +0100 Subject: [PATCH 018/376] chore: implment write insert logic (#93) refs: #85 --- .gitignore | 1 + .../io/cloudquery/helper/ArrowHelper.java | 34 +++++++-- .../servers/plugin/v3/PluginServer.java | 14 +++- .../java/io/cloudquery/memdb/MemDBClient.java | 76 ++++++++++++++----- .../io/cloudquery/messages/WriteInsert.java | 11 +++ .../java/io/cloudquery/scalar/Scalar.java | 3 + .../main/java/io/cloudquery/schema/Table.java | 9 +++ .../io/cloudquery/server/PluginServe.java | 2 + .../java/io/cloudquery/types/Extensions.java | 12 +++ .../java/io/cloudquery/types/UUIDType.java | 5 +- .../servers/plugin/v3/PluginServerTest.java | 32 +++++++- 11 files changed, 167 insertions(+), 32 deletions(-) create mode 100644 lib/src/main/java/io/cloudquery/messages/WriteInsert.java create mode 100644 lib/src/main/java/io/cloudquery/types/Extensions.java diff --git a/.gitignore b/.gitignore index 4c348d6..449ced5 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ build # Intellij .idea +.cq diff --git a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java index 3dc8ff7..4f0d882 100644 --- a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java +++ b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java @@ -3,6 +3,7 @@ import static java.util.Arrays.asList; import com.google.protobuf.ByteString; +import io.cloudquery.scalar.ValidationException; import io.cloudquery.schema.Column; import io.cloudquery.schema.Resource; import io.cloudquery.schema.Table; @@ -221,14 +222,12 @@ public static Table fromArrowSchema(Schema schema) { String constraintName = metaData.get(CQ_EXTENSION_CONSTRAINT_NAME); TableBuilder tableBuilder = - Table.builder().name(name).constraintName(constraintName).columns(columns); - - if (title != null) { - tableBuilder.title(title); - } - if (description != null) { - tableBuilder.description(description); - } + Table.builder() + .name(name) + .constraintName(constraintName) + .columns(columns) + .title(title) + .description(description); if (parent != null) { tableBuilder.parent(Table.builder().name(parent).build()); } @@ -260,4 +259,23 @@ public static ByteString encode(Resource resource) throws IOException { } } } + + public static Resource decodeResource(ByteString byteString) + throws IOException, ValidationException { + try (BufferAllocator bufferAllocator = new RootAllocator()) { + try (ArrowStreamReader reader = + new ArrowStreamReader(byteString.newInput(), bufferAllocator)) { + VectorSchemaRoot vectorSchemaRoot = reader.getVectorSchemaRoot(); + reader.loadNextBatch(); + Resource resource = + Resource.builder().table(fromArrowSchema(vectorSchemaRoot.getSchema())).build(); + for (int i = 0; i < vectorSchemaRoot.getSchema().getFields().size(); i++) { + FieldVector vector = vectorSchemaRoot.getVector(i); + // TODO: We currently only support a single row + resource.set(vector.getName(), vector.getObject(0)); + } + return resource; + } + } + } } diff --git a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java index 43cb1a7..dff65f1 100644 --- a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java +++ b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java @@ -2,6 +2,8 @@ import com.google.protobuf.ByteString; import io.cloudquery.helper.ArrowHelper; +import io.cloudquery.messages.WriteInsert; +import io.cloudquery.messages.WriteMessage; import io.cloudquery.messages.WriteMigrateTable; import io.cloudquery.plugin.BackendOptions; import io.cloudquery.plugin.NewClientOptions; @@ -9,6 +11,7 @@ import io.cloudquery.plugin.v3.PluginGrpc.PluginImplBase; import io.cloudquery.plugin.v3.Write; import io.cloudquery.plugin.v3.Write.MessageMigrateTable; +import io.cloudquery.scalar.ValidationException; import io.cloudquery.schema.Table; import io.grpc.stub.StreamObserver; import java.io.IOException; @@ -120,8 +123,10 @@ public void onNext(Write.Request request) { try { if (messageCase == Write.Request.MessageCase.MIGRATE_TABLE) { plugin.write(processMigrateTableRequest(request)); + } else if (messageCase == Write.Request.MessageCase.INSERT) { + plugin.write(processInsertRequest(request)); } - } catch (IOException ex) { + } catch (IOException | ValidationException ex) { onError(ex); } } @@ -154,4 +159,11 @@ private WriteMigrateTable processMigrateTableRequest(Write.Request request) thro boolean migrateForce = request.getMigrateTable().getMigrateForce(); return new WriteMigrateTable(ArrowHelper.decode(byteString), migrateForce); } + + private WriteMessage processInsertRequest(Write.Request request) + throws IOException, ValidationException { + Write.MessageInsert insert = request.getInsert(); + ByteString record = insert.getRecord(); + return new WriteInsert(ArrowHelper.decodeResource(record)); + } } diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java b/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java index f5e5283..064852e 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java @@ -1,8 +1,10 @@ package io.cloudquery.memdb; +import io.cloudquery.messages.WriteInsert; import io.cloudquery.messages.WriteMessage; import io.cloudquery.messages.WriteMigrateTable; import io.cloudquery.schema.ClientMeta; +import io.cloudquery.schema.Resource; import io.cloudquery.schema.Table; import io.cloudquery.schema.TableColumnChange; import java.util.ArrayList; @@ -10,14 +12,13 @@ import java.util.List; import java.util.Map; import java.util.concurrent.locks.ReentrantReadWriteLock; -import org.apache.arrow.vector.VectorSchemaRoot; public class MemDBClient implements ClientMeta { private static final String id = "memdb"; private ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); private Map tables = new HashMap<>(); - private Map> memDB = new HashMap<>(); + private Map> memDB = new HashMap<>(); public MemDBClient() {} @@ -28,34 +29,69 @@ public String getId() { @Override public void write(WriteMessage message) { - if (message instanceof WriteMigrateTable migrateTable) { - migrate(migrateTable); + lock.writeLock().lock(); + try { + if (message instanceof WriteMigrateTable migrateTable) { + migrate(migrateTable); + } + if (message instanceof WriteInsert insert) { + insert(insert); + } + } finally { + lock.writeLock().unlock(); } } - public void close() { - // do nothing + private void insert(WriteInsert insert) { + String tableName = insert.getResource().getTable().getName(); + Table table = tables.get(tableName); + overwrite(table, insert.getResource()); } - private void migrate(WriteMigrateTable migrateTable) { - lock.writeLock().lock(); - try { - Table table = migrateTable.getTable(); - String tableName = table.getName(); - if (!memDB.containsKey(tableName)) { - memDB.put(tableName, new ArrayList<>()); - tables.put(tableName, table); - return; - } + private void overwrite(Table table, Resource resource) { + String tableName = table.getName(); + List pkIndexes = table.primaryKeyIndexes(); + if (pkIndexes.isEmpty()) { + memDB.get(tableName).add(resource); + return; + } - List changes = table.getChanges(tables.get(tableName)); - if (changes.isEmpty()) { + for (int i = 0; i < memDB.get(tableName).size(); i++) { + boolean found = true; + for (int pkIndex : pkIndexes) { + String s1 = resource.getTable().getColumns().get(pkIndex).getName(); + String s2 = memDB.get(tableName).get(i).getTable().getColumns().get(pkIndex).getName(); + if (!s1.equals(s2)) { + found = false; + } + } + if (found) { + memDB.get(tableName).remove(i); + memDB.get(tableName).add(resource); return; } + } + memDB.get(tableName).add(resource); + } + + public void close() { + // do nothing + } + + private void migrate(WriteMigrateTable migrateTable) { + Table table = migrateTable.getTable(); + String tableName = table.getName(); + if (!memDB.containsKey(tableName)) { memDB.put(tableName, new ArrayList<>()); tables.put(tableName, table); - } finally { - lock.writeLock().unlock(); + return; + } + + List changes = table.getChanges(tables.get(tableName)); + if (changes.isEmpty()) { + return; } + memDB.put(tableName, new ArrayList<>()); + tables.put(tableName, table); } } diff --git a/lib/src/main/java/io/cloudquery/messages/WriteInsert.java b/lib/src/main/java/io/cloudquery/messages/WriteInsert.java new file mode 100644 index 0000000..58ed31a --- /dev/null +++ b/lib/src/main/java/io/cloudquery/messages/WriteInsert.java @@ -0,0 +1,11 @@ +package io.cloudquery.messages; + +import io.cloudquery.schema.Resource; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public class WriteInsert extends WriteMessage { + private Resource resource; +} diff --git a/lib/src/main/java/io/cloudquery/scalar/Scalar.java b/lib/src/main/java/io/cloudquery/scalar/Scalar.java index c996079..c2680fd 100644 --- a/lib/src/main/java/io/cloudquery/scalar/Scalar.java +++ b/lib/src/main/java/io/cloudquery/scalar/Scalar.java @@ -105,6 +105,9 @@ public static Scalar fromArrowType(ArrowType arrowType) { case Duration -> { return new Duration(); } + case List -> { + return new JSON(); + } } if (arrowType instanceof ArrowType.ExtensionType extensionType) { diff --git a/lib/src/main/java/io/cloudquery/schema/Table.java b/lib/src/main/java/io/cloudquery/schema/Table.java index 6700784..7ee9185 100644 --- a/lib/src/main/java/io/cloudquery/schema/Table.java +++ b/lib/src/main/java/io/cloudquery/schema/Table.java @@ -3,6 +3,7 @@ import static io.cloudquery.schema.TableColumnChangeType.ADD; import static io.cloudquery.schema.TableColumnChangeType.REMOVE; import static io.cloudquery.schema.TableColumnChangeType.UPDATE; +import static java.util.stream.Collectors.toList; import io.cloudquery.glob.Glob; import io.cloudquery.schema.Column.ColumnBuilder; @@ -14,6 +15,7 @@ import java.util.Map; import java.util.Optional; import java.util.function.Predicate; +import java.util.stream.IntStream; import lombok.Builder; import lombok.Getter; import lombok.NonNull; @@ -173,6 +175,13 @@ public List primaryKeys() { return columns.stream().filter(Column::isPrimaryKey).map(Column::getName).toList(); } + public List primaryKeyIndexes() { + return IntStream.range(0, columns.size()) + .filter(i -> columns.get(i).isPrimaryKey()) + .boxed() + .collect(toList()); + } + private Optional
filterDfs( boolean parentMatched, Predicate
include, diff --git a/lib/src/main/java/io/cloudquery/server/PluginServe.java b/lib/src/main/java/io/cloudquery/server/PluginServe.java index 3698af6..f308d92 100644 --- a/lib/src/main/java/io/cloudquery/server/PluginServe.java +++ b/lib/src/main/java/io/cloudquery/server/PluginServe.java @@ -1,6 +1,7 @@ package io.cloudquery.server; import io.cloudquery.plugin.Plugin; +import io.cloudquery.types.Extensions; import lombok.AccessLevel; import lombok.Builder; import lombok.NonNull; @@ -12,6 +13,7 @@ public class PluginServe { @Builder.Default private String[] args = new String[] {}; public int Serve() { + Extensions.registerExtensions(); return new CommandLine(new RootCommand()).addSubcommand(new ServeCommand(plugin)).execute(args); } } diff --git a/lib/src/main/java/io/cloudquery/types/Extensions.java b/lib/src/main/java/io/cloudquery/types/Extensions.java new file mode 100644 index 0000000..2c4c560 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/types/Extensions.java @@ -0,0 +1,12 @@ +package io.cloudquery.types; + +import org.apache.arrow.vector.types.pojo.ExtensionTypeRegistry; + +public class Extensions { + public static void registerExtensions() { + ExtensionTypeRegistry.register(new UUIDType()); + ExtensionTypeRegistry.register(new JSONType()); + } + + private Extensions() {} +} diff --git a/lib/src/main/java/io/cloudquery/types/UUIDType.java b/lib/src/main/java/io/cloudquery/types/UUIDType.java index 6f7350d..cdc6b69 100644 --- a/lib/src/main/java/io/cloudquery/types/UUIDType.java +++ b/lib/src/main/java/io/cloudquery/types/UUIDType.java @@ -1,7 +1,5 @@ package io.cloudquery.types; -import static org.apache.arrow.vector.types.pojo.ArrowType.ExtensionType; - import java.nio.ByteBuffer; import java.util.UUID; import org.apache.arrow.memory.BufferAllocator; @@ -61,6 +59,9 @@ public UUIDVector(String name, BufferAllocator allocator, FixedSizeBinaryVector @Override public Object getObject(int index) { + if (getUnderlyingVector().isSet(index) == 0) { + return null; + } final ByteBuffer bb = ByteBuffer.wrap(getUnderlyingVector().getObject(index)); return new UUID(bb.getLong(), bb.getLong()); } diff --git a/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java b/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java index fdaad00..d42fef0 100644 --- a/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java +++ b/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java @@ -3,12 +3,18 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.verify; +import com.google.protobuf.ByteString; import io.cloudquery.helper.ArrowHelper; +import io.cloudquery.messages.WriteInsert; import io.cloudquery.messages.WriteMigrateTable; import io.cloudquery.plugin.Plugin; import io.cloudquery.plugin.v3.PluginGrpc; import io.cloudquery.plugin.v3.PluginGrpc.PluginStub; import io.cloudquery.plugin.v3.Write; +import io.cloudquery.plugin.v3.Write.MessageInsert; +import io.cloudquery.scalar.ValidationException; +import io.cloudquery.schema.Column; +import io.cloudquery.schema.Resource; import io.cloudquery.schema.Table; import io.grpc.Server; import io.grpc.inprocess.InProcessChannelBuilder; @@ -16,7 +22,9 @@ import io.grpc.stub.StreamObserver; import io.grpc.testing.GrpcCleanupRule; import java.io.IOException; +import java.util.List; import java.util.concurrent.CountDownLatch; +import org.apache.arrow.vector.types.pojo.ArrowType; import org.junit.Rule; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -47,7 +55,7 @@ public void setUp() throws IOException { } @Test - public void shouldSendWriteMigrateTableMessage() throws IOException, InterruptedException { + public void shouldSendWriteMigrateTableMessage() throws Exception { NullResponseStream responseObserver = new NullResponseStream<>(); StreamObserver writeService = pluginStub.write(responseObserver); @@ -58,6 +66,18 @@ public void shouldSendWriteMigrateTableMessage() throws IOException, Interrupted verify(plugin).write(any(WriteMigrateTable.class)); } + @Test + public void shouldSendWriteInsertMessage() throws Exception { + NullResponseStream responseObserver = new NullResponseStream<>(); + + StreamObserver writeService = pluginStub.write(responseObserver); + writeService.onNext(generateInsertMessage()); + writeService.onCompleted(); + responseObserver.await(); + + verify(plugin).write(any(WriteInsert.class)); + } + private static Write.Request generateMigrateTableMessage() throws IOException { Table table = Table.builder().name("test").build(); return Write.Request.newBuilder() @@ -66,6 +86,16 @@ private static Write.Request generateMigrateTableMessage() throws IOException { .build(); } + private Write.Request generateInsertMessage() throws IOException, ValidationException { + Column column = Column.builder().name("test_column").type(ArrowType.Utf8.INSTANCE).build(); + Table table = Table.builder().name("test").columns(List.of(column)).build(); + Resource resource = Resource.builder().table(table).build(); + resource.set("test_column", "test_data"); + ByteString byteString = ArrowHelper.encode(resource); + MessageInsert messageInsert = MessageInsert.newBuilder().setRecord(byteString).build(); + return Write.Request.newBuilder().setInsert(messageInsert).build(); + } + private static class NullResponseStream implements StreamObserver { private final CountDownLatch countDownLatch = new CountDownLatch(1); From 9d7f1bd1bfee2ba3fa3fb25baf519a77d0961f44 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Thu, 24 Aug 2023 11:02:10 +0200 Subject: [PATCH 019/376] feat: Resolve CQId, add CQIds to MemDB plugin (#95) Fixes https://github.com/cloudquery/plugin-sdk-java/issues/92 --- .../io/cloudquery/helper/ArrowHelper.java | 4 ++ .../main/java/io/cloudquery/memdb/MemDB.java | 5 +- .../io/cloudquery/scheduler/Scheduler.java | 1 + .../java/io/cloudquery/schema/Resource.java | 47 +++++++++++++++++++ .../io/cloudquery/schema/ResourceTest.java | 42 +++++++++++++++++ 5 files changed, 98 insertions(+), 1 deletion(-) diff --git a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java index 4f0d882..7fef20c 100644 --- a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java +++ b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java @@ -59,6 +59,10 @@ public class ArrowHelper { private static void setVectorData(FieldVector vector, Object data) { vector.allocateNew(); + if (data == null) { + vector.setNull(0); + return; + } if (vector instanceof BigIntVector bigIntVector) { bigIntVector.set(0, (long) data); return; diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDB.java b/lib/src/main/java/io/cloudquery/memdb/MemDB.java index cd53cf2..26a100e 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDB.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDB.java @@ -142,7 +142,10 @@ public void close() { public ClientMeta newClient(String spec, NewClientOptions options) throws Exception { this.spec = Spec.fromJSON(spec); this.allTables = getTables(); - Tables.transformTables(allTables); + Tables.transformTables(this.allTables); + for (Table table : this.allTables) { + table.addCQIDs(); + } return new MemDBClient(); } } diff --git a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java index ba734f7..11c0574 100644 --- a/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java +++ b/lib/src/main/java/io/cloudquery/scheduler/Scheduler.java @@ -54,6 +54,7 @@ public void run() { table.getResolver().get().resolve(client, parent, schedulerTableOutputStream); for (Resource resource : schedulerTableOutputStream.getResources()) { + resource.resolveCQId(deterministicCqId); ByteString record = resource.encode(); Sync.MessageInsert insert = Sync.MessageInsert.newBuilder().setRecord(record).build(); diff --git a/lib/src/main/java/io/cloudquery/schema/Resource.java b/lib/src/main/java/io/cloudquery/schema/Resource.java index e2b6c2a..66e532d 100644 --- a/lib/src/main/java/io/cloudquery/schema/Resource.java +++ b/lib/src/main/java/io/cloudquery/schema/Resource.java @@ -1,12 +1,19 @@ package io.cloudquery.schema; +import com.google.common.base.Objects; import com.google.protobuf.ByteString; import io.cloudquery.helper.ArrowHelper; import io.cloudquery.scalar.Scalar; import io.cloudquery.scalar.ValidationException; import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.UUID; import lombok.Builder; import lombok.Getter; import lombok.NonNull; @@ -44,4 +51,44 @@ public Scalar get(String columnName) { public ByteString encode() throws IOException { return ArrowHelper.encode(this); } + + public void setCqId(UUID value) throws ValidationException { + int index = table.indexOfColumn(Column.CQ_ID_COLUMN.getName()); + if (index == -1) { + return; + } + this.data.get(index).set(value); + } + + public void resolveCQId(boolean deterministicCqId) + throws ValidationException, NoSuchAlgorithmException { + UUID randomUUID = UUID.randomUUID(); + if (!deterministicCqId) { + this.setCqId(randomUUID); + return; + } + + // Use an array list to support sorting + ArrayList pks = new ArrayList<>(this.table.primaryKeys()); + boolean cqOnlyPK = + pks.stream().allMatch((pk) -> Objects.equal(pk, Column.CQ_ID_COLUMN.getName())); + if (cqOnlyPK) { + this.setCqId(randomUUID); + return; + } + + Collections.sort(pks); + // Generate uuid v5 (same as sha-1) + MessageDigest digest = MessageDigest.getInstance("SHA-1"); + for (String pk : pks) { + digest.update(pk.getBytes(StandardCharsets.UTF_8)); + digest.update(this.get(pk).toString().getBytes(StandardCharsets.UTF_8)); + } + + ByteBuffer byteBuffer = ByteBuffer.wrap(digest.digest()); + long mostSig = byteBuffer.getLong(); + long leastSig = byteBuffer.getLong(); + this.setCqId(new UUID(mostSig, leastSig)); + return; + } } diff --git a/lib/src/test/java/io/cloudquery/schema/ResourceTest.java b/lib/src/test/java/io/cloudquery/schema/ResourceTest.java index ae388ef..ff5c983 100644 --- a/lib/src/test/java/io/cloudquery/schema/ResourceTest.java +++ b/lib/src/test/java/io/cloudquery/schema/ResourceTest.java @@ -1,11 +1,15 @@ package io.cloudquery.schema; +import static org.junit.Assert.assertNotNull; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertInstanceOf; import io.cloudquery.scalar.ValidationException; import io.cloudquery.types.UUIDType; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.UUID; import org.apache.arrow.vector.types.pojo.ArrowType; @@ -41,4 +45,42 @@ public void shouldSetAndGetDataTypes() throws ValidationException { resource.set(column1.getName(), UUID); assertEquals(UUID, resource.get(column1.getName()).get()); } + + @Test + public void shouldResolveRandomCQId() throws ValidationException, NoSuchAlgorithmException { + Table table = Table.builder().name("test").build(); + table.addCQIDs(); + + Resource resource = Resource.builder().table(table).build(); + resource.resolveCQId(false); + + assertNotNull(resource.get(Column.CQ_ID_COLUMN.getName()).get()); + assertEquals( + UUID.getClass().getName(), + resource.get(Column.CQ_ID_COLUMN.getName()).get().getClass().getName()); + } + + @Test + public void shouldResolveDeterministicCqId() + throws ValidationException, NoSuchAlgorithmException { + Column column1 = + Column.builder().name("name").primaryKey(true).type(ArrowType.Utf8.INSTANCE).build(); + Column column2 = + Column.builder().primaryKey(true).name("id").type(new ArrowType.Int(64, true)).build(); + Table table = + Table.builder() + .name("test") + .columns(new ArrayList(Arrays.asList(column1, column2))) + .build(); + table.addCQIDs(); + + Resource resource = Resource.builder().table(table).build(); + resource.set(column1.getName(), "test"); + resource.set(column2.getName(), 1000); + resource.resolveCQId(true); + + assertEquals( + "a63a6152-e1d8-470f-f118-e5fa4874cb2d", + resource.get(Column.CQ_ID_COLUMN.getName()).toString()); + } } From c20589b83ec55c5f7dab5600ab6c02a5153db428 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 24 Aug 2023 12:09:18 +0300 Subject: [PATCH 020/376] chore(main): Release v0.0.1 (#16) :robot: I have created a release *beep* *boop* --- ## 0.0.1 (2023-08-24) ### Features * `io.cloudquery.scalar.Binary` implementation ([#20](https://github.com/cloudquery/plugin-sdk-java/issues/20)) ([b9b73d1](https://github.com/cloudquery/plugin-sdk-java/commit/b9b73d1d577d8daddb0b705bb53c5827df0ac7b7)) * `io.cloudquery.scalar.Bool` ([#27](https://github.com/cloudquery/plugin-sdk-java/issues/27)) ([2a91c92](https://github.com/cloudquery/plugin-sdk-java/commit/2a91c92bcf74057bca0877f1ba7c5538ba7c4f5a)), closes [#26](https://github.com/cloudquery/plugin-sdk-java/issues/26) * adding basic support for tables ([#19](https://github.com/cloudquery/plugin-sdk-java/issues/19)) ([22b2350](https://github.com/cloudquery/plugin-sdk-java/commit/22b235093539f77d3591a7edccdbf22f7335ad6b)) * adding JSON scalar ([#82](https://github.com/cloudquery/plugin-sdk-java/issues/82)) ([fc92542](https://github.com/cloudquery/plugin-sdk-java/commit/fc92542cb402d1ac0241aa781847eb8f2d211f87)), closes [#63](https://github.com/cloudquery/plugin-sdk-java/issues/63) * adding Table filterDFS functionaility ([#21](https://github.com/cloudquery/plugin-sdk-java/issues/21)) ([02d8515](https://github.com/cloudquery/plugin-sdk-java/commit/02d85152da9731f021d58abf5f6575f87374e7f6)) * Date scalars ([#36](https://github.com/cloudquery/plugin-sdk-java/issues/36)) ([adc6ba2](https://github.com/cloudquery/plugin-sdk-java/commit/adc6ba2c76bd257cda99b0e0e7c2e17c95e1968e)), closes [#34](https://github.com/cloudquery/plugin-sdk-java/issues/34) * Duration scalar ([#42](https://github.com/cloudquery/plugin-sdk-java/issues/42)) ([7529438](https://github.com/cloudquery/plugin-sdk-java/commit/7529438472b2a537940c68276fcd3f2348710f85)), closes [#39](https://github.com/cloudquery/plugin-sdk-java/issues/39) * Encode resources with data ([#88](https://github.com/cloudquery/plugin-sdk-java/issues/88)) ([2c7060f](https://github.com/cloudquery/plugin-sdk-java/commit/2c7060f9d75d0159334b57256a86778499303743)) * Generics in scalars ([#56](https://github.com/cloudquery/plugin-sdk-java/issues/56)) ([bc7d6e3](https://github.com/cloudquery/plugin-sdk-java/commit/bc7d6e390c89c46c544514f27168c057806797f9)) * Implement `getTables` ([#71](https://github.com/cloudquery/plugin-sdk-java/issues/71)) ([085c51f](https://github.com/cloudquery/plugin-sdk-java/commit/085c51f4792a24a121079073cfeaf984f422a681)) * Implement concurrency and relations resolving ([#91](https://github.com/cloudquery/plugin-sdk-java/issues/91)) ([0a470b7](https://github.com/cloudquery/plugin-sdk-java/commit/0a470b7277fb2aed0c306022e6a11f45147cb5c6)) * Init logger, add initial MemDB plugin ([#70](https://github.com/cloudquery/plugin-sdk-java/issues/70)) ([20ebb42](https://github.com/cloudquery/plugin-sdk-java/commit/20ebb422ccf2a56a02a90d50d7f03d131ff99d01)) * int/uint/float/string scalars ([#59](https://github.com/cloudquery/plugin-sdk-java/issues/59)) ([39ec6e6](https://github.com/cloudquery/plugin-sdk-java/commit/39ec6e69383629b1bd9ec80274bd05f271afb99e)), closes [#53](https://github.com/cloudquery/plugin-sdk-java/issues/53) [#54](https://github.com/cloudquery/plugin-sdk-java/issues/54) [#58](https://github.com/cloudquery/plugin-sdk-java/issues/58) [#60](https://github.com/cloudquery/plugin-sdk-java/issues/60) * Resolve CQId, add CQIds to MemDB plugin ([#95](https://github.com/cloudquery/plugin-sdk-java/issues/95)) ([9d7f1bd](https://github.com/cloudquery/plugin-sdk-java/commit/9d7f1bd1bfee2ba3fa3fb25baf519a77d0961f44)) * Scalar Timestamp ([#46](https://github.com/cloudquery/plugin-sdk-java/issues/46)) ([4220e92](https://github.com/cloudquery/plugin-sdk-java/commit/4220e9295b9def7ffd8154a3706ae152c12427a7)), closes [#44](https://github.com/cloudquery/plugin-sdk-java/issues/44) * **sync:** Initial insert message support ([#81](https://github.com/cloudquery/plugin-sdk-java/issues/81)) ([bd729bb](https://github.com/cloudquery/plugin-sdk-java/commit/bd729bbb7c18a9767f238027d38cc76f956c9eec)) * **sync:** Send migrate messages ([#79](https://github.com/cloudquery/plugin-sdk-java/issues/79)) ([dd2c1a5](https://github.com/cloudquery/plugin-sdk-java/commit/dd2c1a5c590b8d828f12d3b95d6b58b2ef095bef)) ### Bug Fixes * Add `jackson-annotations` to `build.gradle` ([#83](https://github.com/cloudquery/plugin-sdk-java/issues/83)) ([ead7dd9](https://github.com/cloudquery/plugin-sdk-java/commit/ead7dd90e52f4b6277d1e4c1410aeab331451f96)) * **deps:** Update dependency com.google.guava:guava to v32 ([#15](https://github.com/cloudquery/plugin-sdk-java/issues/15)) ([ce8028b](https://github.com/cloudquery/plugin-sdk-java/commit/ce8028b72d3e0d6dcf1733481d3115c6c6cf0b54)) * **deps:** Update dependency io.grpc:grpc-protobuf to v1.57.1 ([#10](https://github.com/cloudquery/plugin-sdk-java/issues/10)) ([bcfa29c](https://github.com/cloudquery/plugin-sdk-java/commit/bcfa29c0161030b8c01da8e22ab2ba08fee76d52)) * **deps:** Update dependency io.grpc:grpc-services to v1.57.1 ([#11](https://github.com/cloudquery/plugin-sdk-java/issues/11)) ([71c2ea1](https://github.com/cloudquery/plugin-sdk-java/commit/71c2ea1e97d9749731e90cec726cd2389c5606b2)) * **deps:** Update dependency io.grpc:grpc-stub to v1.57.1 ([#12](https://github.com/cloudquery/plugin-sdk-java/issues/12)) ([c65e5d6](https://github.com/cloudquery/plugin-sdk-java/commit/c65e5d631962572b5d85a3dbb001af502ef9d7e7)) * **deps:** Update dependency io.grpc:grpc-testing to v1.57.1 ([#13](https://github.com/cloudquery/plugin-sdk-java/issues/13)) ([a7b1fa6](https://github.com/cloudquery/plugin-sdk-java/commit/a7b1fa65d901237319ff045623fc46ec9725a485)) * **deps:** Update plugin org.gradle.toolchains.foojay-resolver-convention to v0.6.0 ([#14](https://github.com/cloudquery/plugin-sdk-java/issues/14)) ([443990c](https://github.com/cloudquery/plugin-sdk-java/commit/443990c7b46be5cf00bd4b65d5f545b6b441c9ec)) * Flatten tables in getTables gRPC call ([#80](https://github.com/cloudquery/plugin-sdk-java/issues/80)) ([8c9872a](https://github.com/cloudquery/plugin-sdk-java/commit/8c9872a463b689b9ddb57c520bdee488ce7fdf72)) * Pass options to tables method ([#78](https://github.com/cloudquery/plugin-sdk-java/issues/78)) ([4b77a2f](https://github.com/cloudquery/plugin-sdk-java/commit/4b77a2fd29da9b81346303588f741b42a828e988)) ### Miscellaneous Chores * Release 0.0.1 ([e169dbc](https://github.com/cloudquery/plugin-sdk-java/commit/e169dbcd0745390a27778da4ae1789ef0649da5d)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..2075165 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + +## 0.0.1 (2023-08-24) + + +### Features + +* `io.cloudquery.scalar.Binary` implementation ([#20](https://github.com/cloudquery/plugin-sdk-java/issues/20)) ([b9b73d1](https://github.com/cloudquery/plugin-sdk-java/commit/b9b73d1d577d8daddb0b705bb53c5827df0ac7b7)) +* `io.cloudquery.scalar.Bool` ([#27](https://github.com/cloudquery/plugin-sdk-java/issues/27)) ([2a91c92](https://github.com/cloudquery/plugin-sdk-java/commit/2a91c92bcf74057bca0877f1ba7c5538ba7c4f5a)), closes [#26](https://github.com/cloudquery/plugin-sdk-java/issues/26) +* adding basic support for tables ([#19](https://github.com/cloudquery/plugin-sdk-java/issues/19)) ([22b2350](https://github.com/cloudquery/plugin-sdk-java/commit/22b235093539f77d3591a7edccdbf22f7335ad6b)) +* adding JSON scalar ([#82](https://github.com/cloudquery/plugin-sdk-java/issues/82)) ([fc92542](https://github.com/cloudquery/plugin-sdk-java/commit/fc92542cb402d1ac0241aa781847eb8f2d211f87)), closes [#63](https://github.com/cloudquery/plugin-sdk-java/issues/63) +* adding Table filterDFS functionaility ([#21](https://github.com/cloudquery/plugin-sdk-java/issues/21)) ([02d8515](https://github.com/cloudquery/plugin-sdk-java/commit/02d85152da9731f021d58abf5f6575f87374e7f6)) +* Date scalars ([#36](https://github.com/cloudquery/plugin-sdk-java/issues/36)) ([adc6ba2](https://github.com/cloudquery/plugin-sdk-java/commit/adc6ba2c76bd257cda99b0e0e7c2e17c95e1968e)), closes [#34](https://github.com/cloudquery/plugin-sdk-java/issues/34) +* Duration scalar ([#42](https://github.com/cloudquery/plugin-sdk-java/issues/42)) ([7529438](https://github.com/cloudquery/plugin-sdk-java/commit/7529438472b2a537940c68276fcd3f2348710f85)), closes [#39](https://github.com/cloudquery/plugin-sdk-java/issues/39) +* Encode resources with data ([#88](https://github.com/cloudquery/plugin-sdk-java/issues/88)) ([2c7060f](https://github.com/cloudquery/plugin-sdk-java/commit/2c7060f9d75d0159334b57256a86778499303743)) +* Generics in scalars ([#56](https://github.com/cloudquery/plugin-sdk-java/issues/56)) ([bc7d6e3](https://github.com/cloudquery/plugin-sdk-java/commit/bc7d6e390c89c46c544514f27168c057806797f9)) +* Implement `getTables` ([#71](https://github.com/cloudquery/plugin-sdk-java/issues/71)) ([085c51f](https://github.com/cloudquery/plugin-sdk-java/commit/085c51f4792a24a121079073cfeaf984f422a681)) +* Implement concurrency and relations resolving ([#91](https://github.com/cloudquery/plugin-sdk-java/issues/91)) ([0a470b7](https://github.com/cloudquery/plugin-sdk-java/commit/0a470b7277fb2aed0c306022e6a11f45147cb5c6)) +* Init logger, add initial MemDB plugin ([#70](https://github.com/cloudquery/plugin-sdk-java/issues/70)) ([20ebb42](https://github.com/cloudquery/plugin-sdk-java/commit/20ebb422ccf2a56a02a90d50d7f03d131ff99d01)) +* int/uint/float/string scalars ([#59](https://github.com/cloudquery/plugin-sdk-java/issues/59)) ([39ec6e6](https://github.com/cloudquery/plugin-sdk-java/commit/39ec6e69383629b1bd9ec80274bd05f271afb99e)), closes [#53](https://github.com/cloudquery/plugin-sdk-java/issues/53) [#54](https://github.com/cloudquery/plugin-sdk-java/issues/54) [#58](https://github.com/cloudquery/plugin-sdk-java/issues/58) [#60](https://github.com/cloudquery/plugin-sdk-java/issues/60) +* Resolve CQId, add CQIds to MemDB plugin ([#95](https://github.com/cloudquery/plugin-sdk-java/issues/95)) ([9d7f1bd](https://github.com/cloudquery/plugin-sdk-java/commit/9d7f1bd1bfee2ba3fa3fb25baf519a77d0961f44)) +* Scalar Timestamp ([#46](https://github.com/cloudquery/plugin-sdk-java/issues/46)) ([4220e92](https://github.com/cloudquery/plugin-sdk-java/commit/4220e9295b9def7ffd8154a3706ae152c12427a7)), closes [#44](https://github.com/cloudquery/plugin-sdk-java/issues/44) +* **sync:** Initial insert message support ([#81](https://github.com/cloudquery/plugin-sdk-java/issues/81)) ([bd729bb](https://github.com/cloudquery/plugin-sdk-java/commit/bd729bbb7c18a9767f238027d38cc76f956c9eec)) +* **sync:** Send migrate messages ([#79](https://github.com/cloudquery/plugin-sdk-java/issues/79)) ([dd2c1a5](https://github.com/cloudquery/plugin-sdk-java/commit/dd2c1a5c590b8d828f12d3b95d6b58b2ef095bef)) + + +### Bug Fixes + +* Add `jackson-annotations` to `build.gradle` ([#83](https://github.com/cloudquery/plugin-sdk-java/issues/83)) ([ead7dd9](https://github.com/cloudquery/plugin-sdk-java/commit/ead7dd90e52f4b6277d1e4c1410aeab331451f96)) +* **deps:** Update dependency com.google.guava:guava to v32 ([#15](https://github.com/cloudquery/plugin-sdk-java/issues/15)) ([ce8028b](https://github.com/cloudquery/plugin-sdk-java/commit/ce8028b72d3e0d6dcf1733481d3115c6c6cf0b54)) +* **deps:** Update dependency io.grpc:grpc-protobuf to v1.57.1 ([#10](https://github.com/cloudquery/plugin-sdk-java/issues/10)) ([bcfa29c](https://github.com/cloudquery/plugin-sdk-java/commit/bcfa29c0161030b8c01da8e22ab2ba08fee76d52)) +* **deps:** Update dependency io.grpc:grpc-services to v1.57.1 ([#11](https://github.com/cloudquery/plugin-sdk-java/issues/11)) ([71c2ea1](https://github.com/cloudquery/plugin-sdk-java/commit/71c2ea1e97d9749731e90cec726cd2389c5606b2)) +* **deps:** Update dependency io.grpc:grpc-stub to v1.57.1 ([#12](https://github.com/cloudquery/plugin-sdk-java/issues/12)) ([c65e5d6](https://github.com/cloudquery/plugin-sdk-java/commit/c65e5d631962572b5d85a3dbb001af502ef9d7e7)) +* **deps:** Update dependency io.grpc:grpc-testing to v1.57.1 ([#13](https://github.com/cloudquery/plugin-sdk-java/issues/13)) ([a7b1fa6](https://github.com/cloudquery/plugin-sdk-java/commit/a7b1fa65d901237319ff045623fc46ec9725a485)) +* **deps:** Update plugin org.gradle.toolchains.foojay-resolver-convention to v0.6.0 ([#14](https://github.com/cloudquery/plugin-sdk-java/issues/14)) ([443990c](https://github.com/cloudquery/plugin-sdk-java/commit/443990c7b46be5cf00bd4b65d5f545b6b441c9ec)) +* Flatten tables in getTables gRPC call ([#80](https://github.com/cloudquery/plugin-sdk-java/issues/80)) ([8c9872a](https://github.com/cloudquery/plugin-sdk-java/commit/8c9872a463b689b9ddb57c520bdee488ce7fdf72)) +* Pass options to tables method ([#78](https://github.com/cloudquery/plugin-sdk-java/issues/78)) ([4b77a2f](https://github.com/cloudquery/plugin-sdk-java/commit/4b77a2fd29da9b81346303588f741b42a828e988)) + + +### Miscellaneous Chores + +* Release 0.0.1 ([e169dbc](https://github.com/cloudquery/plugin-sdk-java/commit/e169dbcd0745390a27778da4ae1789ef0649da5d)) From 274339d74c3b9928ddbf1efd0429d425ae1ad268 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Thu, 24 Aug 2023 11:43:06 +0200 Subject: [PATCH 021/376] fix: Package group (#96) --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 4cd2306..1fc48ab 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -9,7 +9,7 @@ ext { javaMainClass = "io.cloudquery.MainClass" } -group 'io.cloudquery' +group 'io.cloudquery.plugin.sdk' // x-release-please-start-version version = '0.0.1' // x-release-please-end From 464cca8f5ef3bce0e328a2720db1f3ee831f7109 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 24 Aug 2023 12:45:11 +0300 Subject: [PATCH 022/376] chore(main): Release v0.0.2 (#97) :robot: I have created a release *beep* *boop* --- ## [0.0.2](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.1...v0.0.2) (2023-08-24) ### Bug Fixes * Package group ([#96](https://github.com/cloudquery/plugin-sdk-java/issues/96)) ([274339d](https://github.com/cloudquery/plugin-sdk-java/commit/274339d74c3b9928ddbf1efd0429d425ae1ad268)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2075165..768ceec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.2](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.1...v0.0.2) (2023-08-24) + + +### Bug Fixes + +* Package group ([#96](https://github.com/cloudquery/plugin-sdk-java/issues/96)) ([274339d](https://github.com/cloudquery/plugin-sdk-java/commit/274339d74c3b9928ddbf1efd0429d425ae1ad268)) + ## 0.0.1 (2023-08-24) diff --git a/lib/build.gradle b/lib/build.gradle index 1fc48ab..37ec32b 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.1' +version = '0.0.2' // x-release-please-end repositories { From 8b1bb1b597af67bcece71dd6b0a1bba5f13908ee Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Thu, 24 Aug 2023 11:42:37 +0100 Subject: [PATCH 023/376] chore: adding write delete stale logic (#98) fixes: #94 --- .../servers/plugin/v3/PluginServer.java | 15 ++++++ .../java/io/cloudquery/memdb/MemDBClient.java | 49 +++++++++++++++++-- .../cloudquery/messages/WriteDeleteStale.java | 13 +++++ .../java/io/cloudquery/schema/Column.java | 2 + .../servers/plugin/v3/PluginServerTest.java | 18 +++++++ 5 files changed, 94 insertions(+), 3 deletions(-) create mode 100644 lib/src/main/java/io/cloudquery/messages/WriteDeleteStale.java diff --git a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java index dff65f1..56ee04d 100644 --- a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java +++ b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java @@ -2,6 +2,7 @@ import com.google.protobuf.ByteString; import io.cloudquery.helper.ArrowHelper; +import io.cloudquery.messages.WriteDeleteStale; import io.cloudquery.messages.WriteInsert; import io.cloudquery.messages.WriteMessage; import io.cloudquery.messages.WriteMigrateTable; @@ -16,6 +17,7 @@ import io.grpc.stub.StreamObserver; import java.io.IOException; import java.util.ArrayList; +import java.util.Date; import java.util.List; public class PluginServer extends PluginImplBase { @@ -125,6 +127,10 @@ public void onNext(Write.Request request) { plugin.write(processMigrateTableRequest(request)); } else if (messageCase == Write.Request.MessageCase.INSERT) { plugin.write(processInsertRequest(request)); + } else if (messageCase == Write.Request.MessageCase.DELETE) { + plugin.write(processDeleteStaleRequest(request)); + } else { + throw new IllegalArgumentException("Unknown message type: " + messageCase); } } catch (IOException | ValidationException ex) { onError(ex); @@ -166,4 +172,13 @@ private WriteMessage processInsertRequest(Write.Request request) ByteString record = insert.getRecord(); return new WriteInsert(ArrowHelper.decodeResource(record)); } + + private WriteMessage processDeleteStaleRequest(Write.Request request) + throws IOException, ValidationException { + Write.MessageDeleteStale messageDeleteStale = request.getDelete(); + return new WriteDeleteStale( + messageDeleteStale.getTableName(), + messageDeleteStale.getSourceName(), + new Date(messageDeleteStale.getSyncTime().getSeconds() * 1000)); + } } diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java b/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java index 064852e..1f5a27b 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDBClient.java @@ -1,24 +1,30 @@ package io.cloudquery.memdb; +import io.cloudquery.messages.WriteDeleteStale; import io.cloudquery.messages.WriteInsert; import io.cloudquery.messages.WriteMessage; import io.cloudquery.messages.WriteMigrateTable; +import io.cloudquery.scalar.Timestamp; import io.cloudquery.schema.ClientMeta; +import io.cloudquery.schema.Column; import io.cloudquery.schema.Resource; import io.cloudquery.schema.Table; import io.cloudquery.schema.TableColumnChange; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.Optional; import java.util.concurrent.locks.ReentrantReadWriteLock; public class MemDBClient implements ClientMeta { private static final String id = "memdb"; - private ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); - private Map tables = new HashMap<>(); - private Map> memDB = new HashMap<>(); + private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); + private final Map tables = new HashMap<>(); + private final Map> memDB = new HashMap<>(); public MemDBClient() {} @@ -37,6 +43,9 @@ public void write(WriteMessage message) { if (message instanceof WriteInsert insert) { insert(insert); } + if (message instanceof WriteDeleteStale deleteStale) { + deleteStale(deleteStale); + } } finally { lock.writeLock().unlock(); } @@ -74,6 +83,40 @@ private void overwrite(Table table, Resource resource) { memDB.get(tableName).add(resource); } + private void deleteStale(WriteDeleteStale deleteStale) { + String tableName = deleteStale.getTableName(); + + List filteredList = new ArrayList<>(); + + for (int i = 0; i < memDB.get(tableName).size(); i++) { + Resource row = memDB.get(tableName).get(i); + Optional sourceColumn = row.getTable().getColumn(Column.CQ_SOURCE_NAME); + if (sourceColumn.isEmpty()) { + continue; + } + Optional syncColumn = row.getTable().getColumn(Column.CQ_SYNC_TIME); + if (syncColumn.isEmpty()) { + continue; + } + + String sourceName = ""; + if (row.get(Column.CQ_SOURCE_NAME) != null) { + sourceName = row.get(Column.CQ_SOURCE_NAME).toString(); + } + + if (Objects.equals(sourceName, deleteStale.getSourceName())) { + Date rowSyncTime = new Date(0); + if (row.get(Column.CQ_SYNC_TIME) != null) { + rowSyncTime = new Date(((Timestamp) row.get(Column.CQ_SYNC_TIME)).get()); + } + if (!rowSyncTime.before(deleteStale.getTimestamp())) { + filteredList.add(row); + } + } + } + memDB.put(tableName, filteredList); + } + public void close() { // do nothing } diff --git a/lib/src/main/java/io/cloudquery/messages/WriteDeleteStale.java b/lib/src/main/java/io/cloudquery/messages/WriteDeleteStale.java new file mode 100644 index 0000000..afea7c6 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/messages/WriteDeleteStale.java @@ -0,0 +1,13 @@ +package io.cloudquery.messages; + +import java.util.Date; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public class WriteDeleteStale extends WriteMessage { + private String tableName; + private String sourceName; + private Date timestamp; +} diff --git a/lib/src/main/java/io/cloudquery/schema/Column.java b/lib/src/main/java/io/cloudquery/schema/Column.java index bccfc26..838f41d 100644 --- a/lib/src/main/java/io/cloudquery/schema/Column.java +++ b/lib/src/main/java/io/cloudquery/schema/Column.java @@ -8,6 +8,8 @@ @Builder(toBuilder = true) @Getter public class Column { + public static final String CQ_SOURCE_NAME = "_cq_source_name"; + public static final String CQ_SYNC_TIME = "_cq_sync_time"; private String name; private String description; private ArrowType type; diff --git a/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java b/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java index d42fef0..cd8a1e2 100644 --- a/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java +++ b/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java @@ -5,6 +5,7 @@ import com.google.protobuf.ByteString; import io.cloudquery.helper.ArrowHelper; +import io.cloudquery.messages.WriteDeleteStale; import io.cloudquery.messages.WriteInsert; import io.cloudquery.messages.WriteMigrateTable; import io.cloudquery.plugin.Plugin; @@ -78,6 +79,18 @@ public void shouldSendWriteInsertMessage() throws Exception { verify(plugin).write(any(WriteInsert.class)); } + @Test + public void shouldSendWriteDeleteStaleMessage() throws Exception { + NullResponseStream responseObserver = new NullResponseStream<>(); + + StreamObserver writeService = pluginStub.write(responseObserver); + writeService.onNext(generateDeleteStaleMessage()); + writeService.onCompleted(); + responseObserver.await(); + + verify(plugin).write(any(WriteDeleteStale.class)); + } + private static Write.Request generateMigrateTableMessage() throws IOException { Table table = Table.builder().name("test").build(); return Write.Request.newBuilder() @@ -96,6 +109,11 @@ private Write.Request generateInsertMessage() throws IOException, ValidationExce return Write.Request.newBuilder().setInsert(messageInsert).build(); } + private Write.Request generateDeleteStaleMessage() { + Write.MessageDeleteStale messageDeleteStale = Write.MessageDeleteStale.newBuilder().build(); + return Write.Request.newBuilder().setDelete(messageDeleteStale).build(); + } + private static class NullResponseStream implements StreamObserver { private final CountDownLatch countDownLatch = new CountDownLatch(1); From 6676ace9e091d2f392c6e085489a536abbb85289 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 24 Aug 2023 13:59:15 +0300 Subject: [PATCH 024/376] chore(main): Release v0.0.3 (#99) :robot: I have created a release *beep* *boop* --- ## [0.0.3](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.2...v0.0.3) (2023-08-24) ### Features * Add write delete stale logic ([8b1bb1b](https://github.com/cloudquery/plugin-sdk-java/commit/8b1bb1b597af67bcece71dd6b0a1bba5f13908ee)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 768ceec..b09649a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.3](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.2...v0.0.3) (2023-08-24) + + +### Features + +* Add write delete stale logic ([8b1bb1b](https://github.com/cloudquery/plugin-sdk-java/commit/8b1bb1b597af67bcece71dd6b0a1bba5f13908ee)) + ## [0.0.2](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.1...v0.0.2) (2023-08-24) diff --git a/lib/build.gradle b/lib/build.gradle index 37ec32b..67e1cc2 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.2' +version = '0.0.3' // x-release-please-end repositories { From 616b5615ad22c3f871f14b6d8f63989364a10e1e Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Thu, 24 Aug 2023 14:50:26 +0100 Subject: [PATCH 025/376] chore: adds source jar to published artifacts (#100) This will help plugin development as developers will be able to see the source code and overriden methods will have the correct variable names. see: https://docs.gradle.org/6.0.1/javadoc/org/gradle/api/plugins/JavaPluginExtension.html#withSourcesJar-- --- lib/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/build.gradle b/lib/build.gradle index 67e1cc2..9c6ef12 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -71,6 +71,7 @@ test { // Apply a specific Java toolchain to ease working on different environments. java { + withSourcesJar() toolchain { languageVersion = JavaLanguageVersion.of(20) } From 3b902f2e903c70bbcbc3b1cd06b3b2d21677dc6a Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 24 Aug 2023 16:54:25 +0300 Subject: [PATCH 026/376] chore(main): Release v0.0.4 (#101) :robot: I have created a release *beep* *boop* --- ## [0.0.4](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.3...v0.0.4) (2023-08-24) ### Features * Add source jar to published artifacts ([616b561](https://github.com/cloudquery/plugin-sdk-java/commit/616b5615ad22c3f871f14b6d8f63989364a10e1e)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b09649a..925ea7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.4](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.3...v0.0.4) (2023-08-24) + + +### Features + +* Add source jar to published artifacts ([616b561](https://github.com/cloudquery/plugin-sdk-java/commit/616b5615ad22c3f871f14b6d8f63989364a10e1e)) + ## [0.0.3](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.2...v0.0.3) (2023-08-24) diff --git a/lib/build.gradle b/lib/build.gradle index 9c6ef12..97906c7 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.3' +version = '0.0.4' // x-release-please-end repositories { From d35f9be408db7a9510348b0bcce2ba2dc1be28d5 Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Tue, 29 Aug 2023 10:40:35 +0100 Subject: [PATCH 027/376] fix: convert a boolean to a bit vector (#102) --- lib/src/main/java/io/cloudquery/helper/ArrowHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java index 7fef20c..e3a3a9e 100644 --- a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java +++ b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java @@ -68,7 +68,7 @@ private static void setVectorData(FieldVector vector, Object data) { return; } if (vector instanceof BitVector bitVector) { - bitVector.set(0, (int) data); + bitVector.set(0, (boolean) data ? 1 : 0); return; } if (vector instanceof FixedSizeBinaryVector fixedSizeBinaryVector) { From 39fadc361153aa6432c7aa246bc8679620ad0500 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 29 Aug 2023 12:43:06 +0300 Subject: [PATCH 028/376] chore(main): Release v0.0.5 (#103) --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 925ea7e..d39cae9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.5](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.4...v0.0.5) (2023-08-29) + + +### Bug Fixes + +* convert a boolean to a bit vector ([#102](https://github.com/cloudquery/plugin-sdk-java/issues/102)) ([d35f9be](https://github.com/cloudquery/plugin-sdk-java/commit/d35f9be408db7a9510348b0bcce2ba2dc1be28d5)) + ## [0.0.4](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.3...v0.0.4) (2023-08-24) diff --git a/lib/build.gradle b/lib/build.gradle index 97906c7..0968af8 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.4' +version = '0.0.5' // x-release-please-end repositories { From d81c2987a964504152541d8fb1cc896c223c92d5 Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Tue, 29 Aug 2023 10:47:35 +0100 Subject: [PATCH 029/376] chore: add a resource roundtrip (#104) Test resource encoding and decoding with a roundtrip to help catch type conversions errors. --- .../io/cloudquery/helper/ArrowHelperTest.java | 31 ++++++++++++++----- .../servers/plugin/v3/PluginServerTest.java | 9 ++++-- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java b/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java index ff5dc46..ff52029 100644 --- a/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java +++ b/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java @@ -12,6 +12,7 @@ import com.google.protobuf.ByteString; import io.cloudquery.schema.Column; +import io.cloudquery.schema.Resource; import io.cloudquery.schema.Table; import java.io.IOException; import java.util.List; @@ -19,6 +20,7 @@ import org.apache.arrow.vector.types.pojo.ArrowType; import org.apache.arrow.vector.types.pojo.Field; import org.apache.arrow.vector.types.pojo.Schema; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class ArrowHelperTest { @@ -32,20 +34,21 @@ public class ArrowHelperTest { .columns( List.of( Column.builder() - .name("column1") + .name("string_column1") .type(ArrowType.Utf8.INSTANCE) .unique(true) .incrementalKey(true) .primaryKey(true) .build(), - Column.builder().name("column2").type(ArrowType.Utf8.INSTANCE).build())) + Column.builder().name("string_column2").type(ArrowType.Utf8.INSTANCE).build(), + Column.builder().name("boolean_column").type(ArrowType.Bool.INSTANCE).build())) .build(); @Test public void testToArrowSchema() { Schema arrowSchema = ArrowHelper.toArrowSchema(TEST_TABLE); - assertEquals(arrowSchema.getFields().get(0).getName(), "column1"); + assertEquals(arrowSchema.getFields().get(0).getName(), "string_column1"); assertEquals( arrowSchema.getFields().get(0).getMetadata(), Map.of( @@ -55,7 +58,7 @@ public void testToArrowSchema() { "true", CQ_EXTENSION_PRIMARY_KEY, "true")); - assertEquals(arrowSchema.getFields().get(1).getName(), "column2"); + assertEquals(arrowSchema.getFields().get(1).getName(), "string_column2"); assertEquals( arrowSchema.getFields().get(1).getMetadata(), Map.of( @@ -80,8 +83,8 @@ public void testToArrowSchema() { public void testFromArrowSchema() { List fields = List.of( - Field.nullable("column1", ArrowType.Utf8.INSTANCE), - Field.nullable("column2", ArrowType.Utf8.INSTANCE)); + Field.nullable("string_column1", ArrowType.Utf8.INSTANCE), + Field.nullable("string_column2", ArrowType.Utf8.INSTANCE)); Schema schema = new Schema(fields, Map.of(CQ_TABLE_NAME, "table1")); @@ -97,7 +100,7 @@ public void testFromArrowSchema() { } @Test - public void testRoundTrip() throws IOException { + public void testRoundTripTableEncoding() throws IOException { ByteString byteString = ArrowHelper.encode(TEST_TABLE); Table table = ArrowHelper.decode(byteString); @@ -111,4 +114,18 @@ public void testRoundTrip() throws IOException { assertEquals(TEST_TABLE.getColumns().get(i).getType(), table.getColumns().get(i).getType()); } } + + @Test + public void testRoundTripResourceEncoding() throws Exception { + Resource resource = Resource.builder().table(TEST_TABLE).build(); + resource.set("string_column1", "test_data"); + resource.set("string_column2", "test_data2"); + resource.set("boolean_column", true); + + Assertions.assertDoesNotThrow( + () -> { + ByteString byteString = ArrowHelper.encode(resource); + ArrowHelper.decodeResource(byteString); + }); + } } diff --git a/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java b/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java index cd8a1e2..f75019f 100644 --- a/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java +++ b/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java @@ -100,10 +100,15 @@ private static Write.Request generateMigrateTableMessage() throws IOException { } private Write.Request generateInsertMessage() throws IOException, ValidationException { - Column column = Column.builder().name("test_column").type(ArrowType.Utf8.INSTANCE).build(); - Table table = Table.builder().name("test").columns(List.of(column)).build(); + Column stringColumn = + Column.builder().name("test_column").type(ArrowType.Utf8.INSTANCE).build(); + Column booleanColumn = + Column.builder().name("boolean_column").type(ArrowType.Bool.INSTANCE).build(); + Table table = + Table.builder().name("test").columns(List.of(stringColumn, booleanColumn)).build(); Resource resource = Resource.builder().table(table).build(); resource.set("test_column", "test_data"); + resource.set("boolean_column", true); ByteString byteString = ArrowHelper.encode(resource); MessageInsert messageInsert = MessageInsert.newBuilder().setRecord(byteString).build(); return Write.Request.newBuilder().setInsert(messageInsert).build(); From d97dabd95e0a91d43dd921d9c646290b1a3b13c9 Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Tue, 29 Aug 2023 13:20:35 +0100 Subject: [PATCH 030/376] fix: make the underlying timestamp consistent (#105) Switch to using a base storage of `ms` and consistent across all parsing methods --- .../java/io/cloudquery/scalar/Timestamp.java | 26 ++++++++++++------- .../io/cloudquery/scalar/TimestampTest.java | 12 ++++++--- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/lib/src/main/java/io/cloudquery/scalar/Timestamp.java b/lib/src/main/java/io/cloudquery/scalar/Timestamp.java index 37d00f0..8702814 100644 --- a/lib/src/main/java/io/cloudquery/scalar/Timestamp.java +++ b/lib/src/main/java/io/cloudquery/scalar/Timestamp.java @@ -1,6 +1,11 @@ package io.cloudquery.scalar; -import java.time.*; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; import org.apache.arrow.vector.types.TimeUnit; import org.apache.arrow.vector.types.pojo.ArrowType; @@ -8,7 +13,8 @@ public class Timestamp extends Scalar { public static final ZoneId zoneID = ZoneOffset.UTC; // TODO: add more units support later - private static final ArrowType dt = new ArrowType.Timestamp(TimeUnit.SECOND, zoneID.toString()); + private static final ArrowType dt = + new ArrowType.Timestamp(TimeUnit.MILLISECOND, zoneID.toString()); public Timestamp() { super(); @@ -26,34 +32,36 @@ public ArrowType dataType() { @Override public void setValue(Object value) throws ValidationException { if (value instanceof ZonedDateTime timestamp) { - this.value = timestamp.withZoneSameInstant(zoneID).toEpochSecond(); + this.value = timestamp.withZoneSameInstant(zoneID).toEpochSecond() * 1000; return; } if (value instanceof LocalDate date) { - this.value = date.atStartOfDay(zoneID).toEpochSecond(); + this.value = date.atStartOfDay(zoneID).toEpochSecond() * 1000; return; } if (value instanceof LocalDateTime date) { - this.value = date.atZone(zoneID).toEpochSecond(); + this.value = date.atZone(zoneID).toEpochSecond() * 1000; return; } if (value instanceof Integer integer) { this.value = - ZonedDateTime.ofInstant(Instant.ofEpochMilli(integer), ZoneOffset.UTC).toEpochSecond(); + ZonedDateTime.ofInstant(Instant.ofEpochMilli(integer), ZoneOffset.UTC).toEpochSecond() + * 1000; return; } if (value instanceof Long longValue) { this.value = - ZonedDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneOffset.UTC).toEpochSecond(); + ZonedDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneOffset.UTC).toEpochSecond() + * 1000; return; } if (value instanceof CharSequence sequence) { - this.value = ZonedDateTime.parse(sequence).toEpochSecond(); + this.value = ZonedDateTime.parse(sequence).toInstant().toEpochMilli(); return; } @@ -64,7 +72,7 @@ public void setValue(Object value) throws ValidationException { @Override public java.lang.String toString() { if (this.value != null) { - return ZonedDateTime.ofInstant(Instant.ofEpochSecond((Long) this.value), zoneID).toString(); + return ZonedDateTime.ofInstant(Instant.ofEpochMilli((Long) this.value), zoneID).toString(); } return NULL_VALUE_STRING; diff --git a/lib/src/test/java/io/cloudquery/scalar/TimestampTest.java b/lib/src/test/java/io/cloudquery/scalar/TimestampTest.java index 8f74f1d..e10faff 100644 --- a/lib/src/test/java/io/cloudquery/scalar/TimestampTest.java +++ b/lib/src/test/java/io/cloudquery/scalar/TimestampTest.java @@ -1,6 +1,12 @@ package io.cloudquery.scalar; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.time.Instant; import java.time.ZoneOffset; @@ -66,7 +72,7 @@ public void testToString() { @Test public void testDataType() { Timestamp timestamp = new Timestamp(); - assertEquals(new ArrowType.Timestamp(TimeUnit.SECOND, "Z"), timestamp.dataType()); + assertEquals(new ArrowType.Timestamp(TimeUnit.MILLISECOND, "Z"), timestamp.dataType()); } @Test @@ -118,7 +124,7 @@ public void testGet() { timestamp.set(ts); }); assertTrue(timestamp.isValid()); - assertEquals(ts.toEpochSecond(), timestamp.get()); + assertEquals(ts.toEpochSecond() * 1000, timestamp.get()); assertDoesNotThrow( () -> { From 000443d2a30854d8f84809f4b11d3738866b502e Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 29 Aug 2023 15:25:47 +0300 Subject: [PATCH 031/376] chore(main): Release v0.0.6 (#106) --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d39cae9..1ccc1ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.6](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.5...v0.0.6) (2023-08-29) + + +### Bug Fixes + +* make the underlying timestamp consistent ([#105](https://github.com/cloudquery/plugin-sdk-java/issues/105)) ([d97dabd](https://github.com/cloudquery/plugin-sdk-java/commit/d97dabd95e0a91d43dd921d9c646290b1a3b13c9)) + ## [0.0.5](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.4...v0.0.5) (2023-08-29) diff --git a/lib/build.gradle b/lib/build.gradle index 0968af8..43aef70 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.5' +version = '0.0.6' // x-release-please-end repositories { From 0428c7d271e2d44238368b11814c0b1f7da67a06 Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Wed, 30 Aug 2023 09:32:26 +0100 Subject: [PATCH 032/376] fix: make the type transformer consistent with scalar units (#107) --- lib/src/main/java/io/cloudquery/scalar/Timestamp.java | 2 +- .../main/java/io/cloudquery/transformers/TypeTransformer.java | 4 ++-- .../io/cloudquery/transformers/TransformWithClassTest.java | 3 ++- .../java/io/cloudquery/transformers/TypeTransformerTest.java | 4 +++- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/src/main/java/io/cloudquery/scalar/Timestamp.java b/lib/src/main/java/io/cloudquery/scalar/Timestamp.java index 8702814..cf57c0d 100644 --- a/lib/src/main/java/io/cloudquery/scalar/Timestamp.java +++ b/lib/src/main/java/io/cloudquery/scalar/Timestamp.java @@ -13,7 +13,7 @@ public class Timestamp extends Scalar { public static final ZoneId zoneID = ZoneOffset.UTC; // TODO: add more units support later - private static final ArrowType dt = + public static final ArrowType dt = new ArrowType.Timestamp(TimeUnit.MILLISECOND, zoneID.toString()); public Timestamp() { diff --git a/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java b/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java index b1cc640..1a337e3 100644 --- a/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java +++ b/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java @@ -1,12 +1,12 @@ package io.cloudquery.transformers; +import io.cloudquery.scalar.Timestamp; import io.cloudquery.types.InetType; import io.cloudquery.types.JSONType; import io.cloudquery.types.ListType; import io.cloudquery.types.UUIDType; import java.lang.reflect.Field; import org.apache.arrow.vector.types.FloatingPointPrecision; -import org.apache.arrow.vector.types.TimeUnit; import org.apache.arrow.vector.types.pojo.ArrowType; public interface TypeTransformer { @@ -41,7 +41,7 @@ private static ArrowType transformArrowType(String name, Class type) return InetType.INSTANCE; } case "java.time.LocalDateTime" -> { - return new ArrowType.Timestamp(TimeUnit.MICROSECOND, null); + return Timestamp.dt; } case "java.util.UUID" -> { return new UUIDType(); diff --git a/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java b/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java index 9f40426..dc56c30 100644 --- a/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java @@ -17,6 +17,7 @@ import io.cloudquery.types.ListType; import java.net.InetAddress; import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.List; import java.util.Optional; import org.apache.arrow.vector.types.FloatingPointPrecision; @@ -97,7 +98,7 @@ public static final class TestClass { Column.builder().name("any_array_col").type(JSONType.INSTANCE).build(), Column.builder() .name("time_col") - .type(new Timestamp(TimeUnit.MICROSECOND, null)) + .type(new Timestamp(TimeUnit.MILLISECOND, ZoneOffset.UTC.getId())) .build()); public static final List expectedColumnsSimpleClass = diff --git a/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java b/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java index 52ece49..e455229 100644 --- a/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java @@ -8,6 +8,7 @@ import io.cloudquery.types.ListType; import java.net.InetAddress; import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.Map; import java.util.stream.Stream; import org.apache.arrow.vector.types.FloatingPointPrecision; @@ -102,7 +103,8 @@ public static Stream testArgumentsSource() { Arguments.of("stringArrayField", ListType.listOf(ArrowType.Utf8.INSTANCE)), // Time - Arguments.of("timeField", new ArrowType.Timestamp(TimeUnit.MICROSECOND, null)), + Arguments.of( + "timeField", new ArrowType.Timestamp(TimeUnit.MILLISECOND, ZoneOffset.UTC.getId())), // Byte Arguments.of("byteArrayField", ArrowType.Binary.INSTANCE), From 436a82652ef2987867f141fac4dfe20429c60de5 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 30 Aug 2023 11:35:21 +0300 Subject: [PATCH 033/376] chore(main): Release v0.0.7 (#108) --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ccc1ea..ee1d579 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.7](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.6...v0.0.7) (2023-08-30) + + +### Bug Fixes + +* make the type transformer consistent with scalar units ([#107](https://github.com/cloudquery/plugin-sdk-java/issues/107)) ([0428c7d](https://github.com/cloudquery/plugin-sdk-java/commit/0428c7d271e2d44238368b11814c0b1f7da67a06)) + ## [0.0.6](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.5...v0.0.6) (2023-08-29) diff --git a/lib/build.gradle b/lib/build.gradle index 43aef70..ca05894 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.6' +version = '0.0.7' // x-release-please-end repositories { From 5484316f61b9fe0d978b5d212aeb6443e977abb7 Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Wed, 30 Aug 2023 12:16:55 +0100 Subject: [PATCH 034/376] fix: check for extension type before built-in arrow types (#109) The JSON type was not getting selected as the underlying storage type (Binary) is the underlying arrow type. Checking for extension type first will allow us to prefer our defined Arrow extensions over the built-in types. --- .../main/java/io/cloudquery/memdb/MemDB.java | 4 +++ .../java/io/cloudquery/memdb/Table1Data.java | 4 +++ .../java/io/cloudquery/scalar/Scalar.java | 32 +++++++++---------- .../java/io/cloudquery/scalar/ScalarTest.java | 2 ++ 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDB.java b/lib/src/main/java/io/cloudquery/memdb/MemDB.java index 26a100e..07f50e4 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDB.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDB.java @@ -15,7 +15,9 @@ import io.cloudquery.transformers.Tables; import io.cloudquery.transformers.TransformWithClass; import io.grpc.stub.StreamObserver; +import java.time.LocalDateTime; import java.util.List; +import java.util.Map; import java.util.UUID; public class MemDB extends Plugin { @@ -32,6 +34,8 @@ public void resolve( Table1Data.builder() .id(UUID.fromString("46b2b6e6-8f3e-4340-a721-4aa0786b1cc0")) .name("name1") + .timestamp(LocalDateTime.now()) + .json(Map.of("key1", "value1", "key2", "value2")) .build()); stream.write( Table1Data.builder() diff --git a/lib/src/main/java/io/cloudquery/memdb/Table1Data.java b/lib/src/main/java/io/cloudquery/memdb/Table1Data.java index f4ba5d0..786aff1 100644 --- a/lib/src/main/java/io/cloudquery/memdb/Table1Data.java +++ b/lib/src/main/java/io/cloudquery/memdb/Table1Data.java @@ -1,5 +1,7 @@ package io.cloudquery.memdb; +import java.time.LocalDateTime; +import java.util.Map; import java.util.UUID; import lombok.Builder; import lombok.Getter; @@ -9,4 +11,6 @@ public class Table1Data { private UUID id; private String name; + private LocalDateTime timestamp; + private Map json; } diff --git a/lib/src/main/java/io/cloudquery/scalar/Scalar.java b/lib/src/main/java/io/cloudquery/scalar/Scalar.java index c2680fd..ae9a775 100644 --- a/lib/src/main/java/io/cloudquery/scalar/Scalar.java +++ b/lib/src/main/java/io/cloudquery/scalar/Scalar.java @@ -1,5 +1,6 @@ package io.cloudquery.scalar; +import io.cloudquery.types.JSONType; import io.cloudquery.types.UUIDType; import java.util.Objects; import org.apache.arrow.vector.types.pojo.ArrowType; @@ -77,6 +78,21 @@ public final int hashCode() { public static final java.lang.String NULL_VALUE_STRING = "(null)"; public static Scalar fromArrowType(ArrowType arrowType) { + if (arrowType instanceof ArrowType.ExtensionType extensionType) { + switch (extensionType.extensionName()) { + case UUIDType.EXTENSION_NAME -> { + return new UUID(); + } + case JSONType.EXTENSION_NAME -> { + return new JSON(); + } + // TODO: Add support for these types when scalar available + // case INETType.EXTENSION_NAME -> { + // return new INET(); + // } + } + } + switch (arrowType.getTypeID()) { case Timestamp -> { return new Timestamp(); @@ -110,22 +126,6 @@ public static Scalar fromArrowType(ArrowType arrowType) { } } - if (arrowType instanceof ArrowType.ExtensionType extensionType) { - //noinspection SwitchStatementWithTooFewBranches - switch (extensionType.extensionName()) { - case UUIDType.EXTENSION_NAME -> { - return new UUID(); - } - // TODO: Add support for these types when scalar available - // case JSONType.EXTENSION_NAME -> { - // return new JSON(); - // } - // case INETType.EXTENSION_NAME -> { - // return new INET(); - // } - } - } - throw new UnsupportedOperationException("Unsupported type: " + arrowType); } diff --git a/lib/src/test/java/io/cloudquery/scalar/ScalarTest.java b/lib/src/test/java/io/cloudquery/scalar/ScalarTest.java index 3b21bf9..db5c9d8 100644 --- a/lib/src/test/java/io/cloudquery/scalar/ScalarTest.java +++ b/lib/src/test/java/io/cloudquery/scalar/ScalarTest.java @@ -2,6 +2,7 @@ import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import io.cloudquery.types.JSONType; import io.cloudquery.types.UUIDType; import java.time.ZoneOffset; import java.util.stream.Stream; @@ -64,6 +65,7 @@ public static Stream testDataSource() { // Extension Arguments.of(new UUIDType(), UUID.class), + Arguments.of(new JSONType(), JSON.class), // Date Arguments.of(new ArrowType.Date(DateUnit.DAY), DateDay.class), From 3f5f47fed98e79d7b3a995046b9677ca356a60fb Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 30 Aug 2023 14:19:36 +0300 Subject: [PATCH 035/376] chore(main): Release v0.0.8 (#110) --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee1d579..196f3e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.8](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.7...v0.0.8) (2023-08-30) + + +### Bug Fixes + +* check for extension type before built-in arrow types ([#109](https://github.com/cloudquery/plugin-sdk-java/issues/109)) ([5484316](https://github.com/cloudquery/plugin-sdk-java/commit/5484316f61b9fe0d978b5d212aeb6443e977abb7)) + ## [0.0.7](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.6...v0.0.7) (2023-08-30) diff --git a/lib/build.gradle b/lib/build.gradle index ca05894..3fcb12f 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.7' +version = '0.0.8' // x-release-please-end repositories { From 3896982b5e5b6eda9e529468195a413f60a8d454 Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Thu, 31 Aug 2023 16:50:14 +0100 Subject: [PATCH 036/376] chore: Add null client (#111) Adding a null client to allow for table doc generation --- .../java/io/cloudquery/schema/NullClient.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 lib/src/main/java/io/cloudquery/schema/NullClient.java diff --git a/lib/src/main/java/io/cloudquery/schema/NullClient.java b/lib/src/main/java/io/cloudquery/schema/NullClient.java new file mode 100644 index 0000000..4a81561 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/schema/NullClient.java @@ -0,0 +1,15 @@ +package io.cloudquery.schema; + +import io.cloudquery.messages.WriteMessage; + +public class NullClient implements ClientMeta { + @Override + public String getId() { + return "null-client"; + } + + @Override + public void write(WriteMessage message) { + // No-op for null client + } +} From 025b8897203ada319a6793c6d4eaae564aeda006 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 31 Aug 2023 18:53:28 +0300 Subject: [PATCH 037/376] chore(main): Release v0.0.9 (#112) :robot: I have created a release *beep* *boop* --- ## [0.0.9](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.8...v0.0.9) (2023-08-31) ### Features * Add `null` client ([3896982](https://github.com/cloudquery/plugin-sdk-java/commit/3896982b5e5b6eda9e529468195a413f60a8d454)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 196f3e2..9d30ba3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.9](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.8...v0.0.9) (2023-08-31) + + +### Features + +* Add `null` client ([3896982](https://github.com/cloudquery/plugin-sdk-java/commit/3896982b5e5b6eda9e529468195a413f60a8d454)) + ## [0.0.8](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.7...v0.0.8) (2023-08-30) diff --git a/lib/build.gradle b/lib/build.gradle index 3fcb12f..149ee73 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.8' +version = '0.0.9' // x-release-please-end repositories { From 86f1d96b84be3bdba5b4e3b61127094e5ac7750d Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Sep 2023 03:27:22 +0300 Subject: [PATCH 038/376] chore(deps): Update gradle/gradle-build-action digest to 8f08e41 (#113) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/gradle-build-action | action | digest | `a4cf152` -> `8f08e41` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 27671c9..62c6054 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -18,7 +18,7 @@ jobs: - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@56b90f209b02bf6d1deae490e9ef18b21a389cd4 - name: Publish package - uses: gradle/gradle-build-action@a4cf152f482c7ca97ef56ead29bf08bcd953284c + uses: gradle/gradle-build-action@8f08e41675472b8aa0aa2c356e8b2c1561af3bf9 with: arguments: publish env: From 9784f43df5c53dcc36b1fd48354537d68ac137b3 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Sep 2023 03:29:03 +0300 Subject: [PATCH 039/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.15.2 (#114) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-annotations](https://togithub.com/FasterXML/jackson) ([source](https://togithub.com/FasterXML/jackson-annotations)) | dependencies | patch | `2.15.1` -> `2.15.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 149ee73..afa998a 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -43,7 +43,7 @@ dependencies { implementation "org.apache.arrow:arrow-vector:12.0.1" implementation "com.fasterxml.jackson.core:jackson-core:2.15.1" - implementation "com.fasterxml.jackson.core:jackson-annotations:2.15.1" + implementation "com.fasterxml.jackson.core:jackson-annotations:2.15.2" implementation 'org.apache.logging.log4j:log4j-api:2.20.0' implementation 'org.apache.logging.log4j:log4j-core:2.20.0' From ba041d9e79b87671dc38e238b6e5dcd7dffe64e8 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Sep 2023 04:40:13 +0300 Subject: [PATCH 040/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-core to v2.15.2 (#116) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-core](https://togithub.com/FasterXML/jackson-core) | dependencies | patch | `2.15.1` -> `2.15.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index afa998a..4fcc601 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -42,7 +42,7 @@ dependencies { implementation "org.apache.arrow:arrow-memory-core:12.0.1" implementation "org.apache.arrow:arrow-vector:12.0.1" - implementation "com.fasterxml.jackson.core:jackson-core:2.15.1" + implementation "com.fasterxml.jackson.core:jackson-core:2.15.2" implementation "com.fasterxml.jackson.core:jackson-annotations:2.15.2" implementation 'org.apache.logging.log4j:log4j-api:2.20.0' From e6ebb84d33842517e9f9709a648d014ddb1d3d91 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Sep 2023 04:42:57 +0300 Subject: [PATCH 041/376] fix(deps): Update dependency info.picocli:picocli to v4.7.5 (#117) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [info.picocli:picocli](https://picocli.info) ([source](https://togithub.com/remkop/picocli)) | dependencies | patch | `4.7.4` -> `4.7.5` | --- ### Release Notes
remkop/picocli (info.picocli:picocli) ### [`v4.7.5`](https://togithub.com/remkop/picocli/blob/HEAD/RELEASE-NOTES.md#a-name475a-Picocli-475) The picocli community is pleased to announce picocli 4.7.5. This release includes bugfixes and enhancements. Many thanks to the picocli community for raising these issues and providing the pull requests to address them! This is the eighty-forth public release. Picocli follows [semantic versioning](https://semver.org/). Artifacts in this release are signed by Remko Popma (6601 E5C0 8DCC BB96). #### Table of Contents - [New and noteworthy](#​4.7.5-new) - [Fixed issues](#​4.7.5-fixes) - [Deprecations](#​4.7.5-deprecated) - [Potential breaking changes](#​4.7.5-breaking-changes) #### New and Noteworthy #### Fixed issues - \[[#​2083](https://togithub.com/remkop/picocli/issues/2083)]\[[#​2084](https://togithub.com/remkop/picocli/issues/2084)] Enhancement: Java 22 update: improve logic for detecting if the output stream is connected to a terminal. Thanks to [Liam Miller-Cushon](https://togithub.com/cushon) for the pull request. - \[[#​2087](https://togithub.com/remkop/picocli/issues/2087)] Enhancement: Mask parameters in trace log when `echo=false` for `interactive` options and positional parameters. Thanks to [szzsolt](https://togithub.com/szzsolt) for raising this. - \[[#​2060](https://togithub.com/remkop/picocli/issues/2060)] Bugfix: Fix positional parameters bug with late-resolved arity variable. Thanks to [daisukeoto](https://togithub.com/daisukeoto) for raising this. - \[[#​2074](https://togithub.com/remkop/picocli/issues/2074)]\[[#​2075](https://togithub.com/remkop/picocli/issues/2075)] Bugfix: Don't generate auto-complete for hidden attributes in `picocli.shell.jline3.PicoCommand`. Thanks to [clebertsuconic](https://togithub.com/clebertsuconic) for the pull request. - \[[#​2059](https://togithub.com/remkop/picocli/issues/2059)] Bugfix: ArgGroup with `exclusive=false` and `multiplicity=1` should require at least one option; fix regression and refine solution introduced in \[[#​1848](https://togithub.com/remkop/picocli/issues/1848)]\[[#​2030](https://togithub.com/remkop/picocli/issues/2030)]. Thanks to [Utkarsh Mittal](https://togithub.com/utmittal) for raising this. - \[[#​2080](https://togithub.com/remkop/picocli/issues/2080)] DOC: Improve GraalVM documentation: add `graalvm-native-image-plugin`. Thanks to [Bhavik Patel](https://togithub.com/bhavikp19) for the pull request. - \[[#​2045](https://togithub.com/remkop/picocli/issues/2045)] DOC: Commit html files with LF line-endings. Thanks to [Fridrich Strba](https://togithub.com/fridrich) for the pull request. #### Deprecations No features were deprecated in this release. #### Potential breaking changes This release has no breaking changes.
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 4fcc601..3c3dc13 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -32,7 +32,7 @@ dependencies { // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'org.jooq:joou:0.9.4' implementation 'com.google.guava:guava:32.1.2-jre' - implementation 'info.picocli:picocli:4.7.4' + implementation 'info.picocli:picocli:4.7.5' implementation 'com.google.guava:guava:32.1.2-jre' implementation "io.grpc:grpc-protobuf:1.57.1" implementation "io.grpc:grpc-stub:1.57.1" From 59687cd98bffce0b7396babcede5ae07f426ee03 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Sep 2023 05:31:02 +0300 Subject: [PATCH 042/376] fix(deps): Update dependency io.grpc:grpc-protobuf to v1.57.2 (#118) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.57.1` -> `1.57.2` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-protobuf) ### [`v1.57.2`](https://togithub.com/grpc/grpc-java/releases/tag/v1.57.2) ### Bug Fixes - util: Outlier detection tracer delegation ([#​10459](https://togithub.com/grpc/grpc-java/issues/10459)) ([#​10483](https://togithub.com/grpc/grpc-java/issues/10483))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 3c3dc13..5899971 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,7 +34,7 @@ dependencies { implementation 'com.google.guava:guava:32.1.2-jre' implementation 'info.picocli:picocli:4.7.5' implementation 'com.google.guava:guava:32.1.2-jre' - implementation "io.grpc:grpc-protobuf:1.57.1" + implementation "io.grpc:grpc-protobuf:1.57.2" implementation "io.grpc:grpc-stub:1.57.1" implementation "io.grpc:grpc-services:1.57.1" implementation "io.grpc:grpc-testing:1.57.1" From 83ac40bcb307cb671279db0a600b5aaa66c0a5fb Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Sep 2023 05:33:37 +0300 Subject: [PATCH 043/376] fix(deps): Update dependency io.grpc:grpc-services to v1.57.2 (#119) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-services](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.57.1` -> `1.57.2` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-services) ### [`v1.57.2`](https://togithub.com/grpc/grpc-java/releases/tag/v1.57.2) ### Bug Fixes - util: Outlier detection tracer delegation ([#​10459](https://togithub.com/grpc/grpc-java/issues/10459)) ([#​10483](https://togithub.com/grpc/grpc-java/issues/10483))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 5899971..875891f 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -36,7 +36,7 @@ dependencies { implementation 'com.google.guava:guava:32.1.2-jre' implementation "io.grpc:grpc-protobuf:1.57.2" implementation "io.grpc:grpc-stub:1.57.1" - implementation "io.grpc:grpc-services:1.57.1" + implementation "io.grpc:grpc-services:1.57.2" implementation "io.grpc:grpc-testing:1.57.1" implementation "io.cloudquery:plugin-pb-java:0.0.6" implementation "org.apache.arrow:arrow-memory-core:12.0.1" From a3bb02c24c4dc7978554a4e95131a8194286003d Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Sep 2023 06:23:20 +0300 Subject: [PATCH 044/376] fix(deps): Update dependency io.grpc:grpc-stub to v1.57.2 (#120) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.57.1` -> `1.57.2` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-stub) ### [`v1.57.2`](https://togithub.com/grpc/grpc-java/releases/tag/v1.57.2) ### Bug Fixes - util: Outlier detection tracer delegation ([#​10459](https://togithub.com/grpc/grpc-java/issues/10459)) ([#​10483](https://togithub.com/grpc/grpc-java/issues/10483))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 875891f..b033773 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -35,7 +35,7 @@ dependencies { implementation 'info.picocli:picocli:4.7.5' implementation 'com.google.guava:guava:32.1.2-jre' implementation "io.grpc:grpc-protobuf:1.57.2" - implementation "io.grpc:grpc-stub:1.57.1" + implementation "io.grpc:grpc-stub:1.57.2" implementation "io.grpc:grpc-services:1.57.2" implementation "io.grpc:grpc-testing:1.57.1" implementation "io.cloudquery:plugin-pb-java:0.0.6" From 0df4a4f4c17ae3bf963c92d7fe5861889f0cdf26 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Sep 2023 06:25:20 +0300 Subject: [PATCH 045/376] fix(deps): Update dependency io.grpc:grpc-testing to v1.57.2 (#121) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-testing](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.57.1` -> `1.57.2` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-testing) ### [`v1.57.2`](https://togithub.com/grpc/grpc-java/releases/tag/v1.57.2) ### Bug Fixes - util: Outlier detection tracer delegation ([#​10459](https://togithub.com/grpc/grpc-java/issues/10459)) ([#​10483](https://togithub.com/grpc/grpc-java/issues/10483))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index b033773..d9b29f5 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation "io.grpc:grpc-protobuf:1.57.2" implementation "io.grpc:grpc-stub:1.57.2" implementation "io.grpc:grpc-services:1.57.2" - implementation "io.grpc:grpc-testing:1.57.1" + implementation "io.grpc:grpc-testing:1.57.2" implementation "io.cloudquery:plugin-pb-java:0.0.6" implementation "org.apache.arrow:arrow-memory-core:12.0.1" implementation "org.apache.arrow:arrow-vector:12.0.1" From 9c7b78fff2ae72fc2eb0f18e12372bf91bffffd5 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Sep 2023 12:41:31 +0300 Subject: [PATCH 046/376] chore(main): Release v0.0.10 (#115) :robot: I have created a release *beep* *boop* --- ## [0.0.10](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.9...v0.0.10) (2023-09-01) ### Bug Fixes * **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.15.2 ([#114](https://github.com/cloudquery/plugin-sdk-java/issues/114)) ([9784f43](https://github.com/cloudquery/plugin-sdk-java/commit/9784f43df5c53dcc36b1fd48354537d68ac137b3)) * **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.15.2 ([#116](https://github.com/cloudquery/plugin-sdk-java/issues/116)) ([ba041d9](https://github.com/cloudquery/plugin-sdk-java/commit/ba041d9e79b87671dc38e238b6e5dcd7dffe64e8)) * **deps:** Update dependency info.picocli:picocli to v4.7.5 ([#117](https://github.com/cloudquery/plugin-sdk-java/issues/117)) ([e6ebb84](https://github.com/cloudquery/plugin-sdk-java/commit/e6ebb84d33842517e9f9709a648d014ddb1d3d91)) * **deps:** Update dependency io.grpc:grpc-protobuf to v1.57.2 ([#118](https://github.com/cloudquery/plugin-sdk-java/issues/118)) ([59687cd](https://github.com/cloudquery/plugin-sdk-java/commit/59687cd98bffce0b7396babcede5ae07f426ee03)) * **deps:** Update dependency io.grpc:grpc-services to v1.57.2 ([#119](https://github.com/cloudquery/plugin-sdk-java/issues/119)) ([83ac40b](https://github.com/cloudquery/plugin-sdk-java/commit/83ac40bcb307cb671279db0a600b5aaa66c0a5fb)) * **deps:** Update dependency io.grpc:grpc-stub to v1.57.2 ([#120](https://github.com/cloudquery/plugin-sdk-java/issues/120)) ([a3bb02c](https://github.com/cloudquery/plugin-sdk-java/commit/a3bb02c24c4dc7978554a4e95131a8194286003d)) * **deps:** Update dependency io.grpc:grpc-testing to v1.57.2 ([#121](https://github.com/cloudquery/plugin-sdk-java/issues/121)) ([0df4a4f](https://github.com/cloudquery/plugin-sdk-java/commit/0df4a4f4c17ae3bf963c92d7fe5861889f0cdf26)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 13 +++++++++++++ lib/build.gradle | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d30ba3..beb05ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.0.10](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.9...v0.0.10) (2023-09-01) + + +### Bug Fixes + +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.15.2 ([#114](https://github.com/cloudquery/plugin-sdk-java/issues/114)) ([9784f43](https://github.com/cloudquery/plugin-sdk-java/commit/9784f43df5c53dcc36b1fd48354537d68ac137b3)) +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.15.2 ([#116](https://github.com/cloudquery/plugin-sdk-java/issues/116)) ([ba041d9](https://github.com/cloudquery/plugin-sdk-java/commit/ba041d9e79b87671dc38e238b6e5dcd7dffe64e8)) +* **deps:** Update dependency info.picocli:picocli to v4.7.5 ([#117](https://github.com/cloudquery/plugin-sdk-java/issues/117)) ([e6ebb84](https://github.com/cloudquery/plugin-sdk-java/commit/e6ebb84d33842517e9f9709a648d014ddb1d3d91)) +* **deps:** Update dependency io.grpc:grpc-protobuf to v1.57.2 ([#118](https://github.com/cloudquery/plugin-sdk-java/issues/118)) ([59687cd](https://github.com/cloudquery/plugin-sdk-java/commit/59687cd98bffce0b7396babcede5ae07f426ee03)) +* **deps:** Update dependency io.grpc:grpc-services to v1.57.2 ([#119](https://github.com/cloudquery/plugin-sdk-java/issues/119)) ([83ac40b](https://github.com/cloudquery/plugin-sdk-java/commit/83ac40bcb307cb671279db0a600b5aaa66c0a5fb)) +* **deps:** Update dependency io.grpc:grpc-stub to v1.57.2 ([#120](https://github.com/cloudquery/plugin-sdk-java/issues/120)) ([a3bb02c](https://github.com/cloudquery/plugin-sdk-java/commit/a3bb02c24c4dc7978554a4e95131a8194286003d)) +* **deps:** Update dependency io.grpc:grpc-testing to v1.57.2 ([#121](https://github.com/cloudquery/plugin-sdk-java/issues/121)) ([0df4a4f](https://github.com/cloudquery/plugin-sdk-java/commit/0df4a4f4c17ae3bf963c92d7fe5861889f0cdf26)) + ## [0.0.9](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.8...v0.0.9) (2023-08-31) diff --git a/lib/build.gradle b/lib/build.gradle index d9b29f5..0848a46 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.9' +version = '0.0.10' // x-release-please-end repositories { From acbcedab5f3c1ffa00c648fd1ff5f5542c372466 Mon Sep 17 00:00:00 2001 From: Martin Norbury Date: Fri, 1 Sep 2023 14:48:32 +0100 Subject: [PATCH 047/376] fix: remove unused data types (#122) We will add additional extension types as and when needed. --- .../transformers/TypeTransformer.java | 9 +--- .../java/io/cloudquery/types/InetType.java | 41 ------------------- .../java/io/cloudquery/types/ListType.java | 40 ------------------ .../transformers/TransformWithClassTest.java | 9 +--- .../transformers/TypeTransformerTest.java | 9 ---- .../io/cloudquery/types/ListTypeTest.java | 19 --------- 6 files changed, 3 insertions(+), 124 deletions(-) delete mode 100644 lib/src/main/java/io/cloudquery/types/InetType.java delete mode 100644 lib/src/main/java/io/cloudquery/types/ListType.java delete mode 100644 lib/src/test/java/io/cloudquery/types/ListTypeTest.java diff --git a/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java b/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java index 1a337e3..83f1076 100644 --- a/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java +++ b/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java @@ -1,9 +1,7 @@ package io.cloudquery.transformers; import io.cloudquery.scalar.Timestamp; -import io.cloudquery.types.InetType; import io.cloudquery.types.JSONType; -import io.cloudquery.types.ListType; import io.cloudquery.types.UUIDType; import java.lang.reflect.Field; import org.apache.arrow.vector.types.FloatingPointPrecision; @@ -37,9 +35,6 @@ private static ArrowType transformArrowType(String name, Class type) case "java.util.Map" -> { return JSONType.INSTANCE; } - case "java.net.InetAddress" -> { - return InetType.INSTANCE; - } case "java.time.LocalDateTime" -> { return Timestamp.dt; } @@ -52,9 +47,7 @@ private static ArrowType transformArrowType(String name, Class type) if (componentType.getName().equals("byte")) { return ArrowType.Binary.INSTANCE; } - // if element type is already json just return JSON rather than a list of JSON - ArrowType elementType = transformArrowType(name, componentType); - return elementType == JSONType.INSTANCE ? elementType : ListType.listOf(elementType); + return JSONType.INSTANCE; } if (!type.isPrimitive()) { return JSONType.INSTANCE; diff --git a/lib/src/main/java/io/cloudquery/types/InetType.java b/lib/src/main/java/io/cloudquery/types/InetType.java deleted file mode 100644 index bd20ea9..0000000 --- a/lib/src/main/java/io/cloudquery/types/InetType.java +++ /dev/null @@ -1,41 +0,0 @@ -package io.cloudquery.types; - -import org.apache.arrow.memory.BufferAllocator; -import org.apache.arrow.vector.FieldVector; -import org.apache.arrow.vector.types.pojo.ArrowType; -import org.apache.arrow.vector.types.pojo.FieldType; - -public class InetType extends ArrowType.ExtensionType { - public static final InetType INSTANCE = new InetType(); - public static final String EXTENSION_NAME = "inet"; - - @Override - public ArrowType storageType() { - return Binary.INSTANCE; - } - - @Override - public String extensionName() { - return EXTENSION_NAME; - } - - @Override - public boolean extensionEquals(ExtensionType other) { - return other instanceof InetType; - } - - @Override - public String serialize() { - return null; - } - - @Override - public ArrowType deserialize(ArrowType storageType, String serializedData) { - return null; - } - - @Override - public FieldVector getNewVector(String name, FieldType fieldType, BufferAllocator allocator) { - return null; - } -} diff --git a/lib/src/main/java/io/cloudquery/types/ListType.java b/lib/src/main/java/io/cloudquery/types/ListType.java deleted file mode 100644 index de354fe..0000000 --- a/lib/src/main/java/io/cloudquery/types/ListType.java +++ /dev/null @@ -1,40 +0,0 @@ -package io.cloudquery.types; - -import java.util.Objects; -import org.apache.arrow.vector.types.pojo.ArrowType; - -public class ListType extends ArrowType.List { - - public static ListType listOf(ArrowType elementType) { - return new ListType(elementType); - } - - private final ArrowType elementType; - - public ListType(ArrowType elementType) { - this.elementType = elementType; - } - - public ArrowType getElementType() { - return elementType; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - if (!super.equals(o)) return false; - ListType listType = (ListType) o; - return Objects.equals(elementType, listType.elementType); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), elementType); - } - - @Override - public String toString() { - return "ListType{" + "elementType=" + elementType + '}'; - } -} diff --git a/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java b/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java index dc56c30..e1e874b 100644 --- a/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java @@ -12,10 +12,7 @@ import io.cloudquery.schema.Column; import io.cloudquery.schema.Table; -import io.cloudquery.types.InetType; import io.cloudquery.types.JSONType; -import io.cloudquery.types.ListType; -import java.net.InetAddress; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.List; @@ -57,7 +54,6 @@ public static final class TestClass { private List intListCol; private String[] stringArrayCol; private List stringListCol; - private InetAddress inetAddressCol; private byte[] byteArrayCol; private Object[] anyArrayCol; private LocalDateTime timeCol; @@ -89,11 +85,10 @@ public static final class TestClass { Column.builder().name("boolean_col").type(Bool.INSTANCE).build(), Column.builder().name("boolean_object_col").type(Bool.INSTANCE).build(), Column.builder().name("json_col").type(JSONType.INSTANCE).build(), - Column.builder().name("int_array_col").type(ListType.listOf(new Int(64, true))).build(), + Column.builder().name("int_array_col").type(JSONType.INSTANCE).build(), Column.builder().name("int_list_col").type(JSONType.INSTANCE).build(), - Column.builder().name("string_array_col").type(ListType.listOf(Utf8.INSTANCE)).build(), + Column.builder().name("string_array_col").type(JSONType.INSTANCE).build(), Column.builder().name("string_list_col").type(JSONType.INSTANCE).build(), - Column.builder().name("inet_address_col").type(InetType.INSTANCE).build(), Column.builder().name("byte_array_col").type(Binary.INSTANCE).build(), Column.builder().name("any_array_col").type(JSONType.INSTANCE).build(), Column.builder() diff --git a/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java b/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java index e455229..df5704c 100644 --- a/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java @@ -3,9 +3,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import io.cloudquery.transformers.TypeTransformer.DefaultTypeTransformer; -import io.cloudquery.types.InetType; import io.cloudquery.types.JSONType; -import io.cloudquery.types.ListType; import java.net.InetAddress; import java.time.LocalDateTime; import java.time.ZoneOffset; @@ -98,10 +96,6 @@ public static Stream testArgumentsSource() { // Inner class Arguments.of("innerClassObjectField", JSONType.INSTANCE), - // Array field - Arguments.of("intArrayField", ListType.listOf(new ArrowType.Int(64, true))), - Arguments.of("stringArrayField", ListType.listOf(ArrowType.Utf8.INSTANCE)), - // Time Arguments.of( "timeField", new ArrowType.Timestamp(TimeUnit.MILLISECOND, ZoneOffset.UTC.getId())), @@ -109,9 +103,6 @@ public static Stream testArgumentsSource() { // Byte Arguments.of("byteArrayField", ArrowType.Binary.INSTANCE), - // Inet - Arguments.of("inetField", InetType.INSTANCE), - // Object array Arguments.of("objectArrayField", JSONType.INSTANCE)); } diff --git a/lib/src/test/java/io/cloudquery/types/ListTypeTest.java b/lib/src/test/java/io/cloudquery/types/ListTypeTest.java deleted file mode 100644 index 64b1261..0000000 --- a/lib/src/test/java/io/cloudquery/types/ListTypeTest.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.cloudquery.types; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotEquals; - -import org.apache.arrow.vector.types.pojo.ArrowType; -import org.junit.jupiter.api.Test; - -class ListTypeTest { - @Test - public void testEquality() { - ListType listType1 = ListType.listOf(new ArrowType.Int(64, true)); - ListType listType2 = ListType.listOf(new ArrowType.Int(64, true)); - ListType listType3 = ListType.listOf(new ArrowType.Int(32, true)); - - assertEquals(listType1, listType2); - assertNotEquals(listType1, listType3); - } -} From a48c5ae4cc41997e423e0de71369e0770a76f2ac Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Sep 2023 17:08:05 +0300 Subject: [PATCH 048/376] chore(main): Release v0.0.11 (#123) :robot: I have created a release *beep* *boop* --- ## [0.0.11](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.10...v0.0.11) (2023-09-01) ### Bug Fixes * remove unused data types ([#122](https://github.com/cloudquery/plugin-sdk-java/issues/122)) ([acbceda](https://github.com/cloudquery/plugin-sdk-java/commit/acbcedab5f3c1ffa00c648fd1ff5f5542c372466)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index beb05ba..25da534 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.11](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.10...v0.0.11) (2023-09-01) + + +### Bug Fixes + +* remove unused data types ([#122](https://github.com/cloudquery/plugin-sdk-java/issues/122)) ([acbceda](https://github.com/cloudquery/plugin-sdk-java/commit/acbcedab5f3c1ffa00c648fd1ff5f5542c372466)) + ## [0.0.10](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.9...v0.0.10) (2023-09-01) diff --git a/lib/build.gradle b/lib/build.gradle index 0848a46..ef41ec1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.10' +version = '0.0.11' // x-release-please-end repositories { From c72823ff5f89511a35e0bc7d2a347b77d4751f5c Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Oct 2023 03:37:27 +0300 Subject: [PATCH 049/376] chore(deps): Update github-actions (#124) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/gradle-build-action | action | digest | `8f08e41` -> `62cce3c` | | gradle/wrapper-validation-action | action | digest | `56b90f2` -> `342dbeb` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2dcbd3f..d95a8ac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: java-version: "18" cache: "gradle" - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@56b90f209b02bf6d1deae490e9ef18b21a389cd4 + uses: gradle/wrapper-validation-action@342dbebe7272035434f9baccc29a816ec6dd2c7b - name: Build package run: ./gradlew build env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 62c6054..c48ce3a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,9 +16,9 @@ jobs: java-version: '18' cache: 'gradle' - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@56b90f209b02bf6d1deae490e9ef18b21a389cd4 + uses: gradle/wrapper-validation-action@342dbebe7272035434f9baccc29a816ec6dd2c7b - name: Publish package - uses: gradle/gradle-build-action@8f08e41675472b8aa0aa2c356e8b2c1561af3bf9 + uses: gradle/gradle-build-action@62cce3c597efd445cd71ee868887b8b1117703a7 with: arguments: publish env: From 9307c76e0a1bd0ae0b965ecb72b82ad72d76ebc3 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Oct 2023 03:40:47 +0300 Subject: [PATCH 050/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.7 (#125) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.6` -> `0.0.7` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index ef41ec1..549316f 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation "io.grpc:grpc-stub:1.57.2" implementation "io.grpc:grpc-services:1.57.2" implementation "io.grpc:grpc-testing:1.57.2" - implementation "io.cloudquery:plugin-pb-java:0.0.6" + implementation "io.cloudquery:plugin-pb-java:0.0.7" implementation "org.apache.arrow:arrow-memory-core:12.0.1" implementation "org.apache.arrow:arrow-vector:12.0.1" From 405063845f83017b6adea4cbc7997ec4ec6d5441 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Oct 2023 04:44:29 +0300 Subject: [PATCH 051/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.2 (#127) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://togithub.com/jqno/equalsverifier)) | dependencies | patch | `3.15` -> `3.15.2` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.15.2`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3152---2023-09-23) ##### Fixed - For JPA entities with a hashCode that doesn't use all fields, and with `Warning.STRICT_HASHCODE` suppressed, an error was thrown. ([Issue 853](https://togithub.com/jqno/equalsverifier/issues/853)) ### [`v3.15.1`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3151---2023-08-02) ##### Fixed - For mapped fields in JPA entities, an error was thrown if the getter wasn't used in `equals` and `hashCode` even if the field wasn't used at all. ([Issue 816](https://togithub.com/jqno/equalsverifier/issues/816)) ##### Changed - Improves error messages when calling `#withPrefabValues` incorrectly.
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 549316f..578031e 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -53,7 +53,7 @@ dependencies { testImplementation('org.junit.jupiter:junit-jupiter-api:5.10.0') testImplementation('org.mockito:mockito-core:5.4.0') testImplementation('org.mockito:mockito-junit-jupiter:5.4.0') - testImplementation('nl.jqno.equalsverifier:equalsverifier:3.15') + testImplementation('nl.jqno.equalsverifier:equalsverifier:3.15.2') testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.10.0') testImplementation 'org.assertj:assertj-core:3.24.2' From 567a6f3ee3cc14af2417c2f2ca64c701eb69d3fa Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Oct 2023 04:46:43 +0300 Subject: [PATCH 052/376] fix(deps): Update dependency gradle to v8.3 (#128) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://togithub.com/gradle/gradle)) | minor | `8.2.1` -> `8.3` | --- ### Release Notes
gradle/gradle (gradle) ### [`v8.3`](https://togithub.com/gradle/gradle/releases/tag/v8.3.0): 8.3 [Compare Source](https://togithub.com/gradle/gradle/compare/v8.2.1...v8.3.0) The Gradle team is excited to announce Gradle 8.3. [Read the Release Notes](https://docs.gradle.org/8.3/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Adam](https://togithub.com/aSemy), [Ahmed Ehab](https://togithub.com/ahmedehabb), [Aurimas](https://togithub.com/liutikas), [Baptiste Decroix](https://togithub.com/bdecroix-spiria), [BjΓΆrn Kautler](https://togithub.com/Vampire), [Borewit](https://togithub.com/Borewit), [Korov](https://togithub.com/Korov), [Mohammed Thavaf](https://togithub.com/mthavaf), [Patrick BrΓΌckner](https://togithub.com/madmuffin1), [Philip Wedemann](https://togithub.com/hfhbd), [RΓ³bert Papp](https://togithub.com/TWiStErRob), [Shi Chen](https://togithub.com/CsCherrYY), [Tony Robalik](https://togithub.com/autonomousapps) #### Upgrade instructions Switch your build to use Gradle 8.3 by updating your wrapper: ./gradlew wrapper --gradle-version=8.3 #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://togithub.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.jar | Bin 63375 -> 63721 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 3 ++- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 033e24c4cdf41af1ab109bc7f253b2b887023340..7f93135c49b765f8051ef9d0a6055ff8e46073d8 100644 GIT binary patch delta 28216 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9f4197d..ac72c34 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index fcb6fca..0adc8e1 100755 --- a/gradlew +++ b/gradlew @@ -83,7 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum From 674b9b81f92d8b847e43f6049adb7c285dafb966 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Oct 2023 06:25:49 +0300 Subject: [PATCH 053/376] fix(deps): Update dependency io.grpc:grpc-protobuf to v1.58.0 (#129) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.57.2` -> `1.58.0` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-protobuf) ### [`v1.58.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.58.0) ##### API Changes - xds: Add missing ExperimentalApi to OrcaServiceImpl - stub: Removed deprecated methods attachHeaders and captureMetadata from MetadataUtils ([#​10443](https://togithub.com/grpc/grpc-java/issues/10443)) - api: Stabilized ServerCall.getAuthority() by removing experimental annotation ([#​10498](https://togithub.com/grpc/grpc-java/issues/10498)) - api: Stabilized `ServerCall#setMessageCompression()` and `PartialForwardingServerCall#setMessageCompression()` ([#​10393](https://togithub.com/grpc/grpc-java/issues/10393)) - protobuf: Stabilize `ProtoUtils.setExtensionRegistry()` and `ProtoLiteUtils.setExtensionRegistry()` ([#​10392](https://togithub.com/grpc/grpc-java/issues/10392)) - testing: Stabilize `GrpcCleanupRule`, `GrpcServerRule` ([#​10494](https://togithub.com/grpc/grpc-java/issues/10494)) - api: Stabilized ServerBuilder.handshakeTimeout ([#​10499](https://togithub.com/grpc/grpc-java/issues/10499)) - api: Removed Context.Storage deprecated method attach(), made doAttach() abstract ([#​10379](https://togithub.com/grpc/grpc-java/issues/10379)) - api : Stabilized methodDescriptor getRequestMarshaller, getResponseMarshaller ([#​10495](https://togithub.com/grpc/grpc-java/issues/10495)) ##### Behavior Changes - rls: Have RLS's LRU Cache rely on cleanup process to remove expired entries ([#​10400](https://togithub.com/grpc/grpc-java/issues/10400)) - core, inprocess, util: 2 new artifacts grpc-inprocess and grpc-util have been created by moving code from grpc-core to facilitate Java module support ([#​10362](https://togithub.com/grpc/grpc-java/issues/10362), [#​10390](https://togithub.com/grpc/grpc-java/issues/10390)) - all: Automatic module name support added to all artifacts ([#​10413](https://togithub.com/grpc/grpc-java/issues/10413)) - xds: Encode the service authority in XdsNameResolver ([#​10207](https://togithub.com/grpc/grpc-java/issues/10207)) ##### Improvements - api: In Javadoc, link to gRFCs A8/A9 for keepalive and related settings - okhttp: Enable support for being returned by `Grpc.newServerBuilderForPort()`. At present, Netty always has higher priority than OkHttp, if they are both available, because `ServerBuilder.forPort()` is not supported in the OkHttp transport but is supported in the Netty transport - bazel: Enhance java_grpc_library.bzl to allow toolchain to use annotation processors - examples: Add pre-serialized-message example ([#​10112](https://togithub.com/grpc/grpc-java/issues/10112)) - examples: Android examples to use AGP 7.4.0 ([#​10497](https://togithub.com/grpc/grpc-java/issues/10497)) ##### Bug Fixes - Fix compatibility with Java 8. This fixes the `NoSuchMethodError` for `ByteBuffer` methods present in 1.57.0 ([#​10441](https://togithub.com/grpc/grpc-java/issues/10441)) - xds: Remove debug assert in WeightedRoundRobinLoadBalancer. The assert was to detect breakages in the static stride algorithm causing too much looping. However, with multithreading it is possible to trigger even in legitimate scenarios ([#​10437](https://togithub.com/grpc/grpc-java/issues/10437)) - util: Outlier detection tracer delegation ([#​10459](https://togithub.com/grpc/grpc-java/issues/10459)) - Handle header with errors and endStream = true. Was filling logs with NPEs. ([#​10384](https://togithub.com/grpc/grpc-java/issues/10384)) - core: Fix a retriablestream bug that may cause deadlock with OkHttp ([#​10386](https://togithub.com/grpc/grpc-java/issues/10386)) - stub: Remove ThreadlessExecutor from BlockingServerStream to eliminate the problem where sometimes the iterator’s next() method would get stuck. ([#​10496](https://togithub.com/grpc/grpc-java/issues/10496)) - compiler: Fix aarch\_64 macs not being able to build the compiler module. ([#​10516](https://togithub.com/grpc/grpc-java/issues/10516)) - okhttp: Use padded length for flow control in both client and server transport ([#​10422](https://togithub.com/grpc/grpc-java/issues/10422)) - xds: Fix locality logging information in bootstrap ([#​10423](https://togithub.com/grpc/grpc-java/issues/10423)) ##### Dependencies - Upgraded protobuf to 3.24.0 - android: Min SDK level to 21 ([#​10505](https://togithub.com/grpc/grpc-java/issues/10505)) - Various dependency upgrades ([#​10359](https://togithub.com/grpc/grpc-java/issues/10359)): androidx.core:core 1.10.0 -> 1.10.1 com.google.api.grpc:proto-google-common-protos 2.17.0 -> 2.22.0 com.google.cloud:google-cloud-logging 3.14.5 -> 3.15.5 com.google.errorprone:error_prone_annotations 2.18.0 -> 2.20.0 com.squareup.okio:okio 1.17.5 -> 2.10.0 ##### Acknowledgements Halvard Skogsrud
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 578031e..ac1e231 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,7 +34,7 @@ dependencies { implementation 'com.google.guava:guava:32.1.2-jre' implementation 'info.picocli:picocli:4.7.5' implementation 'com.google.guava:guava:32.1.2-jre' - implementation "io.grpc:grpc-protobuf:1.57.2" + implementation "io.grpc:grpc-protobuf:1.58.0" implementation "io.grpc:grpc-stub:1.57.2" implementation "io.grpc:grpc-services:1.57.2" implementation "io.grpc:grpc-testing:1.57.2" From 1c07c8c8387e3baeee4759b3634a96f89aaaacd6 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Oct 2023 11:04:44 +0300 Subject: [PATCH 054/376] chore(main): Release v0.0.12 (#126) :robot: I have created a release *beep* *boop* --- ## [0.0.12](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.11...v0.0.12) (2023-10-01) ### Bug Fixes * **deps:** Update dependency gradle to v8.3 ([#128](https://github.com/cloudquery/plugin-sdk-java/issues/128)) ([567a6f3](https://github.com/cloudquery/plugin-sdk-java/commit/567a6f3ee3cc14af2417c2f2ca64c701eb69d3fa)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.7 ([#125](https://github.com/cloudquery/plugin-sdk-java/issues/125)) ([9307c76](https://github.com/cloudquery/plugin-sdk-java/commit/9307c76e0a1bd0ae0b965ecb72b82ad72d76ebc3)) * **deps:** Update dependency io.grpc:grpc-protobuf to v1.58.0 ([#129](https://github.com/cloudquery/plugin-sdk-java/issues/129)) ([674b9b8](https://github.com/cloudquery/plugin-sdk-java/commit/674b9b81f92d8b847e43f6049adb7c285dafb966)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.2 ([#127](https://github.com/cloudquery/plugin-sdk-java/issues/127)) ([4050638](https://github.com/cloudquery/plugin-sdk-java/commit/405063845f83017b6adea4cbc7997ec4ec6d5441)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 10 ++++++++++ lib/build.gradle | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25da534..204b139 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.0.12](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.11...v0.0.12) (2023-10-01) + + +### Bug Fixes + +* **deps:** Update dependency gradle to v8.3 ([#128](https://github.com/cloudquery/plugin-sdk-java/issues/128)) ([567a6f3](https://github.com/cloudquery/plugin-sdk-java/commit/567a6f3ee3cc14af2417c2f2ca64c701eb69d3fa)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.7 ([#125](https://github.com/cloudquery/plugin-sdk-java/issues/125)) ([9307c76](https://github.com/cloudquery/plugin-sdk-java/commit/9307c76e0a1bd0ae0b965ecb72b82ad72d76ebc3)) +* **deps:** Update dependency io.grpc:grpc-protobuf to v1.58.0 ([#129](https://github.com/cloudquery/plugin-sdk-java/issues/129)) ([674b9b8](https://github.com/cloudquery/plugin-sdk-java/commit/674b9b81f92d8b847e43f6049adb7c285dafb966)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.2 ([#127](https://github.com/cloudquery/plugin-sdk-java/issues/127)) ([4050638](https://github.com/cloudquery/plugin-sdk-java/commit/405063845f83017b6adea4cbc7997ec4ec6d5441)) + ## [0.0.11](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.10...v0.0.11) (2023-09-01) diff --git a/lib/build.gradle b/lib/build.gradle index ac1e231..9c61485 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.11' +version = '0.0.12' // x-release-please-end repositories { From eac54981b8061f54d3d7d059929d33b4640c403b Mon Sep 17 00:00:00 2001 From: Yevgeny Pats Date: Mon, 16 Oct 2023 20:51:14 +0300 Subject: [PATCH 055/376] Create config.yml --- .github/ISSUE_TEMPLATE/config.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/config.yml diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..733537c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: CloudQuery Central Issues Tracker + url: https://github.com/cloudquery/cloudquery/issues + about: Please file any issue with regards to any of CloudQuery repo in the main repository with the right labels. + - name: CloudQuery Discord Support + url: https://cloudquery.io/discord + about: Join our discord to get live support from us and the community. From 4df01d6af6be75d2659a6024afc937f8ff3e643e Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Nov 2023 02:32:51 +0200 Subject: [PATCH 056/376] chore(deps): Update gradle/gradle-build-action digest to 0bfe00a (#132) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/gradle-build-action | action | digest | `62cce3c` -> `0bfe00a` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c48ce3a..bc20d6c 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -18,7 +18,7 @@ jobs: - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@342dbebe7272035434f9baccc29a816ec6dd2c7b - name: Publish package - uses: gradle/gradle-build-action@62cce3c597efd445cd71ee868887b8b1117703a7 + uses: gradle/gradle-build-action@0bfe00a136db5e61ba3416b372542a65863a9fee with: arguments: publish env: From 627b49de71ab9e3fa90a3b930970a2b9f1d97a4f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Nov 2023 02:39:16 +0200 Subject: [PATCH 057/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.15.3 (#133) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-annotations](https://togithub.com/FasterXML/jackson) ([source](https://togithub.com/FasterXML/jackson-annotations)) | dependencies | patch | `2.15.2` -> `2.15.3` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 9c61485..b25fe3c 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -43,7 +43,7 @@ dependencies { implementation "org.apache.arrow:arrow-vector:12.0.1" implementation "com.fasterxml.jackson.core:jackson-core:2.15.2" - implementation "com.fasterxml.jackson.core:jackson-annotations:2.15.2" + implementation "com.fasterxml.jackson.core:jackson-annotations:2.15.3" implementation 'org.apache.logging.log4j:log4j-api:2.20.0' implementation 'org.apache.logging.log4j:log4j-core:2.20.0' From 235781df38e59ff9ae0257a0827561c9bfc26341 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Nov 2023 03:52:52 +0200 Subject: [PATCH 058/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-core to v2.15.3 (#135) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-core](https://togithub.com/FasterXML/jackson-core) | dependencies | patch | `2.15.2` -> `2.15.3` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index b25fe3c..dce52eb 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -42,7 +42,7 @@ dependencies { implementation "org.apache.arrow:arrow-memory-core:12.0.1" implementation "org.apache.arrow:arrow-vector:12.0.1" - implementation "com.fasterxml.jackson.core:jackson-core:2.15.2" + implementation "com.fasterxml.jackson.core:jackson-core:2.15.3" implementation "com.fasterxml.jackson.core:jackson-annotations:2.15.3" implementation 'org.apache.logging.log4j:log4j-api:2.20.0' From eb7b853ee48ca2dacb6f03b4b6f4d6cb1898a92f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Nov 2023 03:57:14 +0200 Subject: [PATCH 059/376] fix(deps): Update dependency com.google.guava:guava to v32.1.3-jre (#136) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.google.guava:guava](https://togithub.com/google/guava) | dependencies | patch | `32.1.2-jre` -> `32.1.3-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index dce52eb..be4dabe 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -31,9 +31,9 @@ dependencies { // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'org.jooq:joou:0.9.4' - implementation 'com.google.guava:guava:32.1.2-jre' + implementation 'com.google.guava:guava:32.1.3-jre' implementation 'info.picocli:picocli:4.7.5' - implementation 'com.google.guava:guava:32.1.2-jre' + implementation 'com.google.guava:guava:32.1.3-jre' implementation "io.grpc:grpc-protobuf:1.58.0" implementation "io.grpc:grpc-stub:1.57.2" implementation "io.grpc:grpc-services:1.57.2" From 8675852d77cf6676c1a6d214c4b53ad3ef3112e8 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Nov 2023 04:35:13 +0200 Subject: [PATCH 060/376] fix(deps): Update dependency gradle to v8.4 (#137) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://togithub.com/gradle/gradle)) | minor | `8.3` -> `8.4` | --- ### Release Notes
gradle/gradle (gradle) ### [`v8.4`](https://togithub.com/gradle/gradle/releases/tag/v8.4.0): 8.4 [Compare Source](https://togithub.com/gradle/gradle/compare/v8.3.0...v8.4.0) The Gradle team is excited to announce Gradle 8.4. Amongst other improvements, this release addresses two security vulnerabilities: - [Incorrect permission assignment for symlinked files used in copy or archiving operations](https://togithub.com/gradle/gradle/security/advisories/GHSA-43r3-pqhv-f7h9) - [Possible local text file exfiltration by XML External entity injection](https://togithub.com/gradle/gradle/security/advisories/GHSA-mrff-q8qj-xvg8) [Read the Release Notes](https://docs.gradle.org/8.4/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Ahmed Ehab](https://togithub.com/ahmedehabb), [Andrei Rybak](https://togithub.com/rybak), [Baptiste Decroix](https://togithub.com/bdecroix-spiria), [BjΓΆrn Kautler](https://togithub.com/Vampire), [Cesar de la Vega](https://togithub.com/vegaro), [Ganavi Jayaram](https://togithub.com/ganavijayaram), [Gaurav Padam](https://togithub.com/Gauravpadam), [hwanseok](https://togithub.com/hwanseok-dev), [J.T. McQuigg](https://togithub.com/JT122406), [Jakub Chrzanowski](https://togithub.com/hsz), [Jendrik Johannes](https://togithub.com/jjohannes), [kackey0-1](https://togithub.com/kackey0-1), [Konstantin Gribov](https://togithub.com/grossws), [Pratik Haldankar](https://togithub.com/pratik2315), [Qinglin](https://togithub.com/nodmp), [Sebastian Schuberth](https://togithub.com/sschuberth), [Thad House](https://togithub.com/ThadHouse), [valery1707](https://togithub.com/valery1707), [Vladimir Sitnikov](https://togithub.com/vlsi), [wuyangnju](https://togithub.com/wuyangnju), [Yanming Zhou](https://togithub.com/quaff), [Yanshun Li](https://togithub.com/Chaoba), [Yusuke Uehara](https://togithub.com/uskey512), [zeners](https://togithub.com/zeners) #### Upgrade instructions Switch your build to use Gradle 8.4 by updating your wrapper: ./gradlew wrapper --gradle-version=8.4 #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://togithub.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ac72c34..3fa8f86 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 0adc8e1..1aa94a4 100755 --- a/gradlew +++ b/gradlew @@ -145,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -153,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -202,11 +202,11 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ From 88d3e713338339dc9fd0dd1c23f55f7c0e508ac5 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Nov 2023 04:40:38 +0200 Subject: [PATCH 061/376] fix(deps): Update dependency io.grpc:grpc-protobuf to v1.59.0 (#138) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.58.0` -> `1.59.0` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-protobuf) ### [`v1.59.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.59.0) ##### gRPC Java 1.59.0 Release Notes **PLANNED ABI BREAKAGE!** This breaks the ABI of the `@ExperimentalApi` classes listed below. This does not impact source code (API); it only impacts code compiled with a different version of gRPC than it runs with (ABI). Users that recompiled their code using grpc-java [`v1.36.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.36.0) (released on Feb 23, 2021) and later, **ARE NOT AFFECTED**. Users that compiled their source using grpc-java earlier than `v1.36.0` may need to recompile when upgrading to grpc-java `v1.59.0`. See details in [#​10406](https://togithub.com/grpc/grpc-java/issues/10406). **Affected classes** Class `io.grpc.internal.AbstractManagedChannelImplBuilder` is deleted, and no longer in the class hierarchy of the channel builders: - `io.grpc.netty.NettyChannelBuilder` - `io.grpc.okhttp.OkhttpChannelBuilder` - `io.grpc.cronet.CronetChannelBuilder` Class `io.grpc.internal.AbstractServerImplBuilder` is deleted, and no longer in the class hierarchy of the server builders: - `io.grpc.netty.NettyServerBuilder` - `io.grpc.inprocess.InProcessServerBuilder` *** ##### API Changes - core: `AbstractManagedChannelImplBuilder` and `AbstractServerImplBuilder` are removed ([#​10530](https://togithub.com/grpc/grpc-java/issues/10530)). This is ABI-breaking, see the warning above. ([#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - core: Removed .class file hack previously introduced in [`v1.36.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.36.0) to ease removal of internal ABIs. ([#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - api: Add `ForwardingChannelBuilder2`, an ABI-safe version of `ForwardingChannelBuilder`, which will be deprecated in the following release. ([#​10585](https://togithub.com/grpc/grpc-java/issues/10585), [#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - api: Add `LoadBalancer.FixedResultPicker` convenience class for load balancer implementations. It is a replacement for `ErrorPicker` and `EMPTY_PICKER` added in 1.58.0 - testing: Stabilize TestMethodDescriptors ([#​10530](https://togithub.com/grpc/grpc-java/issues/10530)) ##### Behavior Changes - core: de-expermentalize pick first config parsing ([#​10531](https://togithub.com/grpc/grpc-java/issues/10531)) - netty: Respect -Dio.netty.allocator.type=unpooled when getting Netty Allocator instead of ignoring it ([#​10543](https://togithub.com/grpc/grpc-java/issues/10543)) - netty: Use UNAVAILABLE for connections closed while writing. Previously this would result in UNKNOWN - binder: Enable indirect addressing using s. ([#​10550](https://togithub.com/grpc/grpc-java/issues/10550)) ##### Improvements - core: only use reflection to resolve InternalCensusStatsAccessor once instead of once per channel - core: enhance error message in the case of DEADLINE_EXCEEDED to indicate name resolution delay. - netty: When creating a connection, use java.util.logging formatting instead of String.format to avoid work when not logged - netty: Touch ByteBuf when message framing has been decoded. If the buffer is leaked, this helps narrow down the source of reference counting bug - java_grpc_library.bzl: Disable Automatic Exec Groups inside grpc libraries ([#​10514](https://togithub.com/grpc/grpc-java/issues/10514)). This improves compatibility with future Bazel versions while retaining Bazel 5.x compatibility ##### Bug Fixes - netty: Avoid NettyAdaptiveCumulator incorrectly releasing its input ByteBuf twice when reading messages under certain error conditions ([#​10537](https://togithub.com/grpc/grpc-java/issues/10537)) - xds: Add fix for xdstp replacement for percent-encoded authorities ([#​10571](https://togithub.com/grpc/grpc-java/issues/10571)) ##### Documentation - API documentation (Javadoc) for Server and Channel builders now correctly displays inherited methods and the class hierarchy. ([#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - examples: add an example for OAuth ([#​10560](https://togithub.com/grpc/grpc-java/issues/10560)) ##### Dependencies - Upgrade Netty to 4.1.97.Final ##### Acknowledgements John Cormie ([@​jdcormie](https://togithub.com/jdcormie)) Stephane Landelle ([@​slandelle](https://togithub.com/slandelle)) [@​kotlaja](https://togithub.com/kotlaja)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index be4dabe..46aa0bf 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,7 +34,7 @@ dependencies { implementation 'com.google.guava:guava:32.1.3-jre' implementation 'info.picocli:picocli:4.7.5' implementation 'com.google.guava:guava:32.1.3-jre' - implementation "io.grpc:grpc-protobuf:1.58.0" + implementation "io.grpc:grpc-protobuf:1.59.0" implementation "io.grpc:grpc-stub:1.57.2" implementation "io.grpc:grpc-services:1.57.2" implementation "io.grpc:grpc-testing:1.57.2" From 556b91bf28fc21df9b1e1e7e6b42fe1396f505a8 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Nov 2023 05:27:27 +0200 Subject: [PATCH 062/376] fix(deps): Update dependency io.grpc:grpc-stub to v1.59.0 (#140) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.57.2` -> `1.59.0` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-stub) ### [`v1.59.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.59.0) #### gRPC Java 1.59.0 Release Notes **PLANNED ABI BREAKAGE!** This breaks the ABI of the `@ExperimentalApi` classes listed below. This does not impact source code (API); it only impacts code compiled with a different version of gRPC than it runs with (ABI). Users that recompiled their code using grpc-java [`v1.36.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.36.0) (released on Feb 23, 2021) and later, **ARE NOT AFFECTED**. Users that compiled their source using grpc-java earlier than `v1.36.0` may need to recompile when upgrading to grpc-java `v1.59.0`. See details in [#​10406](https://togithub.com/grpc/grpc-java/issues/10406). **Affected classes** Class `io.grpc.internal.AbstractManagedChannelImplBuilder` is deleted, and no longer in the class hierarchy of the channel builders: - `io.grpc.netty.NettyChannelBuilder` - `io.grpc.okhttp.OkhttpChannelBuilder` - `io.grpc.cronet.CronetChannelBuilder` Class `io.grpc.internal.AbstractServerImplBuilder` is deleted, and no longer in the class hierarchy of the server builders: - `io.grpc.netty.NettyServerBuilder` - `io.grpc.inprocess.InProcessServerBuilder` *** ##### API Changes - core: `AbstractManagedChannelImplBuilder` and `AbstractServerImplBuilder` are removed ([#​10530](https://togithub.com/grpc/grpc-java/issues/10530)). This is ABI-breaking, see the warning above. ([#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - core: Removed .class file hack previously introduced in [`v1.36.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.36.0) to ease removal of internal ABIs. ([#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - api: Add `ForwardingChannelBuilder2`, an ABI-safe version of `ForwardingChannelBuilder`, which will be deprecated in the following release. ([#​10585](https://togithub.com/grpc/grpc-java/issues/10585), [#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - api: Add `LoadBalancer.FixedResultPicker` convenience class for load balancer implementations. It is a replacement for `ErrorPicker` and `EMPTY_PICKER` added in 1.58.0 - testing: Stabilize TestMethodDescriptors ([#​10530](https://togithub.com/grpc/grpc-java/issues/10530)) ##### Behavior Changes - core: de-expermentalize pick first config parsing ([#​10531](https://togithub.com/grpc/grpc-java/issues/10531)) - netty: Respect -Dio.netty.allocator.type=unpooled when getting Netty Allocator instead of ignoring it ([#​10543](https://togithub.com/grpc/grpc-java/issues/10543)) - netty: Use UNAVAILABLE for connections closed while writing. Previously this would result in UNKNOWN - binder: Enable indirect addressing using s. ([#​10550](https://togithub.com/grpc/grpc-java/issues/10550)) ##### Improvements - core: only use reflection to resolve InternalCensusStatsAccessor once instead of once per channel - core: enhance error message in the case of DEADLINE_EXCEEDED to indicate name resolution delay. - netty: When creating a connection, use java.util.logging formatting instead of String.format to avoid work when not logged - netty: Touch ByteBuf when message framing has been decoded. If the buffer is leaked, this helps narrow down the source of reference counting bug - java_grpc_library.bzl: Disable Automatic Exec Groups inside grpc libraries ([#​10514](https://togithub.com/grpc/grpc-java/issues/10514)). This improves compatibility with future Bazel versions while retaining Bazel 5.x compatibility ##### Bug Fixes - netty: Avoid NettyAdaptiveCumulator incorrectly releasing its input ByteBuf twice when reading messages under certain error conditions ([#​10537](https://togithub.com/grpc/grpc-java/issues/10537)) - xds: Add fix for xdstp replacement for percent-encoded authorities ([#​10571](https://togithub.com/grpc/grpc-java/issues/10571)) ##### Documentation - API documentation (Javadoc) for Server and Channel builders now correctly displays inherited methods and the class hierarchy. ([#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - examples: add an example for OAuth ([#​10560](https://togithub.com/grpc/grpc-java/issues/10560)) ##### Dependencies - Upgrade Netty to 4.1.97.Final ##### Acknowledgements John Cormie ([@​jdcormie](https://togithub.com/jdcormie)) Stephane Landelle ([@​slandelle](https://togithub.com/slandelle)) [@​kotlaja](https://togithub.com/kotlaja) ### [`v1.58.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.58.0) ##### API Changes - xds: Add missing ExperimentalApi to OrcaServiceImpl - stub: Removed deprecated methods attachHeaders and captureMetadata from MetadataUtils ([#​10443](https://togithub.com/grpc/grpc-java/issues/10443)) - api: Stabilized ServerCall.getAuthority() by removing experimental annotation ([#​10498](https://togithub.com/grpc/grpc-java/issues/10498)) - api: Stabilized `ServerCall#setMessageCompression()` and `PartialForwardingServerCall#setMessageCompression()` ([#​10393](https://togithub.com/grpc/grpc-java/issues/10393)) - protobuf: Stabilize `ProtoUtils.setExtensionRegistry()` and `ProtoLiteUtils.setExtensionRegistry()` ([#​10392](https://togithub.com/grpc/grpc-java/issues/10392)) - testing: Stabilize `GrpcCleanupRule`, `GrpcServerRule` ([#​10494](https://togithub.com/grpc/grpc-java/issues/10494)) - api: Stabilized ServerBuilder.handshakeTimeout ([#​10499](https://togithub.com/grpc/grpc-java/issues/10499)) - api: Removed Context.Storage deprecated method attach(), made doAttach() abstract ([#​10379](https://togithub.com/grpc/grpc-java/issues/10379)) - api : Stabilized methodDescriptor getRequestMarshaller, getResponseMarshaller ([#​10495](https://togithub.com/grpc/grpc-java/issues/10495)) ##### Behavior Changes - rls: Have RLS's LRU Cache rely on cleanup process to remove expired entries ([#​10400](https://togithub.com/grpc/grpc-java/issues/10400)) - core, inprocess, util: 2 new artifacts grpc-inprocess and grpc-util have been created by moving code from grpc-core to facilitate Java module support ([#​10362](https://togithub.com/grpc/grpc-java/issues/10362), [#​10390](https://togithub.com/grpc/grpc-java/issues/10390)) - all: Automatic module name support added to all artifacts ([#​10413](https://togithub.com/grpc/grpc-java/issues/10413)) - xds: Encode the service authority in XdsNameResolver ([#​10207](https://togithub.com/grpc/grpc-java/issues/10207)) ##### Improvements - api: In Javadoc, link to gRFCs A8/A9 for keepalive and related settings - okhttp: Enable support for being returned by `Grpc.newServerBuilderForPort()`. At present, Netty always has higher priority than OkHttp, if they are both available, because `ServerBuilder.forPort()` is not supported in the OkHttp transport but is supported in the Netty transport - bazel: Enhance java_grpc_library.bzl to allow toolchain to use annotation processors - examples: Add pre-serialized-message example ([#​10112](https://togithub.com/grpc/grpc-java/issues/10112)) - examples: Android examples to use AGP 7.4.0 ([#​10497](https://togithub.com/grpc/grpc-java/issues/10497)) ##### Bug Fixes - Fix compatibility with Java 8. This fixes the `NoSuchMethodError` for `ByteBuffer` methods present in 1.57.0 ([#​10441](https://togithub.com/grpc/grpc-java/issues/10441)) - xds: Remove debug assert in WeightedRoundRobinLoadBalancer. The assert was to detect breakages in the static stride algorithm causing too much looping. However, with multithreading it is possible to trigger even in legitimate scenarios ([#​10437](https://togithub.com/grpc/grpc-java/issues/10437)) - util: Outlier detection tracer delegation ([#​10459](https://togithub.com/grpc/grpc-java/issues/10459)) - Handle header with errors and endStream = true. Was filling logs with NPEs. ([#​10384](https://togithub.com/grpc/grpc-java/issues/10384)) - core: Fix a retriablestream bug that may cause deadlock with OkHttp ([#​10386](https://togithub.com/grpc/grpc-java/issues/10386)) - stub: Remove ThreadlessExecutor from BlockingServerStream to eliminate the problem where sometimes the iterator’s next() method would get stuck. ([#​10496](https://togithub.com/grpc/grpc-java/issues/10496)) - compiler: Fix aarch\_64 macs not being able to build the compiler module. ([#​10516](https://togithub.com/grpc/grpc-java/issues/10516)) - okhttp: Use padded length for flow control in both client and server transport ([#​10422](https://togithub.com/grpc/grpc-java/issues/10422)) - xds: Fix locality logging information in bootstrap ([#​10423](https://togithub.com/grpc/grpc-java/issues/10423)) ##### Dependencies - Upgraded protobuf to 3.24.0 - android: Min SDK level to 21 ([#​10505](https://togithub.com/grpc/grpc-java/issues/10505)) - Various dependency upgrades ([#​10359](https://togithub.com/grpc/grpc-java/issues/10359)): androidx.core:core 1.10.0 -> 1.10.1 com.google.api.grpc:proto-google-common-protos 2.17.0 -> 2.22.0 com.google.cloud:google-cloud-logging 3.14.5 -> 3.15.5 com.google.errorprone:error_prone_annotations 2.18.0 -> 2.20.0 com.squareup.okio:okio 1.17.5 -> 2.10.0 ##### Acknowledgements Halvard Skogsrud
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 46aa0bf..2e02346 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -35,7 +35,7 @@ dependencies { implementation 'info.picocli:picocli:4.7.5' implementation 'com.google.guava:guava:32.1.3-jre' implementation "io.grpc:grpc-protobuf:1.59.0" - implementation "io.grpc:grpc-stub:1.57.2" + implementation "io.grpc:grpc-stub:1.59.0" implementation "io.grpc:grpc-services:1.57.2" implementation "io.grpc:grpc-testing:1.57.2" implementation "io.cloudquery:plugin-pb-java:0.0.7" From 21e49818c8a3e55f6b0316750cc8026151ea40d1 Mon Sep 17 00:00:00 2001 From: spieden Date: Sat, 25 Nov 2023 22:26:45 -0800 Subject: [PATCH 063/376] fix: add date types to ArrowHelper (#141) https://github.com/cloudquery/cloudquery/issues/15431 --- .../java/io/cloudquery/helper/ArrowHelper.java | 5 +++++ .../io/cloudquery/helper/ArrowHelperTest.java | 15 +++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java index e3a3a9e..7c99307 100644 --- a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java +++ b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java @@ -22,6 +22,7 @@ import org.apache.arrow.memory.RootAllocator; import org.apache.arrow.vector.BigIntVector; import org.apache.arrow.vector.BitVector; +import org.apache.arrow.vector.DateDayVector; import org.apache.arrow.vector.FieldVector; import org.apache.arrow.vector.FixedSizeBinaryVector; import org.apache.arrow.vector.Float4Vector; @@ -139,6 +140,10 @@ private static void setVectorData(FieldVector vector, Object data) { jsonVector.setSafe(0, (byte[]) data); return; } + if (vector instanceof DateDayVector dayDateVector) { + dayDateVector.set(0, (int) data); + return; + } throw new IllegalArgumentException("Unsupported vector type: " + vector.getClass()); } diff --git a/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java b/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java index ff52029..4a63eb3 100644 --- a/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java +++ b/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java @@ -15,8 +15,10 @@ import io.cloudquery.schema.Resource; import io.cloudquery.schema.Table; import java.io.IOException; +import java.time.LocalDate; import java.util.List; import java.util.Map; +import org.apache.arrow.vector.types.DateUnit; import org.apache.arrow.vector.types.pojo.ArrowType; import org.apache.arrow.vector.types.pojo.Field; import org.apache.arrow.vector.types.pojo.Schema; @@ -41,7 +43,11 @@ public class ArrowHelperTest { .primaryKey(true) .build(), Column.builder().name("string_column2").type(ArrowType.Utf8.INSTANCE).build(), - Column.builder().name("boolean_column").type(ArrowType.Bool.INSTANCE).build())) + Column.builder().name("boolean_column").type(ArrowType.Bool.INSTANCE).build(), + Column.builder() + .name("date_days_column") + .type(new ArrowType.Date(DateUnit.DAY)) + .build())) .build(); @Test @@ -69,6 +75,9 @@ public void testToArrowSchema() { CQ_EXTENSION_PRIMARY_KEY, "false")); + assertEquals(arrowSchema.getFields().get(2).getName(), "boolean_column"); + assertEquals(arrowSchema.getFields().get(3).getName(), "date_days_column"); + assertEquals( arrowSchema.getCustomMetadata(), Map.of( @@ -84,7 +93,8 @@ public void testFromArrowSchema() { List fields = List.of( Field.nullable("string_column1", ArrowType.Utf8.INSTANCE), - Field.nullable("string_column2", ArrowType.Utf8.INSTANCE)); + Field.nullable("string_column2", ArrowType.Utf8.INSTANCE), + Field.nullable("date_days_column", new ArrowType.Date(DateUnit.DAY))); Schema schema = new Schema(fields, Map.of(CQ_TABLE_NAME, "table1")); @@ -120,6 +130,7 @@ public void testRoundTripResourceEncoding() throws Exception { Resource resource = Resource.builder().table(TEST_TABLE).build(); resource.set("string_column1", "test_data"); resource.set("string_column2", "test_data2"); + resource.set("date_days_column", (int) LocalDate.parse("2023-11-24").toEpochDay()); resource.set("boolean_column", true); Assertions.assertDoesNotThrow( From 8c09cbb7a1b66efc3c9ca3e83bcc1370325c02ff Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 27 Nov 2023 12:10:01 +0200 Subject: [PATCH 064/376] chore(main): Release v0.0.13 (#134) :robot: I have created a release *beep* *boop* --- ## [0.0.13](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.12...v0.0.13) (2023-11-26) ### Bug Fixes * add date types to ArrowHelper ([#141](https://github.com/cloudquery/plugin-sdk-java/issues/141)) ([21e4981](https://github.com/cloudquery/plugin-sdk-java/commit/21e49818c8a3e55f6b0316750cc8026151ea40d1)) * **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.15.3 ([#133](https://github.com/cloudquery/plugin-sdk-java/issues/133)) ([627b49d](https://github.com/cloudquery/plugin-sdk-java/commit/627b49de71ab9e3fa90a3b930970a2b9f1d97a4f)) * **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.15.3 ([#135](https://github.com/cloudquery/plugin-sdk-java/issues/135)) ([235781d](https://github.com/cloudquery/plugin-sdk-java/commit/235781df38e59ff9ae0257a0827561c9bfc26341)) * **deps:** Update dependency com.google.guava:guava to v32.1.3-jre ([#136](https://github.com/cloudquery/plugin-sdk-java/issues/136)) ([eb7b853](https://github.com/cloudquery/plugin-sdk-java/commit/eb7b853ee48ca2dacb6f03b4b6f4d6cb1898a92f)) * **deps:** Update dependency gradle to v8.4 ([#137](https://github.com/cloudquery/plugin-sdk-java/issues/137)) ([8675852](https://github.com/cloudquery/plugin-sdk-java/commit/8675852d77cf6676c1a6d214c4b53ad3ef3112e8)) * **deps:** Update dependency io.grpc:grpc-protobuf to v1.59.0 ([#138](https://github.com/cloudquery/plugin-sdk-java/issues/138)) ([88d3e71](https://github.com/cloudquery/plugin-sdk-java/commit/88d3e713338339dc9fd0dd1c23f55f7c0e508ac5)) * **deps:** Update dependency io.grpc:grpc-stub to v1.59.0 ([#140](https://github.com/cloudquery/plugin-sdk-java/issues/140)) ([556b91b](https://github.com/cloudquery/plugin-sdk-java/commit/556b91bf28fc21df9b1e1e7e6b42fe1396f505a8)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 13 +++++++++++++ lib/build.gradle | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 204b139..c349431 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.0.13](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.12...v0.0.13) (2023-11-26) + + +### Bug Fixes + +* add date types to ArrowHelper ([#141](https://github.com/cloudquery/plugin-sdk-java/issues/141)) ([21e4981](https://github.com/cloudquery/plugin-sdk-java/commit/21e49818c8a3e55f6b0316750cc8026151ea40d1)) +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.15.3 ([#133](https://github.com/cloudquery/plugin-sdk-java/issues/133)) ([627b49d](https://github.com/cloudquery/plugin-sdk-java/commit/627b49de71ab9e3fa90a3b930970a2b9f1d97a4f)) +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.15.3 ([#135](https://github.com/cloudquery/plugin-sdk-java/issues/135)) ([235781d](https://github.com/cloudquery/plugin-sdk-java/commit/235781df38e59ff9ae0257a0827561c9bfc26341)) +* **deps:** Update dependency com.google.guava:guava to v32.1.3-jre ([#136](https://github.com/cloudquery/plugin-sdk-java/issues/136)) ([eb7b853](https://github.com/cloudquery/plugin-sdk-java/commit/eb7b853ee48ca2dacb6f03b4b6f4d6cb1898a92f)) +* **deps:** Update dependency gradle to v8.4 ([#137](https://github.com/cloudquery/plugin-sdk-java/issues/137)) ([8675852](https://github.com/cloudquery/plugin-sdk-java/commit/8675852d77cf6676c1a6d214c4b53ad3ef3112e8)) +* **deps:** Update dependency io.grpc:grpc-protobuf to v1.59.0 ([#138](https://github.com/cloudquery/plugin-sdk-java/issues/138)) ([88d3e71](https://github.com/cloudquery/plugin-sdk-java/commit/88d3e713338339dc9fd0dd1c23f55f7c0e508ac5)) +* **deps:** Update dependency io.grpc:grpc-stub to v1.59.0 ([#140](https://github.com/cloudquery/plugin-sdk-java/issues/140)) ([556b91b](https://github.com/cloudquery/plugin-sdk-java/commit/556b91bf28fc21df9b1e1e7e6b42fe1396f505a8)) + ## [0.0.12](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.11...v0.0.12) (2023-10-01) diff --git a/lib/build.gradle b/lib/build.gradle index 2e02346..664c563 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.12' +version = '0.0.13' // x-release-please-end repositories { From d59f91a76b33c8a311bbc6584ca9d4dd43d627bf Mon Sep 17 00:00:00 2001 From: Alex Shcherbakov Date: Mon, 27 Nov 2023 13:27:11 +0200 Subject: [PATCH 065/376] feat: Add better roundtrip support (#142) Follow-up for https://github.com/cloudquery/plugin-sdk-java/pull/141 Also notice https://github.com/apache/arrow/issues/38891 --- .../io/cloudquery/helper/ArrowHelper.java | 167 +++++++++----- .../java/io/cloudquery/scalar/DateMilli.java | 7 + .../java/io/cloudquery/scalar/Number.java | 5 + .../transformers/TypeTransformer.java | 2 +- .../java/io/cloudquery/types/UUIDType.java | 1 + .../io/cloudquery/helper/ArrowHelperTest.java | 217 ++++++++++++++---- .../transformers/TransformWithClassTest.java | 6 +- .../transformers/TypeTransformerTest.java | 7 + 8 files changed, 306 insertions(+), 106 deletions(-) diff --git a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java index 7c99307..be21059 100644 --- a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java +++ b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java @@ -8,45 +8,30 @@ import io.cloudquery.schema.Resource; import io.cloudquery.schema.Table; import io.cloudquery.schema.Table.TableBuilder; +import io.cloudquery.types.JSONType; import io.cloudquery.types.JSONType.JSONVector; +import io.cloudquery.types.UUIDType; import io.cloudquery.types.UUIDType.UUIDVector; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.channels.Channels; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.time.Duration; +import java.util.*; import org.apache.arrow.memory.BufferAllocator; import org.apache.arrow.memory.RootAllocator; -import org.apache.arrow.vector.BigIntVector; -import org.apache.arrow.vector.BitVector; -import org.apache.arrow.vector.DateDayVector; -import org.apache.arrow.vector.FieldVector; -import org.apache.arrow.vector.FixedSizeBinaryVector; -import org.apache.arrow.vector.Float4Vector; -import org.apache.arrow.vector.Float8Vector; -import org.apache.arrow.vector.IntVector; -import org.apache.arrow.vector.LargeVarBinaryVector; -import org.apache.arrow.vector.LargeVarCharVector; -import org.apache.arrow.vector.SmallIntVector; -import org.apache.arrow.vector.TimeStampVector; -import org.apache.arrow.vector.TinyIntVector; -import org.apache.arrow.vector.UInt1Vector; -import org.apache.arrow.vector.UInt2Vector; -import org.apache.arrow.vector.UInt4Vector; -import org.apache.arrow.vector.UInt8Vector; -import org.apache.arrow.vector.VarBinaryVector; -import org.apache.arrow.vector.VarCharVector; -import org.apache.arrow.vector.VectorSchemaRoot; +import org.apache.arrow.vector.*; import org.apache.arrow.vector.ipc.ArrowReader; import org.apache.arrow.vector.ipc.ArrowStreamReader; import org.apache.arrow.vector.ipc.ArrowStreamWriter; +import org.apache.arrow.vector.types.pojo.ArrowType; import org.apache.arrow.vector.types.pojo.Field; import org.apache.arrow.vector.types.pojo.FieldType; import org.apache.arrow.vector.types.pojo.Schema; import org.apache.arrow.vector.util.Text; +import org.joou.UByte; +import org.joou.UInteger; +import org.joou.ULong; +import org.joou.UShort; public class ArrowHelper { public static final String CQ_EXTENSION_INCREMENTAL = "cq:extension:incremental"; @@ -72,6 +57,32 @@ private static void setVectorData(FieldVector vector, Object data) { bitVector.set(0, (boolean) data ? 1 : 0); return; } + if (vector instanceof DateDayVector dayDateVector) { + dayDateVector.set(0, (int) data); + return; + } + if (vector instanceof DateMilliVector dateMilliVector) { + dateMilliVector.set(0, (long) data); + return; + } + if (vector instanceof DurationVector durationVector) { + Duration duration = (Duration) data; + switch (durationVector.getUnit()) { + case SECOND -> { + durationVector.set(0, duration.toSeconds()); + } + case MILLISECOND -> { + durationVector.set(0, duration.toMillis()); + } + case MICROSECOND -> { + durationVector.set(0, duration.toNanos() / 1000); + } + case NANOSECOND -> { + durationVector.set(0, duration.toNanos()); + } + } + return; + } if (vector instanceof FixedSizeBinaryVector fixedSizeBinaryVector) { fixedSizeBinaryVector.set(0, (byte[]) data); return; @@ -100,6 +111,22 @@ private static void setVectorData(FieldVector vector, Object data) { smallIntVector.set(0, (short) data); return; } + if (vector instanceof TimeMicroVector timeMicroVector) { + timeMicroVector.set(0, (long) data); + return; + } + if (vector instanceof TimeMilliVector timeMilliVector) { + timeMilliVector.set(0, (int) data); + return; + } + if (vector instanceof TimeNanoVector timeNanoVector) { + timeNanoVector.set(0, (long) data); + return; + } + if (vector instanceof TimeSecVector timeSecVector) { + timeSecVector.set(0, (int) data); + return; + } if (vector instanceof TimeStampVector timeStampVector) { timeStampVector.set(0, (long) data); return; @@ -109,19 +136,19 @@ private static void setVectorData(FieldVector vector, Object data) { return; } if (vector instanceof UInt1Vector uInt1Vector) { - uInt1Vector.set(0, (byte) data); + uInt1Vector.set(0, ((UByte) data).shortValue()); return; } if (vector instanceof UInt2Vector uInt2Vector) { - uInt2Vector.set(0, (short) data); + uInt2Vector.set(0, ((UShort) data).intValue()); return; } if (vector instanceof UInt4Vector uInt4Vector) { - uInt4Vector.set(0, (int) data); + uInt4Vector.set(0, ((UInteger) data).intValue()); return; } if (vector instanceof UInt8Vector uInt8Vector) { - uInt8Vector.set(0, (long) data); + uInt8Vector.set(0, ((ULong) data).longValue()); return; } if (vector instanceof VarBinaryVector varBinaryVector) { @@ -132,16 +159,14 @@ private static void setVectorData(FieldVector vector, Object data) { vectorCharVector.set(0, (Text) data); return; } - if (vector instanceof UUIDVector uuidVector) { - uuidVector.set(0, (java.util.UUID) data); - return; - } + // CloudQuery-specific if (vector instanceof JSONVector jsonVector) { jsonVector.setSafe(0, (byte[]) data); return; } - if (vector instanceof DateDayVector dayDateVector) { - dayDateVector.set(0, (int) data); + // CloudQuery-specific + if (vector instanceof UUIDVector uuidVector) { + uuidVector.set(0, (java.util.UUID) data); return; } @@ -177,17 +202,7 @@ public static Schema toArrowSchema(Table table) { List columns = table.getColumns(); Field[] fields = new Field[columns.size()]; for (int i = 0; i < columns.size(); i++) { - Column column = columns.get(i); - Map metadata = new HashMap<>(); - metadata.put(CQ_EXTENSION_UNIQUE, Boolean.toString(column.isUnique())); - metadata.put(CQ_EXTENSION_PRIMARY_KEY, Boolean.toString(column.isPrimaryKey())); - metadata.put(CQ_EXTENSION_INCREMENTAL, Boolean.toString(column.isIncrementalKey())); - Field field = - new Field( - column.getName(), - new FieldType(!column.isNotNull(), column.getType(), null, metadata), - null); - fields[i] = field; + fields[i] = getField(columns.get(i)); } Map metadata = new HashMap<>(); metadata.put(CQ_TABLE_NAME, table.getName()); @@ -204,23 +219,21 @@ public static Schema toArrowSchema(Table table) { return new Schema(asList(fields), metadata); } + private static Field getField(Column column) { + Map metadata = new HashMap<>(); + metadata.put(CQ_EXTENSION_UNIQUE, Boolean.toString(column.isUnique())); + metadata.put(CQ_EXTENSION_PRIMARY_KEY, Boolean.toString(column.isPrimaryKey())); + metadata.put(CQ_EXTENSION_INCREMENTAL, Boolean.toString(column.isIncrementalKey())); + return new Field( + column.getName(), + new FieldType(!column.isNotNull(), column.getType(), null, metadata), + null); + } + public static Table fromArrowSchema(Schema schema) { List columns = new ArrayList<>(); for (Field field : schema.getFields()) { - boolean isUnique = Objects.equals(field.getMetadata().get(CQ_EXTENSION_UNIQUE), "true"); - boolean isPrimaryKey = - Objects.equals(field.getMetadata().get(CQ_EXTENSION_PRIMARY_KEY), "true"); - boolean isIncrementalKey = - Objects.equals(field.getMetadata().get(CQ_EXTENSION_INCREMENTAL), "true"); - - columns.add( - Column.builder() - .name(field.getName()) - .unique(isUnique) - .primaryKey(isPrimaryKey) - .incrementalKey(isIncrementalKey) - .type(field.getType()) - .build()); + columns.add(getColumn(field)); } Map metaData = schema.getCustomMetadata(); @@ -244,6 +257,40 @@ public static Table fromArrowSchema(Schema schema) { return tableBuilder.build(); } + private static Column getColumn(Field field) { + boolean isUnique = Objects.equals(field.getMetadata().get(CQ_EXTENSION_UNIQUE), "true"); + boolean isPrimaryKey = + Objects.equals(field.getMetadata().get(CQ_EXTENSION_PRIMARY_KEY), "true"); + boolean isIncrementalKey = + Objects.equals(field.getMetadata().get(CQ_EXTENSION_INCREMENTAL), "true"); + + ArrowType fieldType = field.getType(); + String extensionName = + field.getMetadata().get(ArrowType.ExtensionType.EXTENSION_METADATA_KEY_NAME); + String extensionMetadata = + field.getMetadata().get(ArrowType.ExtensionType.EXTENSION_METADATA_KEY_METADATA); + + // We need to scan our extension types manually because of + // https://github.com/apache/arrow/issues/38891 + if (JSONType.EXTENSION_NAME.equals(extensionName) + && JSONType.INSTANCE.serialize().equals(extensionMetadata) + && JSONType.INSTANCE.storageType().equals(fieldType)) { + fieldType = JSONType.INSTANCE; + } else if (UUIDType.EXTENSION_NAME.equals(extensionName) + && UUIDType.INSTANCE.serialize().equals(extensionMetadata) + && UUIDType.INSTANCE.storageType().equals(fieldType)) { + fieldType = UUIDType.INSTANCE; + } + + return Column.builder() + .name(field.getName()) + .unique(isUnique) + .primaryKey(isPrimaryKey) + .incrementalKey(isIncrementalKey) + .type(fieldType) + .build(); + } + public static ByteString encode(Resource resource) throws IOException { try (BufferAllocator bufferAllocator = new RootAllocator()) { Table table = resource.getTable(); diff --git a/lib/src/main/java/io/cloudquery/scalar/DateMilli.java b/lib/src/main/java/io/cloudquery/scalar/DateMilli.java index 524d585..97aec0f 100644 --- a/lib/src/main/java/io/cloudquery/scalar/DateMilli.java +++ b/lib/src/main/java/io/cloudquery/scalar/DateMilli.java @@ -1,5 +1,6 @@ package io.cloudquery.scalar; +import java.time.LocalDateTime; import org.apache.arrow.vector.types.DateUnit; import org.apache.arrow.vector.types.pojo.ArrowType; @@ -34,6 +35,12 @@ public void setValue(Object value) throws ValidationException { return; } + if (value instanceof LocalDateTime localDateTime) { + // we actually store only date + this.value = localDateTime.toLocalDate().toEpochDay(); + return; + } + throw new ValidationException( ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); } diff --git a/lib/src/main/java/io/cloudquery/scalar/Number.java b/lib/src/main/java/io/cloudquery/scalar/Number.java index c8891cf..6c668f2 100644 --- a/lib/src/main/java/io/cloudquery/scalar/Number.java +++ b/lib/src/main/java/io/cloudquery/scalar/Number.java @@ -207,6 +207,11 @@ protected void setValue(Object value) throws ValidationException { return; } + if (value instanceof Character character) { + this.value = UShort.valueOf(character); + return; + } + throw new ValidationException( ValidationException.NO_CONVERSION_AVAILABLE, this.dataType(), value); } diff --git a/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java b/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java index 83f1076..4157f71 100644 --- a/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java +++ b/lib/src/main/java/io/cloudquery/transformers/TypeTransformer.java @@ -39,7 +39,7 @@ private static ArrowType transformArrowType(String name, Class type) return Timestamp.dt; } case "java.util.UUID" -> { - return new UUIDType(); + return UUIDType.INSTANCE; } default -> { if (type.isArray()) { diff --git a/lib/src/main/java/io/cloudquery/types/UUIDType.java b/lib/src/main/java/io/cloudquery/types/UUIDType.java index cdc6b69..e36ee39 100644 --- a/lib/src/main/java/io/cloudquery/types/UUIDType.java +++ b/lib/src/main/java/io/cloudquery/types/UUIDType.java @@ -12,6 +12,7 @@ import org.apache.arrow.vector.types.pojo.FieldType; public class UUIDType extends ExtensionType { + public static final UUIDType INSTANCE = new UUIDType(); public static final int BYTE_WIDTH = 16; public static final String EXTENSION_NAME = "uuid"; diff --git a/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java b/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java index 4a63eb3..5c587e4 100644 --- a/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java +++ b/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java @@ -1,24 +1,24 @@ package io.cloudquery.helper; -import static io.cloudquery.helper.ArrowHelper.CQ_EXTENSION_CONSTRAINT_NAME; -import static io.cloudquery.helper.ArrowHelper.CQ_EXTENSION_INCREMENTAL; -import static io.cloudquery.helper.ArrowHelper.CQ_EXTENSION_PRIMARY_KEY; -import static io.cloudquery.helper.ArrowHelper.CQ_EXTENSION_UNIQUE; -import static io.cloudquery.helper.ArrowHelper.CQ_TABLE_DEPENDS_ON; -import static io.cloudquery.helper.ArrowHelper.CQ_TABLE_DESCRIPTION; -import static io.cloudquery.helper.ArrowHelper.CQ_TABLE_NAME; -import static io.cloudquery.helper.ArrowHelper.CQ_TABLE_TITLE; +import static io.cloudquery.helper.ArrowHelper.*; import static org.junit.jupiter.api.Assertions.assertEquals; import com.google.protobuf.ByteString; import io.cloudquery.schema.Column; import io.cloudquery.schema.Resource; import io.cloudquery.schema.Table; +import io.cloudquery.types.JSONType; +import io.cloudquery.types.UUIDType; import java.io.IOException; -import java.time.LocalDate; +import java.time.Duration; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.List; import java.util.Map; +import java.util.UUID; import org.apache.arrow.vector.types.DateUnit; +import org.apache.arrow.vector.types.TimeUnit; +import org.apache.arrow.vector.types.Types; import org.apache.arrow.vector.types.pojo.ArrowType; import org.apache.arrow.vector.types.pojo.Field; import org.apache.arrow.vector.types.pojo.Schema; @@ -36,47 +36,154 @@ public class ArrowHelperTest { .columns( List.of( Column.builder() - .name("string_column1") + .name("pk") .type(ArrowType.Utf8.INSTANCE) .unique(true) .incrementalKey(true) .primaryKey(true) .build(), - Column.builder().name("string_column2").type(ArrowType.Utf8.INSTANCE).build(), - Column.builder().name("boolean_column").type(ArrowType.Bool.INSTANCE).build(), + Column.builder().name("big_int").type(Types.MinorType.BIGINT.getType()).build(), + Column.builder().name("bit").type(Types.MinorType.BIT.getType()).build(), + Column.builder().name("date_day").type(Types.MinorType.DATEDAY.getType()).build(), Column.builder() - .name("date_days_column") - .type(new ArrowType.Date(DateUnit.DAY)) - .build())) + .name("date_milli") + .type(Types.MinorType.DATEMILLI.getType()) + .build(), + Column.builder() + .name("duration_s") + .type(new ArrowType.Duration(TimeUnit.SECOND)) + .build(), + Column.builder() + .name("duration_ms") + .type(new ArrowType.Duration(TimeUnit.MILLISECOND)) + .build(), + Column.builder() + .name("duration_us") + .type(new ArrowType.Duration(TimeUnit.MICROSECOND)) + .build(), + Column.builder() + .name("duration_ns") + .type(new ArrowType.Duration(TimeUnit.NANOSECOND)) + .build(), + Column.builder().name("float4").type(Types.MinorType.FLOAT4.getType()).build(), + Column.builder().name("float8").type(Types.MinorType.FLOAT8.getType()).build(), + Column.builder().name("int").type(Types.MinorType.INT.getType()).build(), + Column.builder() + .name("large_varbinary") + .type(Types.MinorType.LARGEVARBINARY.getType()) + .build(), + Column.builder() + .name("large_varchar") + .type(Types.MinorType.LARGEVARCHAR.getType()) + .build(), + Column.builder() + .name("small_int") + .type(Types.MinorType.SMALLINT.getType()) + .build(), + Column.builder() + .name("timestamp_s") + .type(Types.MinorType.TIMESTAMPSEC.getType()) + .build(), + Column.builder() + .name("timestamp_ms") + .type(Types.MinorType.TIMESTAMPMILLI.getType()) + .build(), + Column.builder() + .name("timestamp_us") + .type(Types.MinorType.TIMESTAMPMICRO.getType()) + .build(), + Column.builder() + .name("timestamp_ns") + .type(Types.MinorType.TIMESTAMPNANO.getType()) + .build(), + Column.builder() + .name("timestamp_s_tz") + .type(new ArrowType.Timestamp(TimeUnit.SECOND, ZoneOffset.UTC.getId())) + .build(), + Column.builder() + .name("timestamp_ms_tz") + .type(new ArrowType.Timestamp(TimeUnit.MILLISECOND, ZoneOffset.UTC.getId())) + .build(), + Column.builder() + .name("timestamp_us_tz") + .type(new ArrowType.Timestamp(TimeUnit.MICROSECOND, ZoneOffset.UTC.getId())) + .build(), + Column.builder() + .name("timestamp_ns_tz") + .type(new ArrowType.Timestamp(TimeUnit.NANOSECOND, ZoneOffset.UTC.getId())) + .build(), + Column.builder().name("tiny_int").type(Types.MinorType.TINYINT.getType()).build(), + Column.builder().name("uint1").type(Types.MinorType.UINT1.getType()).build(), + Column.builder().name("uint2").type(Types.MinorType.UINT2.getType()).build(), + Column.builder().name("uint4").type(Types.MinorType.UINT4.getType()).build(), + Column.builder().name("uint8").type(Types.MinorType.UINT8.getType()).build(), + Column.builder() + .name("varbinary") + .type(Types.MinorType.VARBINARY.getType()) + .build(), + Column.builder().name("varchar").type(Types.MinorType.VARCHAR.getType()).build(), + Column.builder().name("json").type(JSONType.INSTANCE).build(), + Column.builder().name("uuid").type(UUIDType.INSTANCE).build())) .build(); @Test public void testToArrowSchema() { Schema arrowSchema = ArrowHelper.toArrowSchema(TEST_TABLE); - assertEquals(arrowSchema.getFields().get(0).getName(), "string_column1"); - assertEquals( - arrowSchema.getFields().get(0).getMetadata(), - Map.of( - CQ_EXTENSION_UNIQUE, - "true", - CQ_EXTENSION_INCREMENTAL, - "true", - CQ_EXTENSION_PRIMARY_KEY, - "true")); - assertEquals(arrowSchema.getFields().get(1).getName(), "string_column2"); - assertEquals( - arrowSchema.getFields().get(1).getMetadata(), - Map.of( - CQ_EXTENSION_UNIQUE, - "false", - CQ_EXTENSION_INCREMENTAL, - "false", - CQ_EXTENSION_PRIMARY_KEY, - "false")); - - assertEquals(arrowSchema.getFields().get(2).getName(), "boolean_column"); - assertEquals(arrowSchema.getFields().get(3).getName(), "date_days_column"); + for (Column col : TEST_TABLE.getColumns()) { + int idx = TEST_TABLE.indexOfColumn(col.getName()); + Field field = arrowSchema.getFields().get(idx); + assertEquals(col.getName(), field.getName()); + if (idx == 0) { + assertEquals( + Map.of( + CQ_EXTENSION_UNIQUE, + "true", + CQ_EXTENSION_INCREMENTAL, + "true", + CQ_EXTENSION_PRIMARY_KEY, + "true"), + field.getMetadata()); + } else if (col.getName().equals("json")) { + assertEquals( + Map.of( + CQ_EXTENSION_UNIQUE, + "false", + CQ_EXTENSION_INCREMENTAL, + "false", + CQ_EXTENSION_PRIMARY_KEY, + "false", + ArrowType.ExtensionType.EXTENSION_METADATA_KEY_NAME, + "json", + ArrowType.ExtensionType.EXTENSION_METADATA_KEY_METADATA, + "json-serialized"), + field.getMetadata()); + } else if (col.getName().equals("uuid")) { + assertEquals( + Map.of( + CQ_EXTENSION_UNIQUE, + "false", + CQ_EXTENSION_INCREMENTAL, + "false", + CQ_EXTENSION_PRIMARY_KEY, + "false", + ArrowType.ExtensionType.EXTENSION_METADATA_KEY_NAME, + "uuid", + ArrowType.ExtensionType.EXTENSION_METADATA_KEY_METADATA, + "uuid-serialized"), + field.getMetadata()); + } else { + assertEquals( + Map.of( + CQ_EXTENSION_UNIQUE, + "false", + CQ_EXTENSION_INCREMENTAL, + "false", + CQ_EXTENSION_PRIMARY_KEY, + "false"), + field.getMetadata()); + } + } assertEquals( arrowSchema.getCustomMetadata(), @@ -118,20 +225,42 @@ public void testRoundTripTableEncoding() throws IOException { assertEquals(table.getDescription(), TEST_TABLE.getDescription()); assertEquals(table.getTitle(), TEST_TABLE.getTitle()); assertEquals(table.getParent().getName(), TEST_TABLE.getParent().getName()); + assertEquals(TEST_TABLE.getColumns().size(), table.getColumns().size()); for (int i = 0; i < TEST_TABLE.getColumns().size(); i++) { - assertEquals(TEST_TABLE.getColumns().get(i).getName(), table.getColumns().get(i).getName()); - assertEquals(TEST_TABLE.getColumns().get(i).getType(), table.getColumns().get(i).getType()); + Column srcCol = TEST_TABLE.getColumns().get(i); + Column dstCol = table.getColumns().get(i); + assertEquals(srcCol.getName(), dstCol.getName()); + assertEquals(srcCol.getType(), dstCol.getType()); } } @Test public void testRoundTripResourceEncoding() throws Exception { Resource resource = Resource.builder().table(TEST_TABLE).build(); - resource.set("string_column1", "test_data"); - resource.set("string_column2", "test_data2"); - resource.set("date_days_column", (int) LocalDate.parse("2023-11-24").toEpochDay()); - resource.set("boolean_column", true); + resource.set("pk", "test_pk"); + resource.set("big_int", -1024L); + resource.set("date_day", (int) LocalDateTime.now().toLocalDate().toEpochDay()); + resource.set("date_milli", LocalDateTime.now().toEpochSecond(ZoneOffset.UTC) * 1000); + resource.set("duration_s", Duration.ofSeconds(1024)); + resource.set("duration_ms", Duration.ofMillis(1024)); + resource.set("duration_us", Duration.ofNanos(1024000)); + resource.set("duration_ns", Duration.ofNanos(1024)); + resource.set("float4", 5.0F); + resource.set("float8", 5.0D); + resource.set("int", -1024); + resource.set("large_varbinary", "1234"); + resource.set("large_varchar", "1234"); + resource.set("small_int", (short) -1024); + resource.set("tiny_int", (byte) -100); + resource.set("uint1", (byte) 100); + resource.set("uint2", (short) 1024); + resource.set("uint4", 1024); + resource.set("uint8", 1024L); + resource.set("varbinary", "1234"); + resource.set("varchar", "1234"); + resource.set("json", "{\"a\":1234}"); + resource.set("uuid", UUID.randomUUID()); Assertions.assertDoesNotThrow( () -> { diff --git a/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java b/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java index e1e874b..f857bf5 100644 --- a/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/TransformWithClassTest.java @@ -13,10 +13,12 @@ import io.cloudquery.schema.Column; import io.cloudquery.schema.Table; import io.cloudquery.types.JSONType; +import io.cloudquery.types.UUIDType; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.List; import java.util.Optional; +import java.util.UUID; import org.apache.arrow.vector.types.FloatingPointPrecision; import org.apache.arrow.vector.types.TimeUnit; import org.junit.jupiter.api.BeforeEach; @@ -57,6 +59,7 @@ public static final class TestClass { private byte[] byteArrayCol; private Object[] anyArrayCol; private LocalDateTime timeCol; + private UUID uuidCol; } public static final List expectedColumnsTestClass = @@ -94,7 +97,8 @@ public static final class TestClass { Column.builder() .name("time_col") .type(new Timestamp(TimeUnit.MILLISECOND, ZoneOffset.UTC.getId())) - .build()); + .build(), + Column.builder().name("uuid_col").type(UUIDType.INSTANCE).build()); public static final List expectedColumnsSimpleClass = List.of( diff --git a/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java b/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java index df5704c..882928e 100644 --- a/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java +++ b/lib/src/test/java/io/cloudquery/transformers/TypeTransformerTest.java @@ -4,10 +4,12 @@ import io.cloudquery.transformers.TypeTransformer.DefaultTypeTransformer; import io.cloudquery.types.JSONType; +import io.cloudquery.types.UUIDType; import java.net.InetAddress; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.Map; +import java.util.UUID; import java.util.stream.Stream; import org.apache.arrow.vector.types.FloatingPointPrecision; import org.apache.arrow.vector.types.TimeUnit; @@ -42,6 +44,8 @@ private static class SimpleClass { private Map mapField; + private UUID uuidField; + private InnerClass innerClassObjectField; private int[] intArrayField; @@ -93,6 +97,9 @@ public static Stream testArgumentsSource() { // Map field Arguments.of("mapField", JSONType.INSTANCE), + // UUID field + Arguments.of("uuidField", UUIDType.INSTANCE), + // Inner class Arguments.of("innerClassObjectField", JSONType.INSTANCE), From a08dbac2e4eeb6b9d7e8582b8f935e72482390d0 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 27 Nov 2023 15:30:11 +0200 Subject: [PATCH 066/376] chore(main): Release v0.0.14 (#143) :robot: I have created a release *beep* *boop* --- ## [0.0.14](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.13...v0.0.14) (2023-11-27) ### Features * Add better roundtrip support ([#142](https://github.com/cloudquery/plugin-sdk-java/issues/142)) ([d59f91a](https://github.com/cloudquery/plugin-sdk-java/commit/d59f91a76b33c8a311bbc6584ca9d4dd43d627bf)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c349431..429446b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.14](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.13...v0.0.14) (2023-11-27) + + +### Features + +* Add better roundtrip support ([#142](https://github.com/cloudquery/plugin-sdk-java/issues/142)) ([d59f91a](https://github.com/cloudquery/plugin-sdk-java/commit/d59f91a76b33c8a311bbc6584ca9d4dd43d627bf)) + ## [0.0.13](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.12...v0.0.13) (2023-11-26) diff --git a/lib/build.gradle b/lib/build.gradle index 664c563..a25b7ba 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.13' +version = '0.0.14' // x-release-please-end repositories { From 530e2b2ceb869abaf7f50c35c1dc3cced084f733 Mon Sep 17 00:00:00 2001 From: Alex Shcherbakov Date: Mon, 27 Nov 2023 21:04:30 +0200 Subject: [PATCH 067/376] fix(test): Register extensions in tests (#144) Follow-up for #142 --- .../io/cloudquery/helper/ArrowHelper.java | 23 +------------------ .../io/cloudquery/helper/ArrowHelperTest.java | 9 ++++++++ 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java index be21059..10661df 100644 --- a/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java +++ b/lib/src/main/java/io/cloudquery/helper/ArrowHelper.java @@ -8,9 +8,7 @@ import io.cloudquery.schema.Resource; import io.cloudquery.schema.Table; import io.cloudquery.schema.Table.TableBuilder; -import io.cloudquery.types.JSONType; import io.cloudquery.types.JSONType.JSONVector; -import io.cloudquery.types.UUIDType; import io.cloudquery.types.UUIDType.UUIDVector; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -23,7 +21,6 @@ import org.apache.arrow.vector.ipc.ArrowReader; import org.apache.arrow.vector.ipc.ArrowStreamReader; import org.apache.arrow.vector.ipc.ArrowStreamWriter; -import org.apache.arrow.vector.types.pojo.ArrowType; import org.apache.arrow.vector.types.pojo.Field; import org.apache.arrow.vector.types.pojo.FieldType; import org.apache.arrow.vector.types.pojo.Schema; @@ -264,30 +261,12 @@ private static Column getColumn(Field field) { boolean isIncrementalKey = Objects.equals(field.getMetadata().get(CQ_EXTENSION_INCREMENTAL), "true"); - ArrowType fieldType = field.getType(); - String extensionName = - field.getMetadata().get(ArrowType.ExtensionType.EXTENSION_METADATA_KEY_NAME); - String extensionMetadata = - field.getMetadata().get(ArrowType.ExtensionType.EXTENSION_METADATA_KEY_METADATA); - - // We need to scan our extension types manually because of - // https://github.com/apache/arrow/issues/38891 - if (JSONType.EXTENSION_NAME.equals(extensionName) - && JSONType.INSTANCE.serialize().equals(extensionMetadata) - && JSONType.INSTANCE.storageType().equals(fieldType)) { - fieldType = JSONType.INSTANCE; - } else if (UUIDType.EXTENSION_NAME.equals(extensionName) - && UUIDType.INSTANCE.serialize().equals(extensionMetadata) - && UUIDType.INSTANCE.storageType().equals(fieldType)) { - fieldType = UUIDType.INSTANCE; - } - return Column.builder() .name(field.getName()) .unique(isUnique) .primaryKey(isPrimaryKey) .incrementalKey(isIncrementalKey) - .type(fieldType) + .type(field.getType()) .build(); } diff --git a/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java b/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java index 5c587e4..9c0d87e 100644 --- a/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java +++ b/lib/src/test/java/io/cloudquery/helper/ArrowHelperTest.java @@ -7,6 +7,7 @@ import io.cloudquery.schema.Column; import io.cloudquery.schema.Resource; import io.cloudquery.schema.Table; +import io.cloudquery.types.Extensions; import io.cloudquery.types.JSONType; import io.cloudquery.types.UUIDType; import java.io.IOException; @@ -128,6 +129,8 @@ public class ArrowHelperTest { @Test public void testToArrowSchema() { + Extensions.registerExtensions(); + Schema arrowSchema = ArrowHelper.toArrowSchema(TEST_TABLE); for (Column col : TEST_TABLE.getColumns()) { @@ -197,6 +200,8 @@ public void testToArrowSchema() { @Test public void testFromArrowSchema() { + Extensions.registerExtensions(); + List fields = List.of( Field.nullable("string_column1", ArrowType.Utf8.INSTANCE), @@ -218,6 +223,8 @@ public void testFromArrowSchema() { @Test public void testRoundTripTableEncoding() throws IOException { + Extensions.registerExtensions(); + ByteString byteString = ArrowHelper.encode(TEST_TABLE); Table table = ArrowHelper.decode(byteString); @@ -237,6 +244,8 @@ public void testRoundTripTableEncoding() throws IOException { @Test public void testRoundTripResourceEncoding() throws Exception { + Extensions.registerExtensions(); + Resource resource = Resource.builder().table(TEST_TABLE).build(); resource.set("pk", "test_pk"); resource.set("big_int", -1024L); From 17a7d1fa9a28ef37f3a2c8c64c0b1cc6947447e1 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 27 Nov 2023 21:10:01 +0200 Subject: [PATCH 068/376] chore(main): Release v0.0.15 (#145) :robot: I have created a release *beep* *boop* --- ## [0.0.15](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.14...v0.0.15) (2023-11-27) ### Bug Fixes * **test:** Register extensions in tests ([#144](https://github.com/cloudquery/plugin-sdk-java/issues/144)) ([530e2b2](https://github.com/cloudquery/plugin-sdk-java/commit/530e2b2ceb869abaf7f50c35c1dc3cced084f733)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 429446b..3e45279 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.15](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.14...v0.0.15) (2023-11-27) + + +### Bug Fixes + +* **test:** Register extensions in tests ([#144](https://github.com/cloudquery/plugin-sdk-java/issues/144)) ([530e2b2](https://github.com/cloudquery/plugin-sdk-java/commit/530e2b2ceb869abaf7f50c35c1dc3cced084f733)) + ## [0.0.14](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.13...v0.0.14) (2023-11-27) diff --git a/lib/build.gradle b/lib/build.gradle index a25b7ba..13ca8f5 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.14' +version = '0.0.15' // x-release-please-end repositories { From a622fb1763169db1d88d23d08adcec2c3f8e078c Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Dec 2023 02:37:11 +0200 Subject: [PATCH 069/376] chore(deps): Update gradle/gradle-build-action digest to 0280eb7 (#146) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/gradle-build-action | action | digest | `0bfe00a` -> `0280eb7` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index bc20d6c..87db578 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -18,7 +18,7 @@ jobs: - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@342dbebe7272035434f9baccc29a816ec6dd2c7b - name: Publish package - uses: gradle/gradle-build-action@0bfe00a136db5e61ba3416b372542a65863a9fee + uses: gradle/gradle-build-action@0280eb7de5ad3fb0deb50017b8ce842980b4789a with: arguments: publish env: From 0400750e1ad6368c8c4e70107d8a4c728071f303 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Dec 2023 02:38:45 +0200 Subject: [PATCH 070/376] fix(deps): Update dependency io.grpc:grpc-protobuf to v1.59.1 (#147) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.59.0` -> `1.59.1` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-protobuf) ### [`v1.59.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.59.1) - netty: Implement `Http2Headers.isEmpty()`. This fixes compatibility with Netty 4.1.101.Final. - netty: Add `NettyServerBuilder.maxRstFramesPerWindow()`. This can be used to limit impact of Rapid Reset - xds: Log ORCA UNIMPLEMENTED error to subchannel logger. This removes them from the normal application logs, reducing log spam
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 13ca8f5..76f87a3 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,7 +34,7 @@ dependencies { implementation 'com.google.guava:guava:32.1.3-jre' implementation 'info.picocli:picocli:4.7.5' implementation 'com.google.guava:guava:32.1.3-jre' - implementation "io.grpc:grpc-protobuf:1.59.0" + implementation "io.grpc:grpc-protobuf:1.59.1" implementation "io.grpc:grpc-stub:1.59.0" implementation "io.grpc:grpc-services:1.57.2" implementation "io.grpc:grpc-testing:1.57.2" From 977b9cfb3c427531a44f7bbaff4d4122ef947dfc Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Dec 2023 03:55:15 +0200 Subject: [PATCH 071/376] fix(deps): Update dependency io.grpc:grpc-stub to v1.59.1 (#149) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.59.0` -> `1.59.1` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-stub) ### [`v1.59.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.59.1) - netty: Implement `Http2Headers.isEmpty()`. This fixes compatibility with Netty 4.1.101.Final. - netty: Add `NettyServerBuilder.maxRstFramesPerWindow()`. This can be used to limit impact of Rapid Reset - xds: Log ORCA UNIMPLEMENTED error to subchannel logger. This removes them from the normal application logs, reducing log spam
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 76f87a3..4773a07 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -35,7 +35,7 @@ dependencies { implementation 'info.picocli:picocli:4.7.5' implementation 'com.google.guava:guava:32.1.3-jre' implementation "io.grpc:grpc-protobuf:1.59.1" - implementation "io.grpc:grpc-stub:1.59.0" + implementation "io.grpc:grpc-stub:1.59.1" implementation "io.grpc:grpc-services:1.57.2" implementation "io.grpc:grpc-testing:1.57.2" implementation "io.cloudquery:plugin-pb-java:0.0.7" From 893c8dad0d353e5e1cf28d3c4c71652cf0fdaba2 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Dec 2023 04:03:50 +0200 Subject: [PATCH 072/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.4 (#150) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://togithub.com/jqno/equalsverifier)) | dependencies | patch | `3.15.2` -> `3.15.4` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.15.4`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3154---2023-11-29) ##### Added - A check for Scala with its `-Xcheckinit` flag switched on. This flag generates a field that should have been marked as synthetic, but isn't, so EqualsVerifier has to check for this field explicitly. ### [`v3.15.3`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3153---2023-11-01) ##### Changed - Improves error message when packages are not "open" to EqualsVerifier. ([Issue 868](https://togithub.com/jqno/equalsverifier/issues/868))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 4773a07..3bbe61a 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -53,7 +53,7 @@ dependencies { testImplementation('org.junit.jupiter:junit-jupiter-api:5.10.0') testImplementation('org.mockito:mockito-core:5.4.0') testImplementation('org.mockito:mockito-junit-jupiter:5.4.0') - testImplementation('nl.jqno.equalsverifier:equalsverifier:3.15.2') + testImplementation('nl.jqno.equalsverifier:equalsverifier:3.15.4') testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.10.0') testImplementation 'org.assertj:assertj-core:3.24.2' From 9b93ae7a14c61489bdd638143582f52636d2df97 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Dec 2023 04:52:18 +0200 Subject: [PATCH 073/376] fix(deps): Update junit5 monorepo to v5.10.1 (#151) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.junit.jupiter:junit-jupiter-engine](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.10.0` -> `5.10.1` | | [org.junit.jupiter:junit-jupiter-api](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.10.0` -> `5.10.1` | | [org.junit.jupiter:junit-jupiter](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.10.0` -> `5.10.1` | | [org.junit:junit-bom](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.10.0` -> `5.10.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 3bbe61a..2eca639 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -48,13 +48,13 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.20.0' implementation 'org.apache.logging.log4j:log4j-core:2.20.0' - testImplementation(platform('org.junit:junit-bom:5.10.0')) - testImplementation('org.junit.jupiter:junit-jupiter:5.10.0') - testImplementation('org.junit.jupiter:junit-jupiter-api:5.10.0') + testImplementation(platform('org.junit:junit-bom:5.10.1')) + testImplementation('org.junit.jupiter:junit-jupiter:5.10.1') + testImplementation('org.junit.jupiter:junit-jupiter-api:5.10.1') testImplementation('org.mockito:mockito-core:5.4.0') testImplementation('org.mockito:mockito-junit-jupiter:5.4.0') testImplementation('nl.jqno.equalsverifier:equalsverifier:3.15.4') - testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.10.0') + testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.10.1') testImplementation 'org.assertj:assertj-core:3.24.2' From 13e9fb1a7fe0e6eb69424949e338f5a1c57c42e2 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Dec 2023 04:54:03 +0200 Subject: [PATCH 074/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.16.0 (#152) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-annotations](https://togithub.com/FasterXML/jackson) ([source](https://togithub.com/FasterXML/jackson-annotations)) | dependencies | minor | `2.15.3` -> `2.16.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 2eca639..cfdbfd4 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -43,7 +43,7 @@ dependencies { implementation "org.apache.arrow:arrow-vector:12.0.1" implementation "com.fasterxml.jackson.core:jackson-core:2.15.3" - implementation "com.fasterxml.jackson.core:jackson-annotations:2.15.3" + implementation "com.fasterxml.jackson.core:jackson-annotations:2.16.0" implementation 'org.apache.logging.log4j:log4j-api:2.20.0' implementation 'org.apache.logging.log4j:log4j-core:2.20.0' From 9ae481fa49b3a5e0344dc0dff6b74e4f157f8f9a Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Dec 2023 05:45:32 +0200 Subject: [PATCH 075/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-core to v2.16.0 (#153) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-core](https://togithub.com/FasterXML/jackson-core) | dependencies | minor | `2.15.3` -> `2.16.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index cfdbfd4..cd5dd9e 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -42,7 +42,7 @@ dependencies { implementation "org.apache.arrow:arrow-memory-core:12.0.1" implementation "org.apache.arrow:arrow-vector:12.0.1" - implementation "com.fasterxml.jackson.core:jackson-core:2.15.3" + implementation "com.fasterxml.jackson.core:jackson-core:2.16.0" implementation "com.fasterxml.jackson.core:jackson-annotations:2.16.0" implementation 'org.apache.logging.log4j:log4j-api:2.20.0' From 586dc3295595af31a82c7b65cfd803c6677815e6 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Dec 2023 05:47:49 +0200 Subject: [PATCH 076/376] fix(deps): Update dependency gradle to v8.5 (#154) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://togithub.com/gradle/gradle)) | minor | `8.4` -> `8.5` | --- ### Release Notes
gradle/gradle (gradle) ### [`v8.5`](https://togithub.com/gradle/gradle/releases/tag/v8.5.0): 8.5 [Compare Source](https://togithub.com/gradle/gradle/compare/v8.4.0...v8.5.0) The Gradle team is excited to announce Gradle 8.5. [Read the Release Notes](https://docs.gradle.org/8.5/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Ahmed Ehab](https://togithub.com/ahmedehabb), [Alex Landau](https://togithub.com/AlexLandau), [Aurimas](https://togithub.com/liutikas), [BjΓΆrn Kautler](https://togithub.com/Vampire), [bodhili](https://togithub.com/bodhili), [Daniel Le Berre](https://togithub.com/danielleberre), [davidburstrom](https://togithub.com/davidburstrom), [Franz Wimmer](https://togithub.com/zalintyre), [Jongwoo Han](https://togithub.com/jongwooo), [Ken](https://togithub.com/kennethshackleton), [Leonardo Silveira](https://togithub.com/sombriks), [Martin Bonnin](https://togithub.com/martinbonnin), [Matthew Von-Maszewski](https://togithub.com/matthewvon), [Nik Clayton](https://togithub.com/nikclayton), [noeppi_noeppi](https://togithub.com/noeppi-noeppi), [Philip Wedemann](https://togithub.com/hfhbd), [Philipp Schneider](https://togithub.com/p-schneider), [Tomas Bjerre](https://togithub.com/tomasbjerre) #### Upgrade instructions Switch your build to use Gradle 8.5 by updating your wrapper: ./gradlew wrapper --gradle-version=8.5 See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.5/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.5/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://togithub.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.jar | Bin 63721 -> 43462 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7f93135c49b765f8051ef9d0a6055ff8e46073d8..d64cd4917707c1f8861d8cb53dd15194d4248596 100644 GIT binary patch literal 43462 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 literal 63721 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鯊%1Et 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⁢ zv5o9#E7!G0XmdzfsS{efPNi`1b44~SZ4Z8fuX!I}#8g+(wxzQwUT#Xb2(tbY1+EUhGKoT@KEU9Ktl>_0 z%bjDJg;#*gtJZv!-Zs`?^}v5eKmnbjqlvnSzE@_SP|LG_PJ6CYU+6zY6>92%E+ z=j@TZf-iW4(%U{lnYxQA;7Q!b;^brF8n0D>)`q5>|WDDXLrqYU_tKN2>=#@~OE7grMnNh?UOz-O~6 z6%rHy{#h9K0AT+lDC7q4{hw^|q6*Ry;;L%Q@)Ga}$60_q%D)rv(CtS$CQbpq9|y1e zRSrN4;$Jyl{m5bZw`$8TGvb}(LpY{-cQ)fcyJv7l3S52TLXVDsphtv&aPuDk1OzCA z4A^QtC(!11`IsNx_HnSy?>EKpHJWT^wmS~hc^p^zIIh@9f6U@I2 zC=Mve{j2^)mS#U$e{@Q?SO6%LDsXz@SY+=cK_QMmXBIU)j!$ajc-zLx3V60EXJ!qC zi<%2x8Q24YN+&8U@CIlN zrZkcT9yh%LrlGS9`G)KdP(@9Eo-AQz@8GEFWcb7U=a0H^ZVbLmz{+&M7W(nXJ4sN8 zJLR7eeK(K8`2-}j(T7JsO`L!+CvbueT%izanm-^A1Dn{`1Nw`9P?cq;7no+XfC`K(GO9?O^5zNIt4M+M8LM0=7Gz8UA@Z0N+lg+cX)NfazRu z5D)~HA^(u%w^cz+@2@_#S|u>GpB+j4KzQ^&Wcl9f z&hG#bCA(Yk0D&t&aJE^xME^&E-&xGHhXn%}psEIj641H+Nl-}boj;)Zt*t(4wZ5DN z@GXF$bL=&pBq-#vkTkh>7hl%K5|3 z{`Vn9b$iR-SoGENp}bn4;fR3>9sA%X2@1L3aE9yTra;Wb#_`xWwLSLdfu+PAu+o3| zGVnpzPr=ch{uuoHjtw7+_!L_2;knQ!DuDl0R`|%jr+}jFzXtrHIKc323?JO{l&;VF z*L1+}JU7%QJOg|5|Tc|D8fN zJORAg=_vsy{ak|o);@)Yh8Lkcg@$FG3k@ep36BRa^>~UmnRPziS>Z=`Jb2x*Q#`%A zU*i3&Vg?TluO@X0O;r2Jl6LKLUOVhSqg1*qOt^|8*c7 zo(298@+r$k_wQNGHv{|$tW(T8L+4_`FQ{kEW5Jgg{yf7ey4ss_(SNKfz(N9lx&a;< je(UuV8hP?p&}TPdm1I$XmG#(RzlD&B2izSj9sl%y5~4qc diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3fa8f86..1af9e09 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 363299be40564ee690a3e70d752a01d84dfe8b34 Mon Sep 17 00:00:00 2001 From: Kemal <223029+disq@users.noreply.github.com> Date: Wed, 6 Dec 2023 14:02:58 +0000 Subject: [PATCH 077/376] fix: Use correct param name for `--no-sentry` (not `--disable-sentry`) (#155) Co-authored-by: Kemal Hadimli --- lib/src/main/java/io/cloudquery/server/ServeCommand.java | 2 +- lib/src/test/java/io/cloudquery/server/PluginServeTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/src/main/java/io/cloudquery/server/ServeCommand.java b/lib/src/main/java/io/cloudquery/server/ServeCommand.java index 539bf9c..dce8cc9 100644 --- a/lib/src/main/java/io/cloudquery/server/ServeCommand.java +++ b/lib/src/main/java/io/cloudquery/server/ServeCommand.java @@ -55,7 +55,7 @@ public class ServeCommand implements Callable { "the network must be \"tcp\", \"tcp4\", \"tcp6\", \"unix\" or \"unixpacket\" (default \"${DEFAULT-VALUE}\")") private String network = "tcp"; - @Option(names = "--disable-sentry", description = "disable sentry") + @Option(names = "--no-sentry", description = "disable sentry") private Boolean disableSentry = false; @Option(names = "--otel-endpoint", description = "Open Telemetry HTTP collector endpoint") diff --git a/lib/src/test/java/io/cloudquery/server/PluginServeTest.java b/lib/src/test/java/io/cloudquery/server/PluginServeTest.java index 509f830..5bfb2a5 100644 --- a/lib/src/test/java/io/cloudquery/server/PluginServeTest.java +++ b/lib/src/test/java/io/cloudquery/server/PluginServeTest.java @@ -39,7 +39,7 @@ public void simpleOverrideCommandLineArguments() { "serve", "--address", "foo.bar.com:7777", - "--disable-sentry", + "--no-sentry", "--otel-endpoint", "some-endpoint" }; From 458f5f5dd0818bf9c2314476959357f0c7c48e6a Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 6 Dec 2023 16:05:47 +0200 Subject: [PATCH 078/376] chore(main): Release v0.0.16 (#148) :robot: I have created a release *beep* *boop* --- ## [0.0.16](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.15...v0.0.16) (2023-12-06) ### Bug Fixes * **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.16.0 ([#152](https://github.com/cloudquery/plugin-sdk-java/issues/152)) ([13e9fb1](https://github.com/cloudquery/plugin-sdk-java/commit/13e9fb1a7fe0e6eb69424949e338f5a1c57c42e2)) * **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.16.0 ([#153](https://github.com/cloudquery/plugin-sdk-java/issues/153)) ([9ae481f](https://github.com/cloudquery/plugin-sdk-java/commit/9ae481fa49b3a5e0344dc0dff6b74e4f157f8f9a)) * **deps:** Update dependency gradle to v8.5 ([#154](https://github.com/cloudquery/plugin-sdk-java/issues/154)) ([586dc32](https://github.com/cloudquery/plugin-sdk-java/commit/586dc3295595af31a82c7b65cfd803c6677815e6)) * **deps:** Update dependency io.grpc:grpc-protobuf to v1.59.1 ([#147](https://github.com/cloudquery/plugin-sdk-java/issues/147)) ([0400750](https://github.com/cloudquery/plugin-sdk-java/commit/0400750e1ad6368c8c4e70107d8a4c728071f303)) * **deps:** Update dependency io.grpc:grpc-stub to v1.59.1 ([#149](https://github.com/cloudquery/plugin-sdk-java/issues/149)) ([977b9cf](https://github.com/cloudquery/plugin-sdk-java/commit/977b9cfb3c427531a44f7bbaff4d4122ef947dfc)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.4 ([#150](https://github.com/cloudquery/plugin-sdk-java/issues/150)) ([893c8da](https://github.com/cloudquery/plugin-sdk-java/commit/893c8dad0d353e5e1cf28d3c4c71652cf0fdaba2)) * **deps:** Update junit5 monorepo to v5.10.1 ([#151](https://github.com/cloudquery/plugin-sdk-java/issues/151)) ([9b93ae7](https://github.com/cloudquery/plugin-sdk-java/commit/9b93ae7a14c61489bdd638143582f52636d2df97)) * Use correct param name for `--no-sentry` (not `--disable-sentry`) ([#155](https://github.com/cloudquery/plugin-sdk-java/issues/155)) ([363299b](https://github.com/cloudquery/plugin-sdk-java/commit/363299be40564ee690a3e70d752a01d84dfe8b34)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 14 ++++++++++++++ lib/build.gradle | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e45279..7785a19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.0.16](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.15...v0.0.16) (2023-12-06) + + +### Bug Fixes + +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.16.0 ([#152](https://github.com/cloudquery/plugin-sdk-java/issues/152)) ([13e9fb1](https://github.com/cloudquery/plugin-sdk-java/commit/13e9fb1a7fe0e6eb69424949e338f5a1c57c42e2)) +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.16.0 ([#153](https://github.com/cloudquery/plugin-sdk-java/issues/153)) ([9ae481f](https://github.com/cloudquery/plugin-sdk-java/commit/9ae481fa49b3a5e0344dc0dff6b74e4f157f8f9a)) +* **deps:** Update dependency gradle to v8.5 ([#154](https://github.com/cloudquery/plugin-sdk-java/issues/154)) ([586dc32](https://github.com/cloudquery/plugin-sdk-java/commit/586dc3295595af31a82c7b65cfd803c6677815e6)) +* **deps:** Update dependency io.grpc:grpc-protobuf to v1.59.1 ([#147](https://github.com/cloudquery/plugin-sdk-java/issues/147)) ([0400750](https://github.com/cloudquery/plugin-sdk-java/commit/0400750e1ad6368c8c4e70107d8a4c728071f303)) +* **deps:** Update dependency io.grpc:grpc-stub to v1.59.1 ([#149](https://github.com/cloudquery/plugin-sdk-java/issues/149)) ([977b9cf](https://github.com/cloudquery/plugin-sdk-java/commit/977b9cfb3c427531a44f7bbaff4d4122ef947dfc)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.4 ([#150](https://github.com/cloudquery/plugin-sdk-java/issues/150)) ([893c8da](https://github.com/cloudquery/plugin-sdk-java/commit/893c8dad0d353e5e1cf28d3c4c71652cf0fdaba2)) +* **deps:** Update junit5 monorepo to v5.10.1 ([#151](https://github.com/cloudquery/plugin-sdk-java/issues/151)) ([9b93ae7](https://github.com/cloudquery/plugin-sdk-java/commit/9b93ae7a14c61489bdd638143582f52636d2df97)) +* Use correct param name for `--no-sentry` (not `--disable-sentry`) ([#155](https://github.com/cloudquery/plugin-sdk-java/issues/155)) ([363299b](https://github.com/cloudquery/plugin-sdk-java/commit/363299be40564ee690a3e70d752a01d84dfe8b34)) + ## [0.0.15](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.14...v0.0.15) (2023-11-27) diff --git a/lib/build.gradle b/lib/build.gradle index cd5dd9e..5fc39b8 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.15' +version = '0.0.16' // x-release-please-end repositories { From 4159df84c52fc6db8b7fbad112bdb04fe06d53d6 Mon Sep 17 00:00:00 2001 From: Kemal <223029+disq@users.noreply.github.com> Date: Fri, 29 Dec 2023 10:54:31 +0000 Subject: [PATCH 079/376] fix: Add --license placeholder for future use (#156) plugin-pb-go [1.15.0](https://github.com/cloudquery/plugin-pb-go/pull/196) now uses `--license` when invoking plugins, if one is set by the cli. --- lib/src/main/java/io/cloudquery/server/ServeCommand.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/src/main/java/io/cloudquery/server/ServeCommand.java b/lib/src/main/java/io/cloudquery/server/ServeCommand.java index dce8cc9..2feb14c 100644 --- a/lib/src/main/java/io/cloudquery/server/ServeCommand.java +++ b/lib/src/main/java/io/cloudquery/server/ServeCommand.java @@ -66,6 +66,11 @@ public class ServeCommand implements Callable { description = "use Open Telemetry HTTP endpoint (for development only)") private Boolean otelEndpointInsecure = false; + @Option( + names = "--license", + description = "set offline license file (placeholder for future use)") + private String licenseFile = ""; + private final Plugin plugin; public ServeCommand(Plugin plugin) { From 8300da59315896d39178c11bf4b8602108e85760 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 29 Dec 2023 12:58:56 +0200 Subject: [PATCH 080/376] chore(main): Release v0.0.17 (#157) :robot: I have created a release *beep* *boop* --- ## [0.0.17](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.16...v0.0.17) (2023-12-29) ### Bug Fixes * Add --license placeholder for future use ([#156](https://github.com/cloudquery/plugin-sdk-java/issues/156)) ([4159df8](https://github.com/cloudquery/plugin-sdk-java/commit/4159df84c52fc6db8b7fbad112bdb04fe06d53d6)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7785a19..79eb49e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.17](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.16...v0.0.17) (2023-12-29) + + +### Bug Fixes + +* Add --license placeholder for future use ([#156](https://github.com/cloudquery/plugin-sdk-java/issues/156)) ([4159df8](https://github.com/cloudquery/plugin-sdk-java/commit/4159df84c52fc6db8b7fbad112bdb04fe06d53d6)) + ## [0.0.16](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.15...v0.0.16) (2023-12-06) diff --git a/lib/build.gradle b/lib/build.gradle index 5fc39b8..9c049f4 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.16' +version = '0.0.17' // x-release-please-end repositories { From a0f9ba3b9c9e4fb0cebc2c33ff1c403d25b12327 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Jan 2024 02:45:33 +0200 Subject: [PATCH 081/376] chore(deps): Update gradle/gradle-build-action digest to bc72ac9 (#158) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/gradle-build-action | action | digest | `0280eb7` -> `bc72ac9` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 87db578..8f7d826 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -18,7 +18,7 @@ jobs: - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@342dbebe7272035434f9baccc29a816ec6dd2c7b - name: Publish package - uses: gradle/gradle-build-action@0280eb7de5ad3fb0deb50017b8ce842980b4789a + uses: gradle/gradle-build-action@bc72ac9e9d33a38827c042af2d90014ad4250535 with: arguments: publish env: From d663db8376ea63bb6244a285f2d8fd70622bffd8 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Jan 2024 03:59:53 +0200 Subject: [PATCH 082/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-core to v2.16.1 (#160) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-core](https://togithub.com/FasterXML/jackson-core) | dependencies | patch | `2.16.0` -> `2.16.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 9c049f4..7001c86 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -42,7 +42,7 @@ dependencies { implementation "org.apache.arrow:arrow-memory-core:12.0.1" implementation "org.apache.arrow:arrow-vector:12.0.1" - implementation "com.fasterxml.jackson.core:jackson-core:2.16.0" + implementation "com.fasterxml.jackson.core:jackson-core:2.16.1" implementation "com.fasterxml.jackson.core:jackson-annotations:2.16.0" implementation 'org.apache.logging.log4j:log4j-api:2.20.0' From 9057cdfdb08ebe21ae6edf4df2bb48e210355f45 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Jan 2024 04:10:17 +0200 Subject: [PATCH 083/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.5 (#161) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://togithub.com/jqno/equalsverifier)) | dependencies | patch | `3.15.4` -> `3.15.5` | --- ### Release Notes

jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.15.5`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3155---2023-12-22) ##### Changed - Check that getters are used for all generated JPA id fields. ([Issue 892](https://togithub.com/jqno/equalsverifier/issues/892))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 7001c86..9183095 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -53,7 +53,7 @@ dependencies { testImplementation('org.junit.jupiter:junit-jupiter-api:5.10.1') testImplementation('org.mockito:mockito-core:5.4.0') testImplementation('org.mockito:mockito-junit-jupiter:5.4.0') - testImplementation('nl.jqno.equalsverifier:equalsverifier:3.15.4') + testImplementation('nl.jqno.equalsverifier:equalsverifier:3.15.5') testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.10.1') testImplementation 'org.assertj:assertj-core:3.24.2' From f889c3959850cdb2cdc37413791276c0f703983b Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Jan 2024 05:36:45 +0200 Subject: [PATCH 084/376] fix(deps): Update dependency io.grpc:grpc-testing to v1.60.1 (#165) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-testing](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.57.2` -> `1.60.1` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-testing) ### [`v1.60.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.60.1) ### Bug Fixes - util: Fix NPE when multiple addresses in an address group for petiole load balancer policies ([#​10770](https://togithub.com/grpc/grpc-java/issues/10770)) ### [`v1.60.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.60.0) ##### API Changes - api: Stabilize `ForwardingServerBuilder`, `ForwardingChannelBuilder2`, and `ForwardingChannelBuilder`. Note that `ForwardingChannelBuilder` is stabilized (no changes will be made to it), but immediately deprecated in favor of `ForwardingChannelBuilder2`. ([#​10586](https://togithub.com/grpc/grpc-java/issues/10586)) - api: Deprecate `ForwardingChannelBuilder.delegate()`. De facto this deprecates the class itself, since all classes extending `ForwardingChannelBuilder` implement the `delegate()` method. See javadoc for details ([#​10587](https://togithub.com/grpc/grpc-java/issues/10587)) - api: Changed recently-introduced `LoadBalancer.acceptResolvedAddresses()` to return `Status` instead of `boolean` ([#​10636](https://togithub.com/grpc/grpc-java/issues/10636)). This is part of continued work to align the LB API cross-language and API stabilization - stub: Deprecate StreamObservers ([#​10654](https://togithub.com/grpc/grpc-java/issues/10654)) - alts: AltsChannelBuilder now extends `ForwardingChannelBuilder2` ([#​10587](https://togithub.com/grpc/grpc-java/issues/10587)) - protobuf: Stabilize `ProtoUtils.metadataMarshaller()` ([#​10628](https://togithub.com/grpc/grpc-java/issues/10628)) - protobuf-lite: ProtoLiteUtils experimental comment ([#​10627](https://togithub.com/grpc/grpc-java/issues/10627)) ##### Behavior Changes - core: `ManagedChannel`s now check the address types provided by the nameResolver (for the given target) with the address types supported by the channel transport and generate an error in case of mismatch. That dramatically improves the error message when an issue occurs - core: When a server stream is closed due to user's code (an uncaught exception in halfClosed, messagesAvailable, onReady callback of a ServerStream's listener), the `Status.UNKNOWN` returned to the client will have `Application error processing RPC` description. Previously the description was empty. This is helpful to differentiate between server errors originated in user application, gRPC library, or even those injected by a proxy. ([#​10643](https://togithub.com/grpc/grpc-java/issues/10643)) - xds: Log ORCA UNIMPLEMENTED error to subchannel logger. This removes them from the normal application logs, reducing log spam ##### Improvements - Change the underlying implementations of RingHash, RoundRobin, WeightedRoundRobin and LeastRequest load balancers to utilize the pick first load balancer rather than directly manage subchannels. This should only be noticeable if it introduced a bug - core: Avoid flushing headers when the server returns a single response ([#​9314](https://togithub.com/grpc/grpc-java/issues/9314)). This is a performance optimization to reduce the number of packets for non-streaming responses - util: Make grpc-core an implementation dependency. This will prevent the io.grpc.internal classes in grpc-core from being visible during compilation when depending on just grpc-util - netty: Implement `Http2Headers.isEmpty()`. This fixes compatibility with Netty 4.1.101.Final. - netty: Add `NettyServerBuilder.maxRstFramesPerWindow()`. This can be used to limit impact of Rapid Reset - netty: Disable huffman coding in headers ([#​10563](https://togithub.com/grpc/grpc-java/issues/10563)). Huffman coding provides modest compression for relatively high CPU usage, especially within a data center. Rely just on the HPACK static and dynamic tables for compression, for higher performance. This only impacts header values 512 bytes or longer, as Netty already disabled Huffman for smaller values - alts: Improve handshake failure error message by propagating original exception ([#​10644](https://togithub.com/grpc/grpc-java/issues/10644)) ##### Bug Fixes - util: Remove shutdown subchannels from OD tracking ([#​10683](https://togithub.com/grpc/grpc-java/issues/10683)). This could have caused a memory leak on a long-lived channel. But we don’t think it could be triggered with our built-in load balancing policies. ##### Dependencies - Bump Netty to 4.1.100.Final ##### Acknowledgements [@​anthonyjpratti](https://togithub.com/anthonyjpratti) [@​fedorka](https://togithub.com/fedorka) [@​jpd236](https://togithub.com/jpd236) [@​mateusazis](https://togithub.com/mateusazis) [@​pkoenig10](https://togithub.com/pkoenig10) [@​yannickepstein](https://togithub.com/yannickepstein) [@​amirhadadi](https://togithub.com/amirhadadi) ### [`v1.59.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.59.1) - netty: Implement `Http2Headers.isEmpty()`. This fixes compatibility with Netty 4.1.101.Final. - netty: Add `NettyServerBuilder.maxRstFramesPerWindow()`. This can be used to limit impact of Rapid Reset - xds: Log ORCA UNIMPLEMENTED error to subchannel logger. This removes them from the normal application logs, reducing log spam ### [`v1.59.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.59.0) #### gRPC Java 1.59.0 Release Notes **PLANNED ABI BREAKAGE!** This breaks the ABI of the `@ExperimentalApi` classes listed below. This does not impact source code (API); it only impacts code compiled with a different version of gRPC than it runs with (ABI). Users that recompiled their code using grpc-java [`v1.36.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.36.0) (released on Feb 23, 2021) and later, **ARE NOT AFFECTED**. Users that compiled their source using grpc-java earlier than `v1.36.0` may need to recompile when upgrading to grpc-java `v1.59.0`. See details in [#​10406](https://togithub.com/grpc/grpc-java/issues/10406). **Affected classes** Class `io.grpc.internal.AbstractManagedChannelImplBuilder` is deleted, and no longer in the class hierarchy of the channel builders: - `io.grpc.netty.NettyChannelBuilder` - `io.grpc.okhttp.OkhttpChannelBuilder` - `io.grpc.cronet.CronetChannelBuilder` Class `io.grpc.internal.AbstractServerImplBuilder` is deleted, and no longer in the class hierarchy of the server builders: - `io.grpc.netty.NettyServerBuilder` - `io.grpc.inprocess.InProcessServerBuilder` *** ##### API Changes - core: `AbstractManagedChannelImplBuilder` and `AbstractServerImplBuilder` are removed ([#​10530](https://togithub.com/grpc/grpc-java/issues/10530)). This is ABI-breaking, see the warning above. ([#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - core: Removed .class file hack previously introduced in [`v1.36.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.36.0) to ease removal of internal ABIs. ([#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - api: Add `ForwardingChannelBuilder2`, an ABI-safe version of `ForwardingChannelBuilder`, which will be deprecated in the following release. ([#​10585](https://togithub.com/grpc/grpc-java/issues/10585), [#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - api: Add `LoadBalancer.FixedResultPicker` convenience class for load balancer implementations. It is a replacement for `ErrorPicker` and `EMPTY_PICKER` added in 1.58.0 - testing: Stabilize TestMethodDescriptors ([#​10530](https://togithub.com/grpc/grpc-java/issues/10530)) ##### Behavior Changes - core: de-expermentalize pick first config parsing ([#​10531](https://togithub.com/grpc/grpc-java/issues/10531)) - netty: Respect -Dio.netty.allocator.type=unpooled when getting Netty Allocator instead of ignoring it ([#​10543](https://togithub.com/grpc/grpc-java/issues/10543)) - netty: Use UNAVAILABLE for connections closed while writing. Previously this would result in UNKNOWN - binder: Enable indirect addressing using s. ([#​10550](https://togithub.com/grpc/grpc-java/issues/10550)) ##### Improvements - core: only use reflection to resolve InternalCensusStatsAccessor once instead of once per channel - core: enhance error message in the case of DEADLINE_EXCEEDED to indicate name resolution delay. - netty: When creating a connection, use java.util.logging formatting instead of String.format to avoid work when not logged - netty: Touch ByteBuf when message framing has been decoded. If the buffer is leaked, this helps narrow down the source of reference counting bug - java_grpc_library.bzl: Disable Automatic Exec Groups inside grpc libraries ([#​10514](https://togithub.com/grpc/grpc-java/issues/10514)). This improves compatibility with future Bazel versions while retaining Bazel 5.x compatibility ##### Bug Fixes - netty: Avoid NettyAdaptiveCumulator incorrectly releasing its input ByteBuf twice when reading messages under certain error conditions ([#​10537](https://togithub.com/grpc/grpc-java/issues/10537)) - xds: Add fix for xdstp replacement for percent-encoded authorities ([#​10571](https://togithub.com/grpc/grpc-java/issues/10571)) ##### Documentation - API documentation (Javadoc) for Server and Channel builders now correctly displays inherited methods and the class hierarchy. ([#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - examples: add an example for OAuth ([#​10560](https://togithub.com/grpc/grpc-java/issues/10560)) ##### Dependencies - Upgrade Netty to 4.1.97.Final ##### Acknowledgements John Cormie ([@​jdcormie](https://togithub.com/jdcormie)) Stephane Landelle ([@​slandelle](https://togithub.com/slandelle)) [@​kotlaja](https://togithub.com/kotlaja) ### [`v1.58.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.58.1) - xds: PickFirst was not receiving its configuration so it used the default configuration which meant that randomize was ignored. ### [`v1.58.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.58.0) ##### API Changes - xds: Add missing ExperimentalApi to OrcaServiceImpl - stub: Removed deprecated methods attachHeaders and captureMetadata from MetadataUtils ([#​10443](https://togithub.com/grpc/grpc-java/issues/10443)) - api: Stabilized ServerCall.getAuthority() by removing experimental annotation ([#​10498](https://togithub.com/grpc/grpc-java/issues/10498)) - api: Stabilized `ServerCall#setMessageCompression()` and `PartialForwardingServerCall#setMessageCompression()` ([#​10393](https://togithub.com/grpc/grpc-java/issues/10393)) - protobuf: Stabilize `ProtoUtils.setExtensionRegistry()` and `ProtoLiteUtils.setExtensionRegistry()` ([#​10392](https://togithub.com/grpc/grpc-java/issues/10392)) - testing: Stabilize `GrpcCleanupRule`, `GrpcServerRule` ([#​10494](https://togithub.com/grpc/grpc-java/issues/10494)) - api: Stabilized ServerBuilder.handshakeTimeout ([#​10499](https://togithub.com/grpc/grpc-java/issues/10499)) - api: Removed Context.Storage deprecated method attach(), made doAttach() abstract ([#​10379](https://togithub.com/grpc/grpc-java/issues/10379)) - api : Stabilized methodDescriptor getRequestMarshaller, getResponseMarshaller ([#​10495](https://togithub.com/grpc/grpc-java/issues/10495)) ##### Behavior Changes - rls: Have RLS's LRU Cache rely on cleanup process to remove expired entries ([#​10400](https://togithub.com/grpc/grpc-java/issues/10400)) - core, inprocess, util: 2 new artifacts grpc-inprocess and grpc-util have been created by moving code from grpc-core to facilitate Java module support ([#​10362](https://togithub.com/grpc/grpc-java/issues/10362), [#​10390](https://togithub.com/grpc/grpc-java/issues/10390)) - all: Automatic module name support added to all artifacts ([#​10413](https://togithub.com/grpc/grpc-java/issues/10413)) - xds: Encode the service authority in XdsNameResolver ([#​10207](https://togithub.com/grpc/grpc-java/issues/10207)) ##### Improvements - api: In Javadoc, link to gRFCs A8/A9 for keepalive and related settings - okhttp: Enable support for being returned by `Grpc.newServerBuilderForPort()`. At present, Netty always has higher priority than OkHttp, if they are both available, because `ServerBuilder.forPort()` is not supported in the OkHttp transport but is supported in the Netty transport - bazel: Enhance java_grpc_library.bzl to allow toolchain to use annotation processors - examples: Add pre-serialized-message example ([#​10112](https://togithub.com/grpc/grpc-java/issues/10112)) - examples: Android examples to use AGP 7.4.0 ([#​10497](https://togithub.com/grpc/grpc-java/issues/10497)) ##### Bug Fixes - Fix compatibility with Java 8. This fixes the `NoSuchMethodError` for `ByteBuffer` methods present in 1.57.0 ([#​10441](https://togithub.com/grpc/grpc-java/issues/10441)) - xds: Remove debug assert in WeightedRoundRobinLoadBalancer. The assert was to detect breakages in the static stride algorithm causing too much looping. However, with multithreading it is possible to trigger even in legitimate scenarios ([#​10437](https://togithub.com/grpc/grpc-java/issues/10437)) - util: Outlier detection tracer delegation ([#​10459](https://togithub.com/grpc/grpc-java/issues/10459)) - Handle header with errors and endStream = true. Was filling logs with NPEs. ([#​10384](https://togithub.com/grpc/grpc-java/issues/10384)) - core: Fix a retriablestream bug that may cause deadlock with OkHttp ([#​10386](https://togithub.com/grpc/grpc-java/issues/10386)) - stub: Remove ThreadlessExecutor from BlockingServerStream to eliminate the problem where sometimes the iterator’s next() method would get stuck. ([#​10496](https://togithub.com/grpc/grpc-java/issues/10496)) - compiler: Fix aarch\_64 macs not being able to build the compiler module. ([#​10516](https://togithub.com/grpc/grpc-java/issues/10516)) - okhttp: Use padded length for flow control in both client and server transport ([#​10422](https://togithub.com/grpc/grpc-java/issues/10422)) - xds: Fix locality logging information in bootstrap ([#​10423](https://togithub.com/grpc/grpc-java/issues/10423)) ##### Dependencies - Upgraded protobuf to 3.24.0 - android: Min SDK level to 21 ([#​10505](https://togithub.com/grpc/grpc-java/issues/10505)) - Various dependency upgrades ([#​10359](https://togithub.com/grpc/grpc-java/issues/10359)): androidx.core:core 1.10.0 -> 1.10.1 com.google.api.grpc:proto-google-common-protos 2.17.0 -> 2.22.0 com.google.cloud:google-cloud-logging 3.14.5 -> 3.15.5 com.google.errorprone:error_prone_annotations 2.18.0 -> 2.20.0 com.squareup.okio:okio 1.17.5 -> 2.10.0 ##### Acknowledgements Halvard Skogsrud
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 9183095..eb0879b 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation "io.grpc:grpc-protobuf:1.59.1" implementation "io.grpc:grpc-stub:1.59.1" implementation "io.grpc:grpc-services:1.57.2" - implementation "io.grpc:grpc-testing:1.57.2" + implementation "io.grpc:grpc-testing:1.60.1" implementation "io.cloudquery:plugin-pb-java:0.0.7" implementation "org.apache.arrow:arrow-memory-core:12.0.1" implementation "org.apache.arrow:arrow-vector:12.0.1" From 54dc63fa72713f3bbca85fc5654b24a5e4d93d60 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Jan 2024 05:38:54 +0200 Subject: [PATCH 085/376] fix(deps): Update dependency org.assertj:assertj-core to v3.25.0 (#166) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.assertj:assertj-core](https://assertj.github.io/doc/#assertj-core) ([source](https://togithub.com/assertj/assertj)) | dependencies | minor | `3.24.2` -> `3.25.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index eb0879b..db6adf5 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -56,7 +56,7 @@ dependencies { testImplementation('nl.jqno.equalsverifier:equalsverifier:3.15.5') testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.10.1') - testImplementation 'org.assertj:assertj-core:3.24.2' + testImplementation 'org.assertj:assertj-core:3.25.0' runtimeOnly "org.apache.arrow:arrow-memory-netty:12.0.1" } From 8dfcccd4eea048d53be3f02c09ee22946dd22a5c Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Jan 2024 05:43:31 +0200 Subject: [PATCH 086/376] fix(deps): Update dependency io.grpc:grpc-protobuf to v1.60.1 (#163) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.59.1` -> `1.60.1` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-protobuf) ### [`v1.60.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.60.1) ### Bug Fixes - util: Fix NPE when multiple addresses in an address group for petiole load balancer policies ([#​10770](https://togithub.com/grpc/grpc-java/issues/10770)) ### [`v1.60.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.60.0) ##### API Changes - api: Stabilize `ForwardingServerBuilder`, `ForwardingChannelBuilder2`, and `ForwardingChannelBuilder`. Note that `ForwardingChannelBuilder` is stabilized (no changes will be made to it), but immediately deprecated in favor of `ForwardingChannelBuilder2`. ([#​10586](https://togithub.com/grpc/grpc-java/issues/10586)) - api: Deprecate `ForwardingChannelBuilder.delegate()`. De facto this deprecates the class itself, since all classes extending `ForwardingChannelBuilder` implement the `delegate()` method. See javadoc for details ([#​10587](https://togithub.com/grpc/grpc-java/issues/10587)) - api: Changed recently-introduced `LoadBalancer.acceptResolvedAddresses()` to return `Status` instead of `boolean` ([#​10636](https://togithub.com/grpc/grpc-java/issues/10636)). This is part of continued work to align the LB API cross-language and API stabilization - stub: Deprecate StreamObservers ([#​10654](https://togithub.com/grpc/grpc-java/issues/10654)) - alts: AltsChannelBuilder now extends `ForwardingChannelBuilder2` ([#​10587](https://togithub.com/grpc/grpc-java/issues/10587)) - protobuf: Stabilize `ProtoUtils.metadataMarshaller()` ([#​10628](https://togithub.com/grpc/grpc-java/issues/10628)) - protobuf-lite: ProtoLiteUtils experimental comment ([#​10627](https://togithub.com/grpc/grpc-java/issues/10627)) ##### Behavior Changes - core: `ManagedChannel`s now check the address types provided by the nameResolver (for the given target) with the address types supported by the channel transport and generate an error in case of mismatch. That dramatically improves the error message when an issue occurs - core: When a server stream is closed due to user's code (an uncaught exception in halfClosed, messagesAvailable, onReady callback of a ServerStream's listener), the `Status.UNKNOWN` returned to the client will have `Application error processing RPC` description. Previously the description was empty. This is helpful to differentiate between server errors originated in user application, gRPC library, or even those injected by a proxy. ([#​10643](https://togithub.com/grpc/grpc-java/issues/10643)) - xds: Log ORCA UNIMPLEMENTED error to subchannel logger. This removes them from the normal application logs, reducing log spam ##### Improvements - Change the underlying implementations of RingHash, RoundRobin, WeightedRoundRobin and LeastRequest load balancers to utilize the pick first load balancer rather than directly manage subchannels. This should only be noticeable if it introduced a bug - core: Avoid flushing headers when the server returns a single response ([#​9314](https://togithub.com/grpc/grpc-java/issues/9314)). This is a performance optimization to reduce the number of packets for non-streaming responses - util: Make grpc-core an implementation dependency. This will prevent the io.grpc.internal classes in grpc-core from being visible during compilation when depending on just grpc-util - netty: Implement `Http2Headers.isEmpty()`. This fixes compatibility with Netty 4.1.101.Final. - netty: Add `NettyServerBuilder.maxRstFramesPerWindow()`. This can be used to limit impact of Rapid Reset - netty: Disable huffman coding in headers ([#​10563](https://togithub.com/grpc/grpc-java/issues/10563)). Huffman coding provides modest compression for relatively high CPU usage, especially within a data center. Rely just on the HPACK static and dynamic tables for compression, for higher performance. This only impacts header values 512 bytes or longer, as Netty already disabled Huffman for smaller values - alts: Improve handshake failure error message by propagating original exception ([#​10644](https://togithub.com/grpc/grpc-java/issues/10644)) ##### Bug Fixes - util: Remove shutdown subchannels from OD tracking ([#​10683](https://togithub.com/grpc/grpc-java/issues/10683)). This could have caused a memory leak on a long-lived channel. But we don’t think it could be triggered with our built-in load balancing policies. ##### Dependencies - Bump Netty to 4.1.100.Final ##### Acknowledgements [@​anthonyjpratti](https://togithub.com/anthonyjpratti) [@​fedorka](https://togithub.com/fedorka) [@​jpd236](https://togithub.com/jpd236) [@​mateusazis](https://togithub.com/mateusazis) [@​pkoenig10](https://togithub.com/pkoenig10) [@​yannickepstein](https://togithub.com/yannickepstein) [@​amirhadadi](https://togithub.com/amirhadadi)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index db6adf5..f9f7012 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,7 +34,7 @@ dependencies { implementation 'com.google.guava:guava:32.1.3-jre' implementation 'info.picocli:picocli:4.7.5' implementation 'com.google.guava:guava:32.1.3-jre' - implementation "io.grpc:grpc-protobuf:1.59.1" + implementation "io.grpc:grpc-protobuf:1.60.1" implementation "io.grpc:grpc-stub:1.59.1" implementation "io.grpc:grpc-services:1.57.2" implementation "io.grpc:grpc-testing:1.60.1" From 6ae738194c71d12e7f92b0756110aa5fcb61e0aa Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Jan 2024 06:17:26 +0200 Subject: [PATCH 087/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.11 (#131) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.7` -> `0.0.11` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index f9f7012..cbb41c5 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation "io.grpc:grpc-stub:1.59.1" implementation "io.grpc:grpc-services:1.57.2" implementation "io.grpc:grpc-testing:1.60.1" - implementation "io.cloudquery:plugin-pb-java:0.0.7" + implementation "io.cloudquery:plugin-pb-java:0.0.11" implementation "org.apache.arrow:arrow-memory-core:12.0.1" implementation "org.apache.arrow:arrow-vector:12.0.1" From 6fc59f264e3e544db07459644c29c8bdb1f93391 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Jan 2024 06:19:10 +0200 Subject: [PATCH 088/376] fix(deps): Update dependency io.grpc:grpc-services to v1.60.1 (#139) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-services](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.57.2` -> `1.60.1` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-services) ### [`v1.60.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.60.1) ### Bug Fixes - util: Fix NPE when multiple addresses in an address group for petiole load balancer policies ([#​10770](https://togithub.com/grpc/grpc-java/issues/10770)) ### [`v1.60.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.60.0) ##### API Changes - api: Stabilize `ForwardingServerBuilder`, `ForwardingChannelBuilder2`, and `ForwardingChannelBuilder`. Note that `ForwardingChannelBuilder` is stabilized (no changes will be made to it), but immediately deprecated in favor of `ForwardingChannelBuilder2`. ([#​10586](https://togithub.com/grpc/grpc-java/issues/10586)) - api: Deprecate `ForwardingChannelBuilder.delegate()`. De facto this deprecates the class itself, since all classes extending `ForwardingChannelBuilder` implement the `delegate()` method. See javadoc for details ([#​10587](https://togithub.com/grpc/grpc-java/issues/10587)) - api: Changed recently-introduced `LoadBalancer.acceptResolvedAddresses()` to return `Status` instead of `boolean` ([#​10636](https://togithub.com/grpc/grpc-java/issues/10636)). This is part of continued work to align the LB API cross-language and API stabilization - stub: Deprecate StreamObservers ([#​10654](https://togithub.com/grpc/grpc-java/issues/10654)) - alts: AltsChannelBuilder now extends `ForwardingChannelBuilder2` ([#​10587](https://togithub.com/grpc/grpc-java/issues/10587)) - protobuf: Stabilize `ProtoUtils.metadataMarshaller()` ([#​10628](https://togithub.com/grpc/grpc-java/issues/10628)) - protobuf-lite: ProtoLiteUtils experimental comment ([#​10627](https://togithub.com/grpc/grpc-java/issues/10627)) ##### Behavior Changes - core: `ManagedChannel`s now check the address types provided by the nameResolver (for the given target) with the address types supported by the channel transport and generate an error in case of mismatch. That dramatically improves the error message when an issue occurs - core: When a server stream is closed due to user's code (an uncaught exception in halfClosed, messagesAvailable, onReady callback of a ServerStream's listener), the `Status.UNKNOWN` returned to the client will have `Application error processing RPC` description. Previously the description was empty. This is helpful to differentiate between server errors originated in user application, gRPC library, or even those injected by a proxy. ([#​10643](https://togithub.com/grpc/grpc-java/issues/10643)) - xds: Log ORCA UNIMPLEMENTED error to subchannel logger. This removes them from the normal application logs, reducing log spam ##### Improvements - Change the underlying implementations of RingHash, RoundRobin, WeightedRoundRobin and LeastRequest load balancers to utilize the pick first load balancer rather than directly manage subchannels. This should only be noticeable if it introduced a bug - core: Avoid flushing headers when the server returns a single response ([#​9314](https://togithub.com/grpc/grpc-java/issues/9314)). This is a performance optimization to reduce the number of packets for non-streaming responses - util: Make grpc-core an implementation dependency. This will prevent the io.grpc.internal classes in grpc-core from being visible during compilation when depending on just grpc-util - netty: Implement `Http2Headers.isEmpty()`. This fixes compatibility with Netty 4.1.101.Final. - netty: Add `NettyServerBuilder.maxRstFramesPerWindow()`. This can be used to limit impact of Rapid Reset - netty: Disable huffman coding in headers ([#​10563](https://togithub.com/grpc/grpc-java/issues/10563)). Huffman coding provides modest compression for relatively high CPU usage, especially within a data center. Rely just on the HPACK static and dynamic tables for compression, for higher performance. This only impacts header values 512 bytes or longer, as Netty already disabled Huffman for smaller values - alts: Improve handshake failure error message by propagating original exception ([#​10644](https://togithub.com/grpc/grpc-java/issues/10644)) ##### Bug Fixes - util: Remove shutdown subchannels from OD tracking ([#​10683](https://togithub.com/grpc/grpc-java/issues/10683)). This could have caused a memory leak on a long-lived channel. But we don’t think it could be triggered with our built-in load balancing policies. ##### Dependencies - Bump Netty to 4.1.100.Final ##### Acknowledgements [@​anthonyjpratti](https://togithub.com/anthonyjpratti) [@​fedorka](https://togithub.com/fedorka) [@​jpd236](https://togithub.com/jpd236) [@​mateusazis](https://togithub.com/mateusazis) [@​pkoenig10](https://togithub.com/pkoenig10) [@​yannickepstein](https://togithub.com/yannickepstein) [@​amirhadadi](https://togithub.com/amirhadadi) ### [`v1.59.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.59.1) - netty: Implement `Http2Headers.isEmpty()`. This fixes compatibility with Netty 4.1.101.Final. - netty: Add `NettyServerBuilder.maxRstFramesPerWindow()`. This can be used to limit impact of Rapid Reset - xds: Log ORCA UNIMPLEMENTED error to subchannel logger. This removes them from the normal application logs, reducing log spam ### [`v1.59.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.59.0) #### gRPC Java 1.59.0 Release Notes **PLANNED ABI BREAKAGE!** This breaks the ABI of the `@ExperimentalApi` classes listed below. This does not impact source code (API); it only impacts code compiled with a different version of gRPC than it runs with (ABI). Users that recompiled their code using grpc-java [`v1.36.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.36.0) (released on Feb 23, 2021) and later, **ARE NOT AFFECTED**. Users that compiled their source using grpc-java earlier than `v1.36.0` may need to recompile when upgrading to grpc-java `v1.59.0`. See details in [#​10406](https://togithub.com/grpc/grpc-java/issues/10406). **Affected classes** Class `io.grpc.internal.AbstractManagedChannelImplBuilder` is deleted, and no longer in the class hierarchy of the channel builders: - `io.grpc.netty.NettyChannelBuilder` - `io.grpc.okhttp.OkhttpChannelBuilder` - `io.grpc.cronet.CronetChannelBuilder` Class `io.grpc.internal.AbstractServerImplBuilder` is deleted, and no longer in the class hierarchy of the server builders: - `io.grpc.netty.NettyServerBuilder` - `io.grpc.inprocess.InProcessServerBuilder` *** ##### API Changes - core: `AbstractManagedChannelImplBuilder` and `AbstractServerImplBuilder` are removed ([#​10530](https://togithub.com/grpc/grpc-java/issues/10530)). This is ABI-breaking, see the warning above. ([#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - core: Removed .class file hack previously introduced in [`v1.36.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.36.0) to ease removal of internal ABIs. ([#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - api: Add `ForwardingChannelBuilder2`, an ABI-safe version of `ForwardingChannelBuilder`, which will be deprecated in the following release. ([#​10585](https://togithub.com/grpc/grpc-java/issues/10585), [#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - api: Add `LoadBalancer.FixedResultPicker` convenience class for load balancer implementations. It is a replacement for `ErrorPicker` and `EMPTY_PICKER` added in 1.58.0 - testing: Stabilize TestMethodDescriptors ([#​10530](https://togithub.com/grpc/grpc-java/issues/10530)) ##### Behavior Changes - core: de-expermentalize pick first config parsing ([#​10531](https://togithub.com/grpc/grpc-java/issues/10531)) - netty: Respect -Dio.netty.allocator.type=unpooled when getting Netty Allocator instead of ignoring it ([#​10543](https://togithub.com/grpc/grpc-java/issues/10543)) - netty: Use UNAVAILABLE for connections closed while writing. Previously this would result in UNKNOWN - binder: Enable indirect addressing using s. ([#​10550](https://togithub.com/grpc/grpc-java/issues/10550)) ##### Improvements - core: only use reflection to resolve InternalCensusStatsAccessor once instead of once per channel - core: enhance error message in the case of DEADLINE_EXCEEDED to indicate name resolution delay. - netty: When creating a connection, use java.util.logging formatting instead of String.format to avoid work when not logged - netty: Touch ByteBuf when message framing has been decoded. If the buffer is leaked, this helps narrow down the source of reference counting bug - java_grpc_library.bzl: Disable Automatic Exec Groups inside grpc libraries ([#​10514](https://togithub.com/grpc/grpc-java/issues/10514)). This improves compatibility with future Bazel versions while retaining Bazel 5.x compatibility ##### Bug Fixes - netty: Avoid NettyAdaptiveCumulator incorrectly releasing its input ByteBuf twice when reading messages under certain error conditions ([#​10537](https://togithub.com/grpc/grpc-java/issues/10537)) - xds: Add fix for xdstp replacement for percent-encoded authorities ([#​10571](https://togithub.com/grpc/grpc-java/issues/10571)) ##### Documentation - API documentation (Javadoc) for Server and Channel builders now correctly displays inherited methods and the class hierarchy. ([#​10406](https://togithub.com/grpc/grpc-java/issues/10406)) - examples: add an example for OAuth ([#​10560](https://togithub.com/grpc/grpc-java/issues/10560)) ##### Dependencies - Upgrade Netty to 4.1.97.Final ##### Acknowledgements John Cormie ([@​jdcormie](https://togithub.com/jdcormie)) Stephane Landelle ([@​slandelle](https://togithub.com/slandelle)) [@​kotlaja](https://togithub.com/kotlaja) ### [`v1.58.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.58.1) - xds: PickFirst was not receiving its configuration so it used the default configuration which meant that randomize was ignored. ### [`v1.58.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.58.0) ##### API Changes - xds: Add missing ExperimentalApi to OrcaServiceImpl - stub: Removed deprecated methods attachHeaders and captureMetadata from MetadataUtils ([#​10443](https://togithub.com/grpc/grpc-java/issues/10443)) - api: Stabilized ServerCall.getAuthority() by removing experimental annotation ([#​10498](https://togithub.com/grpc/grpc-java/issues/10498)) - api: Stabilized `ServerCall#setMessageCompression()` and `PartialForwardingServerCall#setMessageCompression()` ([#​10393](https://togithub.com/grpc/grpc-java/issues/10393)) - protobuf: Stabilize `ProtoUtils.setExtensionRegistry()` and `ProtoLiteUtils.setExtensionRegistry()` ([#​10392](https://togithub.com/grpc/grpc-java/issues/10392)) - testing: Stabilize `GrpcCleanupRule`, `GrpcServerRule` ([#​10494](https://togithub.com/grpc/grpc-java/issues/10494)) - api: Stabilized ServerBuilder.handshakeTimeout ([#​10499](https://togithub.com/grpc/grpc-java/issues/10499)) - api: Removed Context.Storage deprecated method attach(), made doAttach() abstract ([#​10379](https://togithub.com/grpc/grpc-java/issues/10379)) - api : Stabilized methodDescriptor getRequestMarshaller, getResponseMarshaller ([#​10495](https://togithub.com/grpc/grpc-java/issues/10495)) ##### Behavior Changes - rls: Have RLS's LRU Cache rely on cleanup process to remove expired entries ([#​10400](https://togithub.com/grpc/grpc-java/issues/10400)) - core, inprocess, util: 2 new artifacts grpc-inprocess and grpc-util have been created by moving code from grpc-core to facilitate Java module support ([#​10362](https://togithub.com/grpc/grpc-java/issues/10362), [#​10390](https://togithub.com/grpc/grpc-java/issues/10390)) - all: Automatic module name support added to all artifacts ([#​10413](https://togithub.com/grpc/grpc-java/issues/10413)) - xds: Encode the service authority in XdsNameResolver ([#​10207](https://togithub.com/grpc/grpc-java/issues/10207)) ##### Improvements - api: In Javadoc, link to gRFCs A8/A9 for keepalive and related settings - okhttp: Enable support for being returned by `Grpc.newServerBuilderForPort()`. At present, Netty always has higher priority than OkHttp, if they are both available, because `ServerBuilder.forPort()` is not supported in the OkHttp transport but is supported in the Netty transport - bazel: Enhance java_grpc_library.bzl to allow toolchain to use annotation processors - examples: Add pre-serialized-message example ([#​10112](https://togithub.com/grpc/grpc-java/issues/10112)) - examples: Android examples to use AGP 7.4.0 ([#​10497](https://togithub.com/grpc/grpc-java/issues/10497)) ##### Bug Fixes - Fix compatibility with Java 8. This fixes the `NoSuchMethodError` for `ByteBuffer` methods present in 1.57.0 ([#​10441](https://togithub.com/grpc/grpc-java/issues/10441)) - xds: Remove debug assert in WeightedRoundRobinLoadBalancer. The assert was to detect breakages in the static stride algorithm causing too much looping. However, with multithreading it is possible to trigger even in legitimate scenarios ([#​10437](https://togithub.com/grpc/grpc-java/issues/10437)) - util: Outlier detection tracer delegation ([#​10459](https://togithub.com/grpc/grpc-java/issues/10459)) - Handle header with errors and endStream = true. Was filling logs with NPEs. ([#​10384](https://togithub.com/grpc/grpc-java/issues/10384)) - core: Fix a retriablestream bug that may cause deadlock with OkHttp ([#​10386](https://togithub.com/grpc/grpc-java/issues/10386)) - stub: Remove ThreadlessExecutor from BlockingServerStream to eliminate the problem where sometimes the iterator’s next() method would get stuck. ([#​10496](https://togithub.com/grpc/grpc-java/issues/10496)) - compiler: Fix aarch\_64 macs not being able to build the compiler module. ([#​10516](https://togithub.com/grpc/grpc-java/issues/10516)) - okhttp: Use padded length for flow control in both client and server transport ([#​10422](https://togithub.com/grpc/grpc-java/issues/10422)) - xds: Fix locality logging information in bootstrap ([#​10423](https://togithub.com/grpc/grpc-java/issues/10423)) ##### Dependencies - Upgraded protobuf to 3.24.0 - android: Min SDK level to 21 ([#​10505](https://togithub.com/grpc/grpc-java/issues/10505)) - Various dependency upgrades ([#​10359](https://togithub.com/grpc/grpc-java/issues/10359)): androidx.core:core 1.10.0 -> 1.10.1 com.google.api.grpc:proto-google-common-protos 2.17.0 -> 2.22.0 com.google.cloud:google-cloud-logging 3.14.5 -> 3.15.5 com.google.errorprone:error_prone_annotations 2.18.0 -> 2.20.0 com.squareup.okio:okio 1.17.5 -> 2.10.0 ##### Acknowledgements Halvard Skogsrud
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index cbb41c5..e958f79 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -36,7 +36,7 @@ dependencies { implementation 'com.google.guava:guava:32.1.3-jre' implementation "io.grpc:grpc-protobuf:1.60.1" implementation "io.grpc:grpc-stub:1.59.1" - implementation "io.grpc:grpc-services:1.57.2" + implementation "io.grpc:grpc-services:1.60.1" implementation "io.grpc:grpc-testing:1.60.1" implementation "io.cloudquery:plugin-pb-java:0.0.11" implementation "org.apache.arrow:arrow-memory-core:12.0.1" From b8b96bda65595be115e777e2e9a9ac6c7dabffea Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Jan 2024 07:15:10 +0200 Subject: [PATCH 089/376] fix(deps): Update dependency io.grpc:grpc-stub to v1.60.1 (#164) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.59.1` -> `1.60.1` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-stub) ### [`v1.60.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.60.1) ### Bug Fixes - util: Fix NPE when multiple addresses in an address group for petiole load balancer policies ([#​10770](https://togithub.com/grpc/grpc-java/issues/10770)) ### [`v1.60.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.60.0) ##### API Changes - api: Stabilize `ForwardingServerBuilder`, `ForwardingChannelBuilder2`, and `ForwardingChannelBuilder`. Note that `ForwardingChannelBuilder` is stabilized (no changes will be made to it), but immediately deprecated in favor of `ForwardingChannelBuilder2`. ([#​10586](https://togithub.com/grpc/grpc-java/issues/10586)) - api: Deprecate `ForwardingChannelBuilder.delegate()`. De facto this deprecates the class itself, since all classes extending `ForwardingChannelBuilder` implement the `delegate()` method. See javadoc for details ([#​10587](https://togithub.com/grpc/grpc-java/issues/10587)) - api: Changed recently-introduced `LoadBalancer.acceptResolvedAddresses()` to return `Status` instead of `boolean` ([#​10636](https://togithub.com/grpc/grpc-java/issues/10636)). This is part of continued work to align the LB API cross-language and API stabilization - stub: Deprecate StreamObservers ([#​10654](https://togithub.com/grpc/grpc-java/issues/10654)) - alts: AltsChannelBuilder now extends `ForwardingChannelBuilder2` ([#​10587](https://togithub.com/grpc/grpc-java/issues/10587)) - protobuf: Stabilize `ProtoUtils.metadataMarshaller()` ([#​10628](https://togithub.com/grpc/grpc-java/issues/10628)) - protobuf-lite: ProtoLiteUtils experimental comment ([#​10627](https://togithub.com/grpc/grpc-java/issues/10627)) ##### Behavior Changes - core: `ManagedChannel`s now check the address types provided by the nameResolver (for the given target) with the address types supported by the channel transport and generate an error in case of mismatch. That dramatically improves the error message when an issue occurs - core: When a server stream is closed due to user's code (an uncaught exception in halfClosed, messagesAvailable, onReady callback of a ServerStream's listener), the `Status.UNKNOWN` returned to the client will have `Application error processing RPC` description. Previously the description was empty. This is helpful to differentiate between server errors originated in user application, gRPC library, or even those injected by a proxy. ([#​10643](https://togithub.com/grpc/grpc-java/issues/10643)) - xds: Log ORCA UNIMPLEMENTED error to subchannel logger. This removes them from the normal application logs, reducing log spam ##### Improvements - Change the underlying implementations of RingHash, RoundRobin, WeightedRoundRobin and LeastRequest load balancers to utilize the pick first load balancer rather than directly manage subchannels. This should only be noticeable if it introduced a bug - core: Avoid flushing headers when the server returns a single response ([#​9314](https://togithub.com/grpc/grpc-java/issues/9314)). This is a performance optimization to reduce the number of packets for non-streaming responses - util: Make grpc-core an implementation dependency. This will prevent the io.grpc.internal classes in grpc-core from being visible during compilation when depending on just grpc-util - netty: Implement `Http2Headers.isEmpty()`. This fixes compatibility with Netty 4.1.101.Final. - netty: Add `NettyServerBuilder.maxRstFramesPerWindow()`. This can be used to limit impact of Rapid Reset - netty: Disable huffman coding in headers ([#​10563](https://togithub.com/grpc/grpc-java/issues/10563)). Huffman coding provides modest compression for relatively high CPU usage, especially within a data center. Rely just on the HPACK static and dynamic tables for compression, for higher performance. This only impacts header values 512 bytes or longer, as Netty already disabled Huffman for smaller values - alts: Improve handshake failure error message by propagating original exception ([#​10644](https://togithub.com/grpc/grpc-java/issues/10644)) ##### Bug Fixes - util: Remove shutdown subchannels from OD tracking ([#​10683](https://togithub.com/grpc/grpc-java/issues/10683)). This could have caused a memory leak on a long-lived channel. But we don’t think it could be triggered with our built-in load balancing policies. ##### Dependencies - Bump Netty to 4.1.100.Final ##### Acknowledgements [@​anthonyjpratti](https://togithub.com/anthonyjpratti) [@​fedorka](https://togithub.com/fedorka) [@​jpd236](https://togithub.com/jpd236) [@​mateusazis](https://togithub.com/mateusazis) [@​pkoenig10](https://togithub.com/pkoenig10) [@​yannickepstein](https://togithub.com/yannickepstein) [@​amirhadadi](https://togithub.com/amirhadadi)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index e958f79..a61f3bf 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -35,7 +35,7 @@ dependencies { implementation 'info.picocli:picocli:4.7.5' implementation 'com.google.guava:guava:32.1.3-jre' implementation "io.grpc:grpc-protobuf:1.60.1" - implementation "io.grpc:grpc-stub:1.59.1" + implementation "io.grpc:grpc-stub:1.60.1" implementation "io.grpc:grpc-services:1.60.1" implementation "io.grpc:grpc-testing:1.60.1" implementation "io.cloudquery:plugin-pb-java:0.0.11" From bd1e79b736c0bbae8cb75b27d58e9c21a79211b4 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 2 Jan 2024 13:49:36 +0200 Subject: [PATCH 090/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.16.1 (#159) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-annotations](https://togithub.com/FasterXML/jackson) ([source](https://togithub.com/FasterXML/jackson-annotations)) | dependencies | patch | `2.16.0` -> `2.16.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index a61f3bf..e744ae2 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -43,7 +43,7 @@ dependencies { implementation "org.apache.arrow:arrow-vector:12.0.1" implementation "com.fasterxml.jackson.core:jackson-core:2.16.1" - implementation "com.fasterxml.jackson.core:jackson-annotations:2.16.0" + implementation "com.fasterxml.jackson.core:jackson-annotations:2.16.1" implementation 'org.apache.logging.log4j:log4j-api:2.20.0' implementation 'org.apache.logging.log4j:log4j-core:2.20.0' From 8a12e6269a9e8e62af7a96f67a0c5296275de25a Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 2 Jan 2024 13:54:25 +0200 Subject: [PATCH 091/376] chore(main): Release v0.0.18 (#162) :robot: I have created a release *beep* *boop* --- ## [0.0.18](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.17...v0.0.18) (2024-01-02) ### Bug Fixes * **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.16.1 ([#159](https://github.com/cloudquery/plugin-sdk-java/issues/159)) ([bd1e79b](https://github.com/cloudquery/plugin-sdk-java/commit/bd1e79b736c0bbae8cb75b27d58e9c21a79211b4)) * **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.16.1 ([#160](https://github.com/cloudquery/plugin-sdk-java/issues/160)) ([d663db8](https://github.com/cloudquery/plugin-sdk-java/commit/d663db8376ea63bb6244a285f2d8fd70622bffd8)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.11 ([#131](https://github.com/cloudquery/plugin-sdk-java/issues/131)) ([6ae7381](https://github.com/cloudquery/plugin-sdk-java/commit/6ae738194c71d12e7f92b0756110aa5fcb61e0aa)) * **deps:** Update dependency io.grpc:grpc-protobuf to v1.60.1 ([#163](https://github.com/cloudquery/plugin-sdk-java/issues/163)) ([8dfcccd](https://github.com/cloudquery/plugin-sdk-java/commit/8dfcccd4eea048d53be3f02c09ee22946dd22a5c)) * **deps:** Update dependency io.grpc:grpc-services to v1.60.1 ([#139](https://github.com/cloudquery/plugin-sdk-java/issues/139)) ([6fc59f2](https://github.com/cloudquery/plugin-sdk-java/commit/6fc59f264e3e544db07459644c29c8bdb1f93391)) * **deps:** Update dependency io.grpc:grpc-stub to v1.60.1 ([#164](https://github.com/cloudquery/plugin-sdk-java/issues/164)) ([b8b96bd](https://github.com/cloudquery/plugin-sdk-java/commit/b8b96bda65595be115e777e2e9a9ac6c7dabffea)) * **deps:** Update dependency io.grpc:grpc-testing to v1.60.1 ([#165](https://github.com/cloudquery/plugin-sdk-java/issues/165)) ([f889c39](https://github.com/cloudquery/plugin-sdk-java/commit/f889c3959850cdb2cdc37413791276c0f703983b)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.5 ([#161](https://github.com/cloudquery/plugin-sdk-java/issues/161)) ([9057cdf](https://github.com/cloudquery/plugin-sdk-java/commit/9057cdfdb08ebe21ae6edf4df2bb48e210355f45)) * **deps:** Update dependency org.assertj:assertj-core to v3.25.0 ([#166](https://github.com/cloudquery/plugin-sdk-java/issues/166)) ([54dc63f](https://github.com/cloudquery/plugin-sdk-java/commit/54dc63fa72713f3bbca85fc5654b24a5e4d93d60)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 15 +++++++++++++++ lib/build.gradle | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79eb49e..6aa96b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [0.0.18](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.17...v0.0.18) (2024-01-02) + + +### Bug Fixes + +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.16.1 ([#159](https://github.com/cloudquery/plugin-sdk-java/issues/159)) ([bd1e79b](https://github.com/cloudquery/plugin-sdk-java/commit/bd1e79b736c0bbae8cb75b27d58e9c21a79211b4)) +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.16.1 ([#160](https://github.com/cloudquery/plugin-sdk-java/issues/160)) ([d663db8](https://github.com/cloudquery/plugin-sdk-java/commit/d663db8376ea63bb6244a285f2d8fd70622bffd8)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.11 ([#131](https://github.com/cloudquery/plugin-sdk-java/issues/131)) ([6ae7381](https://github.com/cloudquery/plugin-sdk-java/commit/6ae738194c71d12e7f92b0756110aa5fcb61e0aa)) +* **deps:** Update dependency io.grpc:grpc-protobuf to v1.60.1 ([#163](https://github.com/cloudquery/plugin-sdk-java/issues/163)) ([8dfcccd](https://github.com/cloudquery/plugin-sdk-java/commit/8dfcccd4eea048d53be3f02c09ee22946dd22a5c)) +* **deps:** Update dependency io.grpc:grpc-services to v1.60.1 ([#139](https://github.com/cloudquery/plugin-sdk-java/issues/139)) ([6fc59f2](https://github.com/cloudquery/plugin-sdk-java/commit/6fc59f264e3e544db07459644c29c8bdb1f93391)) +* **deps:** Update dependency io.grpc:grpc-stub to v1.60.1 ([#164](https://github.com/cloudquery/plugin-sdk-java/issues/164)) ([b8b96bd](https://github.com/cloudquery/plugin-sdk-java/commit/b8b96bda65595be115e777e2e9a9ac6c7dabffea)) +* **deps:** Update dependency io.grpc:grpc-testing to v1.60.1 ([#165](https://github.com/cloudquery/plugin-sdk-java/issues/165)) ([f889c39](https://github.com/cloudquery/plugin-sdk-java/commit/f889c3959850cdb2cdc37413791276c0f703983b)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.5 ([#161](https://github.com/cloudquery/plugin-sdk-java/issues/161)) ([9057cdf](https://github.com/cloudquery/plugin-sdk-java/commit/9057cdfdb08ebe21ae6edf4df2bb48e210355f45)) +* **deps:** Update dependency org.assertj:assertj-core to v3.25.0 ([#166](https://github.com/cloudquery/plugin-sdk-java/issues/166)) ([54dc63f](https://github.com/cloudquery/plugin-sdk-java/commit/54dc63fa72713f3bbca85fc5654b24a5e4d93d60)) + ## [0.0.17](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.16...v0.0.17) (2023-12-29) diff --git a/lib/build.gradle b/lib/build.gradle index e744ae2..a9036bf 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.17' +version = '0.0.18' // x-release-please-end repositories { From cb3e7d04a5048d6a08f4645e1a2439446a36da5b Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Feb 2024 02:37:29 +0200 Subject: [PATCH 092/376] chore(deps): Update github-actions (#167) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/gradle-build-action | action | digest | `bc72ac9` -> `0706ab3` | | gradle/wrapper-validation-action | action | digest | `342dbeb` -> `2572bdd` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d95a8ac..4802804 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: java-version: "18" cache: "gradle" - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@342dbebe7272035434f9baccc29a816ec6dd2c7b + uses: gradle/wrapper-validation-action@2572bdd97b8338128030a2a631bfa0ceaac6b6e5 - name: Build package run: ./gradlew build env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8f7d826..eb3d160 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,9 +16,9 @@ jobs: java-version: '18' cache: 'gradle' - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@342dbebe7272035434f9baccc29a816ec6dd2c7b + uses: gradle/wrapper-validation-action@2572bdd97b8338128030a2a631bfa0ceaac6b6e5 - name: Publish package - uses: gradle/gradle-build-action@bc72ac9e9d33a38827c042af2d90014ad4250535 + uses: gradle/gradle-build-action@0706ab3a3c20483a3f37c3d9de1b0d95297e3743 with: arguments: publish env: From 02663c1ea7f5dd664ff2eb66d26648ea6e26bf1d Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Feb 2024 02:43:52 +0200 Subject: [PATCH 093/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.12 (#168) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.11` -> `0.0.12` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index a9036bf..ac4497a 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation "io.grpc:grpc-stub:1.60.1" implementation "io.grpc:grpc-services:1.60.1" implementation "io.grpc:grpc-testing:1.60.1" - implementation "io.cloudquery:plugin-pb-java:0.0.11" + implementation "io.cloudquery:plugin-pb-java:0.0.12" implementation "org.apache.arrow:arrow-memory-core:12.0.1" implementation "org.apache.arrow:arrow-vector:12.0.1" From 20d48303122f04f2f578e345dcb5d0722502efce Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Feb 2024 03:57:41 +0200 Subject: [PATCH 094/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.6 (#170) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://togithub.com/jqno/equalsverifier)) | dependencies | patch | `3.15.5` -> `3.15.6` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.15.6`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3156---2024-01-09) ##### Fixed - Protected JPA entity getters were ignored. ([Issue 909](https://togithub.com/jqno/equalsverifier/issues/909))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index ac4497a..0db8d1a 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -53,7 +53,7 @@ dependencies { testImplementation('org.junit.jupiter:junit-jupiter-api:5.10.1') testImplementation('org.mockito:mockito-core:5.4.0') testImplementation('org.mockito:mockito-junit-jupiter:5.4.0') - testImplementation('nl.jqno.equalsverifier:equalsverifier:3.15.5') + testImplementation('nl.jqno.equalsverifier:equalsverifier:3.15.6') testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.10.1') testImplementation 'org.assertj:assertj-core:3.25.0' From 96d0b661452b9a8557da9dfe8e52f3fa6212da59 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Feb 2024 04:01:55 +0200 Subject: [PATCH 095/376] fix(deps): Update dependency org.assertj:assertj-core to v3.25.2 (#171) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.assertj:assertj-core](https://assertj.github.io/doc/#assertj-core) ([source](https://togithub.com/assertj/assertj)) | dependencies | patch | `3.25.0` -> `3.25.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 0db8d1a..add0548 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -56,7 +56,7 @@ dependencies { testImplementation('nl.jqno.equalsverifier:equalsverifier:3.15.6') testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.10.1') - testImplementation 'org.assertj:assertj-core:3.25.0' + testImplementation 'org.assertj:assertj-core:3.25.2' runtimeOnly "org.apache.arrow:arrow-memory-netty:12.0.1" } From 60ba1c6731a310a9aa84638f60794491e64e1c85 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Feb 2024 04:38:40 +0200 Subject: [PATCH 096/376] fix(deps): Update log4j2 monorepo to v2.22.1 (#173) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.logging.log4j:log4j-core](https://logging.apache.org/log4j/2.x/) ([source](https://togithub.com/apache/logging-log4j2)) | dependencies | minor | `2.20.0` -> `2.22.1` | | [org.apache.logging.log4j:log4j-api](https://logging.apache.org/log4j/2.x/) ([source](https://togithub.com/apache/logging-log4j2)) | dependencies | minor | `2.20.0` -> `2.22.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index add0548..ea1d460 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -45,8 +45,8 @@ dependencies { implementation "com.fasterxml.jackson.core:jackson-core:2.16.1" implementation "com.fasterxml.jackson.core:jackson-annotations:2.16.1" - implementation 'org.apache.logging.log4j:log4j-api:2.20.0' - implementation 'org.apache.logging.log4j:log4j-core:2.20.0' + implementation 'org.apache.logging.log4j:log4j-api:2.22.1' + implementation 'org.apache.logging.log4j:log4j-core:2.22.1' testImplementation(platform('org.junit:junit-bom:5.10.1')) testImplementation('org.junit.jupiter:junit-jupiter:5.10.1') From 477e6a5f52c20e9539f76c9cfc6c5d1482ed1a49 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Feb 2024 17:28:53 +0200 Subject: [PATCH 097/376] fix(deps): Update mockito monorepo to v5.10.0 (#174) Co-authored-by: Renovate Bot --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index ea1d460..860fc3d 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -51,8 +51,8 @@ dependencies { testImplementation(platform('org.junit:junit-bom:5.10.1')) testImplementation('org.junit.jupiter:junit-jupiter:5.10.1') testImplementation('org.junit.jupiter:junit-jupiter-api:5.10.1') - testImplementation('org.mockito:mockito-core:5.4.0') - testImplementation('org.mockito:mockito-junit-jupiter:5.4.0') + testImplementation('org.mockito:mockito-core:5.10.0') + testImplementation('org.mockito:mockito-junit-jupiter:5.10.0') testImplementation('nl.jqno.equalsverifier:equalsverifier:3.15.6') testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.10.1') From 1f38c2285a4580d3d78954c5f73d4ad4649a4892 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Feb 2024 17:31:05 +0200 Subject: [PATCH 098/376] fix(deps): Update plugin com.diffplug.spotless to v6.25.0 (#175) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | com.diffplug.spotless | plugin | minor | `6.20.0` -> `6.25.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 860fc3d..527b63f 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -2,7 +2,7 @@ plugins { id 'java-library' id "io.freefair.lombok" version "8.2.2" id "maven-publish" - id "com.diffplug.spotless" version "6.20.0" + id "com.diffplug.spotless" version "6.25.0" } ext { From 7cd3e915650cab516487f1805ee2514b44620cf8 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Feb 2024 18:07:04 +0200 Subject: [PATCH 099/376] chore(main): Release v0.0.19 (#169) :robot: I have created a release *beep* *boop* --- ## [0.0.19](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.18...v0.0.19) (2024-02-01) ### Bug Fixes * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.12 ([#168](https://github.com/cloudquery/plugin-sdk-java/issues/168)) ([02663c1](https://github.com/cloudquery/plugin-sdk-java/commit/02663c1ea7f5dd664ff2eb66d26648ea6e26bf1d)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.6 ([#170](https://github.com/cloudquery/plugin-sdk-java/issues/170)) ([20d4830](https://github.com/cloudquery/plugin-sdk-java/commit/20d48303122f04f2f578e345dcb5d0722502efce)) * **deps:** Update dependency org.assertj:assertj-core to v3.25.2 ([#171](https://github.com/cloudquery/plugin-sdk-java/issues/171)) ([96d0b66](https://github.com/cloudquery/plugin-sdk-java/commit/96d0b661452b9a8557da9dfe8e52f3fa6212da59)) * **deps:** Update log4j2 monorepo to v2.22.1 ([#173](https://github.com/cloudquery/plugin-sdk-java/issues/173)) ([60ba1c6](https://github.com/cloudquery/plugin-sdk-java/commit/60ba1c6731a310a9aa84638f60794491e64e1c85)) * **deps:** Update mockito monorepo to v5.10.0 ([#174](https://github.com/cloudquery/plugin-sdk-java/issues/174)) ([477e6a5](https://github.com/cloudquery/plugin-sdk-java/commit/477e6a5f52c20e9539f76c9cfc6c5d1482ed1a49)) * **deps:** Update plugin com.diffplug.spotless to v6.25.0 ([#175](https://github.com/cloudquery/plugin-sdk-java/issues/175)) ([1f38c22](https://github.com/cloudquery/plugin-sdk-java/commit/1f38c2285a4580d3d78954c5f73d4ad4649a4892)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 12 ++++++++++++ lib/build.gradle | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6aa96b2..6241665 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [0.0.19](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.18...v0.0.19) (2024-02-01) + + +### Bug Fixes + +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.12 ([#168](https://github.com/cloudquery/plugin-sdk-java/issues/168)) ([02663c1](https://github.com/cloudquery/plugin-sdk-java/commit/02663c1ea7f5dd664ff2eb66d26648ea6e26bf1d)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.6 ([#170](https://github.com/cloudquery/plugin-sdk-java/issues/170)) ([20d4830](https://github.com/cloudquery/plugin-sdk-java/commit/20d48303122f04f2f578e345dcb5d0722502efce)) +* **deps:** Update dependency org.assertj:assertj-core to v3.25.2 ([#171](https://github.com/cloudquery/plugin-sdk-java/issues/171)) ([96d0b66](https://github.com/cloudquery/plugin-sdk-java/commit/96d0b661452b9a8557da9dfe8e52f3fa6212da59)) +* **deps:** Update log4j2 monorepo to v2.22.1 ([#173](https://github.com/cloudquery/plugin-sdk-java/issues/173)) ([60ba1c6](https://github.com/cloudquery/plugin-sdk-java/commit/60ba1c6731a310a9aa84638f60794491e64e1c85)) +* **deps:** Update mockito monorepo to v5.10.0 ([#174](https://github.com/cloudquery/plugin-sdk-java/issues/174)) ([477e6a5](https://github.com/cloudquery/plugin-sdk-java/commit/477e6a5f52c20e9539f76c9cfc6c5d1482ed1a49)) +* **deps:** Update plugin com.diffplug.spotless to v6.25.0 ([#175](https://github.com/cloudquery/plugin-sdk-java/issues/175)) ([1f38c22](https://github.com/cloudquery/plugin-sdk-java/commit/1f38c2285a4580d3d78954c5f73d4ad4649a4892)) + ## [0.0.18](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.17...v0.0.18) (2024-01-02) diff --git a/lib/build.gradle b/lib/build.gradle index 527b63f..e4b9a72 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery.plugin.sdk' // x-release-please-start-version -version = '0.0.18' +version = '0.0.19' // x-release-please-end repositories { From 46db08666cad988460288c433db327f4f0a3b49c Mon Sep 17 00:00:00 2001 From: Alex Shcherbakov Date: Tue, 6 Feb 2024 15:28:03 +0200 Subject: [PATCH 100/376] fix: Update artifact & group ID (#176) --- lib/build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index e4b9a72..60f2ee0 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -9,7 +9,7 @@ ext { javaMainClass = "io.cloudquery.MainClass" } -group 'io.cloudquery.plugin.sdk' +group 'io.cloudquery' // x-release-please-start-version version = '0.0.19' // x-release-please-end @@ -90,6 +90,7 @@ publishing { } publications { gpr(MavenPublication) { + artifactId = 'plugin-sdk-java' from(components.java) } } From 8c2ebe08854abd4fb87ac599bf2235884277aba7 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 6 Feb 2024 15:29:58 +0200 Subject: [PATCH 101/376] chore(main): Release v0.0.20 (#177) :robot: I have created a release *beep* *boop* --- ## [0.0.20](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.19...v0.0.20) (2024-02-06) ### Bug Fixes * Update artifact & group ID ([#176](https://github.com/cloudquery/plugin-sdk-java/issues/176)) ([46db086](https://github.com/cloudquery/plugin-sdk-java/commit/46db08666cad988460288c433db327f4f0a3b49c)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6241665..ae44d39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.20](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.19...v0.0.20) (2024-02-06) + + +### Bug Fixes + +* Update artifact & group ID ([#176](https://github.com/cloudquery/plugin-sdk-java/issues/176)) ([46db086](https://github.com/cloudquery/plugin-sdk-java/commit/46db08666cad988460288c433db327f4f0a3b49c)) + ## [0.0.19](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.18...v0.0.19) (2024-02-01) diff --git a/lib/build.gradle b/lib/build.gradle index 60f2ee0..c16beae 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.19' +version = '0.0.20' // x-release-please-end repositories { From 6871551de650ee36464699ec6cbb0f124676f282 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 9 Feb 2024 12:15:33 +0200 Subject: [PATCH 102/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.14 (#178) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.12` -> `0.0.14` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index c16beae..cc2588d 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation "io.grpc:grpc-stub:1.60.1" implementation "io.grpc:grpc-services:1.60.1" implementation "io.grpc:grpc-testing:1.60.1" - implementation "io.cloudquery:plugin-pb-java:0.0.12" + implementation "io.cloudquery:plugin-pb-java:0.0.14" implementation "org.apache.arrow:arrow-memory-core:12.0.1" implementation "org.apache.arrow:arrow-vector:12.0.1" From 4ada7bcade9cf94043a9ba99c86c2fef43c3a645 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 9 Feb 2024 12:57:55 +0200 Subject: [PATCH 103/376] fix(deps): Update grpc-java monorepo to v1.61.1 (#172) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-testing](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.60.1` -> `1.61.1` | | [io.grpc:grpc-services](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.60.1` -> `1.61.1` | | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.60.1` -> `1.61.1` | | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.60.1` -> `1.61.1` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-testing) ### [`v1.61.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.61.1) ##### Bug Fixes xds: Fix a bug in `WeightedRoundRobinLoadBalancer` policy that could raise `NullPointerException` and further cause channel panic when picking a subchannel. This bug can only be triggered when connection can not be established and the channel reports `TRANSIENT_FAILURE` state. ([#​10868](https://togithub.com/grpc/grpc-java/issues/10868)) ### [`v1.61.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.61.0) ##### API Changes - Remove unused experimental API ManagedChannelBuilder.enableFullStreamDecompression ([#​10744](https://togithub.com/grpc/grpc-java/issues/10744)) - api: Deprecate LoadBalancer.EMPTY_PICKER added in 1.58.0 in favor of FixedResultPicker ([`860b5cb`](https://togithub.com/grpc/grpc-java/commit/860b5cb1f)) ##### New Features - binder: Experimental support for asynchronous security policies ([#​10566](https://togithub.com/grpc/grpc-java/issues/10566)) ##### Improvements - core: reduce CompositeReadableBuffer allocation ([#​3279](https://togithub.com/grpc/grpc-java/issues/3279)) - core: Improve error message clarity when a channel leak is detected ([`201893f`](https://togithub.com/grpc/grpc-java/commit/201893f5e)) - util: use shared index across `round_robin` pickers ([`dca89b2`](https://togithub.com/grpc/grpc-java/commit/dca89b25b)). This makes its implementation more similar to `weighted_round_robin`. - xds: Implement ADS stream flow control mechanism ([#​10674](https://togithub.com/grpc/grpc-java/issues/10674)). This limits the maximum memory consumed if the control plane sends updates more rapidly than they can be processed. ##### Bug Fixes - core: Check outbound maximum message size for the compressed size in addition to the already-checked uncompressed size ([#​10739](https://togithub.com/grpc/grpc-java/issues/10739)). Fixed the status code to be RESOURCE_EXHAUSTED instead of UNKNOWN. - util: Fix NPE when multiple addresses are in an address group for petiole load balancer policies ([#​10769](https://togithub.com/grpc/grpc-java/issues/10769)) - util: Disable publishing of fixtures ([`8ac43dd`](https://togithub.com/grpc/grpc-java/commit/8ac43dd81)). The Gradle test fixtures are for use by grpc-java's internal tests. - okhttp: Ignore known conscrypt socket close issue ([#​10812](https://togithub.com/grpc/grpc-java/issues/10812)). This stops an exception from being thrown when a known Conscrypt synchronization issue happens. ##### Dependencies - Drop support for Bazel 5 ([`55a9c01`](https://togithub.com/grpc/grpc-java/commit/55a9c012c)). Bazel 7 is available, and Protobuf has already dropped support for Bazel 5. - Change many compile deps to runtime deps ([`d6830d7`](https://togithub.com/grpc/grpc-java/commit/d6830d7f9)). This reduces the transitive classes "leaked" into the compile classpath. In particular, grpc-core (`io.grpc.internal`) will be less frequently included transitively at compile time. - Upgrade dependencies ([`c985797`](https://togithub.com/grpc/grpc-java/commit/c985797d9)) - Protobuf to 3.25.1 - auto-value-annotations to 1.10.4 - error_prone_annotations to 2.23.0 - proto-google-common-protos to 2.29.0 - google-cloud-logging to 3.15.14 - guava to 32.1.3-android - okio to 3.4.0 ##### Acknowledgements - [@​Gordiychuk](https://togithub.com/Gordiychuk) - [@​jroper](https://togithub.com/jroper) - [@​jyane](https://togithub.com/jyane) - [@​ulfjack](https://togithub.com/ulfjack) ### [`v1.60.2`](https://togithub.com/grpc/grpc-java/releases/tag/v1.60.2) ##### Bug Fixes xds: Fix a bug in `WeightedRoundRobinLoadBalancer` policy that could raise `NullPointerException` and further cause channel panic when picking a subchannel. This bug can only be triggered when connection can not be established and the channel reports `TRANSIENT_FAILURE` state. ([#​10868](https://togithub.com/grpc/grpc-java/issues/10868))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index cc2588d..4dd30b6 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,13 +34,12 @@ dependencies { implementation 'com.google.guava:guava:32.1.3-jre' implementation 'info.picocli:picocli:4.7.5' implementation 'com.google.guava:guava:32.1.3-jre' - implementation "io.grpc:grpc-protobuf:1.60.1" - implementation "io.grpc:grpc-stub:1.60.1" - implementation "io.grpc:grpc-services:1.60.1" - implementation "io.grpc:grpc-testing:1.60.1" - implementation "io.cloudquery:plugin-pb-java:0.0.14" - implementation "org.apache.arrow:arrow-memory-core:12.0.1" - implementation "org.apache.arrow:arrow-vector:12.0.1" + implementation 'io.grpc:grpc-protobuf:1.61.1' + implementation 'io.grpc:grpc-stub:1.61.1' + implementation 'io.grpc:grpc-services:1.61.1' + implementation 'io.cloudquery:plugin-pb-java:0.0.14' + implementation 'org.apache.arrow:arrow-memory-core:12.0.1' + implementation 'org.apache.arrow:arrow-vector:12.0.1' implementation "com.fasterxml.jackson.core:jackson-core:2.16.1" implementation "com.fasterxml.jackson.core:jackson-annotations:2.16.1" @@ -48,15 +47,16 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.22.1' implementation 'org.apache.logging.log4j:log4j-core:2.22.1' - testImplementation(platform('org.junit:junit-bom:5.10.1')) - testImplementation('org.junit.jupiter:junit-jupiter:5.10.1') - testImplementation('org.junit.jupiter:junit-jupiter-api:5.10.1') - testImplementation('org.mockito:mockito-core:5.10.0') - testImplementation('org.mockito:mockito-junit-jupiter:5.10.0') - testImplementation('nl.jqno.equalsverifier:equalsverifier:3.15.6') - testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.10.1') - + testImplementation 'io.grpc:grpc-testing:1.61.1' + testImplementation 'io.grpc:grpc-inprocess:1.61.1' + testImplementation platform('org.junit:junit-bom:5.10.1') + testImplementation 'org.junit.jupiter:junit-jupiter:5.10.1' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.1' + testImplementation 'org.mockito:mockito-core:5.10.0' + testImplementation 'org.mockito:mockito-junit-jupiter:5.10.0' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.15.6' testImplementation 'org.assertj:assertj-core:3.25.2' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.1' runtimeOnly "org.apache.arrow:arrow-memory-netty:12.0.1" } From 9eeb976c868b1a206230b6285d666671a18682a7 Mon Sep 17 00:00:00 2001 From: Alex Shcherbakov Date: Fri, 9 Feb 2024 13:48:28 +0200 Subject: [PATCH 104/376] feat: Implement `GetSpecSchema` (#180) Closes https://github.com/cloudquery/cloudquery/issues/16503 --- .../servers/plugin/v3/PluginServer.java | 14 +++++++ .../java/io/cloudquery/plugin/Plugin.java | 1 + .../servers/plugin/v3/PluginServerTest.java | 39 ++++++++++++++++++- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java index 56ee04d..6bada6a 100644 --- a/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java +++ b/lib/src/main/java/io/cloudquery/internal/servers/plugin/v3/PluginServer.java @@ -181,4 +181,18 @@ private WriteMessage processDeleteStaleRequest(Write.Request request) messageDeleteStale.getSourceName(), new Date(messageDeleteStale.getSyncTime().getSeconds() * 1000)); } + + @Override + public void getSpecSchema( + io.cloudquery.plugin.v3.GetSpecSchema.Request request, + StreamObserver responseObserver) { + io.cloudquery.plugin.v3.GetSpecSchema.Response.Builder builder = + io.cloudquery.plugin.v3.GetSpecSchema.Response.newBuilder(); + String schema = this.plugin.getJsonSchema(); + if (schema != null && !schema.isBlank()) { + builder.setJsonSchema(schema); + } + responseObserver.onNext(builder.build()); + responseObserver.onCompleted(); + } } diff --git a/lib/src/main/java/io/cloudquery/plugin/Plugin.java b/lib/src/main/java/io/cloudquery/plugin/Plugin.java index 5c02701..bb46a0b 100644 --- a/lib/src/main/java/io/cloudquery/plugin/Plugin.java +++ b/lib/src/main/java/io/cloudquery/plugin/Plugin.java @@ -18,6 +18,7 @@ public abstract class Plugin { @NonNull protected final String name; @NonNull protected final String version; @Setter protected Logger logger; + @Setter protected String jsonSchema; protected ClientMeta client; public void init(String spec, NewClientOptions options) throws Exception { diff --git a/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java b/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java index f75019f..e1e4d66 100644 --- a/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java +++ b/lib/src/test/java/io/cloudquery/internal/servers/plugin/v3/PluginServerTest.java @@ -1,5 +1,6 @@ package io.cloudquery.internal.servers.plugin.v3; +import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.verify; @@ -9,6 +10,7 @@ import io.cloudquery.messages.WriteInsert; import io.cloudquery.messages.WriteMigrateTable; import io.cloudquery.plugin.Plugin; +import io.cloudquery.plugin.v3.GetSpecSchema; import io.cloudquery.plugin.v3.PluginGrpc; import io.cloudquery.plugin.v3.PluginGrpc.PluginStub; import io.cloudquery.plugin.v3.Write; @@ -25,12 +27,14 @@ import java.io.IOException; import java.util.List; import java.util.concurrent.CountDownLatch; +import lombok.Getter; import org.apache.arrow.vector.types.pojo.ArrowType; import org.junit.Rule; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) @@ -91,6 +95,31 @@ public void shouldSendWriteDeleteStaleMessage() throws Exception { verify(plugin).write(any(WriteDeleteStale.class)); } + @Test + public void shouldSendNullJSONSchema() throws Exception { + NullResponseStream responseObserver = new NullResponseStream<>(); + + pluginStub.getSpecSchema(GetSpecSchema.Request.getDefaultInstance(), responseObserver); + responseObserver.await(); + + verify(plugin).getJsonSchema(); + assertFalse(responseObserver.getValue().hasJsonSchema()); + } + + @Test + public void shouldSendNonNullJSONSchema() throws Exception { + Mockito.doReturn("{}").when(plugin).getJsonSchema(); + + NullResponseStream responseObserver = new NullResponseStream<>(); + + pluginStub.getSpecSchema(GetSpecSchema.Request.getDefaultInstance(), responseObserver); + responseObserver.await(); + + verify(plugin).getJsonSchema(); + assertTrue(responseObserver.getValue().hasJsonSchema()); + assertEquals("{}", responseObserver.getValue().getJsonSchema()); + } + private static Write.Request generateMigrateTableMessage() throws IOException { Table table = Table.builder().name("test").build(); return Write.Request.newBuilder() @@ -121,12 +150,18 @@ private Write.Request generateDeleteStaleMessage() { private static class NullResponseStream implements StreamObserver { private final CountDownLatch countDownLatch = new CountDownLatch(1); + @Getter private T value; + @Getter private Throwable error; @Override - public void onNext(T value) {} + public void onNext(T value) { + this.value = value; + } @Override - public void onError(Throwable t) {} + public void onError(Throwable t) { + this.error = t; + } @Override public void onCompleted() { From bc766eac0df07a9860b70ee8ec374ebe68565e72 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 9 Feb 2024 13:51:33 +0200 Subject: [PATCH 105/376] chore(main): Release v0.0.21 (#179) :robot: I have created a release *beep* *boop* --- ## [0.0.21](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.20...v0.0.21) (2024-02-09) ### Features * Implement `GetSpecSchema` ([#180](https://github.com/cloudquery/plugin-sdk-java/issues/180)) ([9eeb976](https://github.com/cloudquery/plugin-sdk-java/commit/9eeb976c868b1a206230b6285d666671a18682a7)) ### Bug Fixes * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.14 ([#178](https://github.com/cloudquery/plugin-sdk-java/issues/178)) ([6871551](https://github.com/cloudquery/plugin-sdk-java/commit/6871551de650ee36464699ec6cbb0f124676f282)) * **deps:** Update grpc-java monorepo to v1.61.1 ([#172](https://github.com/cloudquery/plugin-sdk-java/issues/172)) ([4ada7bc](https://github.com/cloudquery/plugin-sdk-java/commit/4ada7bcade9cf94043a9ba99c86c2fef43c3a645)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 13 +++++++++++++ lib/build.gradle | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae44d39..a3ec5a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.0.21](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.20...v0.0.21) (2024-02-09) + + +### Features + +* Implement `GetSpecSchema` ([#180](https://github.com/cloudquery/plugin-sdk-java/issues/180)) ([9eeb976](https://github.com/cloudquery/plugin-sdk-java/commit/9eeb976c868b1a206230b6285d666671a18682a7)) + + +### Bug Fixes + +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.14 ([#178](https://github.com/cloudquery/plugin-sdk-java/issues/178)) ([6871551](https://github.com/cloudquery/plugin-sdk-java/commit/6871551de650ee36464699ec6cbb0f124676f282)) +* **deps:** Update grpc-java monorepo to v1.61.1 ([#172](https://github.com/cloudquery/plugin-sdk-java/issues/172)) ([4ada7bc](https://github.com/cloudquery/plugin-sdk-java/commit/4ada7bcade9cf94043a9ba99c86c2fef43c3a645)) + ## [0.0.20](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.19...v0.0.20) (2024-02-06) diff --git a/lib/build.gradle b/lib/build.gradle index 4dd30b6..5fe9962 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.20' +version = '0.0.21' // x-release-please-end repositories { From c21645b39df531dc21da23deab38092d84e77d4e Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Mar 2024 02:35:17 +0200 Subject: [PATCH 106/376] chore(deps): Update github-actions (#181) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/gradle-build-action | action | digest | `0706ab3` -> `585b565` | | gradle/wrapper-validation-action | action | digest | `2572bdd` -> `63d15e7` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4802804..dac938b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: java-version: "18" cache: "gradle" - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@2572bdd97b8338128030a2a631bfa0ceaac6b6e5 + uses: gradle/wrapper-validation-action@63d15e7a1e697b1de6f3ba0507106f89100c8518 - name: Build package run: ./gradlew build env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index eb3d160..d373ba2 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,9 +16,9 @@ jobs: java-version: '18' cache: 'gradle' - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@2572bdd97b8338128030a2a631bfa0ceaac6b6e5 + uses: gradle/wrapper-validation-action@63d15e7a1e697b1de6f3ba0507106f89100c8518 - name: Publish package - uses: gradle/gradle-build-action@0706ab3a3c20483a3f37c3d9de1b0d95297e3743 + uses: gradle/gradle-build-action@585b565652cefbba63202a7f927df0ff99f34001 with: arguments: publish env: From 611c8a7dff6e279bde190ba3227652e25d8e934e Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Mar 2024 02:40:11 +0200 Subject: [PATCH 107/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.7 (#182) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://togithub.com/jqno/equalsverifier)) | dependencies | patch | `3.15.6` -> `3.15.7` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.15.7`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3157---2024-02-23) ##### Fixed - StackOverflowError when a class has a field of a sealed type whose only permitted subtype has a reference to the original class. ([Issue 920](https://togithub.com/jqno/equalsverifier/issues/920))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 5fe9962..b2b2ce9 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -54,7 +54,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.1' testImplementation 'org.mockito:mockito-core:5.10.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.10.0' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.15.6' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.15.7' testImplementation 'org.assertj:assertj-core:3.25.2' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.1' From c1ab19c1b45174561e90ba79609c205375333c44 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Mar 2024 03:59:28 +0200 Subject: [PATCH 108/376] fix(deps): Update dependency org.assertj:assertj-core to v3.25.3 (#184) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.assertj:assertj-core](https://assertj.github.io/doc/#assertj-core) ([source](https://togithub.com/assertj/assertj)) | dependencies | patch | `3.25.2` -> `3.25.3` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index b2b2ce9..afab4b6 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.mockito:mockito-core:5.10.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.10.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.15.7' - testImplementation 'org.assertj:assertj-core:3.25.2' + testImplementation 'org.assertj:assertj-core:3.25.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.1' runtimeOnly "org.apache.arrow:arrow-memory-netty:12.0.1" From 144b6879c1d4f2b11d31aca19646e8bd6b1313a1 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Mar 2024 04:32:42 +0200 Subject: [PATCH 109/376] fix(deps): Update junit5 monorepo to v5.10.2 (#185) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.junit.jupiter:junit-jupiter-engine](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.10.1` -> `5.10.2` | | [org.junit.jupiter:junit-jupiter-api](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.10.1` -> `5.10.2` | | [org.junit.jupiter:junit-jupiter](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.10.1` -> `5.10.2` | | [org.junit:junit-bom](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.10.1` -> `5.10.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index afab4b6..67d22f9 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -49,14 +49,14 @@ dependencies { testImplementation 'io.grpc:grpc-testing:1.61.1' testImplementation 'io.grpc:grpc-inprocess:1.61.1' - testImplementation platform('org.junit:junit-bom:5.10.1') - testImplementation 'org.junit.jupiter:junit-jupiter:5.10.1' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.1' + testImplementation platform('org.junit:junit-bom:5.10.2') + testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2' testImplementation 'org.mockito:mockito-core:5.10.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.10.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.15.7' testImplementation 'org.assertj:assertj-core:3.25.3' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.1' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.2' runtimeOnly "org.apache.arrow:arrow-memory-netty:12.0.1" } From 032577937cafd9980853d7fed3ef125c37ea807e Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Mar 2024 04:39:30 +0200 Subject: [PATCH 110/376] fix(deps): Update dependency gradle to v8.6 (#186) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://togithub.com/gradle/gradle)) | minor | `8.5` -> `8.6` | --- ### Release Notes
gradle/gradle (gradle) ### [`v8.6`](https://togithub.com/gradle/gradle/releases/tag/v8.6.0): 8.6 [Compare Source](https://togithub.com/gradle/gradle/compare/v8.5.0...v8.6.0) The Gradle team is excited to announce Gradle 8.6. [Read the Release Notes](https://docs.gradle.org/8.6/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Baptiste Decroix](https://togithub.com/bdecroix-spiria), [BjΓΆrn Kautler](https://togithub.com/Vampire), [Daniel Lacasse](https://togithub.com/lacasseio), [Danny Thomas](https://togithub.com/DanielThomas), [Hyeonmin Park](https://togithub.com/KENNYSOFT), [jeffalder](https://togithub.com/jeffalder), [Jendrik Johannes](https://togithub.com/jjohannes), [John Jiang](https://togithub.com/johnshajiang), [Kaiyao Ke](https://togithub.com/kaiyaok2), [Kevin Mark](https://togithub.com/kmark), [king-tyler](https://togithub.com/king-tyler), [Marcin DΔ…browski](https://togithub.com/marcindabrowski), [Marcin Laskowski](https://togithub.com/ILikeYourHat), [Markus Gaisbauer](https://togithub.com/quijote), [Mel Arthurs](https://togithub.com/arthursmel), [Ryan Schmitt](https://togithub.com/rschmitt), [Surya K N](https://togithub.com/Surya-KN), [Vladislav Golubtsov](https://togithub.com/Shmuser), [Yanshun Li](https://togithub.com/Chaoba), [Andrzej Ressel](https://togithub.com/andrzejressel) #### Upgrade instructions Switch your build to use Gradle 8.6 by updating your wrapper: ./gradlew wrapper --gradle-version=8.6 See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.6/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.6/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://togithub.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew.bat | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1af9e09..a80b22c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew.bat b/gradlew.bat index 93e3f59..25da30d 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail From ec009d7721940b9cb5481c8b81b2287cb4defe80 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Mar 2024 05:29:49 +0200 Subject: [PATCH 111/376] fix(deps): Update grpc-java monorepo to v1.62.2 (#187) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-inprocess](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.61.1` -> `1.62.2` | | [io.grpc:grpc-testing](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.61.1` -> `1.62.2` | | [io.grpc:grpc-services](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.61.1` -> `1.62.2` | | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.61.1` -> `1.62.2` | | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.61.1` -> `1.62.2` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.62.2`](https://togithub.com/grpc/grpc-java/releases/tag/v1.62.2) ##### gRPC Java 1.62.2 Release Notes Note that this is the initial 1.62.x release ##### API Changes - services: Remove `io.grpc.services.BinaryLogs`, which was deprecated since 2021. `io.grpc.protobuf.services.BinaryLogs` should be used instead ([#​10832](https://togithub.com/grpc/grpc-java/issues/10832)). - Allow users outside of io.grpc.xds package to create custom xDS resources ([#​10834](https://togithub.com/grpc/grpc-java/issues/10834)) ([`6d96e65`](https://togithub.com/grpc/grpc-java/commit/6d96e6588)) ##### New Features - api:Add ClientTransportFilter. Similarly to ServerTransportFilter, this will provide an observability hook and it allows direct modification of the transport's attributes. ([#​10646](https://togithub.com/grpc/grpc-java/issues/10646)) ##### Improvements - java_grpc_library.bzl: Add support for Auto Exec Groups ([`cb03bd2`](https://togithub.com/grpc/grpc-java/commit/cb03bd234)). This is mostly a behind-the-scenes change to adjust to the newer way Bazel operates - java_grpc_library.bzl: Support runfiles for protoc and the plugin ([`65a6b3b`](https://togithub.com/grpc/grpc-java/commit/65a6b3bc2)). Neither binary uses runfiles, but the task will be ready if they need to in the future - xds: Add EC key support for XdsChannelCredentials/XdsServerCredentials ([`100d5a5`](https://togithub.com/grpc/grpc-java/commit/100d5a55f)) - binder:Change log level from WARNING to FINER for expected exception during close with error, to reduce log spamming ([#​10899](https://togithub.com/grpc/grpc-java/issues/10899)) ([`7ba0718`](https://togithub.com/grpc/grpc-java/commit/7ba0718bb)) ##### Bug Fixes - xds: Fix a bug in WeightedRoundRobinLoadBalancer policy that could raise NullPointerException and further cause channel panic when picking a subchannel. This bug can only be triggered when connection can not be established and the channel reports TRANSIENT_FAILURE state. ([#​10868](https://togithub.com/grpc/grpc-java/issues/10868)) ##### Dependencies - The protoc plugin no longer supports macOS Big Sur (macOS 11). Binaries are now built using Monterey (macOS 12) ##### Acknowledgements - [@​joybestourous](https://togithub.com/joybestourous)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 67d22f9..196b5be 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,9 +34,9 @@ dependencies { implementation 'com.google.guava:guava:32.1.3-jre' implementation 'info.picocli:picocli:4.7.5' implementation 'com.google.guava:guava:32.1.3-jre' - implementation 'io.grpc:grpc-protobuf:1.61.1' - implementation 'io.grpc:grpc-stub:1.61.1' - implementation 'io.grpc:grpc-services:1.61.1' + implementation 'io.grpc:grpc-protobuf:1.62.2' + implementation 'io.grpc:grpc-stub:1.62.2' + implementation 'io.grpc:grpc-services:1.62.2' implementation 'io.cloudquery:plugin-pb-java:0.0.14' implementation 'org.apache.arrow:arrow-memory-core:12.0.1' implementation 'org.apache.arrow:arrow-vector:12.0.1' @@ -47,8 +47,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.22.1' implementation 'org.apache.logging.log4j:log4j-core:2.22.1' - testImplementation 'io.grpc:grpc-testing:1.61.1' - testImplementation 'io.grpc:grpc-inprocess:1.61.1' + testImplementation 'io.grpc:grpc-testing:1.62.2' + testImplementation 'io.grpc:grpc-inprocess:1.62.2' testImplementation platform('org.junit:junit-bom:5.10.2') testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2' From 04c740c39ea3a4ef3fe40b28d1b4e8d0841e098d Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Mar 2024 05:38:31 +0200 Subject: [PATCH 112/376] fix(deps): Update log4j2 monorepo to v2.23.0 (#188) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.logging.log4j:log4j-core](https://logging.apache.org/log4j/2.x/) ([source](https://togithub.com/apache/logging-log4j2)) | dependencies | minor | `2.22.1` -> `2.23.0` | | [org.apache.logging.log4j:log4j-api](https://logging.apache.org/log4j/2.x/) ([source](https://togithub.com/apache/logging-log4j2)) | dependencies | minor | `2.22.1` -> `2.23.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 196b5be..a5044b6 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -44,8 +44,8 @@ dependencies { implementation "com.fasterxml.jackson.core:jackson-core:2.16.1" implementation "com.fasterxml.jackson.core:jackson-annotations:2.16.1" - implementation 'org.apache.logging.log4j:log4j-api:2.22.1' - implementation 'org.apache.logging.log4j:log4j-core:2.22.1' + implementation 'org.apache.logging.log4j:log4j-api:2.23.0' + implementation 'org.apache.logging.log4j:log4j-core:2.23.0' testImplementation 'io.grpc:grpc-testing:1.62.2' testImplementation 'io.grpc:grpc-inprocess:1.62.2' From 0f5568f8bdecb251bf13303d2faf368cdeba0da9 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Mar 2024 05:45:16 +0200 Subject: [PATCH 113/376] fix(deps): Update plugin io.freefair.lombok to v8.6 (#189) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.freefair.lombok | plugin | minor | `8.2.2` -> `8.6` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index a5044b6..01d863d 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java-library' - id "io.freefair.lombok" version "8.2.2" + id "io.freefair.lombok" version "8.6" id "maven-publish" id "com.diffplug.spotless" version "6.25.0" } From a35a6e64787b00488874f29c7a9a3a32407f9dbe Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 5 Mar 2024 15:57:23 +0200 Subject: [PATCH 114/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.15 (#190) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.14` -> `0.0.15` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 01d863d..54f6119 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.62.2' implementation 'io.grpc:grpc-stub:1.62.2' implementation 'io.grpc:grpc-services:1.62.2' - implementation 'io.cloudquery:plugin-pb-java:0.0.14' + implementation 'io.cloudquery:plugin-pb-java:0.0.15' implementation 'org.apache.arrow:arrow-memory-core:12.0.1' implementation 'org.apache.arrow:arrow-vector:12.0.1' From 4abb34dad5c3bf8282a5cddec93446d6e046e8e1 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 5 Mar 2024 15:59:29 +0200 Subject: [PATCH 115/376] chore(deps): Update actions/checkout action to v4 (#191) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://togithub.com/actions/checkout) | action | major | `v3` -> `v4` | --- ### Release Notes
actions/checkout (actions/checkout) ### [`v4`](https://togithub.com/actions/checkout/blob/HEAD/CHANGELOG.md#v410) [Compare Source](https://togithub.com/actions/checkout/compare/v3...v4) - [Add support for partial checkout filters](https://togithub.com/actions/checkout/pull/1396)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dac938b..7172c4f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: distribution: "temurin" diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d373ba2..f89dbc0 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: distribution: 'temurin' From c3e98715ea97d00cb7e50320d61ab1dc25e3a987 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 5 Mar 2024 16:00:56 +0200 Subject: [PATCH 116/376] chore(deps): Update mikepenz/action-junit-report action to v4 (#193) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [mikepenz/action-junit-report](https://togithub.com/mikepenz/action-junit-report) | action | major | `v3` -> `v4` | --- ### Release Notes
mikepenz/action-junit-report (mikepenz/action-junit-report) ### [`v4`](https://togithub.com/mikepenz/action-junit-report/releases/tag/v4) [Compare Source](https://togithub.com/mikepenz/action-junit-report/compare/v3...v4) #### πŸš€ Features - Introduce setting to disable annotations for checks - PR: [#​1024](https://togithub.com/mikepenz/action-junit-report/issues/1024) #### πŸ“¦ Dependencies - Upgrade dev dependencies - PR: [#​1027](https://togithub.com/mikepenz/action-junit-report/issues/1027)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7172c4f..582882b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 + uses: mikepenz/action-junit-report@v4 if: success() || failure() # always run even if the previous step fails with: report_paths: "**/build/test-results/test/TEST-*.xml" From d919222afa1908a4c74f337ac15528a15faa0fa4 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 5 Mar 2024 16:15:39 +0200 Subject: [PATCH 117/376] fix(deps): Update actions/setup-java action to v4 (#192) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/setup-java](https://togithub.com/actions/setup-java) | action | major | `v3` -> `v4` | --- ### Release Notes
actions/setup-java (actions/setup-java) ### [`v4`](https://togithub.com/actions/setup-java/compare/v3...v4) [Compare Source](https://togithub.com/actions/setup-java/compare/v3...v4)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 582882b..b860a4c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: distribution: "temurin" java-version: "18" diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f89dbc0..8007d77 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -10,7 +10,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '18' From 5f420364c1d26f4d637aa083b3b87097e0dd4943 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 5 Mar 2024 16:19:32 +0200 Subject: [PATCH 118/376] chore(main): Release v0.0.22 (#183) :robot: I have created a release *beep* *boop* --- ## [0.0.22](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.21...v0.0.22) (2024-03-05) ### Bug Fixes * **deps:** Update actions/setup-java action to v4 ([#192](https://github.com/cloudquery/plugin-sdk-java/issues/192)) ([d919222](https://github.com/cloudquery/plugin-sdk-java/commit/d919222afa1908a4c74f337ac15528a15faa0fa4)) * **deps:** Update dependency gradle to v8.6 ([#186](https://github.com/cloudquery/plugin-sdk-java/issues/186)) ([0325779](https://github.com/cloudquery/plugin-sdk-java/commit/032577937cafd9980853d7fed3ef125c37ea807e)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.15 ([#190](https://github.com/cloudquery/plugin-sdk-java/issues/190)) ([a35a6e6](https://github.com/cloudquery/plugin-sdk-java/commit/a35a6e64787b00488874f29c7a9a3a32407f9dbe)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.7 ([#182](https://github.com/cloudquery/plugin-sdk-java/issues/182)) ([611c8a7](https://github.com/cloudquery/plugin-sdk-java/commit/611c8a7dff6e279bde190ba3227652e25d8e934e)) * **deps:** Update dependency org.assertj:assertj-core to v3.25.3 ([#184](https://github.com/cloudquery/plugin-sdk-java/issues/184)) ([c1ab19c](https://github.com/cloudquery/plugin-sdk-java/commit/c1ab19c1b45174561e90ba79609c205375333c44)) * **deps:** Update grpc-java monorepo to v1.62.2 ([#187](https://github.com/cloudquery/plugin-sdk-java/issues/187)) ([ec009d7](https://github.com/cloudquery/plugin-sdk-java/commit/ec009d7721940b9cb5481c8b81b2287cb4defe80)) * **deps:** Update junit5 monorepo to v5.10.2 ([#185](https://github.com/cloudquery/plugin-sdk-java/issues/185)) ([144b687](https://github.com/cloudquery/plugin-sdk-java/commit/144b6879c1d4f2b11d31aca19646e8bd6b1313a1)) * **deps:** Update log4j2 monorepo to v2.23.0 ([#188](https://github.com/cloudquery/plugin-sdk-java/issues/188)) ([04c740c](https://github.com/cloudquery/plugin-sdk-java/commit/04c740c39ea3a4ef3fe40b28d1b4e8d0841e098d)) * **deps:** Update plugin io.freefair.lombok to v8.6 ([#189](https://github.com/cloudquery/plugin-sdk-java/issues/189)) ([0f5568f](https://github.com/cloudquery/plugin-sdk-java/commit/0f5568f8bdecb251bf13303d2faf368cdeba0da9)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 15 +++++++++++++++ lib/build.gradle | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3ec5a4..17515b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [0.0.22](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.21...v0.0.22) (2024-03-05) + + +### Bug Fixes + +* **deps:** Update actions/setup-java action to v4 ([#192](https://github.com/cloudquery/plugin-sdk-java/issues/192)) ([d919222](https://github.com/cloudquery/plugin-sdk-java/commit/d919222afa1908a4c74f337ac15528a15faa0fa4)) +* **deps:** Update dependency gradle to v8.6 ([#186](https://github.com/cloudquery/plugin-sdk-java/issues/186)) ([0325779](https://github.com/cloudquery/plugin-sdk-java/commit/032577937cafd9980853d7fed3ef125c37ea807e)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.15 ([#190](https://github.com/cloudquery/plugin-sdk-java/issues/190)) ([a35a6e6](https://github.com/cloudquery/plugin-sdk-java/commit/a35a6e64787b00488874f29c7a9a3a32407f9dbe)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.15.7 ([#182](https://github.com/cloudquery/plugin-sdk-java/issues/182)) ([611c8a7](https://github.com/cloudquery/plugin-sdk-java/commit/611c8a7dff6e279bde190ba3227652e25d8e934e)) +* **deps:** Update dependency org.assertj:assertj-core to v3.25.3 ([#184](https://github.com/cloudquery/plugin-sdk-java/issues/184)) ([c1ab19c](https://github.com/cloudquery/plugin-sdk-java/commit/c1ab19c1b45174561e90ba79609c205375333c44)) +* **deps:** Update grpc-java monorepo to v1.62.2 ([#187](https://github.com/cloudquery/plugin-sdk-java/issues/187)) ([ec009d7](https://github.com/cloudquery/plugin-sdk-java/commit/ec009d7721940b9cb5481c8b81b2287cb4defe80)) +* **deps:** Update junit5 monorepo to v5.10.2 ([#185](https://github.com/cloudquery/plugin-sdk-java/issues/185)) ([144b687](https://github.com/cloudquery/plugin-sdk-java/commit/144b6879c1d4f2b11d31aca19646e8bd6b1313a1)) +* **deps:** Update log4j2 monorepo to v2.23.0 ([#188](https://github.com/cloudquery/plugin-sdk-java/issues/188)) ([04c740c](https://github.com/cloudquery/plugin-sdk-java/commit/04c740c39ea3a4ef3fe40b28d1b4e8d0841e098d)) +* **deps:** Update plugin io.freefair.lombok to v8.6 ([#189](https://github.com/cloudquery/plugin-sdk-java/issues/189)) ([0f5568f](https://github.com/cloudquery/plugin-sdk-java/commit/0f5568f8bdecb251bf13303d2faf368cdeba0da9)) + ## [0.0.21](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.20...v0.0.21) (2024-02-09) diff --git a/lib/build.gradle b/lib/build.gradle index 54f6119..4916e1a 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.21' +version = '0.0.22' // x-release-please-end repositories { From 05407bbec19f2e782aafc21ec6f7511840cccc2d Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Tue, 26 Mar 2024 14:26:19 +0100 Subject: [PATCH 119/376] feat: Add package command (#194) Fixes https://github.com/cloudquery/cloudquery-issues/issues/790 --- .github/workflows/ci.yml | 4 + .gitignore | 2 + Dockerfile | 21 ++ docs/overview.md | 3 + lib/build.gradle | 12 + .../main/java/io/cloudquery/memdb/MemDB.java | 7 +- .../java/io/cloudquery/plugin/BuildArch.java | 16 + .../java/io/cloudquery/plugin/BuildOS.java | 17 + .../io/cloudquery/plugin/BuildTarget.java | 12 + .../java/io/cloudquery/plugin/Plugin.java | 13 + .../java/io/cloudquery/plugin/PluginKind.java | 16 + .../main/java/io/cloudquery/schema/Table.java | 3 +- .../io/cloudquery/server/PackageCommand.java | 299 ++++++++++++++++++ .../io/cloudquery/server/PackageJson.java | 30 ++ .../io/cloudquery/server/PluginServe.java | 5 +- .../server/SupportedTargetJson.java | 14 + .../java/io/cloudquery/server/TablesJson.java | 68 ++++ .../cloudquery/server/PluginPackageTest.java | 26 ++ 18 files changed, 564 insertions(+), 4 deletions(-) create mode 100644 Dockerfile create mode 100644 docs/overview.md create mode 100644 lib/src/main/java/io/cloudquery/plugin/BuildArch.java create mode 100644 lib/src/main/java/io/cloudquery/plugin/BuildOS.java create mode 100644 lib/src/main/java/io/cloudquery/plugin/BuildTarget.java create mode 100644 lib/src/main/java/io/cloudquery/plugin/PluginKind.java create mode 100644 lib/src/main/java/io/cloudquery/server/PackageCommand.java create mode 100644 lib/src/main/java/io/cloudquery/server/PackageJson.java create mode 100644 lib/src/main/java/io/cloudquery/server/SupportedTargetJson.java create mode 100644 lib/src/main/java/io/cloudquery/server/TablesJson.java create mode 100644 lib/src/test/java/io/cloudquery/server/PluginPackageTest.java diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b860a4c..b222508 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,12 +19,16 @@ jobs: distribution: "temurin" java-version: "18" cache: "gradle" + - # Required for the package command tests to work + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@63d15e7a1e697b1de6f3ba0507106f89100c8518 - name: Build package run: ./gradlew build env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_ACTOR: ${{ github.actor }} - name: Publish Test Report uses: mikepenz/action-junit-report@v4 if: success() || failure() # always run even if the previous step fails diff --git a/.gitignore b/.gitignore index 449ced5..1f85c67 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,5 @@ build # Intellij .idea .cq + +dist \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c5cfc2d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +FROM --platform=$BUILDPLATFORM gradle:8.3-jdk20 as build +ARG GITHUB_ACTOR +ARG GITHUB_TOKEN + +WORKDIR /code + +COPY . . + +RUN gradle jar --no-daemon + +FROM eclipse-temurin:20-jre + +COPY --from=build /code/lib/build/libs/*.jar /app/app.jar + +EXPOSE 7777 + +ENV _JAVA_OPTIONS="--add-opens=java.base/java.nio=ALL-UNNAMED" + +ENTRYPOINT ["java", "-jar", "/app/app.jar"] + +CMD [ "serve", "--address", "localhost:7777", "--log-format", "json", "--log-level", "info" ] diff --git a/docs/overview.md b/docs/overview.md new file mode 100644 index 0000000..027ec10 --- /dev/null +++ b/docs/overview.md @@ -0,0 +1,3 @@ +# MemDB Plugin + +Test docs for the MemDB plugin. diff --git a/lib/build.gradle b/lib/build.gradle index 4916e1a..7287c96 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -40,6 +40,7 @@ dependencies { implementation 'io.cloudquery:plugin-pb-java:0.0.15' implementation 'org.apache.arrow:arrow-memory-core:12.0.1' implementation 'org.apache.arrow:arrow-vector:12.0.1' + implementation 'commons-io:commons-io:2.15.1' implementation "com.fasterxml.jackson.core:jackson-core:2.16.1" implementation "com.fasterxml.jackson.core:jackson-annotations:2.16.1" @@ -77,6 +78,17 @@ java { } } +jar { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + manifest { + attributes "Main-Class": "io.cloudquery.MainClass" + } + + from { + configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } + } +} + publishing { repositories { maven { diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDB.java b/lib/src/main/java/io/cloudquery/memdb/MemDB.java index 07f50e4..7bd87df 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDB.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDB.java @@ -5,6 +5,7 @@ import io.cloudquery.plugin.ClientNotInitializedException; import io.cloudquery.plugin.NewClientOptions; import io.cloudquery.plugin.Plugin; +import io.cloudquery.plugin.PluginKind; import io.cloudquery.plugin.TableOutputStream; import io.cloudquery.scheduler.Scheduler; import io.cloudquery.schema.ClientMeta; @@ -88,6 +89,8 @@ public void resolve( public MemDB() { super("memdb", "0.0.1"); + setTeam("cloudquery"); + setKind(PluginKind.Source); } @Override @@ -144,12 +147,14 @@ public void close() { @Override public ClientMeta newClient(String spec, NewClientOptions options) throws Exception { - this.spec = Spec.fromJSON(spec); this.allTables = getTables(); Tables.transformTables(this.allTables); for (Table table : this.allTables) { table.addCQIDs(); } + if (!options.isNoConnection()) { + this.spec = Spec.fromJSON(spec); + } return new MemDBClient(); } } diff --git a/lib/src/main/java/io/cloudquery/plugin/BuildArch.java b/lib/src/main/java/io/cloudquery/plugin/BuildArch.java new file mode 100644 index 0000000..ee4a350 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/plugin/BuildArch.java @@ -0,0 +1,16 @@ +package io.cloudquery.plugin; + +public enum BuildArch { + AMD64("amd64"), + ARM64("arm64"); + + public final String arch; + + private BuildArch(String arch) { + this.arch = arch; + } + + public String toString() { + return this.arch; + } +} diff --git a/lib/src/main/java/io/cloudquery/plugin/BuildOS.java b/lib/src/main/java/io/cloudquery/plugin/BuildOS.java new file mode 100644 index 0000000..41b05e0 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/plugin/BuildOS.java @@ -0,0 +1,17 @@ +package io.cloudquery.plugin; + +public enum BuildOS { + Windows("windows"), + Linux("linux"), + Darwin("darwin"); + + public final String os; + + private BuildOS(String os) { + this.os = os; + } + + public String toString() { + return this.os; + } +} diff --git a/lib/src/main/java/io/cloudquery/plugin/BuildTarget.java b/lib/src/main/java/io/cloudquery/plugin/BuildTarget.java new file mode 100644 index 0000000..f9780a1 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/plugin/BuildTarget.java @@ -0,0 +1,12 @@ +package io.cloudquery.plugin; + +import lombok.Getter; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +@Getter +public class BuildTarget { + @NonNull protected final BuildOS os; + @NonNull protected final BuildArch arch; +} diff --git a/lib/src/main/java/io/cloudquery/plugin/Plugin.java b/lib/src/main/java/io/cloudquery/plugin/Plugin.java index bb46a0b..9f2ef6f 100644 --- a/lib/src/main/java/io/cloudquery/plugin/Plugin.java +++ b/lib/src/main/java/io/cloudquery/plugin/Plugin.java @@ -17,8 +17,21 @@ public abstract class Plugin { @NonNull protected final String name; @NonNull protected final String version; + @Setter protected Logger logger; @Setter protected String jsonSchema; + + @Setter protected String team; + @Setter protected PluginKind kind; + @Setter protected String dockerfile = "Dockerfile"; + + @Setter + protected BuildTarget[] buildTargets = + new BuildTarget[] { + new BuildTarget(BuildOS.Linux, BuildArch.ARM64), + new BuildTarget(BuildOS.Linux, BuildArch.AMD64), + }; + protected ClientMeta client; public void init(String spec, NewClientOptions options) throws Exception { diff --git a/lib/src/main/java/io/cloudquery/plugin/PluginKind.java b/lib/src/main/java/io/cloudquery/plugin/PluginKind.java new file mode 100644 index 0000000..e4e9433 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/plugin/PluginKind.java @@ -0,0 +1,16 @@ +package io.cloudquery.plugin; + +public enum PluginKind { + Source("source"), + Destination("destination"); + + public final String kind; + + private PluginKind(String kind) { + this.kind = kind; + } + + public String toString() { + return this.kind; + } +} diff --git a/lib/src/main/java/io/cloudquery/schema/Table.java b/lib/src/main/java/io/cloudquery/schema/Table.java index 7ee9185..858b16d 100644 --- a/lib/src/main/java/io/cloudquery/schema/Table.java +++ b/lib/src/main/java/io/cloudquery/schema/Table.java @@ -9,7 +9,6 @@ import io.cloudquery.schema.Column.ColumnBuilder; import io.cloudquery.transformers.TransformerException; import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -32,7 +31,7 @@ public interface Transform { public static List
flattenTables(List
tables) { Map flattenMap = new LinkedHashMap<>(); for (Table table : tables) { - Table newTable = table.toBuilder().relations(Collections.emptyList()).build(); + Table newTable = table.toBuilder().build(); flattenMap.put(newTable.name, newTable); for (Table child : flattenTables(table.getRelations())) { flattenMap.put(child.name, child); diff --git a/lib/src/main/java/io/cloudquery/server/PackageCommand.java b/lib/src/main/java/io/cloudquery/server/PackageCommand.java new file mode 100644 index 0000000..289072f --- /dev/null +++ b/lib/src/main/java/io/cloudquery/server/PackageCommand.java @@ -0,0 +1,299 @@ +package io.cloudquery.server; + +import com.google.common.base.Strings; +import io.cloudquery.plugin.BuildTarget; +import io.cloudquery.plugin.NewClientOptions; +import io.cloudquery.plugin.Plugin; +import io.cloudquery.plugin.PluginKind; +import io.cloudquery.schema.Table; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.Callable; +import lombok.ToString; +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.io.FileUtils; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.appender.ConsoleAppender; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.ConfigurationFactory; +import org.apache.logging.log4j.core.config.LoggerConfig; +import org.apache.logging.log4j.core.layout.JsonLayout; +import org.apache.logging.log4j.core.layout.PatternLayout; +import picocli.CommandLine.Command; +import picocli.CommandLine.Option; +import picocli.CommandLine.Parameters; + +@Command(name = "package", description = "package the plugin as a Docker image") +@ToString +public class PackageCommand implements Callable { + private static Logger logger; + + @Parameters(index = "0", description = "plugin version to package") + private String pluginVersion; + + @Parameters(index = "1", description = "plugin directory to package") + private String pluginDirectory; + + @Option( + required = true, + names = {"-m", "--message"}, + description = + "message that summarizes what is new or changed in this version. Supports markdown.") + private String message = ""; + + @Option( + names = "--log-format", + description = "log format. one of: text,json (default \"${DEFAULT-VALUE}\")") + private String logFormat = "text"; + + @Option( + names = "--log-level", + description = "log level. one of: trace,debug,info,warn,error (default \"${DEFAULT-VALUE}\")") + private String logLevel = "info"; + + @Option(names = "--no-sentry", description = "disable sentry") + private Boolean disableSentry = false; + + @Option(names = "--otel-endpoint", description = "Open Telemetry HTTP collector endpoint") + private String otelEndpoint = ""; + + @Option( + names = "--otel-endpoint-insecure", + description = "use Open Telemetry HTTP endpoint (for development only)") + private Boolean otelEndpointInsecure = false; + + @Option( + names = "--dist-dir", + description = "dist directory to output the built plugin. (default: /dist)") + private String distDir = ""; + + @Option( + names = "--docs-dir", + description = + "docs directory containing markdown files to copy to the dist directory. (default: /docs)") + private String docsDir = ""; + + private final Plugin plugin; + + public PackageCommand(Plugin plugin) { + this.plugin = plugin; + } + + private LoggerContext initLogger() { + ConsoleAppender appender = + ConsoleAppender.createDefaultAppenderForLayout( + this.logFormat == "text" + ? PatternLayout.createDefaultLayout() + : JsonLayout.createDefaultLayout()); + + Configuration configuration = ConfigurationFactory.newConfigurationBuilder().build(); + configuration.addAppender(appender); + LoggerConfig loggerConfig = new LoggerConfig("io.cloudquery", Level.getLevel(logLevel), false); + loggerConfig.addAppender(appender, null, null); + configuration.addLogger("io.cloudquery", loggerConfig); + LoggerContext context = new LoggerContext(ServeCommand.class.getName() + "Context"); + context.start(configuration); + + logger = context.getLogger(ServeCommand.class.getName()); + this.plugin.setLogger(logger); + return context; + } + + @SuppressWarnings("null") + @Override + public Integer call() { + try (LoggerContext context = this.initLogger()) { + if (Strings.isNullOrEmpty(plugin.getName())) { + logger.error("name is required"); + return 1; + } + if (Strings.isNullOrEmpty(plugin.getVersion())) { + logger.error("version is required"); + return 1; + } + if (Strings.isNullOrEmpty(plugin.getTeam())) { + logger.error("team is required"); + return 1; + } + if (Strings.isNullOrEmpty(plugin.getDockerfile())) { + logger.error("Dockerfile is required"); + return 1; + } + if (plugin.getBuildTargets() == null || plugin.getBuildTargets().length == 0) { + logger.error("At least one build target is required"); + return 1; + } + if (Strings.isNullOrEmpty(distDir)) { + distDir = Paths.get(pluginDirectory, "dist").toString(); + } + if (Strings.isNullOrEmpty(docsDir)) { + docsDir = Paths.get(pluginDirectory, "docs").toString(); + } + + initDist(); + copyDocs(); + writeTablesJson(); + List supportedTargets = buildDocker(); + writePackageJson(supportedTargets); + + return 0; + } catch (Exception e) { + logger.error("Failed to package plugin", e); + return 1; + } + } + + private void initDist() throws IOException { + logger.info("Packaging plugin to {}", distDir); + File dist = new File(distDir); + if (!dist.exists()) { + boolean created = dist.mkdirs(); + if (!created) { + logger.error("Failed to create dist directory {}", distDir); + throw new IOException("Failed to create dist directory"); + } + } + } + + private void copyDocs() throws IllegalArgumentException, IOException { + File docs = new File(docsDir); + if (!docs.exists()) { + logger.error("Docs directory path{} does not exist", docsDir); + throw new IllegalArgumentException("Docs directory does not exist"); + } + if (!docs.isDirectory()) { + logger.error("Docs path {} is not a directory", docsDir); + throw new IllegalArgumentException("Docs path is not a directory"); + } + + String outputPath = Paths.get(distDir, "docs").toString(); + logger.info("Copying docs from {} to {}", docsDir, outputPath); + File output = new File(outputPath); + FileUtils.copyDirectory(docs, output); + } + + private void writeTablesJson() throws Exception { + if (plugin.getKind() != PluginKind.Source) { + return; + } + + String outputPath = Paths.get(distDir, "tables.json").toString(); + logger.info("Writing tables.json to {}", outputPath); + plugin.init("", NewClientOptions.builder().noConnection(true).build()); + List
tables = plugin.tables(Arrays.asList("*"), Arrays.asList(), false); + List
flattenTables = Table.flattenTables(tables); + TablesJson tablesJson = new TablesJson(flattenTables); + String json = tablesJson.toJson(); + FileUtils.writeStringToFile(new File(outputPath), json, "UTF-8"); + } + + @SuppressWarnings("null") + private List buildDocker() + throws IllegalArgumentException, IOException, InterruptedException { + String dockerFilePath = Paths.get(pluginDirectory, plugin.getDockerfile()).toString(); + File dockerFile = new File(dockerFilePath); + if (!dockerFile.exists()) { + logger.error("Dockerfile {} does not exist", dockerFilePath); + throw new IllegalArgumentException("Dockerfile does not exist"); + } + if (!dockerFile.isFile()) { + logger.error("Dockerfile {} is not a file", dockerFilePath); + throw new IllegalArgumentException("Dockerfile is not a file"); + } + + List supportedTargets = new ArrayList<>(); + for (BuildTarget target : plugin.getBuildTargets()) { + String imageRepository = + String.format( + "docker.cloudquery.io/%s/%s-%s", + plugin.getTeam(), plugin.getKind(), plugin.getName()); + String os = target.getOs().toString(); + String arch = target.getArch().toString(); + String imageTag = String.format("%s:%s-%s-%s", imageRepository, pluginVersion, os, arch); + String imageTar = + String.format("plugin-%s-%s-%s-%s.tar", plugin.getName(), pluginVersion, os, arch); + String imagePath = Paths.get(distDir, imageTar).toString(); + logger.info("Building docker image {}", imageTag); + // GITHUB_ACTOR and GITHUB_TOKEN are required for the Dockerfile to pull the CloudQuery Java + // libs from GitHub Packages + String githubActor = System.getenv("GITHUB_ACTOR"); + if (Strings.isNullOrEmpty(githubActor)) { + logger.error("GITHUB_ACTOR env variable is required"); + throw new IllegalArgumentException("GITHUB_ACTOR env variable is required"); + } + String githubToken = System.getenv("GITHUB_TOKEN"); + if (Strings.isNullOrEmpty(githubToken)) { + logger.error("GITHUB_TOKEN env variable is required"); + throw new IllegalArgumentException("GITHUB_TOKEN env variable is required"); + } + String[] dockerBuildArguments = { + "buildx", + "build", + "-t", + imageTag, + "--platform", + String.format("%s/%s", os, arch), + "-f", + dockerFilePath, + ".", + "--progress", + "plain", + "--load", + "--build-arg", + String.format("GITHUB_ACTOR=%s", githubActor), + "--build-arg", + String.format("GITHUB_TOKEN=%s", githubToken), + }; + logger.debug("Running docker command: '{}'", String.join(" ", dockerBuildArguments)); + runCommand(dockerBuildArguments); + logger.debug("Saving docker image {} to {}", imageTag, imagePath); + String[] dockerSaveArguments = {"save", "-o", imagePath, imageTag}; + logger.debug("Running docker command: '{}'", String.join(" ", dockerSaveArguments)); + runCommand(dockerSaveArguments); + try (InputStream is = Files.newInputStream(Paths.get(imagePath))) { + String checksum = DigestUtils.sha256Hex(is); + SupportedTargetJson supportedTarget = new SupportedTargetJson(os, arch, imageTar, checksum); + supportedTargets.add(supportedTarget); + } + } + + return supportedTargets; + } + + private void runCommand(String[] command) throws IOException, InterruptedException { + ArrayList allArgs = new ArrayList<>(Arrays.asList(command)); + allArgs.add(0, "docker"); + ProcessBuilder processBuilder = + new ProcessBuilder(allArgs.toArray(new String[allArgs.size()])).inheritIO(); + processBuilder.directory(new File(pluginDirectory)); + Process process = processBuilder.start(); + int exitCode = process.waitFor(); + if (exitCode != 0) { + logger.error("Failed to run command: '{}'", String.join(" ", command)); + throw new IOException("Failed to run command"); + } + } + + private void writePackageJson(List supportedTargets) throws IOException { + String outputPath = Paths.get(distDir, "package.json").toString(); + logger.info("Writing package.json to {}", outputPath); + PackageJson packageJson = + new PackageJson( + plugin.getName(), + plugin.getTeam(), + plugin.getKind().toString(), + pluginVersion, + message, + supportedTargets); + String json = packageJson.toJson(); + FileUtils.writeStringToFile(new File(outputPath), json, "UTF-8"); + } +} diff --git a/lib/src/main/java/io/cloudquery/server/PackageJson.java b/lib/src/main/java/io/cloudquery/server/PackageJson.java new file mode 100644 index 0000000..1092cbf --- /dev/null +++ b/lib/src/main/java/io/cloudquery/server/PackageJson.java @@ -0,0 +1,30 @@ +package io.cloudquery.server; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import java.util.List; +import lombok.Getter; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +@Getter +public class PackageJson { + @NonNull private final String name; + @NonNull private final String team; + @NonNull private final String kind; + @NonNull private final String version; + @NonNull private final String message; + @NonNull private final List supported_targets; + + private final int schema_version = 1; + private int[] protocols = {3}; + private String package_type = "docker"; + + public String toJson() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.enable(SerializationFeature.INDENT_OUTPUT); + return objectMapper.writeValueAsString(this); + } +} diff --git a/lib/src/main/java/io/cloudquery/server/PluginServe.java b/lib/src/main/java/io/cloudquery/server/PluginServe.java index f308d92..b115342 100644 --- a/lib/src/main/java/io/cloudquery/server/PluginServe.java +++ b/lib/src/main/java/io/cloudquery/server/PluginServe.java @@ -14,6 +14,9 @@ public class PluginServe { public int Serve() { Extensions.registerExtensions(); - return new CommandLine(new RootCommand()).addSubcommand(new ServeCommand(plugin)).execute(args); + CommandLine cli = new CommandLine(new RootCommand()); + cli.addSubcommand(new ServeCommand(plugin)); + cli.addSubcommand(new PackageCommand(plugin)); + return cli.execute(args); } } diff --git a/lib/src/main/java/io/cloudquery/server/SupportedTargetJson.java b/lib/src/main/java/io/cloudquery/server/SupportedTargetJson.java new file mode 100644 index 0000000..ac22833 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/server/SupportedTargetJson.java @@ -0,0 +1,14 @@ +package io.cloudquery.server; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NonNull; + +@AllArgsConstructor +@Getter +public class SupportedTargetJson { + @NonNull private final String os; + @NonNull private final String arch; + @NonNull private final String path; + @NonNull private final String checksum; +} diff --git a/lib/src/main/java/io/cloudquery/server/TablesJson.java b/lib/src/main/java/io/cloudquery/server/TablesJson.java new file mode 100644 index 0000000..e57b857 --- /dev/null +++ b/lib/src/main/java/io/cloudquery/server/TablesJson.java @@ -0,0 +1,68 @@ +package io.cloudquery.server; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import io.cloudquery.schema.Column; +import io.cloudquery.schema.Table; +import java.util.ArrayList; +import java.util.List; + +public class TablesJson { + public class ColumnJson { + public String name; + public String description; + public String type; + public boolean incremental_key; + public boolean not_null; + public boolean primary_key; + public boolean unique; + } + + public class TableJson { + public String name; + public String description; + public boolean is_incremental; + public String parent; + public List relations; + public List columns; + } + + private List
tables; + + public TablesJson(List
tables) { + this.tables = tables; + } + + public String toJson() throws JsonProcessingException { + List json = new ArrayList<>(); + for (Table table : tables) { + TableJson tableJson = new TableJson(); + tableJson.name = table.getName(); + tableJson.description = table.getDescription(); + tableJson.is_incremental = false; + tableJson.parent = table.getParent() == null ? null : table.getParent().getName(); + tableJson.relations = new ArrayList<>(); + for (Table relation : table.getRelations()) { + tableJson.relations.add(relation.getName()); + } + tableJson.columns = new ArrayList<>(); + for (Column column : table.getColumns()) { + ColumnJson columnJson = new ColumnJson(); + columnJson.name = column.getName(); + columnJson.description = column.getDescription(); + columnJson.type = column.getType().toString(); + columnJson.incremental_key = column.isIncrementalKey(); + columnJson.not_null = column.isNotNull(); + columnJson.primary_key = column.isPrimaryKey(); + columnJson.unique = column.isUnique(); + tableJson.columns.add(columnJson); + } + json.add(tableJson); + } + + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.enable(SerializationFeature.INDENT_OUTPUT); + return objectMapper.writeValueAsString(json); + } +} diff --git a/lib/src/test/java/io/cloudquery/server/PluginPackageTest.java b/lib/src/test/java/io/cloudquery/server/PluginPackageTest.java new file mode 100644 index 0000000..fe5f34e --- /dev/null +++ b/lib/src/test/java/io/cloudquery/server/PluginPackageTest.java @@ -0,0 +1,26 @@ +package io.cloudquery.server; + +import io.cloudquery.memdb.MemDB; +import io.cloudquery.server.PluginServe.PluginServeBuilder; +import java.nio.file.Path; +import java.nio.file.Paths; +import org.junit.jupiter.api.Test; + +public class PluginPackageTest { + @Test + public void packageTest() { + Path file = Paths.get("..").toAbsolutePath().normalize(); + String absolutePath = file.toString(); + + PluginServe pluginServe = + new PluginServeBuilder() + .plugin(new MemDB()) + .args( + new String[] { + "package", "--log-level", "debug", "-m", "initial version", "v1.0.0", absolutePath + }) + .build(); + int exitCode = pluginServe.Serve(); + assert exitCode == 0; + } +} From 6f0af999179e02c72ebfd9e9acd9e9189fc06b54 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 26 Mar 2024 15:33:48 +0200 Subject: [PATCH 120/376] chore(main): Release v0.0.23 (#195) :robot: I have created a release *beep* *boop* --- ## [0.0.23](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.22...v0.0.23) (2024-03-26) ### Features * Add package command ([#194](https://github.com/cloudquery/plugin-sdk-java/issues/194)) ([05407bb](https://github.com/cloudquery/plugin-sdk-java/commit/05407bbec19f2e782aafc21ec6f7511840cccc2d)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17515b2..b6ebb53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.23](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.22...v0.0.23) (2024-03-26) + + +### Features + +* Add package command ([#194](https://github.com/cloudquery/plugin-sdk-java/issues/194)) ([05407bb](https://github.com/cloudquery/plugin-sdk-java/commit/05407bbec19f2e782aafc21ec6f7511840cccc2d)) + ## [0.0.22](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.21...v0.0.22) (2024-03-05) diff --git a/lib/build.gradle b/lib/build.gradle index 7287c96..fb6e0f7 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.22' +version = '0.0.23' // x-release-please-end repositories { From bd32518bae6fc0761b3a0319fb39c0067a1cf840 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Tue, 26 Mar 2024 16:08:46 +0100 Subject: [PATCH 121/376] fix: Add missing docker_image_tag in package json (#196) --- lib/src/main/java/io/cloudquery/server/PackageCommand.java | 3 ++- .../main/java/io/cloudquery/server/SupportedTargetJson.java | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/src/main/java/io/cloudquery/server/PackageCommand.java b/lib/src/main/java/io/cloudquery/server/PackageCommand.java index 289072f..f8a2f6c 100644 --- a/lib/src/main/java/io/cloudquery/server/PackageCommand.java +++ b/lib/src/main/java/io/cloudquery/server/PackageCommand.java @@ -260,7 +260,8 @@ private List buildDocker() runCommand(dockerSaveArguments); try (InputStream is = Files.newInputStream(Paths.get(imagePath))) { String checksum = DigestUtils.sha256Hex(is); - SupportedTargetJson supportedTarget = new SupportedTargetJson(os, arch, imageTar, checksum); + SupportedTargetJson supportedTarget = + new SupportedTargetJson(os, arch, imageTar, checksum, imageTag); supportedTargets.add(supportedTarget); } } diff --git a/lib/src/main/java/io/cloudquery/server/SupportedTargetJson.java b/lib/src/main/java/io/cloudquery/server/SupportedTargetJson.java index ac22833..b71c749 100644 --- a/lib/src/main/java/io/cloudquery/server/SupportedTargetJson.java +++ b/lib/src/main/java/io/cloudquery/server/SupportedTargetJson.java @@ -11,4 +11,5 @@ public class SupportedTargetJson { @NonNull private final String arch; @NonNull private final String path; @NonNull private final String checksum; + @NonNull private final String docker_image_tag; } From a5ccce98a6fe05077a5b04ce4ad579ad03f90bfa Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 26 Mar 2024 17:13:17 +0200 Subject: [PATCH 122/376] chore(main): Release v0.0.24 (#197) :robot: I have created a release *beep* *boop* --- ## [0.0.24](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.23...v0.0.24) (2024-03-26) ### Bug Fixes * Add missing docker_image_tag in package json ([#196](https://github.com/cloudquery/plugin-sdk-java/issues/196)) ([bd32518](https://github.com/cloudquery/plugin-sdk-java/commit/bd32518bae6fc0761b3a0319fb39c0067a1cf840)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b6ebb53..19e3f95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.24](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.23...v0.0.24) (2024-03-26) + + +### Bug Fixes + +* Add missing docker_image_tag in package json ([#196](https://github.com/cloudquery/plugin-sdk-java/issues/196)) ([bd32518](https://github.com/cloudquery/plugin-sdk-java/commit/bd32518bae6fc0761b3a0319fb39c0067a1cf840)) + ## [0.0.23](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.22...v0.0.23) (2024-03-26) diff --git a/lib/build.gradle b/lib/build.gradle index fb6e0f7..ee20ba9 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.23' +version = '0.0.24' // x-release-please-end repositories { From ae92dfe11987a286a359834e802276a58e0c4986 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 03:47:08 +0300 Subject: [PATCH 123/376] chore(deps): Update github-actions (#198) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/gradle-build-action | action | digest | `585b565` -> `942d5e1` | | gradle/wrapper-validation-action | action | digest | `63d15e7` -> `b231772` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b222508..489a56b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@63d15e7a1e697b1de6f3ba0507106f89100c8518 + uses: gradle/wrapper-validation-action@b231772637bb498f11fdbc86052b6e8a8dc9fc92 - name: Build package run: ./gradlew build env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8007d77..797e62f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,9 +16,9 @@ jobs: java-version: '18' cache: 'gradle' - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@63d15e7a1e697b1de6f3ba0507106f89100c8518 + uses: gradle/wrapper-validation-action@b231772637bb498f11fdbc86052b6e8a8dc9fc92 - name: Publish package - uses: gradle/gradle-build-action@585b565652cefbba63202a7f927df0ff99f34001 + uses: gradle/gradle-build-action@942d5e1456472d289f4b112fd3b62244067bac9c with: arguments: publish env: From 29ca1d31020a7083d71a781b512f24c0999df469 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 03:59:38 +0300 Subject: [PATCH 124/376] fix(deps): Update log4j2 monorepo to v2.23.1 (#199) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.logging.log4j:log4j-core](https://logging.apache.org/log4j/2.x/) ([source](https://togithub.com/apache/logging-log4j2)) | dependencies | patch | `2.23.0` -> `2.23.1` | | [org.apache.logging.log4j:log4j-api](https://logging.apache.org/log4j/2.x/) ([source](https://togithub.com/apache/logging-log4j2)) | dependencies | patch | `2.23.0` -> `2.23.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index ee20ba9..78e5c82 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -45,8 +45,8 @@ dependencies { implementation "com.fasterxml.jackson.core:jackson-core:2.16.1" implementation "com.fasterxml.jackson.core:jackson-annotations:2.16.1" - implementation 'org.apache.logging.log4j:log4j-api:2.23.0' - implementation 'org.apache.logging.log4j:log4j-core:2.23.0' + implementation 'org.apache.logging.log4j:log4j-api:2.23.1' + implementation 'org.apache.logging.log4j:log4j-core:2.23.1' testImplementation 'io.grpc:grpc-testing:1.62.2' testImplementation 'io.grpc:grpc-inprocess:1.62.2' From 2722410c86bc5faa018e8a4f4dd98efe940e8551 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 04:52:07 +0300 Subject: [PATCH 125/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.17.0 (#201) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-annotations](https://togithub.com/FasterXML/jackson) ([source](https://togithub.com/FasterXML/jackson-annotations)) | dependencies | minor | `2.16.1` -> `2.17.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 78e5c82..0161d7a 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -43,7 +43,7 @@ dependencies { implementation 'commons-io:commons-io:2.15.1' implementation "com.fasterxml.jackson.core:jackson-core:2.16.1" - implementation "com.fasterxml.jackson.core:jackson-annotations:2.16.1" + implementation "com.fasterxml.jackson.core:jackson-annotations:2.17.0" implementation 'org.apache.logging.log4j:log4j-api:2.23.1' implementation 'org.apache.logging.log4j:log4j-core:2.23.1' From b8ccd92e4e8d554c2d86311ad434a975247a87ac Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 05:32:14 +0300 Subject: [PATCH 126/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-core to v2.17.0 (#202) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-core](https://togithub.com/FasterXML/jackson-core) | dependencies | minor | `2.16.1` -> `2.17.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 0161d7a..f23465f 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -42,7 +42,7 @@ dependencies { implementation 'org.apache.arrow:arrow-vector:12.0.1' implementation 'commons-io:commons-io:2.15.1' - implementation "com.fasterxml.jackson.core:jackson-core:2.16.1" + implementation "com.fasterxml.jackson.core:jackson-core:2.17.0" implementation "com.fasterxml.jackson.core:jackson-annotations:2.17.0" implementation 'org.apache.logging.log4j:log4j-api:2.23.1' From 3e92081d7ec5518d0148dd91cf0c81d49530795b Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 05:43:24 +0300 Subject: [PATCH 127/376] fix(deps): Update dependency commons-io:commons-io to v2.16.0 (#203) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [commons-io:commons-io](https://commons.apache.org/proper/commons-io/) ([source](https://gitbox.apache.org/repos/asf?p=commons-io.git)) | dependencies | minor | `2.15.1` -> `2.16.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index f23465f..082bc7f 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -40,7 +40,7 @@ dependencies { implementation 'io.cloudquery:plugin-pb-java:0.0.15' implementation 'org.apache.arrow:arrow-memory-core:12.0.1' implementation 'org.apache.arrow:arrow-vector:12.0.1' - implementation 'commons-io:commons-io:2.15.1' + implementation 'commons-io:commons-io:2.16.0' implementation "com.fasterxml.jackson.core:jackson-core:2.17.0" implementation "com.fasterxml.jackson.core:jackson-annotations:2.17.0" From 1861a6cb239c98e21e55a558424e89ebdd3709d1 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 05:46:33 +0300 Subject: [PATCH 128/376] fix(deps): Update dependency gradle (#204) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [gradle](https://gradle.org) ([source](https://togithub.com/gradle/gradle)) | | minor | `8.6` -> `8.7` | | gradle | stage | minor | `8.3-jdk20` -> `8.4-jdk20` | --- ### Release Notes
gradle/gradle (gradle) ### [`v8.7`](https://togithub.com/gradle/gradle/releases/tag/v8.7.0): 8.7 [Compare Source](https://togithub.com/gradle/gradle/compare/v8.6.0...v8.7.0) The Gradle team is excited to announce Gradle 8.7. [Read the Release Notes](https://docs.gradle.org/8.7/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Aleksandr Postnov](https://togithub.com/alex-postnov), [BjΓΆrn Kautler](https://togithub.com/Vampire), [Brice Dutheil](https://togithub.com/bric3), [Denis Buzmakov](https://togithub.com/bacecek), [Federico La Penna](https://togithub.com/flapenna), [Gregor Dschung](https://togithub.com/chkpnt), [Hal Deadman](https://togithub.com/hdeadman), [HΓ©lio Fernandes SebastiΓ£o](https://togithub.com/helfese), [Ivan Gavrilovic](https://togithub.com/gavra0), [Jendrik Johannes](https://togithub.com/jjohannes), [JΓΆrgen Andersson](https://togithub.com/jorander), [Marie](https://togithub.com/NyCodeGHG), [pandaninjas](https://togithub.com/pandaninjas), [Philip Wedemann](https://togithub.com/hfhbd), [Ryan Schmitt](https://togithub.com/rschmitt), [Steffen Yount](https://togithub.com/steffenyount), [Tyler Kinkade](https://togithub.com/tyknkd), [Zed Spencer-Milnes](https://togithub.com/GingerGeek) #### Upgrade instructions Switch your build to use Gradle 8.7 by updating your wrapper: ./gradlew wrapper --gradle-version=8.7 See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.7/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.7/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://togithub.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- Dockerfile | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 43462 -> 43453 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index c5cfc2d..aeda21c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=$BUILDPLATFORM gradle:8.3-jdk20 as build +FROM --platform=$BUILDPLATFORM gradle:8.4-jdk20 as build ARG GITHUB_ACTOR ARG GITHUB_TOKEN diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d64cd4917707c1f8861d8cb53dd15194d4248596..e6441136f3d4ba8a0da8d277868979cfbc8ad796 100644 GIT binary patch delta 34118 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 delta 34176 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 SGW6ptSs!X7{rG*o_g?|vpSEZK diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a80b22c..b82aa23 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 9083c89a73d8861b864df5a822555e9b2fdce513 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 06:23:46 +0300 Subject: [PATCH 129/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.16 (#205) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://togithub.com/jqno/equalsverifier)) | dependencies | minor | `3.15.7` -> `3.16` | --- ### Release Notes
    jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.16`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#316---2024-03-22) ##### Added - Support for [Spring Framework](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/lang/NonNullFields.html)'s `@NonNullFields` annotation and [JSpecify](https://jspecify.dev/)'s `@NullMarked` annotation. ([Issue 936](https://togithub.com/jqno/equalsverifier/issues/936)) ##### Changed - When `Warning.SURROGATE_OR_BUSINESS_KEY` is suppressed, it is now possible to use `#withOnlyTheseFields`, and the fields may include both `@Id` fields and regular fields. ([Issue 934](https://togithub.com/jqno/equalsverifier/issues/934)) - Improved the error message for so called 'versioned entities' (where entities with `0` or `null` ids are always unequal), so it's more discoverable what to do in that situation. ([Issue 932](https://togithub.com/jqno/equalsverifier/issues/932)) ### [`v3.15.8`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3158---2024-03-01) ##### Fixed - Final entities with [@​GeneratedValue](https://togithub.com/GeneratedValue) could not be verified. ([Issue 929](https://togithub.com/jqno/equalsverifier/issues/929))
    --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 082bc7f..b8b155d 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2' testImplementation 'org.mockito:mockito-core:5.10.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.10.0' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.15.7' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.16' testImplementation 'org.assertj:assertj-core:3.25.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.2' From 2ce7c1423b97e9a250ea98ccc4134aa0f4781aaf Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 07:17:57 +0300 Subject: [PATCH 130/376] fix(deps): Update mockito monorepo to v5.11.0 (#206) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.mockito:mockito-junit-jupiter](https://togithub.com/mockito/mockito) | dependencies | minor | `5.10.0` -> `5.11.0` | | [org.mockito:mockito-core](https://togithub.com/mockito/mockito) | dependencies | minor | `5.10.0` -> `5.11.0` | --- ### Release Notes
    mockito/mockito (org.mockito:mockito-junit-jupiter) ### [`v5.11.0`](https://togithub.com/mockito/mockito/releases/tag/v5.11.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://togithub.com/shipkit/shipkit-changelog)* ##### 5.11.0 - 2024-03-01 - [17 commit(s)](https://togithub.com/mockito/mockito/compare/v5.10.0...v5.11.0) by Aouichaoui Youssef, Franz Wong, Pranoti Durugkar, RΓ³bert Papp, dependabot\[bot] - Fixes [#​3281](https://togithub.com/mockito/mockito/issues/3281) : Add native method to exception message of MissingMethodI… [(#​3283)](https://togithub.com/mockito/mockito/pull/3283) - MissingMethodInvocationException is thrown when mocking native method in 5.x [(#​3281)](https://togithub.com/mockito/mockito/issues/3281) - Bump com.google.googlejavaformat:google-java-format from 1.19.2 to 1.20.0 [(#​3277)](https://togithub.com/mockito/mockito/pull/3277) - Bump versions.bytebuddy from 1.14.11 to 1.14.12 [(#​3272)](https://togithub.com/mockito/mockito/pull/3272) - Bump gradle/wrapper-validation-action from 2.1.0 to 2.1.1 [(#​3268)](https://togithub.com/mockito/mockito/pull/3268) - Bump org.shipkit:shipkit-auto-version from 2.0.3 to 2.0.4 [(#​3267)](https://togithub.com/mockito/mockito/pull/3267) - Bump gradle/wrapper-validation-action from 2.0.1 to 2.1.0 [(#​3266)](https://togithub.com/mockito/mockito/pull/3266) - Bump org.junit.platform:junit-platform-launcher from 1.10.1 to 1.10.2 [(#​3265)](https://togithub.com/mockito/mockito/pull/3265) - Bump gradle/wrapper-validation-action from 2.0.0 to 2.0.1 [(#​3264)](https://togithub.com/mockito/mockito/pull/3264) - Bump org.assertj:assertj-core from 3.25.2 to 3.25.3 [(#​3261)](https://togithub.com/mockito/mockito/pull/3261) - Bump versions.junitJupiter from 5.10.1 to 5.10.2 [(#​3260)](https://togithub.com/mockito/mockito/pull/3260) - Bump gradle/wrapper-validation-action from 1.1.0 to 2.0.0 [(#​3258)](https://togithub.com/mockito/mockito/pull/3258) - Fixes [#​3229](https://togithub.com/mockito/mockito/issues/3229): Resolve test generic arguments [(#​3257)](https://togithub.com/mockito/mockito/pull/3257) - Bump org.shipkit:shipkit-auto-version from 2.0.2 to 2.0.3 [(#​3256)](https://togithub.com/mockito/mockito/pull/3256) - Use kvm on ubuntu instead of macos to run Android tests [(#​3252)](https://togithub.com/mockito/mockito/pull/3252) - Fixes [#​3240](https://togithub.com/mockito/mockito/issues/3240) : Renamed mockito bom artifact [(#​3251)](https://togithub.com/mockito/mockito/pull/3251) - Remove shipkit workaround for generateChangelog [(#​3250)](https://togithub.com/mockito/mockito/pull/3250) - Bump com.gradle.enterprise from 3.16.1 to 3.16.2 [(#​3249)](https://togithub.com/mockito/mockito/pull/3249) - Mockito bom missing artifact in maven central for java21 [(#​3240)](https://togithub.com/mockito/mockito/issues/3240) - `@Captor` test parameters don't work with primitive type arguments [(#​3229)](https://togithub.com/mockito/mockito/issues/3229) - Gradle 8.2: work around fix for release publishing [(#​3053)](https://togithub.com/mockito/mockito/pull/3053)
    --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index b8b155d..e3de08f 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -53,8 +53,8 @@ dependencies { testImplementation platform('org.junit:junit-bom:5.10.2') testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2' - testImplementation 'org.mockito:mockito-core:5.10.0' - testImplementation 'org.mockito:mockito-junit-jupiter:5.10.0' + testImplementation 'org.mockito:mockito-core:5.11.0' + testImplementation 'org.mockito:mockito-junit-jupiter:5.11.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.16' testImplementation 'org.assertj:assertj-core:3.25.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.2' From 2ab7da7af1f19992c3dc04d4a2d6bbe96146d51b Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 13:54:50 +0300 Subject: [PATCH 131/376] fix(deps): Update plugin org.gradle.toolchains.foojay-resolver-convention to v0.8.0 (#207) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | org.gradle.toolchains.foojay-resolver-convention | plugin | minor | `0.6.0` -> `0.8.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- settings.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle b/settings.gradle index 44497fb..eadb282 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,7 +8,7 @@ plugins { // Apply the foojay-resolver plugin to allow automatic download of JDKs - id 'org.gradle.toolchains.foojay-resolver-convention' version '0.6.0' + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0' } rootProject.name = 'plugin-sdk-java' From a264e2ec4f00b285e80db9a5ba60647e0a34d164 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 15:57:02 +0300 Subject: [PATCH 132/376] fix(deps): Update dependency com.google.guava:guava to v33 (#208) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.google.guava:guava](https://togithub.com/google/guava) | dependencies | major | `32.1.3-jre` -> `33.1.0-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index e3de08f..e5cd733 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -31,9 +31,9 @@ dependencies { // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'org.jooq:joou:0.9.4' - implementation 'com.google.guava:guava:32.1.3-jre' + implementation 'com.google.guava:guava:33.1.0-jre' implementation 'info.picocli:picocli:4.7.5' - implementation 'com.google.guava:guava:32.1.3-jre' + implementation 'com.google.guava:guava:33.1.0-jre' implementation 'io.grpc:grpc-protobuf:1.62.2' implementation 'io.grpc:grpc-stub:1.62.2' implementation 'io.grpc:grpc-services:1.62.2' From 688f627a8093d42d9ae621134bdb6fcd3ba38f08 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 16:00:25 +0300 Subject: [PATCH 133/376] fix(deps): Update dependency org.apache.arrow:arrow-memory-core to v15 (#209) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.arrow:arrow-memory-core](https://arrow.apache.org/) ([source](https://togithub.com/apache/arrow)) | dependencies | major | `12.0.1` -> `15.0.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index e5cd733..3c3788c 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation 'io.grpc:grpc-stub:1.62.2' implementation 'io.grpc:grpc-services:1.62.2' implementation 'io.cloudquery:plugin-pb-java:0.0.15' - implementation 'org.apache.arrow:arrow-memory-core:12.0.1' + implementation 'org.apache.arrow:arrow-memory-core:15.0.2' implementation 'org.apache.arrow:arrow-vector:12.0.1' implementation 'commons-io:commons-io:2.16.0' From ac5aec4eb46874a19d70553606ac4d3aea7d1a79 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 16:03:41 +0300 Subject: [PATCH 134/376] fix(deps): Update dependency org.apache.arrow:arrow-memory-netty to v15 (#210) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.arrow:arrow-memory-netty](https://arrow.apache.org/) ([source](https://togithub.com/apache/arrow)) | dependencies | major | `12.0.1` -> `15.0.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 3c3788c..b6f8288 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -59,7 +59,7 @@ dependencies { testImplementation 'org.assertj:assertj-core:3.25.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.2' - runtimeOnly "org.apache.arrow:arrow-memory-netty:12.0.1" + runtimeOnly "org.apache.arrow:arrow-memory-netty:15.0.2" } test { From 6e950c77302ab9a227df65798f5eaa2f1e4f791a Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 16:07:06 +0300 Subject: [PATCH 135/376] fix(deps): Update eclipse-temurin Docker tag to v21 (#212) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | major | `20-jre` -> `21.0.2_13-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index aeda21c..2cc05b3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ COPY . . RUN gradle jar --no-daemon -FROM eclipse-temurin:20-jre +FROM eclipse-temurin:21.0.2_13-jre COPY --from=build /code/lib/build/libs/*.jar /app/app.jar From 59c3d3c30e71758bfe5152551b4290f2f174b58b Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 16:18:59 +0300 Subject: [PATCH 136/376] chore(deps): Update google-github-actions/release-please-action action to v4 (#213) --------- Co-authored-by: Renovate Bot Co-authored-by: Erez Rokah --- .github/workflows/release_pr.yml | 11 +---------- .release-please-manifest.json | 3 +++ release-please-config.json | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 10 deletions(-) create mode 100644 .release-please-manifest.json create mode 100644 release-please-config.json diff --git a/.github/workflows/release_pr.yml b/.github/workflows/release_pr.yml index b4f779d..a431fe5 100644 --- a/.github/workflows/release_pr.yml +++ b/.github/workflows/release_pr.yml @@ -8,16 +8,7 @@ jobs: release-please: runs-on: ubuntu-latest steps: - - uses: google-github-actions/release-please-action@v3 + - uses: google-github-actions/release-please-action@v4 id: release with: - release-type: simple - package-name: plugin-sdk-java token: ${{ secrets.GH_CQ_BOT }} - pull-request-title-pattern: "chore${scope}: Release${component} v${version}" - # Should breaking changes before 1.0.0 produce minor bumps? - bump-minor-pre-major: true - # Should feat changes before 1.0.0 produce patch bumps instead of minor bumps? - bump-patch-for-minor-pre-major: true - extra-files: | - lib/build.gradle diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..9740c6d --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "0.0.24" +} diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..3d0c68d --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "release-type": "simple", + "pull-request-title-pattern": "chore${scope}: Release${component} v${version}", + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": true, + "include-component-in-tag": false, + "packages": { + ".": { + "extra-files": [ + "lib/build.gradle" + ] + } + } +} From a205c1ce1db1d9658794e0881f666eee4bcd9dcb Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 16:23:58 +0300 Subject: [PATCH 137/376] fix(deps): Update dependency org.apache.arrow:arrow-vector to v15 (#211) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.arrow:arrow-vector](https://arrow.apache.org/) ([source](https://togithub.com/apache/arrow)) | dependencies | major | `12.0.1` -> `15.0.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index b6f8288..9d2d482 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -39,7 +39,7 @@ dependencies { implementation 'io.grpc:grpc-services:1.62.2' implementation 'io.cloudquery:plugin-pb-java:0.0.15' implementation 'org.apache.arrow:arrow-memory-core:15.0.2' - implementation 'org.apache.arrow:arrow-vector:12.0.1' + implementation 'org.apache.arrow:arrow-vector:15.0.2' implementation 'commons-io:commons-io:2.16.0' implementation "com.fasterxml.jackson.core:jackson-core:2.17.0" From ddbffe0d3386ed3d56da49c6b29389e3295726b8 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 16:31:09 +0300 Subject: [PATCH 138/376] chore(main): Release v0.0.25 (#214) :robot: I have created a release *beep* *boop* --- ## [0.0.25](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.24...v0.0.25) (2024-04-01) ### Bug Fixes * **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.17.0 ([#201](https://github.com/cloudquery/plugin-sdk-java/issues/201)) ([2722410](https://github.com/cloudquery/plugin-sdk-java/commit/2722410c86bc5faa018e8a4f4dd98efe940e8551)) * **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.17.0 ([#202](https://github.com/cloudquery/plugin-sdk-java/issues/202)) ([b8ccd92](https://github.com/cloudquery/plugin-sdk-java/commit/b8ccd92e4e8d554c2d86311ad434a975247a87ac)) * **deps:** Update dependency com.google.guava:guava to v33 ([#208](https://github.com/cloudquery/plugin-sdk-java/issues/208)) ([a264e2e](https://github.com/cloudquery/plugin-sdk-java/commit/a264e2ec4f00b285e80db9a5ba60647e0a34d164)) * **deps:** Update dependency commons-io:commons-io to v2.16.0 ([#203](https://github.com/cloudquery/plugin-sdk-java/issues/203)) ([3e92081](https://github.com/cloudquery/plugin-sdk-java/commit/3e92081d7ec5518d0148dd91cf0c81d49530795b)) * **deps:** Update dependency gradle ([#204](https://github.com/cloudquery/plugin-sdk-java/issues/204)) ([1861a6c](https://github.com/cloudquery/plugin-sdk-java/commit/1861a6cb239c98e21e55a558424e89ebdd3709d1)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.16 ([#205](https://github.com/cloudquery/plugin-sdk-java/issues/205)) ([9083c89](https://github.com/cloudquery/plugin-sdk-java/commit/9083c89a73d8861b864df5a822555e9b2fdce513)) * **deps:** Update dependency org.apache.arrow:arrow-memory-core to v15 ([#209](https://github.com/cloudquery/plugin-sdk-java/issues/209)) ([688f627](https://github.com/cloudquery/plugin-sdk-java/commit/688f627a8093d42d9ae621134bdb6fcd3ba38f08)) * **deps:** Update dependency org.apache.arrow:arrow-memory-netty to v15 ([#210](https://github.com/cloudquery/plugin-sdk-java/issues/210)) ([ac5aec4](https://github.com/cloudquery/plugin-sdk-java/commit/ac5aec4eb46874a19d70553606ac4d3aea7d1a79)) * **deps:** Update dependency org.apache.arrow:arrow-vector to v15 ([#211](https://github.com/cloudquery/plugin-sdk-java/issues/211)) ([a205c1c](https://github.com/cloudquery/plugin-sdk-java/commit/a205c1ce1db1d9658794e0881f666eee4bcd9dcb)) * **deps:** Update eclipse-temurin Docker tag to v21 ([#212](https://github.com/cloudquery/plugin-sdk-java/issues/212)) ([6e950c7](https://github.com/cloudquery/plugin-sdk-java/commit/6e950c77302ab9a227df65798f5eaa2f1e4f791a)) * **deps:** Update log4j2 monorepo to v2.23.1 ([#199](https://github.com/cloudquery/plugin-sdk-java/issues/199)) ([29ca1d3](https://github.com/cloudquery/plugin-sdk-java/commit/29ca1d31020a7083d71a781b512f24c0999df469)) * **deps:** Update mockito monorepo to v5.11.0 ([#206](https://github.com/cloudquery/plugin-sdk-java/issues/206)) ([2ce7c14](https://github.com/cloudquery/plugin-sdk-java/commit/2ce7c1423b97e9a250ea98ccc4134aa0f4781aaf)) * **deps:** Update plugin org.gradle.toolchains.foojay-resolver-convention to v0.8.0 ([#207](https://github.com/cloudquery/plugin-sdk-java/issues/207)) ([2ab7da7](https://github.com/cloudquery/plugin-sdk-java/commit/2ab7da7af1f19992c3dc04d4a2d6bbe96146d51b)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 19 +++++++++++++++++++ lib/build.gradle | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 9740c6d..6e0e77b 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.24" + ".": "0.0.25" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 19e3f95..f6544b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## [0.0.25](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.24...v0.0.25) (2024-04-01) + + +### Bug Fixes + +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.17.0 ([#201](https://github.com/cloudquery/plugin-sdk-java/issues/201)) ([2722410](https://github.com/cloudquery/plugin-sdk-java/commit/2722410c86bc5faa018e8a4f4dd98efe940e8551)) +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.17.0 ([#202](https://github.com/cloudquery/plugin-sdk-java/issues/202)) ([b8ccd92](https://github.com/cloudquery/plugin-sdk-java/commit/b8ccd92e4e8d554c2d86311ad434a975247a87ac)) +* **deps:** Update dependency com.google.guava:guava to v33 ([#208](https://github.com/cloudquery/plugin-sdk-java/issues/208)) ([a264e2e](https://github.com/cloudquery/plugin-sdk-java/commit/a264e2ec4f00b285e80db9a5ba60647e0a34d164)) +* **deps:** Update dependency commons-io:commons-io to v2.16.0 ([#203](https://github.com/cloudquery/plugin-sdk-java/issues/203)) ([3e92081](https://github.com/cloudquery/plugin-sdk-java/commit/3e92081d7ec5518d0148dd91cf0c81d49530795b)) +* **deps:** Update dependency gradle ([#204](https://github.com/cloudquery/plugin-sdk-java/issues/204)) ([1861a6c](https://github.com/cloudquery/plugin-sdk-java/commit/1861a6cb239c98e21e55a558424e89ebdd3709d1)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.16 ([#205](https://github.com/cloudquery/plugin-sdk-java/issues/205)) ([9083c89](https://github.com/cloudquery/plugin-sdk-java/commit/9083c89a73d8861b864df5a822555e9b2fdce513)) +* **deps:** Update dependency org.apache.arrow:arrow-memory-core to v15 ([#209](https://github.com/cloudquery/plugin-sdk-java/issues/209)) ([688f627](https://github.com/cloudquery/plugin-sdk-java/commit/688f627a8093d42d9ae621134bdb6fcd3ba38f08)) +* **deps:** Update dependency org.apache.arrow:arrow-memory-netty to v15 ([#210](https://github.com/cloudquery/plugin-sdk-java/issues/210)) ([ac5aec4](https://github.com/cloudquery/plugin-sdk-java/commit/ac5aec4eb46874a19d70553606ac4d3aea7d1a79)) +* **deps:** Update dependency org.apache.arrow:arrow-vector to v15 ([#211](https://github.com/cloudquery/plugin-sdk-java/issues/211)) ([a205c1c](https://github.com/cloudquery/plugin-sdk-java/commit/a205c1ce1db1d9658794e0881f666eee4bcd9dcb)) +* **deps:** Update eclipse-temurin Docker tag to v21 ([#212](https://github.com/cloudquery/plugin-sdk-java/issues/212)) ([6e950c7](https://github.com/cloudquery/plugin-sdk-java/commit/6e950c77302ab9a227df65798f5eaa2f1e4f791a)) +* **deps:** Update log4j2 monorepo to v2.23.1 ([#199](https://github.com/cloudquery/plugin-sdk-java/issues/199)) ([29ca1d3](https://github.com/cloudquery/plugin-sdk-java/commit/29ca1d31020a7083d71a781b512f24c0999df469)) +* **deps:** Update mockito monorepo to v5.11.0 ([#206](https://github.com/cloudquery/plugin-sdk-java/issues/206)) ([2ce7c14](https://github.com/cloudquery/plugin-sdk-java/commit/2ce7c1423b97e9a250ea98ccc4134aa0f4781aaf)) +* **deps:** Update plugin org.gradle.toolchains.foojay-resolver-convention to v0.8.0 ([#207](https://github.com/cloudquery/plugin-sdk-java/issues/207)) ([2ab7da7](https://github.com/cloudquery/plugin-sdk-java/commit/2ab7da7af1f19992c3dc04d4a2d6bbe96146d51b)) + ## [0.0.24](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.23...v0.0.24) (2024-03-26) diff --git a/lib/build.gradle b/lib/build.gradle index 9d2d482..8d46a8e 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.24' +version = '0.0.25' // x-release-please-end repositories { From 9af1ce3c3696e08a476d1c2fa5039d8d32de9bc5 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 16:34:54 +0300 Subject: [PATCH 139/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.16 (#215) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.15` -> `0.0.16` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 8d46a8e..c90b891 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.62.2' implementation 'io.grpc:grpc-stub:1.62.2' implementation 'io.grpc:grpc-services:1.62.2' - implementation 'io.cloudquery:plugin-pb-java:0.0.15' + implementation 'io.cloudquery:plugin-pb-java:0.0.16' implementation 'org.apache.arrow:arrow-memory-core:15.0.2' implementation 'org.apache.arrow:arrow-vector:15.0.2' implementation 'commons-io:commons-io:2.16.0' From a5854da90e00e87946e2d53d1752a616fe1b0f0f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Apr 2024 18:04:44 +0300 Subject: [PATCH 140/376] chore(main): Release v0.0.26 (#216) :robot: I have created a release *beep* *boop* --- ## [0.0.26](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.25...v0.0.26) (2024-04-01) ### Bug Fixes * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.16 ([#215](https://github.com/cloudquery/plugin-sdk-java/issues/215)) ([9af1ce3](https://github.com/cloudquery/plugin-sdk-java/commit/9af1ce3c3696e08a476d1c2fa5039d8d32de9bc5)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 6e0e77b..dba10b1 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.25" + ".": "0.0.26" } diff --git a/CHANGELOG.md b/CHANGELOG.md index f6544b5..2f3fefa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.26](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.25...v0.0.26) (2024-04-01) + + +### Bug Fixes + +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.16 ([#215](https://github.com/cloudquery/plugin-sdk-java/issues/215)) ([9af1ce3](https://github.com/cloudquery/plugin-sdk-java/commit/9af1ce3c3696e08a476d1c2fa5039d8d32de9bc5)) + ## [0.0.25](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.24...v0.0.25) (2024-04-01) diff --git a/lib/build.gradle b/lib/build.gradle index c90b891..a179cc1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.25' +version = '0.0.26' // x-release-please-end repositories { From 8c8e684f6ee8bbb7d2481c0db39f1a4675e39a70 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Wed, 3 Apr 2024 19:36:58 +0300 Subject: [PATCH 141/376] chore: Create CODEOWNERS --- CODEOWNERS | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 CODEOWNERS diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 0000000..c4ff123 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,5 @@ +* @cloudquery/cloudquery-framework + +lib/build.gradle +.release-please-manifest.json +CHANGELOG.md From 4015cb59625f6cb7269b47ae3421f499d9879ac0 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Thu, 11 Apr 2024 13:41:02 +0100 Subject: [PATCH 142/376] fix: Call setParents on `MemDB` tables (#217) I noticed the [table list for Bitbucket plugin is broken in the Hub](https://hub.cloudquery.io/plugins/source/cloudquery/bitbucket/latest/tables). The reason is that we don't call `setParents` thus publish all tables as top level ones. The UI then tries to render items with duplicate keys and fails. This PR fixes the MemDB plugin in the SDK which is used as a reference for other plugins. I'll fix the Bitbucket plugin in a separate PR. There might be a better way to implicitly initialize the parents but I don't we should spend more time on it --- .../main/java/io/cloudquery/memdb/MemDB.java | 121 +++++++++--------- 1 file changed, 64 insertions(+), 57 deletions(-) diff --git a/lib/src/main/java/io/cloudquery/memdb/MemDB.java b/lib/src/main/java/io/cloudquery/memdb/MemDB.java index 7bd87df..799b8f8 100644 --- a/lib/src/main/java/io/cloudquery/memdb/MemDB.java +++ b/lib/src/main/java/io/cloudquery/memdb/MemDB.java @@ -23,64 +23,71 @@ public class MemDB extends Plugin { private static List
getTables() { - return List.of( - Table.builder() - .name("table1") - .resolver( - new TableResolver() { - @Override - public void resolve( - ClientMeta clientMeta, Resource parent, TableOutputStream stream) { - stream.write( - Table1Data.builder() - .id(UUID.fromString("46b2b6e6-8f3e-4340-a721-4aa0786b1cc0")) - .name("name1") - .timestamp(LocalDateTime.now()) - .json(Map.of("key1", "value1", "key2", "value2")) - .build()); - stream.write( - Table1Data.builder() - .id(UUID.fromString("e89f95df-a389-4f1b-9ba6-1fab565523d6")) - .name("name2") - .build()); - } - }) - .transform(TransformWithClass.builder(Table1Data.class).pkField("id").build()) - .build(), - Table.builder() - .name("table2") - .resolver( - new TableResolver() { - @Override - public void resolve( - ClientMeta clientMeta, Resource parent, TableOutputStream stream) { - stream.write(Table2Data.builder().id(1).name("name1").build()); - stream.write(Table2Data.builder().id(2).name("name2").build()); - } - }) - .transform(TransformWithClass.builder(Table2Data.class).pkField("id").build()) - .relations( - List.of( - Table.builder() - .name("table2_child") - .resolver( - new TableResolver() { + List
tables = + List.of( + Table.builder() + .name("table1") + .resolver( + new TableResolver() { + @Override + public void resolve( + ClientMeta clientMeta, Resource parent, TableOutputStream stream) { + stream.write( + Table1Data.builder() + .id(UUID.fromString("46b2b6e6-8f3e-4340-a721-4aa0786b1cc0")) + .name("name1") + .timestamp(LocalDateTime.now()) + .json(Map.of("key1", "value1", "key2", "value2")) + .build()); + stream.write( + Table1Data.builder() + .id(UUID.fromString("e89f95df-a389-4f1b-9ba6-1fab565523d6")) + .name("name2") + .build()); + } + }) + .transform(TransformWithClass.builder(Table1Data.class).pkField("id").build()) + .build(), + Table.builder() + .name("table2") + .resolver( + new TableResolver() { + @Override + public void resolve( + ClientMeta clientMeta, Resource parent, TableOutputStream stream) { + stream.write(Table2Data.builder().id(1).name("name1").build()); + stream.write(Table2Data.builder().id(2).name("name2").build()); + } + }) + .transform(TransformWithClass.builder(Table2Data.class).pkField("id").build()) + .relations( + List.of( + Table.builder() + .name("table2_child") + .resolver( + new TableResolver() { - @Override - public void resolve( - ClientMeta clientMeta, - Resource parent, - TableOutputStream stream) { - String parentName = parent.get("name").toString(); - stream.write( - Table2ChildData.builder().name(parentName + "_name1").build()); - stream.write( - Table2ChildData.builder().name(parentName + "_name2").build()); - } - }) - .transform(TransformWithClass.builder(Table2ChildData.class).build()) - .build())) - .build()); + @Override + public void resolve( + ClientMeta clientMeta, + Resource parent, + TableOutputStream stream) { + String parentName = parent.get("name").toString(); + stream.write( + Table2ChildData.builder() + .name(parentName + "_name1") + .build()); + stream.write( + Table2ChildData.builder() + .name(parentName + "_name2") + .build()); + } + }) + .transform(TransformWithClass.builder(Table2ChildData.class).build()) + .build())) + .build()); + Tables.setParents(tables, null); + return tables; } private List
allTables; From 96ef99798245159f561a32b6aa52271191a9972b Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 11 Apr 2024 15:51:11 +0300 Subject: [PATCH 143/376] chore(main): Release v0.0.27 (#218) :robot: I have created a release *beep* *boop* --- ## [0.0.27](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.26...v0.0.27) (2024-04-11) ### Bug Fixes * Call setParents on `MemDB` tables ([#217](https://github.com/cloudquery/plugin-sdk-java/issues/217)) ([4015cb5](https://github.com/cloudquery/plugin-sdk-java/commit/4015cb59625f6cb7269b47ae3421f499d9879ac0)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index dba10b1..abedf50 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.26" + ".": "0.0.27" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f3fefa..d5d87f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.27](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.26...v0.0.27) (2024-04-11) + + +### Bug Fixes + +* Call setParents on `MemDB` tables ([#217](https://github.com/cloudquery/plugin-sdk-java/issues/217)) ([4015cb5](https://github.com/cloudquery/plugin-sdk-java/commit/4015cb59625f6cb7269b47ae3421f499d9879ac0)) + ## [0.0.26](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.25...v0.0.26) (2024-04-01) diff --git a/lib/build.gradle b/lib/build.gradle index a179cc1..305732c 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.26' +version = '0.0.27' // x-release-please-end repositories { From 320d83ebc4d6e48e0044b8eac53a34849474ca51 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 May 2024 03:42:55 +0300 Subject: [PATCH 144/376] chore(deps): Update github-actions (#219) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/gradle-build-action | action | digest | `942d5e1` -> `4c39dd8` | | gradle/wrapper-validation-action | action | digest | `b231772` -> `216d1ad` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 489a56b..a41e9d9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@b231772637bb498f11fdbc86052b6e8a8dc9fc92 + uses: gradle/wrapper-validation-action@216d1ad2b3710bf005dc39237337b9673fd8fcd5 - name: Build package run: ./gradlew build env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 797e62f..7eadcf0 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,9 +16,9 @@ jobs: java-version: '18' cache: 'gradle' - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@b231772637bb498f11fdbc86052b6e8a8dc9fc92 + uses: gradle/wrapper-validation-action@216d1ad2b3710bf005dc39237337b9673fd8fcd5 - name: Publish package - uses: gradle/gradle-build-action@942d5e1456472d289f4b112fd3b62244067bac9c + uses: gradle/gradle-build-action@4c39dd82cd5e1ec7c6fa0173bb41b4b6bb3b86ff with: arguments: publish env: From 75c9203d3253898ae77de0885e9d93fe19eb2647 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 May 2024 03:44:31 +0300 Subject: [PATCH 145/376] fix(deps): Update dependency commons-io:commons-io to v2.16.1 (#220) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [commons-io:commons-io](https://commons.apache.org/proper/commons-io/) ([source](https://gitbox.apache.org/repos/asf?p=commons-io.git)) | dependencies | patch | `2.16.0` -> `2.16.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 305732c..8fe465c 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -40,7 +40,7 @@ dependencies { implementation 'io.cloudquery:plugin-pb-java:0.0.16' implementation 'org.apache.arrow:arrow-memory-core:15.0.2' implementation 'org.apache.arrow:arrow-vector:15.0.2' - implementation 'commons-io:commons-io:2.16.0' + implementation 'commons-io:commons-io:2.16.1' implementation "com.fasterxml.jackson.core:jackson-core:2.17.0" implementation "com.fasterxml.jackson.core:jackson-annotations:2.17.0" From 753fbe1121f53267154957a3e7d0c628f2e28f7f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 May 2024 04:46:15 +0300 Subject: [PATCH 146/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.16.1 (#222) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://togithub.com/jqno/equalsverifier)) | dependencies | patch | `3.16` -> `3.16.1` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.16.1`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3161---2024-04-03) ##### Fixed - IllegalArgumentException `argument type mismatch` when a field's type has a wildcard generic and the underlying type has a type bound (such as `T extends Serializable`). ([Issue 940](https://togithub.com/jqno/equalsverifier/issues/940)) - AbstractMethodError when a the `equals` method in a field's class calls an abstract method. ([Issue 938](https://togithub.com/jqno/equalsverifier/issues/938))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 8fe465c..871f375 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2' testImplementation 'org.mockito:mockito-core:5.11.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.11.0' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.16' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.16.1' testImplementation 'org.assertj:assertj-core:3.25.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.2' From 5cf512eaf9c18560474d9a115777fa87f102a5e3 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 May 2024 04:50:14 +0300 Subject: [PATCH 147/376] fix(deps): Update eclipse-temurin Docker tag to v21.0.3_9-jre (#223) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | patch | `21.0.2_13-jre` -> `21.0.3_9-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 2cc05b3..5c0a427 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ COPY . . RUN gradle jar --no-daemon -FROM eclipse-temurin:21.0.2_13-jre +FROM eclipse-temurin:21.0.3_9-jre COPY --from=build /code/lib/build/libs/*.jar /app/app.jar From 1b69fb67a2b15827fe1a23ec6cd96c848d5e513e Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 May 2024 05:34:37 +0300 Subject: [PATCH 148/376] fix(deps): Update grpc-java monorepo to v1.63.0 (#224) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-inprocess](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.62.2` -> `1.63.0` | | [io.grpc:grpc-testing](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.62.2` -> `1.63.0` | | [io.grpc:grpc-services](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.62.2` -> `1.63.0` | | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.62.2` -> `1.63.0` | | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.62.2` -> `1.63.0` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.63.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.63.0) ##### API Changes - xds: Stabilize CsdsService ([#​11003](https://togithub.com/grpc/grpc-java/issues/11003)) ([`0d749c5`](https://togithub.com/grpc/grpc-java/commit/0d749c594)) - api: Stabilize server.getListenerSockets ([#​10910](https://togithub.com/grpc/grpc-java/issues/10910)) ([`ff34d51`](https://togithub.com/grpc/grpc-java/commit/ff34d51c7)) - servlet: Introduce ServletServerBuilder.buildServlet([#​10921](https://togithub.com/grpc/grpc-java/issues/10921)) ([`257d1c2`](https://togithub.com/grpc/grpc-java/commit/257d1c2db)) - api: Allow configuration of the queued byte threshold at which a Stream is considered not ready ([#​10977](https://togithub.com/grpc/grpc-java/issues/10977)) ([`2c83ef0`](https://togithub.com/grpc/grpc-java/commit/2c83ef063)) ##### New Features xds, dual stack, happy eyeballs: Support dual stack in xds, change list includes: - Enable new PickFirst lb policy by default. The new PickFirst implements subchannel picking logic. ([#​11002](https://togithub.com/grpc/grpc-java/issues/11002)) ([`8a9ce99`](https://togithub.com/grpc/grpc-java/commit/8a9ce990b)) - EDS resource now supports additional addresses ([#​11011](https://togithub.com/grpc/grpc-java/issues/11011)) ([`38f968f`](https://togithub.com/grpc/grpc-java/commit/38f968faf)) - Change address based outlier detection to endpoint based ([#​10939](https://togithub.com/grpc/grpc-java/issues/10939)) ([`c61fe69`](https://togithub.com/grpc/grpc-java/commit/c61fe6980)) - Enable Happy Eyeballs by default ([#​11022](https://togithub.com/grpc/grpc-java/issues/11022)) ([`51f811d`](https://togithub.com/grpc/grpc-java/commit/51f811df8)) ##### Improvements - rls: Adding extra debug logs ([#​10902](https://togithub.com/grpc/grpc-java/issues/10902)) ([`eba699a`](https://togithub.com/grpc/grpc-java/commit/eba699ad1)) - binder: Add missing Android API annotations ([#​10841](https://togithub.com/grpc/grpc-java/issues/10841)) ([`ce2adcc`](https://togithub.com/grpc/grpc-java/commit/ce2adcca9)) - core: Provide DEADLINE_EXCEEDED insights for context deadline ([`3abab95`](https://togithub.com/grpc/grpc-java/commit/3abab95e7)). When the deadline triggered and the deadline was set on the RPC via the stub or CallOptions, gRPC would gather additional debugging information to help understand where the RPC took so long. However if the deadline came from io.grpc.Context the error was simply β€œcontext timed out.” Now the debugging information is provided in both cases - examples: Fix file paths in debug example README ([`e19f1f1`](https://togithub.com/grpc/grpc-java/commit/e19f1f15a)) - compiler: implement ability to skip generation of javax annotation ([#​10927](https://togithub.com/grpc/grpc-java/issues/10927)) ([`0d39c2c`](https://togithub.com/grpc/grpc-java/commit/0d39c2c70)). Pass the option `jakarta_omit` to protoc-gen-grpc-java when generating code - xds: Get rid of xDS v2 proto dependencies ([#​10968](https://togithub.com/grpc/grpc-java/issues/10968)) ([`feab4e5`](https://togithub.com/grpc/grpc-java/commit/feab4e544)). `grpc-xds` jar size has decreased by 35%. - xds: Support retrieving names from wrapped resource containers ([#​10975](https://togithub.com/grpc/grpc-java/issues/10975)) ([`867e469`](https://togithub.com/grpc/grpc-java/commit/867e46940)) - netty: improve server handling of writes to reset streams ([#​10258](https://togithub.com/grpc/grpc-java/issues/10258)) ([`a68399a`](https://togithub.com/grpc/grpc-java/commit/a68399a9b)) - api: Fix a typo in ServerInterceptor JavaDoc ([#​10990](https://togithub.com/grpc/grpc-java/issues/10990)) ([`0b82f01`](https://togithub.com/grpc/grpc-java/commit/0b82f0126)) - servlet: Check log fine level before hex string conversion. ([#​11038](https://togithub.com/grpc/grpc-java/issues/11038)) - auth: Specify a locale for upper/lower case conversions (1.63.x backport) [#​11050](https://togithub.com/grpc/grpc-java/issues/11050) ##### Bug Fixes - xds: Copy data in least request to avoid picker data race ([`f4cc166`](https://togithub.com/grpc/grpc-java/commit/f4cc166f1)). This fixes a possible regression introduced in 1.60.0. Auditing the buggy code showed it unlikely to cause problems in practice, but that was more by happenstance than by design - xds: Fix data race in the xds client that contacts the control plane ([`d7628a3`](https://togithub.com/grpc/grpc-java/commit/d7628a3ab)) - rls: Fix a local and remote race ([`aa90768`](https://togithub.com/grpc/grpc-java/commit/aa9076812)). The remote race could cause an RPC to hang until its deadline. It had been seen in practice when the client was severely CPU under-provisioned - xds: Fix xdsNameResolver virtual host lookup authority with xdstp style names. Use service authority instead of ldsResourceName ([#​10960](https://togithub.com/grpc/grpc-java/issues/10960)) ([`78b3972`](https://togithub.com/grpc/grpc-java/commit/78b3972ff)) - core: Fix retry race condition that can lead to double decrementing inFlightSubStreams and so miss calling closed ([#​11026](https://togithub.com/grpc/grpc-java/issues/11026)) ([#​11033](https://togithub.com/grpc/grpc-java/issues/11033)) - okhttp: Fix OkHTTP client transport leak ([#​11060](https://togithub.com/grpc/grpc-java/issues/11060)) - xds: Use empty string when disabling server hostname verification ( [#​11058](https://togithub.com/grpc/grpc-java/issues/11058)) ##### Dependencies - Upgraded google-auth-library-java to 1.22.0 ##### Acknowledgement Alex Panchenko Benjamin Peterson David Ankin Prashanth Swaminathan Touko Vainio-Kaila
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 871f375..b598bc0 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,9 +34,9 @@ dependencies { implementation 'com.google.guava:guava:33.1.0-jre' implementation 'info.picocli:picocli:4.7.5' implementation 'com.google.guava:guava:33.1.0-jre' - implementation 'io.grpc:grpc-protobuf:1.62.2' - implementation 'io.grpc:grpc-stub:1.62.2' - implementation 'io.grpc:grpc-services:1.62.2' + implementation 'io.grpc:grpc-protobuf:1.63.0' + implementation 'io.grpc:grpc-stub:1.63.0' + implementation 'io.grpc:grpc-services:1.63.0' implementation 'io.cloudquery:plugin-pb-java:0.0.16' implementation 'org.apache.arrow:arrow-memory-core:15.0.2' implementation 'org.apache.arrow:arrow-vector:15.0.2' @@ -48,8 +48,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.23.1' implementation 'org.apache.logging.log4j:log4j-core:2.23.1' - testImplementation 'io.grpc:grpc-testing:1.62.2' - testImplementation 'io.grpc:grpc-inprocess:1.62.2' + testImplementation 'io.grpc:grpc-testing:1.63.0' + testImplementation 'io.grpc:grpc-inprocess:1.63.0' testImplementation platform('org.junit:junit-bom:5.10.2') testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2' From 1358a54fb53afd9633fc62e90e12270150c4de92 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 6 May 2024 13:50:21 +0300 Subject: [PATCH 149/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.17 (#228) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.16` -> `0.0.17` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index b598bc0..1edc815 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.63.0' implementation 'io.grpc:grpc-stub:1.63.0' implementation 'io.grpc:grpc-services:1.63.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.16' + implementation 'io.cloudquery:plugin-pb-java:0.0.17' implementation 'org.apache.arrow:arrow-memory-core:15.0.2' implementation 'org.apache.arrow:arrow-vector:15.0.2' implementation 'commons-io:commons-io:2.16.1' From 342ae645aae895a475d4867251628bc6d9d214e7 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 6 May 2024 14:20:28 +0300 Subject: [PATCH 150/376] chore(main): Release v0.0.28 (#221) :robot: I have created a release *beep* *boop* --- ## [0.0.28](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.27...v0.0.28) (2024-05-06) ### Bug Fixes * **deps:** Update dependency commons-io:commons-io to v2.16.1 ([#220](https://github.com/cloudquery/plugin-sdk-java/issues/220)) ([75c9203](https://github.com/cloudquery/plugin-sdk-java/commit/75c9203d3253898ae77de0885e9d93fe19eb2647)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.17 ([#228](https://github.com/cloudquery/plugin-sdk-java/issues/228)) ([1358a54](https://github.com/cloudquery/plugin-sdk-java/commit/1358a54fb53afd9633fc62e90e12270150c4de92)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.16.1 ([#222](https://github.com/cloudquery/plugin-sdk-java/issues/222)) ([753fbe1](https://github.com/cloudquery/plugin-sdk-java/commit/753fbe1121f53267154957a3e7d0c628f2e28f7f)) * **deps:** Update eclipse-temurin Docker tag to v21.0.3_9-jre ([#223](https://github.com/cloudquery/plugin-sdk-java/issues/223)) ([5cf512e](https://github.com/cloudquery/plugin-sdk-java/commit/5cf512eaf9c18560474d9a115777fa87f102a5e3)) * **deps:** Update grpc-java monorepo to v1.63.0 ([#224](https://github.com/cloudquery/plugin-sdk-java/issues/224)) ([1b69fb6](https://github.com/cloudquery/plugin-sdk-java/commit/1b69fb67a2b15827fe1a23ec6cd96c848d5e513e)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 11 +++++++++++ lib/build.gradle | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index abedf50..8ea009a 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.27" + ".": "0.0.28" } diff --git a/CHANGELOG.md b/CHANGELOG.md index d5d87f2..db0b03e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [0.0.28](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.27...v0.0.28) (2024-05-06) + + +### Bug Fixes + +* **deps:** Update dependency commons-io:commons-io to v2.16.1 ([#220](https://github.com/cloudquery/plugin-sdk-java/issues/220)) ([75c9203](https://github.com/cloudquery/plugin-sdk-java/commit/75c9203d3253898ae77de0885e9d93fe19eb2647)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.17 ([#228](https://github.com/cloudquery/plugin-sdk-java/issues/228)) ([1358a54](https://github.com/cloudquery/plugin-sdk-java/commit/1358a54fb53afd9633fc62e90e12270150c4de92)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.16.1 ([#222](https://github.com/cloudquery/plugin-sdk-java/issues/222)) ([753fbe1](https://github.com/cloudquery/plugin-sdk-java/commit/753fbe1121f53267154957a3e7d0c628f2e28f7f)) +* **deps:** Update eclipse-temurin Docker tag to v21.0.3_9-jre ([#223](https://github.com/cloudquery/plugin-sdk-java/issues/223)) ([5cf512e](https://github.com/cloudquery/plugin-sdk-java/commit/5cf512eaf9c18560474d9a115777fa87f102a5e3)) +* **deps:** Update grpc-java monorepo to v1.63.0 ([#224](https://github.com/cloudquery/plugin-sdk-java/issues/224)) ([1b69fb6](https://github.com/cloudquery/plugin-sdk-java/commit/1b69fb67a2b15827fe1a23ec6cd96c848d5e513e)) + ## [0.0.27](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.26...v0.0.27) (2024-04-11) diff --git a/lib/build.gradle b/lib/build.gradle index 1edc815..8277fed 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.27' +version = '0.0.28' // x-release-please-end repositories { From 838b81b45c22dc93e0cb6833b481300f49ee361a Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Jun 2024 03:41:19 +0300 Subject: [PATCH 151/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.17.1 (#229) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-annotations](https://togithub.com/FasterXML/jackson) ([source](https://togithub.com/FasterXML/jackson-annotations)) | dependencies | patch | `2.17.0` -> `2.17.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 8277fed..ee41cee 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -43,7 +43,7 @@ dependencies { implementation 'commons-io:commons-io:2.16.1' implementation "com.fasterxml.jackson.core:jackson-core:2.17.0" - implementation "com.fasterxml.jackson.core:jackson-annotations:2.17.0" + implementation "com.fasterxml.jackson.core:jackson-annotations:2.17.1" implementation 'org.apache.logging.log4j:log4j-api:2.23.1' implementation 'org.apache.logging.log4j:log4j-core:2.23.1' From 2266863f941764485606805c70c7a3e407c19fb8 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Jun 2024 04:46:40 +0300 Subject: [PATCH 152/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-core to v2.17.1 (#230) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-core](https://togithub.com/FasterXML/jackson-core) | dependencies | patch | `2.17.0` -> `2.17.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index ee41cee..f3af705 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -42,7 +42,7 @@ dependencies { implementation 'org.apache.arrow:arrow-vector:15.0.2' implementation 'commons-io:commons-io:2.16.1' - implementation "com.fasterxml.jackson.core:jackson-core:2.17.0" + implementation "com.fasterxml.jackson.core:jackson-core:2.17.1" implementation "com.fasterxml.jackson.core:jackson-annotations:2.17.1" implementation 'org.apache.logging.log4j:log4j-api:2.23.1' From c66f061f1bf03906bbb58b39b5ca107050191063 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Jun 2024 04:54:36 +0300 Subject: [PATCH 153/376] fix(deps): Update dependency info.picocli:picocli to v4.7.6 (#232) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [info.picocli:picocli](https://picocli.info) ([source](https://togithub.com/remkop/picocli)) | dependencies | patch | `4.7.5` -> `4.7.6` | --- ### Release Notes
remkop/picocli (info.picocli:picocli) ### [`v4.7.6`](https://togithub.com/remkop/picocli/blob/HEAD/RELEASE-NOTES.md#a-name476a-Picocli-476) The picocli community is pleased to announce picocli 4.7.6. This release includes bugfixes and enhancements. Many thanks to the picocli community for raising these issues and providing the pull requests to address them! This is the eighty-fifth public release. Picocli follows [semantic versioning](https://semver.org/). Artifacts in this release are signed by Remko Popma (6601 E5C0 8DCC BB96). #### Table of Contents - [New and noteworthy](#​4.7.6-new) - [Fixed issues](#​4.7.6-fixes) - [Deprecations](#​4.7.6-deprecated) - [Potential breaking changes](#​4.7.6-breaking-changes) #### New and Noteworthy `PropertiesDefaultProvider` now tries to load properties from the classpath if the file cannot be found in the user.home directory. #### Fixed issues - \[[#​2102](https://togithub.com/remkop/picocli/issues/2102)]\[[#​2107](https://togithub.com/remkop/picocli/issues/2107)] Enhancement: `PropertiesDefaultProvider` should try to load properties from classpath (last). Thanks to [LumΓ­r NΓ‘vrat](https://togithub.com/rimuln) for the pull request. - \[[#​2202](https://togithub.com/remkop/picocli/issues/2202)] Enhancement: Change log level from WARN to INFO when bean not found in ApplicationContext. Thanks to [Desmond Kirrane](https://togithub.com/dkirrane) for raising this. - \[[#​2248](https://togithub.com/remkop/picocli/issues/2248)] Enhancement: Don't show hidden commands in JLine3 command description. Thanks to [Reinhard Handler](https://togithub.com/rehand) for the pull request. - \[[#​2170](https://togithub.com/remkop/picocli/issues/2170)] Enhancement: Use `...` vararg instead of array parameter to match overridden method signature. Thanks to [Michael Vorburger](https://togithub.com/vorburger) for the pull request. - \[[#​2058](https://togithub.com/remkop/picocli/issues/2058)] Bugfix: `defaultValue` should not be applied in addition to user-specified value for options with a custom `IParameterConsumer`. Thanks to [Staffan Arvidsson McShane](https://togithub.com/StaffanArvidsson) for raising this. - \[[#​2148](https://togithub.com/remkop/picocli/issues/2148)] Bugfix: Fix NPE in jline3 `Example.jar` as `ConfigurationPath` cannot be `null` anymore. Thanks to [llzen44](https://togithub.com/llzen44) for the pull request. - \[[#​2232](https://togithub.com/remkop/picocli/issues/2232)] Bugfix: fix bug for `Optional` arguments with initial value. Thanks to [hq6](https://togithub.com/hq6) for raising this. - \[[#​2149](https://togithub.com/remkop/picocli/issues/2149)] Bugfix: `@Option`-annotated setter method not invoked with default value when used in mixin for both command and subcommand. Thanks to [Zhonghao Wang](https://togithub.com/JBWKZsf) for raising this. - \[[#​2270](https://togithub.com/remkop/picocli/issues/2270)] Bugfix: Custom type converter for primitive `boolean` options should not be ignored. Thanks to [Sven Kammerer](https://codeberg.org/sven.k) for raising this. - \[[#​2234](https://togithub.com/remkop/picocli/issues/2234)] BUILD: fix errorprone `TruthSelfEquals` warnings - \[[#​2172](https://togithub.com/remkop/picocli/issues/2172)] BUILD: Fix broken build. Thanks to [Michael Vorburger](https://togithub.com/vorburger) for the pull request. - \[[#​2174](https://togithub.com/remkop/picocli/issues/2174)] BUILD: Fix .gitattributes related CR/LF problems. Thanks to [Michael Vorburger](https://togithub.com/vorburger) for the pull request. - \[[#​2054](https://togithub.com/remkop/picocli/issues/2054)]\[[#​2176](https://togithub.com/remkop/picocli/issues/2176)] BUILD: Add Error Prone. Thanks to [Michael Vorburger](https://togithub.com/vorburger) for the pull request. - \[[#​2053](https://togithub.com/remkop/picocli/issues/2053)] \[[#​2175](https://togithub.com/remkop/picocli/issues/2175)] CLEAN: Remove unused extra format arguments. Thanks to [Michael Vorburger](https://togithub.com/vorburger) for the pull request. - \[[#​2171](https://togithub.com/remkop/picocli/issues/2171)] DOC: Fix a few typos in CommandLine's JavaDoc. Thanks to [Michael Vorburger](https://togithub.com/vorburger) for the pull request. - \[[#​2217](https://togithub.com/remkop/picocli/issues/2217)] DOC: Clarify documentation for negatable options. Thanks to [dbear496](https://togithub.com/dbear496) for raising this. - \[[#​2228](https://togithub.com/remkop/picocli/issues/2228)] DOC: Clarify that `ParseResult` passed to `IExecutionExceptionHandler` is the top-level parse result, not the parse result of the subcommand that failed. Thanks to [Abel Salgado Romero](https://togithub.com/abelsromero) for raising this. - \[[#​2047](https://togithub.com/remkop/picocli/issues/2047)] DEP: Bump andymckay/append-gist-action from [`1fbfbbc`](https://togithub.com/remkop/picocli/commit/1fbfbbce708a39bd45846f0955ed5521f2099c6d) to [`6e8d644`](https://togithub.com/remkop/picocli/commit/6e8d64427fe47cbacf4ab6b890411f1d67c07f3e) - \[[#​2091](https://togithub.com/remkop/picocli/issues/2091)] DEP: Bump actions/checkout from 3.5.2 to 3.6.0 - \[[#​2108](https://togithub.com/remkop/picocli/issues/2108)] DEP: Bump actions/checkout from 3.6.0 to 4.0.0 - \[[#​2120](https://togithub.com/remkop/picocli/issues/2120)] DEP: Bump actions/checkout from 4.0.0 to 4.1.0 - \[[#​2225](https://togithub.com/remkop/picocli/issues/2225)] DEP: Bump actions/checkout from 4.1.0 to 4.1.2 - \[[#​2272](https://togithub.com/remkop/picocli/issues/2272)] DEP: Bump actions/checkout from 4.1.2 to 4.1.4 - \[[#​2098](https://togithub.com/remkop/picocli/issues/2098)] DEP: Bump actions/setup-java from 3.11.0 to 3.12.0 - \[[#​2158](https://togithub.com/remkop/picocli/issues/2158)] DEP: Bump actions/setup-java from 3.12.0 to 4.0.0 - \[[#​2236](https://togithub.com/remkop/picocli/issues/2236)] DEP: Bump actions/setup-java from 4.0.0 to 4.2.1. - \[[#​2111](https://togithub.com/remkop/picocli/issues/2111)] DEP: Bump actions/upload-artifact from 3.1.2 to 3.1.3 - \[[#​2204](https://togithub.com/remkop/picocli/issues/2204)] DEP: Bump actions/upload-artifact from 3.1.3 to 4.3.1 - \[[#​2273](https://togithub.com/remkop/picocli/issues/2273)] DEP: Bump actions/upload-artifact from 4.3.1 to 4.3.3 - \[[#​2227](https://togithub.com/remkop/picocli/issues/2227)] DEP: Bump com.google.errorprone:error_prone_core from 2.23.0 to 2.26.1 - \[[#​2271](https://togithub.com/remkop/picocli/issues/2271)] DEP: Bump com.google.errorprone:error_prone_core from 2.26.1 to 2.27.1 - \[[#​2237](https://togithub.com/remkop/picocli/issues/2237)] DEP: Bump emibcn/badge-action from 2.0.2 to 2.0.3. - \[[#​2099](https://togithub.com/remkop/picocli/issues/2099)] DEP: Bump gradle/gradle-build-action from 2.4.2 to 2.8.0 - \[[#​2165](https://togithub.com/remkop/picocli/issues/2165)] DEP: Bump gradle/gradle-build-action from 2.8.0 to 2.11.0 - \[[#​2206](https://togithub.com/remkop/picocli/issues/2206)] DEP: Bump gradle/gradle-build-action from 2.11.1 to 3.1.0 - \[[#​2246](https://togithub.com/remkop/picocli/issues/2246)] DEP: Bump gradle/gradle-build-action from 3.1.0 to 3.3.0. - \[[#​2096](https://togithub.com/remkop/picocli/issues/2096)] DEP: Bump gradle/wrapper-validation-action from 1.0.6 to 1.1.0 - \[[#​2247](https://togithub.com/remkop/picocli/issues/2247)] DEP: Bump gradle/wrapper-validation-action from 1.1.0 to 3.3.0. - \[[#​2263](https://togithub.com/remkop/picocli/issues/2263)] DEP: Bump gradle/wrapper-validation-action from 3.3.0 to 3.3.2 - \[[#​2085](https://togithub.com/remkop/picocli/issues/2085)] DEP: Bump github/codeql-action from 2.3.5 to 2.21.4 - \[[#​2114](https://togithub.com/remkop/picocli/issues/2114)] DEP: Bump github/codeql-action from 2.21.4 to 2.21.7 - \[[#​2167](https://togithub.com/remkop/picocli/issues/2167)] DEP: Bump github/codeql-action from 2.21.7 to 3.22.11 - \[[#​2230](https://togithub.com/remkop/picocli/issues/2230)] DEP: Bump github/codeql-action from 3.22.11 to 3.24.8 - \[[#​2235](https://togithub.com/remkop/picocli/issues/2235)] DEP: Bump github/codeql-action from 3.24.8 to 3.24.10. - \[[#​2262](https://togithub.com/remkop/picocli/issues/2262)] DEP: Bump github/codeql-action from 3.24.10 to 3.25.3 - \[[#​2093](https://togithub.com/remkop/picocli/issues/2093)] DEP: Bump junit5Version from 5.9.3 to 5.10.0 - \[[#​2180](https://togithub.com/remkop/picocli/issues/2180)] DEP: Bump junit5Version from 5.10.0 to 5.10.1 - \[[#​2240](https://togithub.com/remkop/picocli/issues/2240)] DEP: Bump junit5Version from 5.10.1 to 5.10.2. - \[[#​2140](https://togithub.com/remkop/picocli/issues/2140)] DEP: Bump log4j2Version from 2.20.0 to 2.21.1 - \[[#​2178](https://togithub.com/remkop/picocli/issues/2178)] DEP: Bump log4j2Version from 2.21.1 to 2.22.0 - \[[#​2252](https://togithub.com/remkop/picocli/issues/2252)] DEP: Bump log4j2Version from 2.22.0 to 2.23.1 - \[[#​2095](https://togithub.com/remkop/picocli/issues/2095)] DEP: Bump org.apache.ivy:ivy from 2.5.1 to 2.5.2 - \[[#​2094](https://togithub.com/remkop/picocli/issues/2094)] DEP: Bump org.asciidoctor:asciidoctorj-pdf from 2.3.7 to 2.3.9 - \[[#​2229](https://togithub.com/remkop/picocli/issues/2229)] DEP: Bump org.asciidoctor:asciidoctorj-pdf from 2.3.9 to 2.3.15 - \[[#​2244](https://togithub.com/remkop/picocli/issues/2244)] DEP: Bump org.asciidoctor:asciidoctor-gradle-jvm from 3.3.2 to 4.0.2. - \[[#​2135](https://togithub.com/remkop/picocli/issues/2135)] DEP: Bump org.fusesource.jansi:jansi from 2.4.0 to 2.4.1 - \[[#​2089](https://togithub.com/remkop/picocli/issues/2089)] DEP: Bump org.jetbrains.kotlin:kotlin-gradle-plugin from 1.8.21 to 1.9.10 - \[[#​2154](https://togithub.com/remkop/picocli/issues/2154)] DEP: Bump org.jetbrains.kotlin:kotlin-gradle-plugin from 1.9.10 to 1.9.21 - \[[#​2090](https://togithub.com/remkop/picocli/issues/2090)] DEP: Bump org.jetbrains.kotlin:kotlin-script-runtime from 1.8.21 to 1.9.10 - \[[#​2221](https://togithub.com/remkop/picocli/issues/2221)] DEP: Bump org.jetbrains.kotlin:kotlin-script-runtime from 1.9.10 to 1.9.23 - \[[#​2243](https://togithub.com/remkop/picocli/issues/2243)] DEP: Bump org.jetbrains.kotlin:kotlin-gradle-plugin from 1.9.21 to 1.9.23. - \[[#​2146](https://togithub.com/remkop/picocli/issues/2146)] DEP: Bump org.jline:jline from 3.23.0 to 3.24.1 - \[[#​2241](https://togithub.com/remkop/picocli/issues/2241)] DEP: Bump org.jline:jline from 3.24.1 to 3.25.1. - \[[#​2261](https://togithub.com/remkop/picocli/issues/2261)] DEP: Bump org.jline:jline from 3.25.1 to 3.26.1 - \[[#​2049](https://togithub.com/remkop/picocli/issues/2049)] DEP: Bump org.hibernate.validator:hibernate-validator from 8.0.0.Final to 8.0.1.Final - \[[#​2037](https://togithub.com/remkop/picocli/issues/2037)] DEP: Bump org.scala-lang:scala-library from 2.13.10 to 2.13.11 - \[[#​2112](https://togithub.com/remkop/picocli/issues/2112)] DEP: Bump org.scala-lang:scala-library from 2.13.11 to 2.13.12 - \[[#​2242](https://togithub.com/remkop/picocli/issues/2242)] DEP: Bump org.scala-lang:scala-library from 2.13.12 to 2.13.13. - \[[#​2267](https://togithub.com/remkop/picocli/issues/2267)] DEP: Bump org.scala-lang:scala-library from 2.13.13 to 2.13.14 - \[[#​2052](https://togithub.com/remkop/picocli/issues/2052)] DEP: Bump ossf/scorecard-action from 2.1.3 to 2.2.0 - \[[#​2183](https://togithub.com/remkop/picocli/issues/2183)] DEP: Bump ossf/scorecard-action from 2.2.0 to 2.3.1 - \[[#​2082](https://togithub.com/remkop/picocli/issues/2082)] DEP: Bump step-security/harden-runner from 2.4.0 to 2.5.1 - \[[#​2152](https://togithub.com/remkop/picocli/issues/2152)] DEP: Bump step-security/harden-runner from 2.5.1 to 2.6.1 - \[[#​2268](https://togithub.com/remkop/picocli/issues/2268)] DEP: Bump step-security/harden-runner from 2.6.1 to 2.7.1 - DEP: Bump SpringBoot from 2.7.1 to 2.7.2 (for Java versions prior to 17) - \[[#​2255](https://togithub.com/remkop/picocli/issues/2255)] DEP: Bump andymckay/append-gist-action from 0.2 to 0.3 #### Deprecations No features were deprecated in this release. #### Potential breaking changes This release has no breaking changes.
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index f3af705..c93eea3 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -32,7 +32,7 @@ dependencies { // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'org.jooq:joou:0.9.4' implementation 'com.google.guava:guava:33.1.0-jre' - implementation 'info.picocli:picocli:4.7.5' + implementation 'info.picocli:picocli:4.7.6' implementation 'com.google.guava:guava:33.1.0-jre' implementation 'io.grpc:grpc-protobuf:1.63.0' implementation 'io.grpc:grpc-stub:1.63.0' From c98b5f37e7cd2fb5656b0baa8d8862fa5fd5b925 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Jun 2024 05:33:35 +0300 Subject: [PATCH 154/376] fix(deps): Update dependency com.google.guava:guava to v33.2.1-jre (#233) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.google.guava:guava](https://togithub.com/google/guava) | dependencies | minor | `33.1.0-jre` -> `33.2.1-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index c93eea3..30d5fd8 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -31,9 +31,9 @@ dependencies { // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'org.jooq:joou:0.9.4' - implementation 'com.google.guava:guava:33.1.0-jre' + implementation 'com.google.guava:guava:33.2.1-jre' implementation 'info.picocli:picocli:4.7.6' - implementation 'com.google.guava:guava:33.1.0-jre' + implementation 'com.google.guava:guava:33.2.1-jre' implementation 'io.grpc:grpc-protobuf:1.63.0' implementation 'io.grpc:grpc-stub:1.63.0' implementation 'io.grpc:grpc-services:1.63.0' From f8cd80cbb48e2951f22fdad544f580696364ea83 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Jun 2024 05:41:06 +0300 Subject: [PATCH 155/376] fix(deps): Update dependency gradle to v8.8 (#234) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://togithub.com/gradle/gradle)) | minor | `8.7` -> `8.8` | --- ### Release Notes
gradle/gradle (gradle) ### [`v8.8`](https://togithub.com/gradle/gradle/releases/tag/v8.8.0): 8.8 [Compare Source](https://togithub.com/gradle/gradle/compare/v8.7.0...v8.8.0) The Gradle team is excited to announce Gradle 8.8. [Read the Release Notes](https://docs.gradle.org/8.8/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [BjΓΆrn Kautler](https://togithub.com/Vampire), [Denes Daniel](https://togithub.com/pantherdd), [Fabian Windheuser](https://togithub.com/fawind), [HΓ©lio Fernandes SebastiΓ£o](https://togithub.com/helfese), [Jay Wei](https://togithub.com/JayWei1215), [jhrom](https://togithub.com/jhrom), [jwp345](https://togithub.com/jwp345), [JΓΆrgen Andersson](https://togithub.com/jorander), [Kirill Gavrilov](https://togithub.com/gavvvr), [MajesticMagikarpKing](https://togithub.com/yctomwang), [Maksim Lazeba](https://togithub.com/M-Lazeba), [Philip Wedemann](https://togithub.com/hfhbd), [Robert Elliot](https://togithub.com/Mahoney), [RΓ³bert Papp](https://togithub.com/TWiStErRob), [Stefan M.](https://togithub.com/StefMa), [Tibor Vyletel](https://togithub.com/TiborVyletel), [Tony Robalik](https://togithub.com/autonomousapps), [Valentin Kulesh](https://togithub.com/unshare), [Yanming Zhou](https://togithub.com/quaff), [κΉ€μš©ν›„](https://togithub.com/who-is-hu) #### Upgrade instructions Switch your build to use Gradle 8.8 by updating your wrapper: ./gradlew wrapper --gradle-version=8.8 See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.8/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.8/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://togithub.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b82aa23..a441313 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 1aa94a4..b740cf1 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. From a17d68b4fc8483269b2d3aee8c3bf4caa6da4b8d Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Jun 2024 05:44:32 +0300 Subject: [PATCH 156/376] fix(deps): Update dependency org.assertj:assertj-core to v3.26.0 (#235) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.assertj:assertj-core](https://assertj.github.io/doc/#assertj-core) ([source](https://togithub.com/assertj/assertj)) | dependencies | minor | `3.25.3` -> `3.26.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 30d5fd8..c8696e1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -56,7 +56,7 @@ dependencies { testImplementation 'org.mockito:mockito-core:5.11.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.11.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.16.1' - testImplementation 'org.assertj:assertj-core:3.25.3' + testImplementation 'org.assertj:assertj-core:3.26.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.2' runtimeOnly "org.apache.arrow:arrow-memory-netty:15.0.2" From 263359bef71d5861d8f9e13c3a0f2d2753069d49 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Jun 2024 06:25:00 +0300 Subject: [PATCH 157/376] fix(deps): Update grpc-java monorepo to v1.64.0 (#236) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-inprocess](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.63.0` -> `1.64.0` | | [io.grpc:grpc-testing](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.63.0` -> `1.64.0` | | [io.grpc:grpc-services](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.63.0` -> `1.64.0` | | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.63.0` -> `1.64.0` | | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.63.0` -> `1.64.0` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.64.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.64.0) ##### API Changes - compiler: the option `jakarta_omit` was renamed `@generated=omit` ([#​11086](https://togithub.com/grpc/grpc-java/issues/11086)) ([`8a21afc`](https://togithub.com/grpc/grpc-java/commit/8a21afcc9)) ##### New Features - New API LoadBalancer.getChannelTarget() ([`4561bb5`](https://togithub.com/grpc/grpc-java/commit/4561bb5b8)) - opentelemetry: Publish new module grpc-opentelemetry ([`5ba1a55`](https://togithub.com/grpc/grpc-java/commit/5ba1a5563)). The feature is still missing documentation and an example. It only supports metrics; tracing and logs will be future enhancements. See [gRFC A66](https://togithub.com/grpc/proposal/blob/master/A66-otel-stats.md) - bazel: Add support for bzlmod ([#​11046](https://togithub.com/grpc/grpc-java/issues/11046)) ([`d1890c0`](https://togithub.com/grpc/grpc-java/commit/d1890c0ac)) - bazel: Replace usages of the old compatibility maven targets with `@maven` targets ([`0064991`](https://togithub.com/grpc/grpc-java/commit/00649913b)) - okhttp: Support serverBuilder.maxConcurrentCallsPerConnection (Fixes [#​11062](https://togithub.com/grpc/grpc-java/issues/11062)). ([#​11063](https://togithub.com/grpc/grpc-java/issues/11063)) ([`8050723`](https://togithub.com/grpc/grpc-java/commit/805072339)) - xds: Experimental metrics recording in WRR LB ([`06df25b`](https://togithub.com/grpc/grpc-java/commit/06df25b65), [`35a171b`](https://togithub.com/grpc/grpc-java/commit/35a171bc1), [`2897b39`](https://togithub.com/grpc/grpc-java/commit/2897b3939)), to be exported by grpc-opentelemetry if explicitly enabled in GrpcOpenTelemetry. See [gRFC A78](https://togithub.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md) - rls: Experimental metrics recording in RLS LB ([`a9fb272`](https://togithub.com/grpc/grpc-java/commit/a9fb272b7), [`a1d1932`](https://togithub.com/grpc/grpc-java/commit/a1d19327f), [`8133318`](https://togithub.com/grpc/grpc-java/commit/813331837)), to be exported by grpc-opentelemetry if explicitly enabled in GrpcOpenTelemetry ##### Improvements - examples: support bazel build for retry policy example ([`58de563`](https://togithub.com/grpc/grpc-java/commit/58de563fa)) - netty: Allow deframer errors to close stream with a status code, as long as headers have not yet been sent ([`e036b1b`](https://togithub.com/grpc/grpc-java/commit/e036b1b19)). This will greatly improve the debuggability of certain server errors in particular cases. Instead of the client seeing β€œCANCELLED: RST_STREAM closed stream. HTTP/2 error code: CANCEL”, they could see β€œRESOURCE_EXHAUSTED: gRPC message exceeds maximum size [`4194304`](https://togithub.com/grpc/grpc-java/commit/4194304): [`6144592`](https://togithub.com/grpc/grpc-java/commit/6144592)” - netty: Improve handling of unexpected write queue promise failures ([#​11016](https://togithub.com/grpc/grpc-java/issues/11016)) - servlet: Avoid unnecessary FINEST hex string conversion by checking log level. Fixes [#​11031](https://togithub.com/grpc/grpc-java/issues/11031). ([`f7ee5f3`](https://togithub.com/grpc/grpc-java/commit/f7ee5f318)) - StatusException/StatusRuntimeException hide stack trace in a simpler way ([#​11064](https://togithub.com/grpc/grpc-java/issues/11064)) ([`e36f099`](https://togithub.com/grpc/grpc-java/commit/e36f099be)) - util: Status desc for outlier detection ejection ([#​11036](https://togithub.com/grpc/grpc-java/issues/11036)) ([`10cb4a3`](https://togithub.com/grpc/grpc-java/commit/10cb4a3be)) - binder: Helper class to allow in process servers to use peer uids in test ([#​11014](https://togithub.com/grpc/grpc-java/issues/11014)) ([`537dbe8`](https://togithub.com/grpc/grpc-java/commit/537dbe826)) - Add `load()` statements for the Bazel builtin top-level java symbols ([#​11105](https://togithub.com/grpc/grpc-java/issues/11105)) ([`add8c37`](https://togithub.com/grpc/grpc-java/commit/add8c37a4)) - Add `StatusProto.toStatusException` overload to accept `Throwable` ([#​11083](https://togithub.com/grpc/grpc-java/issues/11083)) ([`5c9b492`](https://togithub.com/grpc/grpc-java/commit/5c9b49231)) ##### Bug fixes - Fix retry race condition that can lead to double decrementing inFlightSubStreams and so miss calling closed ([#​11026](https://togithub.com/grpc/grpc-java/issues/11026)) ([`bdb6230`](https://togithub.com/grpc/grpc-java/commit/bdb623031)) - Change defaults to use the older PickFirstLoadBalancer and disable Happy Eyeballs. This disables a performance optimization added in v1.63. ([#​11120](https://togithub.com/grpc/grpc-java/issues/11120)) We have had a report that the new implementation can trigger a NullPointerException - core: Transition to CONNECTING immediately when exiting idle ([`2c5f0c2`](https://togithub.com/grpc/grpc-java/commit/2c5f0c22c)). Previously the visible state change from `channel.getState()` was delayed until the name resolver returned results. This had no impact to RPC behavior - xds: Specify a locale for upper/lower case conversions ([`e630593`](https://togithub.com/grpc/grpc-java/commit/e6305930d)) - rls: Synchronization fixes in CachingRlsLbClient ([`6e97b18`](https://togithub.com/grpc/grpc-java/commit/6e97b180b)). These races had not been witnessed in practice - rls: Guarantee backoff will update RLS picker ([`f9b6e5f`](https://togithub.com/grpc/grpc-java/commit/f9b6e5f92)). This fixes a regression introduced by [`6e97b18`](https://togithub.com/grpc/grpc-java/commit/6e97b180b) that could hang RPCs instead of using fallback, but fixes a pre-existing bug that could greatly delay RPCs from using fallback. - rls: Fix time handling in CachingRlsLbClient ([`da619e2`](https://togithub.com/grpc/grpc-java/commit/da619e2bd)). This could have caused backoff entries to improperly be considered expired - xds: Properly disable the default endpoint identification algorithm with XdsChannelCredentials ([`097a46b`](https://togithub.com/grpc/grpc-java/commit/097a46b76)). The credential does its own verification and the default needs to be disabled for SPIFFE - netty: Release SendGrpcFrameCommand when stream is missing ([#​11116](https://togithub.com/grpc/grpc-java/issues/11116)) ([`fb9a108`](https://togithub.com/grpc/grpc-java/commit/fb9a10809)) - okhttp: Remove finished stream even if a pending stream was started ([`d21fe32`](https://togithub.com/grpc/grpc-java/commit/d21fe32be)) ##### Dependencies - cronet: Update Cronet to latest release + Move to Stable Cronet APIs. ([`5a8da19`](https://togithub.com/grpc/grpc-java/commit/5a8da19f3)) - cronet: [@​javadoc](https://togithub.com/javadoc) update android permission MODIFY_NETWORK_ACCOUNTING (deprecated) => UPDATE_DEVICE_STATS ([`c703a1e`](https://togithub.com/grpc/grpc-java/commit/c703a1ee0)) - cronet: Update to Java-8 API's and tighten the scopes ([`163efa3`](https://togithub.com/grpc/grpc-java/commit/163efa371)) - cronet: Update to StandardCharsets and assertNotNull API's ([`77e59b2`](https://togithub.com/grpc/grpc-java/commit/77e59b29d)) ##### Acknowledgements [@​panchenko](https://togithub.com/panchenko) [@​Ashok-Varma](https://togithub.com/Ashok-Varma) [@​benjaminp](https://togithub.com/benjaminp) [@​AutomatedTester](https://togithub.com/AutomatedTester) [@​hypnoce](https://togithub.com/hypnoce) [@​keith](https://togithub.com/keith) [@​laglangyue](https://togithub.com/laglangyue) [@​rostik404](https://togithub.com/rostik404) [@​ryanpbrewster](https://togithub.com/ryanpbrewster) [@​abtom](https://togithub.com/abtom) [@​hvadehra](https://togithub.com/hvadehra) [@​rtadepalli](https://togithub.com/rtadepalli) ### [`v1.63.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.63.1) ##### Bug fixes - netty: Release SendGrpcFrameCommand when stream is missing ([#​11116](https://togithub.com/grpc/grpc-java/issues/11116)) ([`fb9a108`](https://togithub.com/grpc/grpc-java/commit/fb9a10809)) - Change defaults to use the older PickFirstLoadBalancer and disable Happy Eyeballs. This disables a performance optimization added in v1.63.0 ([#​11120](https://togithub.com/grpc/grpc-java/issues/11120)) We have had a report that the new implementation can trigger a NullPointerException
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index c8696e1..908a774 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,9 +34,9 @@ dependencies { implementation 'com.google.guava:guava:33.2.1-jre' implementation 'info.picocli:picocli:4.7.6' implementation 'com.google.guava:guava:33.2.1-jre' - implementation 'io.grpc:grpc-protobuf:1.63.0' - implementation 'io.grpc:grpc-stub:1.63.0' - implementation 'io.grpc:grpc-services:1.63.0' + implementation 'io.grpc:grpc-protobuf:1.64.0' + implementation 'io.grpc:grpc-stub:1.64.0' + implementation 'io.grpc:grpc-services:1.64.0' implementation 'io.cloudquery:plugin-pb-java:0.0.17' implementation 'org.apache.arrow:arrow-memory-core:15.0.2' implementation 'org.apache.arrow:arrow-vector:15.0.2' @@ -48,8 +48,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.23.1' implementation 'org.apache.logging.log4j:log4j-core:2.23.1' - testImplementation 'io.grpc:grpc-testing:1.63.0' - testImplementation 'io.grpc:grpc-inprocess:1.63.0' + testImplementation 'io.grpc:grpc-testing:1.64.0' + testImplementation 'io.grpc:grpc-inprocess:1.64.0' testImplementation platform('org.junit:junit-bom:5.10.2') testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2' From ae93cd036b3f64a1ec9fafc894c4379ff241817c Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Jun 2024 06:28:33 +0300 Subject: [PATCH 158/376] fix(deps): Update mockito monorepo to v5.12.0 (#237) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.mockito:mockito-junit-jupiter](https://togithub.com/mockito/mockito) | dependencies | minor | `5.11.0` -> `5.12.0` | | [org.mockito:mockito-core](https://togithub.com/mockito/mockito) | dependencies | minor | `5.11.0` -> `5.12.0` | --- ### Release Notes
mockito/mockito (org.mockito:mockito-junit-jupiter) ### [`v5.12.0`](https://togithub.com/mockito/mockito/releases/tag/v5.12.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://togithub.com/shipkit/shipkit-changelog)* ##### 5.12.0 - 2024-05-11 - [25 commit(s)](https://togithub.com/mockito/mockito/compare/v5.11.0...v5.12.0) by Piotr Przybylak, Stefano Cordio, Tim van der Lippe, dependabot\[bot], jonghoonpark - Bump com.gradle.enterprise from 3.17.2 to 3.17.3 [(#​3341)](https://togithub.com/mockito/mockito/pull/3341) - Bump org.jetbrains.kotlin:kotlin-stdlib from 1.9.23 to 1.9.24 [(#​3339)](https://togithub.com/mockito/mockito/pull/3339) - Bump versions.bytebuddy from 1.14.14 to 1.14.15 [(#​3338)](https://togithub.com/mockito/mockito/pull/3338) - Bump org.shipkit:shipkit-auto-version from 2.0.6 to 2.0.7 [(#​3337)](https://togithub.com/mockito/mockito/pull/3337) - Bump org.jetbrains.kotlin:kotlin-gradle-plugin from 1.9.23 to 1.9.24 [(#​3336)](https://togithub.com/mockito/mockito/pull/3336) - Fixes [#​3331](https://togithub.com/mockito/mockito/issues/3331) : Fix `AdditionalMatchers.and()` and `AdditionalMatchers.or()` not to swap the order of matchers [(#​3335)](https://togithub.com/mockito/mockito/pull/3335) - AdditionalMatchers.and() and or() swap matcher order [(#​3331)](https://togithub.com/mockito/mockito/issues/3331) - Bump gradle/wrapper-validation-action from 3.3.1 to 3.3.2 [(#​3327)](https://togithub.com/mockito/mockito/pull/3327) - Bump versions.bytebuddy from 1.14.13 to 1.14.14 [(#​3324)](https://togithub.com/mockito/mockito/pull/3324) - Bump org.shipkit:shipkit-auto-version from 2.0.5 to 2.0.6 [(#​3322)](https://togithub.com/mockito/mockito/pull/3322) - Bump gradle/wrapper-validation-action from 3.3.0 to 3.3.1 [(#​3320)](https://togithub.com/mockito/mockito/pull/3320) - Bump com.gradle.enterprise from 3.17 to 3.17.2 [(#​3318)](https://togithub.com/mockito/mockito/pull/3318) - Bump gradle/wrapper-validation-action from 2.1.2 to 3.3.0 [(#​3317)](https://togithub.com/mockito/mockito/pull/3317) - Update codecov-action version [(#​3316)](https://togithub.com/mockito/mockito/pull/3316) - Bump com.google.googlejavaformat:google-java-format from 1.21.0 to 1.22.0 [(#​3312)](https://togithub.com/mockito/mockito/pull/3312) - Bump com.gradle.enterprise from 3.16.2 to 3.17 [(#​3311)](https://togithub.com/mockito/mockito/pull/3311) - Bump versions.bytebuddy from 1.14.12 to 1.14.13 [(#​3308)](https://togithub.com/mockito/mockito/pull/3308) - Fix README logo [(#​3305)](https://togithub.com/mockito/mockito/pull/3305) - Bump gradle/wrapper-validation-action from 2.1.1 to 2.1.2 [(#​3303)](https://togithub.com/mockito/mockito/pull/3303) - Bump org.shipkit:shipkit-auto-version from 2.0.4 to 2.0.5 [(#​3298)](https://togithub.com/mockito/mockito/pull/3298) - Bump org.jetbrains.kotlin:kotlin-gradle-plugin from 1.9.22 to 1.9.23 [(#​3296)](https://togithub.com/mockito/mockito/pull/3296) - Bump org.eclipse.platform:org.eclipse.osgi from 3.18.600 to 3.19.0 [(#​3295)](https://togithub.com/mockito/mockito/pull/3295) - Bump org.jetbrains.kotlin:kotlin-stdlib from 1.9.22 to 1.9.23 [(#​3292)](https://togithub.com/mockito/mockito/pull/3292) - Bump com.google.googlejavaformat:google-java-format from 1.20.0 to 1.21.0 [(#​3291)](https://togithub.com/mockito/mockito/pull/3291) - Fixes [#​3286](https://togithub.com/mockito/mockito/issues/3286) : Mockito.only() points to the wanted call as unwanted if it is the first being calledIssue3286 [(#​3287)](https://togithub.com/mockito/mockito/pull/3287) - Mockito.only() points to the wanted call as unwanted if it is the first being called. [(#​3286)](https://togithub.com/mockito/mockito/issues/3286) - Bump org.codehaus.groovy:groovy from 3.0.20 to 3.0.21 [(#​3284)](https://togithub.com/mockito/mockito/pull/3284)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 908a774..356fb89 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -53,8 +53,8 @@ dependencies { testImplementation platform('org.junit:junit-bom:5.10.2') testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2' - testImplementation 'org.mockito:mockito-core:5.11.0' - testImplementation 'org.mockito:mockito-junit-jupiter:5.11.0' + testImplementation 'org.mockito:mockito-core:5.12.0' + testImplementation 'org.mockito:mockito-junit-jupiter:5.12.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.16.1' testImplementation 'org.assertj:assertj-core:3.26.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.2' From 2df653e35924848f1e3c37f278e44efb10244514 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 2 Jun 2024 20:20:18 +0300 Subject: [PATCH 159/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.18 (#238) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.17` -> `0.0.18` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 356fb89..fe9eaf9 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.64.0' implementation 'io.grpc:grpc-stub:1.64.0' implementation 'io.grpc:grpc-services:1.64.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.17' + implementation 'io.cloudquery:plugin-pb-java:0.0.18' implementation 'org.apache.arrow:arrow-memory-core:15.0.2' implementation 'org.apache.arrow:arrow-vector:15.0.2' implementation 'commons-io:commons-io:2.16.1' From 7b3910c770842b6703d958ec7dd8edf3b7b24352 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 3 Jun 2024 13:03:48 +0300 Subject: [PATCH 160/376] chore(main): Release v0.0.29 (#231) :robot: I have created a release *beep* *boop* --- ## [0.0.29](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.28...v0.0.29) (2024-06-02) ### Bug Fixes * **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.17.1 ([#229](https://github.com/cloudquery/plugin-sdk-java/issues/229)) ([838b81b](https://github.com/cloudquery/plugin-sdk-java/commit/838b81b45c22dc93e0cb6833b481300f49ee361a)) * **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.17.1 ([#230](https://github.com/cloudquery/plugin-sdk-java/issues/230)) ([2266863](https://github.com/cloudquery/plugin-sdk-java/commit/2266863f941764485606805c70c7a3e407c19fb8)) * **deps:** Update dependency com.google.guava:guava to v33.2.1-jre ([#233](https://github.com/cloudquery/plugin-sdk-java/issues/233)) ([c98b5f3](https://github.com/cloudquery/plugin-sdk-java/commit/c98b5f37e7cd2fb5656b0baa8d8862fa5fd5b925)) * **deps:** Update dependency gradle to v8.8 ([#234](https://github.com/cloudquery/plugin-sdk-java/issues/234)) ([f8cd80c](https://github.com/cloudquery/plugin-sdk-java/commit/f8cd80cbb48e2951f22fdad544f580696364ea83)) * **deps:** Update dependency info.picocli:picocli to v4.7.6 ([#232](https://github.com/cloudquery/plugin-sdk-java/issues/232)) ([c66f061](https://github.com/cloudquery/plugin-sdk-java/commit/c66f061f1bf03906bbb58b39b5ca107050191063)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.18 ([#238](https://github.com/cloudquery/plugin-sdk-java/issues/238)) ([2df653e](https://github.com/cloudquery/plugin-sdk-java/commit/2df653e35924848f1e3c37f278e44efb10244514)) * **deps:** Update dependency org.assertj:assertj-core to v3.26.0 ([#235](https://github.com/cloudquery/plugin-sdk-java/issues/235)) ([a17d68b](https://github.com/cloudquery/plugin-sdk-java/commit/a17d68b4fc8483269b2d3aee8c3bf4caa6da4b8d)) * **deps:** Update grpc-java monorepo to v1.64.0 ([#236](https://github.com/cloudquery/plugin-sdk-java/issues/236)) ([263359b](https://github.com/cloudquery/plugin-sdk-java/commit/263359bef71d5861d8f9e13c3a0f2d2753069d49)) * **deps:** Update mockito monorepo to v5.12.0 ([#237](https://github.com/cloudquery/plugin-sdk-java/issues/237)) ([ae93cd0](https://github.com/cloudquery/plugin-sdk-java/commit/ae93cd036b3f64a1ec9fafc894c4379ff241817c)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 15 +++++++++++++++ lib/build.gradle | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 8ea009a..d365e8f 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.28" + ".": "0.0.29" } diff --git a/CHANGELOG.md b/CHANGELOG.md index db0b03e..ad0b42b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [0.0.29](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.28...v0.0.29) (2024-06-02) + + +### Bug Fixes + +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.17.1 ([#229](https://github.com/cloudquery/plugin-sdk-java/issues/229)) ([838b81b](https://github.com/cloudquery/plugin-sdk-java/commit/838b81b45c22dc93e0cb6833b481300f49ee361a)) +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.17.1 ([#230](https://github.com/cloudquery/plugin-sdk-java/issues/230)) ([2266863](https://github.com/cloudquery/plugin-sdk-java/commit/2266863f941764485606805c70c7a3e407c19fb8)) +* **deps:** Update dependency com.google.guava:guava to v33.2.1-jre ([#233](https://github.com/cloudquery/plugin-sdk-java/issues/233)) ([c98b5f3](https://github.com/cloudquery/plugin-sdk-java/commit/c98b5f37e7cd2fb5656b0baa8d8862fa5fd5b925)) +* **deps:** Update dependency gradle to v8.8 ([#234](https://github.com/cloudquery/plugin-sdk-java/issues/234)) ([f8cd80c](https://github.com/cloudquery/plugin-sdk-java/commit/f8cd80cbb48e2951f22fdad544f580696364ea83)) +* **deps:** Update dependency info.picocli:picocli to v4.7.6 ([#232](https://github.com/cloudquery/plugin-sdk-java/issues/232)) ([c66f061](https://github.com/cloudquery/plugin-sdk-java/commit/c66f061f1bf03906bbb58b39b5ca107050191063)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.18 ([#238](https://github.com/cloudquery/plugin-sdk-java/issues/238)) ([2df653e](https://github.com/cloudquery/plugin-sdk-java/commit/2df653e35924848f1e3c37f278e44efb10244514)) +* **deps:** Update dependency org.assertj:assertj-core to v3.26.0 ([#235](https://github.com/cloudquery/plugin-sdk-java/issues/235)) ([a17d68b](https://github.com/cloudquery/plugin-sdk-java/commit/a17d68b4fc8483269b2d3aee8c3bf4caa6da4b8d)) +* **deps:** Update grpc-java monorepo to v1.64.0 ([#236](https://github.com/cloudquery/plugin-sdk-java/issues/236)) ([263359b](https://github.com/cloudquery/plugin-sdk-java/commit/263359bef71d5861d8f9e13c3a0f2d2753069d49)) +* **deps:** Update mockito monorepo to v5.12.0 ([#237](https://github.com/cloudquery/plugin-sdk-java/issues/237)) ([ae93cd0](https://github.com/cloudquery/plugin-sdk-java/commit/ae93cd036b3f64a1ec9fafc894c4379ff241817c)) + ## [0.0.28](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.27...v0.0.28) (2024-05-06) diff --git a/lib/build.gradle b/lib/build.gradle index fe9eaf9..3e43b99 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.28' +version = '0.0.29' // x-release-please-end repositories { From 33ab8e4f086f3a922ecf842787e9fe7053594169 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 30 Jun 2024 20:57:10 -0400 Subject: [PATCH 161/376] chore(deps): Update github-actions (#239) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/gradle-build-action | action | digest | `4c39dd8` -> `66535aa` | | gradle/wrapper-validation-action | action | digest | `216d1ad` -> `8842585` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a41e9d9..c32e801 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@216d1ad2b3710bf005dc39237337b9673fd8fcd5 + uses: gradle/wrapper-validation-action@88425854a36845f9c881450d9660b5fd46bee142 - name: Build package run: ./gradlew build env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 7eadcf0..be01aa7 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,9 +16,9 @@ jobs: java-version: '18' cache: 'gradle' - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@216d1ad2b3710bf005dc39237337b9673fd8fcd5 + uses: gradle/wrapper-validation-action@88425854a36845f9c881450d9660b5fd46bee142 - name: Publish package - uses: gradle/gradle-build-action@4c39dd82cd5e1ec7c6fa0173bb41b4b6bb3b86ff + uses: gradle/gradle-build-action@66535aaf56f831b35e3a8481c9c99b665b84dd45 with: arguments: publish env: From 1863b62ee6fe2e8d8b9504db81604cbc33178b0e Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 30 Jun 2024 21:05:52 -0400 Subject: [PATCH 162/376] fix(deps): Update junit5 monorepo to v5.10.3 (#240) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.junit.jupiter:junit-jupiter-engine](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.10.2` -> `5.10.3` | | [org.junit.jupiter:junit-jupiter-api](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.10.2` -> `5.10.3` | | [org.junit.jupiter:junit-jupiter](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.10.2` -> `5.10.3` | | [org.junit:junit-bom](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.10.2` -> `5.10.3` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 3e43b99..6b0d717 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -50,14 +50,14 @@ dependencies { testImplementation 'io.grpc:grpc-testing:1.64.0' testImplementation 'io.grpc:grpc-inprocess:1.64.0' - testImplementation platform('org.junit:junit-bom:5.10.2') - testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2' + testImplementation platform('org.junit:junit-bom:5.10.3') + testImplementation 'org.junit.jupiter:junit-jupiter:5.10.3' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.3' testImplementation 'org.mockito:mockito-core:5.12.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.12.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.16.1' testImplementation 'org.assertj:assertj-core:3.26.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.2' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.3' runtimeOnly "org.apache.arrow:arrow-memory-netty:15.0.2" } From 79ad2c50d96dd4d6e4e5a1a2091ce32b12245006 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 30 Jun 2024 21:56:41 -0400 Subject: [PATCH 163/376] fix(deps): Update grpc-java monorepo to v1.65.0 (#242) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-inprocess](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.64.0` -> `1.65.0` | | [io.grpc:grpc-testing](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.64.0` -> `1.65.0` | | [io.grpc:grpc-services](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.64.0` -> `1.65.0` | | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.64.0` -> `1.65.0` | | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.64.0` -> `1.65.0` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.65.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.65.0) grpc-netty in this release is compatible with Netty 4.1.111; it fixes the incompatibility that caused data corruption. grpc-netty-shaded is still using Netty 4.1.100. ##### New Features - New module grpc-gcp-csm-observability ([`df8cfe9`](https://togithub.com/grpc/grpc-java/commit/df8cfe9dd)) ##### Improvements - api: Add `ClientStreamTracer.inboundHeaders(Metadata)` ([`960012d`](https://togithub.com/grpc/grpc-java/commit/960012d76)). This is the same as the existing `inboundHeaders()`, but is provided the Metadata - api: Fix various typos in the documentation ([#​11144](https://togithub.com/grpc/grpc-java/issues/11144)) ([`6ec744f`](https://togithub.com/grpc/grpc-java/commit/6ec744f2a)) - core: When queuing RPCs, don’t request picks from the LB twice ([`8844cf7`](https://togithub.com/grpc/grpc-java/commit/8844cf7b8)). This could be viewed as a small performance optimization, but mainly reduces the amount of race-handling code - util: Improve AdvancedTlsX509KeyManager’s documentation, verification, and testing. ([#​11139](https://togithub.com/grpc/grpc-java/issues/11139)) ([`781b4c4`](https://togithub.com/grpc/grpc-java/commit/781b4c457)) This change shows `@ExperimentalApi` being removed, but it was re-added in [`3c97245`](https://togithub.com/grpc/grpc-java/commit/3c97245) before the release - examples: Fix broken command in reflection readme ([#​11131](https://togithub.com/grpc/grpc-java/issues/11131)) ([`c31dbf4`](https://togithub.com/grpc/grpc-java/commit/c31dbf48a)) - binder: Add a connection timeout ([#​11255](https://togithub.com/grpc/grpc-java/issues/11255)) ([`791f894`](https://togithub.com/grpc/grpc-java/commit/791f894e2)) ##### Bug fixes - core: Exit idle mode when delayed transport is in use ([`fea577c`](https://togithub.com/grpc/grpc-java/commit/fea577c80)). This was a long-standing race that could cause RPCs to hang, but was very unlikely to be hit. Avoiding the double-picking ([`8844cf7`](https://togithub.com/grpc/grpc-java/commit/8844cf7b8)) made the race more visible - netty: Fix Netty composite buffer merging to be compatible with Netty 4.1.111 ([#​11294](https://togithub.com/grpc/grpc-java/issues/11294)) ([`0fea7dd`](https://togithub.com/grpc/grpc-java/commit/0fea7dd)). The previous behavior easily caused data corruption - okhttp: Workaround SSLSocket not noticing socket is closed ([`a28357e`](https://togithub.com/grpc/grpc-java/commit/a28357e19)). Previously, shutting down when a new connection was being established could result in the server never becoming terminated - inprocess: Fix listener race if transport is shutdown while starting ([`e4e7f3a`](https://togithub.com/grpc/grpc-java/commit/e4e7f3a06)). This issue was unlikely to be hit outside of specialized tests - services: restore //services:binarylog bazel target ([#​11292](https://togithub.com/grpc/grpc-java/issues/11292)) ([`d57f271`](https://togithub.com/grpc/grpc-java/commit/d57f271)). This fixes a regression introduced in 1.62.2 - binder: Wait for all server transports to terminate before returning the security policy executor to the object pool ([#​11240](https://togithub.com/grpc/grpc-java/issues/11240)) ([`34ee600`](https://togithub.com/grpc/grpc-java/commit/34ee600dc)) - binder: Reject further SETUP_TRANSPORT requests post-BinderServer shutdown ([#​11260](https://togithub.com/grpc/grpc-java/issues/11260)) ([`1670e97`](https://togithub.com/grpc/grpc-java/commit/1670e97f7)) - bazel: Include missing com_google_protobuf_javalite in MODULE.bazel ([#​11147](https://togithub.com/grpc/grpc-java/issues/11147)) ([`f995c12`](https://togithub.com/grpc/grpc-java/commit/f995c121e)) ##### Thanks to [@​hakusai22](https://togithub.com/hakusai22) [@​firov](https://togithub.com/firov) [@​mateusazis](https://togithub.com/mateusazis) [@​Mir3605](https://togithub.com/Mir3605) [@​niloc132](https://togithub.com/niloc132) ### [`v1.64.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.64.1) ##### What's Changed - netty:Fix Netty composite buffer merging to be compatible with Netty 4.1.111 (1.64.x backport) by [@​larry-safran](https://togithub.com/larry-safran) in [https://github.com/grpc/grpc-java/pull/11303](https://togithub.com/grpc/grpc-java/pull/11303)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 6b0d717..19f9ae6 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,9 +34,9 @@ dependencies { implementation 'com.google.guava:guava:33.2.1-jre' implementation 'info.picocli:picocli:4.7.6' implementation 'com.google.guava:guava:33.2.1-jre' - implementation 'io.grpc:grpc-protobuf:1.64.0' - implementation 'io.grpc:grpc-stub:1.64.0' - implementation 'io.grpc:grpc-services:1.64.0' + implementation 'io.grpc:grpc-protobuf:1.65.0' + implementation 'io.grpc:grpc-stub:1.65.0' + implementation 'io.grpc:grpc-services:1.65.0' implementation 'io.cloudquery:plugin-pb-java:0.0.18' implementation 'org.apache.arrow:arrow-memory-core:15.0.2' implementation 'org.apache.arrow:arrow-vector:15.0.2' @@ -48,8 +48,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.23.1' implementation 'org.apache.logging.log4j:log4j-core:2.23.1' - testImplementation 'io.grpc:grpc-testing:1.64.0' - testImplementation 'io.grpc:grpc-inprocess:1.64.0' + testImplementation 'io.grpc:grpc-testing:1.65.0' + testImplementation 'io.grpc:grpc-inprocess:1.65.0' testImplementation platform('org.junit:junit-bom:5.10.3') testImplementation 'org.junit.jupiter:junit-jupiter:5.10.3' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.3' From 27c804403f38f12e6bca568057888c4f61871e0e Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 8 Jul 2024 05:21:51 -0400 Subject: [PATCH 164/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.19 (#243) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.18` -> `0.0.19` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 19f9ae6..f390bf1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.65.0' implementation 'io.grpc:grpc-stub:1.65.0' implementation 'io.grpc:grpc-services:1.65.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.18' + implementation 'io.cloudquery:plugin-pb-java:0.0.19' implementation 'org.apache.arrow:arrow-memory-core:15.0.2' implementation 'org.apache.arrow:arrow-vector:15.0.2' implementation 'commons-io:commons-io:2.16.1' From 95849d7fde50128bca9fd2532a5b2990764d048e Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 8 Jul 2024 06:48:31 -0400 Subject: [PATCH 165/376] chore(main): Release v0.0.30 (#241) :robot: I have created a release *beep* *boop* --- ## [0.0.30](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.29...v0.0.30) (2024-07-08) ### Bug Fixes * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.19 ([#243](https://github.com/cloudquery/plugin-sdk-java/issues/243)) ([27c8044](https://github.com/cloudquery/plugin-sdk-java/commit/27c804403f38f12e6bca568057888c4f61871e0e)) * **deps:** Update grpc-java monorepo to v1.65.0 ([#242](https://github.com/cloudquery/plugin-sdk-java/issues/242)) ([79ad2c5](https://github.com/cloudquery/plugin-sdk-java/commit/79ad2c50d96dd4d6e4e5a1a2091ce32b12245006)) * **deps:** Update junit5 monorepo to v5.10.3 ([#240](https://github.com/cloudquery/plugin-sdk-java/issues/240)) ([1863b62](https://github.com/cloudquery/plugin-sdk-java/commit/1863b62ee6fe2e8d8b9504db81604cbc33178b0e)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 9 +++++++++ lib/build.gradle | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d365e8f..2c2434c 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.29" + ".": "0.0.30" } diff --git a/CHANGELOG.md b/CHANGELOG.md index ad0b42b..6536e91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [0.0.30](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.29...v0.0.30) (2024-07-08) + + +### Bug Fixes + +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.19 ([#243](https://github.com/cloudquery/plugin-sdk-java/issues/243)) ([27c8044](https://github.com/cloudquery/plugin-sdk-java/commit/27c804403f38f12e6bca568057888c4f61871e0e)) +* **deps:** Update grpc-java monorepo to v1.65.0 ([#242](https://github.com/cloudquery/plugin-sdk-java/issues/242)) ([79ad2c5](https://github.com/cloudquery/plugin-sdk-java/commit/79ad2c50d96dd4d6e4e5a1a2091ce32b12245006)) +* **deps:** Update junit5 monorepo to v5.10.3 ([#240](https://github.com/cloudquery/plugin-sdk-java/issues/240)) ([1863b62](https://github.com/cloudquery/plugin-sdk-java/commit/1863b62ee6fe2e8d8b9504db81604cbc33178b0e)) + ## [0.0.29](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.28...v0.0.29) (2024-06-02) diff --git a/lib/build.gradle b/lib/build.gradle index f390bf1..7065d53 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.29' +version = '0.0.30' // x-release-please-end repositories { From 897d75d00ab51ca1a251bfb5197089969feeeadc Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Thu, 11 Jul 2024 09:39:35 +0100 Subject: [PATCH 166/376] chore: Switch to `googleapis/release-please-action` (#244) Part of https://github.com/cloudquery/cloudquery-issues/issues/1985 (internal issue). `google-github-actions/release-please-action` was archived and moved to `googleapis/release-please-action` --- .github/workflows/release_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release_pr.yml b/.github/workflows/release_pr.yml index a431fe5..ddb8a6b 100644 --- a/.github/workflows/release_pr.yml +++ b/.github/workflows/release_pr.yml @@ -8,7 +8,7 @@ jobs: release-please: runs-on: ubuntu-latest steps: - - uses: google-github-actions/release-please-action@v4 + - uses: googleapis/release-please-action@v4 id: release with: token: ${{ secrets.GH_CQ_BOT }} From e851ef872ee0b27f3c9888591ff7930370114a89 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 17 Jul 2024 10:21:08 -0400 Subject: [PATCH 167/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.20 (#245) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.19` -> `0.0.20` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 7065d53..11c5d04 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.65.0' implementation 'io.grpc:grpc-stub:1.65.0' implementation 'io.grpc:grpc-services:1.65.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.19' + implementation 'io.cloudquery:plugin-pb-java:0.0.20' implementation 'org.apache.arrow:arrow-memory-core:15.0.2' implementation 'org.apache.arrow:arrow-vector:15.0.2' implementation 'commons-io:commons-io:2.16.1' From b5cee0f41422e8d984100ee73b686f8ccdaefd4f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 17 Jul 2024 10:25:58 -0400 Subject: [PATCH 168/376] chore(main): Release v0.0.31 (#246) :robot: I have created a release *beep* *boop* --- ## [0.0.31](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.30...v0.0.31) (2024-07-17) ### Bug Fixes * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.20 ([#245](https://github.com/cloudquery/plugin-sdk-java/issues/245)) ([e851ef8](https://github.com/cloudquery/plugin-sdk-java/commit/e851ef872ee0b27f3c9888591ff7930370114a89)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2c2434c..86d3a97 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.30" + ".": "0.0.31" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 6536e91..5871357 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.31](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.30...v0.0.31) (2024-07-17) + + +### Bug Fixes + +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.20 ([#245](https://github.com/cloudquery/plugin-sdk-java/issues/245)) ([e851ef8](https://github.com/cloudquery/plugin-sdk-java/commit/e851ef872ee0b27f3c9888591ff7930370114a89)) + ## [0.0.30](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.29...v0.0.30) (2024-07-08) diff --git a/lib/build.gradle b/lib/build.gradle index 11c5d04..24df01f 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.30' +version = '0.0.31' // x-release-please-end repositories { From 4841a15ad58da5292ebd3c7737291394a46bb9f0 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 30 Jul 2024 10:44:03 -0400 Subject: [PATCH 169/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.21 (#247) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.20` -> `0.0.21` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 24df01f..07225f6 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.65.0' implementation 'io.grpc:grpc-stub:1.65.0' implementation 'io.grpc:grpc-services:1.65.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.20' + implementation 'io.cloudquery:plugin-pb-java:0.0.21' implementation 'org.apache.arrow:arrow-memory-core:15.0.2' implementation 'org.apache.arrow:arrow-vector:15.0.2' implementation 'commons-io:commons-io:2.16.1' From 76980e25f2e3b815093d8a1a97badc0c59465303 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:18:10 -0400 Subject: [PATCH 170/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.22 (#249) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.21` -> `0.0.22` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 07225f6..ad625d5 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.65.0' implementation 'io.grpc:grpc-stub:1.65.0' implementation 'io.grpc:grpc-services:1.65.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.21' + implementation 'io.cloudquery:plugin-pb-java:0.0.22' implementation 'org.apache.arrow:arrow-memory-core:15.0.2' implementation 'org.apache.arrow:arrow-vector:15.0.2' implementation 'commons-io:commons-io:2.16.1' From 87f2a368ceb73116f6a576a1572f9a06b42f7c02 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:24:18 -0400 Subject: [PATCH 171/376] chore(main): Release v0.0.32 (#248) :robot: I have created a release *beep* *boop* --- ## [0.0.32](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.31...v0.0.32) (2024-07-30) ### Bug Fixes * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.21 ([#247](https://github.com/cloudquery/plugin-sdk-java/issues/247)) ([4841a15](https://github.com/cloudquery/plugin-sdk-java/commit/4841a15ad58da5292ebd3c7737291394a46bb9f0)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.22 ([#249](https://github.com/cloudquery/plugin-sdk-java/issues/249)) ([76980e2](https://github.com/cloudquery/plugin-sdk-java/commit/76980e25f2e3b815093d8a1a97badc0c59465303)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ lib/build.gradle | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 86d3a97..96daa85 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.31" + ".": "0.0.32" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 5871357..146ebfa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.0.32](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.31...v0.0.32) (2024-07-30) + + +### Bug Fixes + +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.21 ([#247](https://github.com/cloudquery/plugin-sdk-java/issues/247)) ([4841a15](https://github.com/cloudquery/plugin-sdk-java/commit/4841a15ad58da5292ebd3c7737291394a46bb9f0)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.22 ([#249](https://github.com/cloudquery/plugin-sdk-java/issues/249)) ([76980e2](https://github.com/cloudquery/plugin-sdk-java/commit/76980e25f2e3b815093d8a1a97badc0c59465303)) + ## [0.0.31](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.30...v0.0.31) (2024-07-17) diff --git a/lib/build.gradle b/lib/build.gradle index ad625d5..1279003 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.31' +version = '0.0.32' // x-release-please-end repositories { From 28594e7c0d0cc03a2d589c783ce436336290b022 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 31 Jul 2024 20:49:20 -0400 Subject: [PATCH 172/376] chore(deps): Update github-actions (#250) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/gradle-build-action | action | digest | `66535aa` -> `ac2d340` | | gradle/wrapper-validation-action | action | digest | `8842585` -> `f9c9c57` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c32e801..bee02b1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@88425854a36845f9c881450d9660b5fd46bee142 + uses: gradle/wrapper-validation-action@f9c9c575b8b21b6485636a91ffecd10e558c62f6 - name: Build package run: ./gradlew build env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index be01aa7..6eac0c2 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,9 +16,9 @@ jobs: java-version: '18' cache: 'gradle' - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@88425854a36845f9c881450d9660b5fd46bee142 + uses: gradle/wrapper-validation-action@f9c9c575b8b21b6485636a91ffecd10e558c62f6 - name: Publish package - uses: gradle/gradle-build-action@66535aaf56f831b35e3a8481c9c99b665b84dd45 + uses: gradle/gradle-build-action@ac2d340dc04d9e1113182899e983b5400c17cda1 with: arguments: publish env: From d4abe8a3a8d7e8841018d7284efe224ab522764c Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 31 Jul 2024 20:54:08 -0400 Subject: [PATCH 173/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.17.2 (#251) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-annotations](https://togithub.com/FasterXML/jackson) ([source](https://togithub.com/FasterXML/jackson-annotations)) | dependencies | patch | `2.17.1` -> `2.17.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 1279003..d981d35 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -43,7 +43,7 @@ dependencies { implementation 'commons-io:commons-io:2.16.1' implementation "com.fasterxml.jackson.core:jackson-core:2.17.1" - implementation "com.fasterxml.jackson.core:jackson-annotations:2.17.1" + implementation "com.fasterxml.jackson.core:jackson-annotations:2.17.2" implementation 'org.apache.logging.log4j:log4j-api:2.23.1' implementation 'org.apache.logging.log4j:log4j-core:2.23.1' From d124e60dc1d3f3b88cc03a583cdf3b2be28fae4a Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 31 Jul 2024 21:44:56 -0400 Subject: [PATCH 174/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-core to v2.17.2 (#253) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-core](https://togithub.com/FasterXML/jackson-core) | dependencies | patch | `2.17.1` -> `2.17.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index d981d35..779a4e9 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -42,7 +42,7 @@ dependencies { implementation 'org.apache.arrow:arrow-vector:15.0.2' implementation 'commons-io:commons-io:2.16.1' - implementation "com.fasterxml.jackson.core:jackson-core:2.17.1" + implementation "com.fasterxml.jackson.core:jackson-core:2.17.2" implementation "com.fasterxml.jackson.core:jackson-annotations:2.17.2" implementation 'org.apache.logging.log4j:log4j-api:2.23.1' From 7084ec1fb38c8a3fd329069d6eb7f455b238a785 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 31 Jul 2024 21:48:32 -0400 Subject: [PATCH 175/376] fix(deps): Update dependency org.assertj:assertj-core to v3.26.3 (#254) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.assertj:assertj-core](https://assertj.github.io/doc/#assertj-core) ([source](https://togithub.com/assertj/assertj)) | dependencies | patch | `3.26.0` -> `3.26.3` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 779a4e9..27e2ee0 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -56,7 +56,7 @@ dependencies { testImplementation 'org.mockito:mockito-core:5.12.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.12.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.16.1' - testImplementation 'org.assertj:assertj-core:3.26.0' + testImplementation 'org.assertj:assertj-core:3.26.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.3' runtimeOnly "org.apache.arrow:arrow-memory-netty:15.0.2" From 8e0ba2fff1b8c209df67df5416043c131b9c8b1d Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 31 Jul 2024 22:36:09 -0400 Subject: [PATCH 176/376] fix(deps): Update eclipse-temurin Docker tag to v21.0.4_7-jre (#255) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | patch | `21.0.3_9-jre` -> `21.0.4_7-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 5c0a427..f15a432 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ COPY . . RUN gradle jar --no-daemon -FROM eclipse-temurin:21.0.3_9-jre +FROM eclipse-temurin:21.0.4_7-jre COPY --from=build /code/lib/build/libs/*.jar /app/app.jar From 909e42e4a17b8fd4e54430409cf739c67f43c449 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 31 Jul 2024 22:37:26 -0400 Subject: [PATCH 177/376] fix(deps): Update grpc-java monorepo to v1.65.1 (#256) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-inprocess](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.65.0` -> `1.65.1` | | [io.grpc:grpc-testing](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.65.0` -> `1.65.1` | | [io.grpc:grpc-services](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.65.0` -> `1.65.1` | | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.65.0` -> `1.65.1` | | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.65.0` -> `1.65.1` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.65.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.65.1) ##### What's Changed - netty: Restore old behavior of NettyAdaptiveCumulator, but avoid using that class if Netty is on version 4.1.111 or later
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 27e2ee0..a23f505 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,9 +34,9 @@ dependencies { implementation 'com.google.guava:guava:33.2.1-jre' implementation 'info.picocli:picocli:4.7.6' implementation 'com.google.guava:guava:33.2.1-jre' - implementation 'io.grpc:grpc-protobuf:1.65.0' - implementation 'io.grpc:grpc-stub:1.65.0' - implementation 'io.grpc:grpc-services:1.65.0' + implementation 'io.grpc:grpc-protobuf:1.65.1' + implementation 'io.grpc:grpc-stub:1.65.1' + implementation 'io.grpc:grpc-services:1.65.1' implementation 'io.cloudquery:plugin-pb-java:0.0.22' implementation 'org.apache.arrow:arrow-memory-core:15.0.2' implementation 'org.apache.arrow:arrow-vector:15.0.2' @@ -48,8 +48,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.23.1' implementation 'org.apache.logging.log4j:log4j-core:2.23.1' - testImplementation 'io.grpc:grpc-testing:1.65.0' - testImplementation 'io.grpc:grpc-inprocess:1.65.0' + testImplementation 'io.grpc:grpc-testing:1.65.1' + testImplementation 'io.grpc:grpc-inprocess:1.65.1' testImplementation platform('org.junit:junit-bom:5.10.3') testImplementation 'org.junit.jupiter:junit-jupiter:5.10.3' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.3' From 1ae048e323aedee872c06ac0e5e097756e1fca8b Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 31 Jul 2024 23:17:49 -0400 Subject: [PATCH 178/376] fix(deps): Update dependency gradle to v8.9 (#257) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://togithub.com/gradle/gradle)) | minor | `8.8` -> `8.9` | --- ### Release Notes
gradle/gradle (gradle) ### [`v8.9`](https://togithub.com/gradle/gradle/releases/tag/v8.9.0): 8.9 [Compare Source](https://togithub.com/gradle/gradle/compare/v8.8.0...v8.9.0) The Gradle team is excited to announce Gradle 8.9. [Read the Release Notes](https://docs.gradle.org/8.9/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [/dev/mataha](https://togithub.com/mataha), [Alex-Vol-Amz](https://togithub.com/Alex-Vol-Amz), [Andrew Quinney](https://togithub.com/aquinney0), [Andrey Mischenko](https://togithub.com/gildor), [BjΓΆrn Kautler](https://togithub.com/Vampire), [dancer13](https://togithub.com/dancer1325), [Danish Nawab](https://togithub.com/danishnawab), [Endeavour233](https://togithub.com/Endeavour233), [Gediminas RimΕ‘a](https://togithub.com/grimsa), [gotovsky](https://togithub.com/SergeyGotovskiy), [Jay Wei](https://togithub.com/JayWei1215), [Jeff](https://togithub.com/mathjeff), [Madalin Valceleanu](https://togithub.com/vmadalin), [markslater](https://togithub.com/markslater), [Mel Arthurs](https://togithub.com/arthursmel), [Michael](https://togithub.com/bean5), [Nils Brugger](https://togithub.com/nbrugger-tgm), [Ole Osterhagen](https://togithub.com/oleosterhagen), [Piotr Kubowicz](https://togithub.com/pkubowicz), [RΓ³bert Papp](https://togithub.com/TWiStErRob), [Sebastian Davids](https://togithub.com/sdavids), [Sebastian Schuberth](https://togithub.com/sschuberth), [Stefan Oehme](https://togithub.com/oehme), [Stefanos Koutsouflakis](https://togithub.com/stefanoskapa), [Taeik Lim](https://togithub.com/acktsap), [Tianyi Tao](https://togithub.com/tianyeeT), [Tim Nielens](https://togithub.com/tnielens), [Π½Π°Π±](https://togithub.com/nabijaczleweli) #### Upgrade instructions Switch your build to use Gradle 8.9 by updating your wrapper: ./gradlew wrapper --gradle-version=8.9 See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.9/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.9/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://togithub.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.jar | Bin 43453 -> 43504 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 5 ++++- gradlew.bat | 2 ++ 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e6441136f3d4ba8a0da8d277868979cfbc8ad796..2c3521197d7c4586c843d1d3e9090525f1898cde 100644 GIT binary patch delta 8703 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 Ojj7^59?Sdh$^Qpp*~F>< delta 8662 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a441313..09523c0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index b740cf1..f5feea6 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -84,7 +86,8 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum diff --git a/gradlew.bat b/gradlew.bat index 25da30d..9d21a21 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## From 21f5c43c470d7b0b3e20218eb447ccd10fd33568 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Aug 2024 04:18:41 -0400 Subject: [PATCH 179/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.23 (#259) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.22` -> `0.0.23` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index a23f505..0dc5735 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.65.1' implementation 'io.grpc:grpc-stub:1.65.1' implementation 'io.grpc:grpc-services:1.65.1' - implementation 'io.cloudquery:plugin-pb-java:0.0.22' + implementation 'io.cloudquery:plugin-pb-java:0.0.23' implementation 'org.apache.arrow:arrow-memory-core:15.0.2' implementation 'org.apache.arrow:arrow-vector:15.0.2' implementation 'commons-io:commons-io:2.16.1' From 07b5f5bdf6dab06b54fb08cbe3d6bd6fce6d9a3e Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Aug 2024 04:46:35 -0400 Subject: [PATCH 180/376] fix(deps): Update dependency org.apache.arrow:arrow-memory-core to v17 (#258) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.arrow:arrow-memory-core](https://arrow.apache.org/) ([source](https://togithub.com/apache/arrow)) | dependencies | major | `15.0.2` -> `17.0.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 0dc5735..1964d5a 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -38,8 +38,8 @@ dependencies { implementation 'io.grpc:grpc-stub:1.65.1' implementation 'io.grpc:grpc-services:1.65.1' implementation 'io.cloudquery:plugin-pb-java:0.0.23' - implementation 'org.apache.arrow:arrow-memory-core:15.0.2' - implementation 'org.apache.arrow:arrow-vector:15.0.2' + implementation 'org.apache.arrow:arrow-memory-core:17.0.0' + implementation 'org.apache.arrow:arrow-vector:17.0.0' implementation 'commons-io:commons-io:2.16.1' implementation "com.fasterxml.jackson.core:jackson-core:2.17.2" @@ -59,7 +59,7 @@ dependencies { testImplementation 'org.assertj:assertj-core:3.26.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.3' - runtimeOnly "org.apache.arrow:arrow-memory-netty:15.0.2" + runtimeOnly "org.apache.arrow:arrow-memory-netty:17.0.0" } test { From 3d0afe4ef2b3c408f5c7ff5ff9b0c1d8dd58104f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Aug 2024 05:00:50 -0400 Subject: [PATCH 181/376] chore(main): Release v0.0.33 (#252) :robot: I have created a release *beep* *boop* --- ## [0.0.33](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.32...v0.0.33) (2024-08-01) ### Bug Fixes * **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.17.2 ([#251](https://github.com/cloudquery/plugin-sdk-java/issues/251)) ([d4abe8a](https://github.com/cloudquery/plugin-sdk-java/commit/d4abe8a3a8d7e8841018d7284efe224ab522764c)) * **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.17.2 ([#253](https://github.com/cloudquery/plugin-sdk-java/issues/253)) ([d124e60](https://github.com/cloudquery/plugin-sdk-java/commit/d124e60dc1d3f3b88cc03a583cdf3b2be28fae4a)) * **deps:** Update dependency gradle to v8.9 ([#257](https://github.com/cloudquery/plugin-sdk-java/issues/257)) ([1ae048e](https://github.com/cloudquery/plugin-sdk-java/commit/1ae048e323aedee872c06ac0e5e097756e1fca8b)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.23 ([#259](https://github.com/cloudquery/plugin-sdk-java/issues/259)) ([21f5c43](https://github.com/cloudquery/plugin-sdk-java/commit/21f5c43c470d7b0b3e20218eb447ccd10fd33568)) * **deps:** Update dependency org.apache.arrow:arrow-memory-core to v17 ([#258](https://github.com/cloudquery/plugin-sdk-java/issues/258)) ([07b5f5b](https://github.com/cloudquery/plugin-sdk-java/commit/07b5f5bdf6dab06b54fb08cbe3d6bd6fce6d9a3e)) * **deps:** Update dependency org.assertj:assertj-core to v3.26.3 ([#254](https://github.com/cloudquery/plugin-sdk-java/issues/254)) ([7084ec1](https://github.com/cloudquery/plugin-sdk-java/commit/7084ec1fb38c8a3fd329069d6eb7f455b238a785)) * **deps:** Update eclipse-temurin Docker tag to v21.0.4_7-jre ([#255](https://github.com/cloudquery/plugin-sdk-java/issues/255)) ([8e0ba2f](https://github.com/cloudquery/plugin-sdk-java/commit/8e0ba2fff1b8c209df67df5416043c131b9c8b1d)) * **deps:** Update grpc-java monorepo to v1.65.1 ([#256](https://github.com/cloudquery/plugin-sdk-java/issues/256)) ([909e42e](https://github.com/cloudquery/plugin-sdk-java/commit/909e42e4a17b8fd4e54430409cf739c67f43c449)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 14 ++++++++++++++ lib/build.gradle | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 96daa85..25bf810 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.32" + ".": "0.0.33" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 146ebfa..8696b03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.0.33](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.32...v0.0.33) (2024-08-01) + + +### Bug Fixes + +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.17.2 ([#251](https://github.com/cloudquery/plugin-sdk-java/issues/251)) ([d4abe8a](https://github.com/cloudquery/plugin-sdk-java/commit/d4abe8a3a8d7e8841018d7284efe224ab522764c)) +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.17.2 ([#253](https://github.com/cloudquery/plugin-sdk-java/issues/253)) ([d124e60](https://github.com/cloudquery/plugin-sdk-java/commit/d124e60dc1d3f3b88cc03a583cdf3b2be28fae4a)) +* **deps:** Update dependency gradle to v8.9 ([#257](https://github.com/cloudquery/plugin-sdk-java/issues/257)) ([1ae048e](https://github.com/cloudquery/plugin-sdk-java/commit/1ae048e323aedee872c06ac0e5e097756e1fca8b)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.23 ([#259](https://github.com/cloudquery/plugin-sdk-java/issues/259)) ([21f5c43](https://github.com/cloudquery/plugin-sdk-java/commit/21f5c43c470d7b0b3e20218eb447ccd10fd33568)) +* **deps:** Update dependency org.apache.arrow:arrow-memory-core to v17 ([#258](https://github.com/cloudquery/plugin-sdk-java/issues/258)) ([07b5f5b](https://github.com/cloudquery/plugin-sdk-java/commit/07b5f5bdf6dab06b54fb08cbe3d6bd6fce6d9a3e)) +* **deps:** Update dependency org.assertj:assertj-core to v3.26.3 ([#254](https://github.com/cloudquery/plugin-sdk-java/issues/254)) ([7084ec1](https://github.com/cloudquery/plugin-sdk-java/commit/7084ec1fb38c8a3fd329069d6eb7f455b238a785)) +* **deps:** Update eclipse-temurin Docker tag to v21.0.4_7-jre ([#255](https://github.com/cloudquery/plugin-sdk-java/issues/255)) ([8e0ba2f](https://github.com/cloudquery/plugin-sdk-java/commit/8e0ba2fff1b8c209df67df5416043c131b9c8b1d)) +* **deps:** Update grpc-java monorepo to v1.65.1 ([#256](https://github.com/cloudquery/plugin-sdk-java/issues/256)) ([909e42e](https://github.com/cloudquery/plugin-sdk-java/commit/909e42e4a17b8fd4e54430409cf739c67f43c449)) + ## [0.0.32](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.31...v0.0.32) (2024-07-30) diff --git a/lib/build.gradle b/lib/build.gradle index 1964d5a..ace916b 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.32' +version = '0.0.33' // x-release-please-end repositories { From c4af18cad290763af50d35f56718a4b04e3822db Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Sep 2024 03:54:33 +0300 Subject: [PATCH 182/376] chore(deps): Update gradle/gradle-build-action digest to 093dfe9 (#260) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/gradle-build-action | action | digest | `ac2d340` -> `093dfe9` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 6eac0c2..091c0d4 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -18,7 +18,7 @@ jobs: - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@f9c9c575b8b21b6485636a91ffecd10e558c62f6 - name: Publish package - uses: gradle/gradle-build-action@ac2d340dc04d9e1113182899e983b5400c17cda1 + uses: gradle/gradle-build-action@093dfe9d598ec5a42246855d09b49dc76803c005 with: arguments: publish env: From 4804e5e75d0c0bd6cf76667baf3d44bcb240d716 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Sep 2024 03:55:54 +0300 Subject: [PATCH 183/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.16.2 (#261) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://togithub.com/jqno/equalsverifier)) | dependencies | patch | `3.16.1` -> `3.16.2` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.16.2`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3162---2024-08-23) ##### Changed - The error message in some edge cases involving complex generics and abstract classes is now improved. ([Issue 983](https://togithub.com/jqno/equalsverifier/issues/983)) - The line in the error message that shows the version of EqualsVerifier and the JDK, now also indicates whether EqualsVerifier runs on the classpath or the modulepath. ##### Deprecated - `withResetCaches()` was once needed for use in Quarkus, but caches are now reset automatically on every run.
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index ace916b..ad72a66 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.3' testImplementation 'org.mockito:mockito-core:5.12.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.12.0' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.16.1' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.16.2' testImplementation 'org.assertj:assertj-core:3.26.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.3' From b49373c7823a579d528a12cd0d87bbe96b4baa57 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Sep 2024 04:54:01 +0300 Subject: [PATCH 184/376] fix(deps): Update dependency com.google.guava:guava to v33.3.0-jre (#263) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.google.guava:guava](https://togithub.com/google/guava) | dependencies | minor | `33.2.1-jre` -> `33.3.0-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index ad72a66..57d8e1d 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -31,9 +31,9 @@ dependencies { // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'org.jooq:joou:0.9.4' - implementation 'com.google.guava:guava:33.2.1-jre' + implementation 'com.google.guava:guava:33.3.0-jre' implementation 'info.picocli:picocli:4.7.6' - implementation 'com.google.guava:guava:33.2.1-jre' + implementation 'com.google.guava:guava:33.3.0-jre' implementation 'io.grpc:grpc-protobuf:1.65.1' implementation 'io.grpc:grpc-stub:1.65.1' implementation 'io.grpc:grpc-services:1.65.1' From aa13b26b1b5be3b805bbc6af42a57cc9d2b34fe6 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Sep 2024 05:00:41 +0300 Subject: [PATCH 185/376] fix(deps): Update dependency gradle to v8.10 (#264) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://togithub.com/gradle/gradle)) | minor | `8.9` -> `8.10` | --- ### Release Notes
gradle/gradle (gradle) ### [`v8.10`](https://togithub.com/gradle/gradle/releases/tag/v8.10.0): 8.10 [Compare Source](https://togithub.com/gradle/gradle/compare/v8.9.0...v8.10.0) The Gradle team is excited to announce Gradle 8.10. [Read the Release Notes](https://docs.gradle.org/8.10/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [BjΓΆrn Kautler](https://togithub.com/Vampire), [Craig Andrews](https://togithub.com/candrews), [gotovsky](https://togithub.com/SergeyGotovskiy), [Jeff](https://togithub.com/mathjeff), [Kirill Gavrilov](https://togithub.com/gavvvr), [Madalin Valceleanu](https://togithub.com/vmadalin), [Sergei Vorobev](https://togithub.com/HackerMadCat), [Thach Le](https://togithub.com/thachlp), [Thad Guidry](https://togithub.com/thadguidry) #### Upgrade instructions Switch your build to use Gradle 8.10 by updating your wrapper: ./gradlew wrapper --gradle-version=8.10 See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.10/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.10/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://togithub.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.jar | Bin 43504 -> 43583 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 2c3521197d7c4586c843d1d3e9090525f1898cde..a4b76b9530d66f5e68d973ea569d8e19de379189 100644 GIT binary patch delta 3990 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 09523c0..9355b41 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 72ea770a1c0d5254368c930d17a4d6d5fb2cc936 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Sep 2024 05:50:19 +0300 Subject: [PATCH 186/376] fix(deps): Update junit5 monorepo to v5.11.0 (#266) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.junit.jupiter:junit-jupiter-engine](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | minor | `5.10.3` -> `5.11.0` | | [org.junit.jupiter:junit-jupiter-api](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | minor | `5.10.3` -> `5.11.0` | | [org.junit.jupiter:junit-jupiter](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | minor | `5.10.3` -> `5.11.0` | | [org.junit:junit-bom](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | minor | `5.10.3` -> `5.11.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 57d8e1d..df7aed1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -50,14 +50,14 @@ dependencies { testImplementation 'io.grpc:grpc-testing:1.65.1' testImplementation 'io.grpc:grpc-inprocess:1.65.1' - testImplementation platform('org.junit:junit-bom:5.10.3') - testImplementation 'org.junit.jupiter:junit-jupiter:5.10.3' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.3' + testImplementation platform('org.junit:junit-bom:5.11.0') + testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.0' testImplementation 'org.mockito:mockito-core:5.12.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.12.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.16.2' testImplementation 'org.assertj:assertj-core:3.26.3' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.3' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.0' runtimeOnly "org.apache.arrow:arrow-memory-netty:17.0.0" } From 0ec09c056ae5a72a8f77a2135d2a1ee76bfac275 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Sep 2024 06:31:58 +0300 Subject: [PATCH 187/376] fix(deps): Update grpc-java monorepo to v1.66.0 (#265) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-inprocess](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.65.1` -> `1.66.0` | | [io.grpc:grpc-testing](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.65.1` -> `1.66.0` | | [io.grpc:grpc-services](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.65.1` -> `1.66.0` | | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.65.1` -> `1.66.0` | | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.65.1` -> `1.66.0` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.66.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.66.0) ##### gRPC Java 1.66.0 Release Notes ##### API Changes - stub: Support setting onReadyThreshold through AbstractStub. ([#​11320](https://togithub.com/grpc/grpc-java/issues/11320)) ([`25a8b7c`](https://togithub.com/grpc/grpc-java/commit/25a8b7c50)) - util: Stabilize `AdvancedTlsX509TrustManager`, an `X509ExtendedTrustManager` that allows users to configure advanced TLS features, such as root certificate reloading and peer cert custom verification. ([`658cbf6`](https://togithub.com/grpc/grpc-java/commit/658cbf6cf)) - util: Align AdvancedTlsX509{Key and Trust}Manager. ([#​11385](https://togithub.com/grpc/grpc-java/issues/11385)) - util: Add `GracefulSwitchLoadBalancer` config ([`ebed047`](https://togithub.com/grpc/grpc-java/commit/ebed04798)) and mark switchTo() deprecated. ([`85e0a01`](https://togithub.com/grpc/grpc-java/commit/85e0a01ec)). `GracefulSwitchLoadBalancer` now receives its configuration like a regular load balancer. - binder: Introduce `AllowSecurityPolicy` to allow calling code to not have to wait on async/slow implementations. `BinderTransport` now submits async implementations to an executor. ([#​11272](https://togithub.com/grpc/grpc-java/issues/11272)) ([`7fee6a3`](https://togithub.com/grpc/grpc-java/commit/7fee6a3fe)) - api: Add convenience method in `ServerBuilder` for adding a list of service implementations to the handler registry together. ([#​11285](https://togithub.com/grpc/grpc-java/issues/11285)) ([`85ed053`](https://togithub.com/grpc/grpc-java/commit/85ed05300)) ##### Improvements - examples: Improve example Bazel WORKSPACE to demonstrate referencing grpc-xds. ([`5ec0187`](https://togithub.com/grpc/grpc-java/commit/5ec0187e2)) - examples: Include Bazel bzlmod configuration ([`36e687f`](https://togithub.com/grpc/grpc-java/commit/36e687f9d)). There are now examples for both non-bzlmod and bzlmod. - core: Fixes to `PickFirstLeafLoadBalancer` - Eliminate NPE after recovering from a temporary name resolution failure. ([#​11298](https://togithub.com/grpc/grpc-java/issues/11298)) - Deduplicate addresses. ([#​11342](https://togithub.com/grpc/grpc-java/issues/11342), [#​11345](https://togithub.com/grpc/grpc-java/issues/11345)) - core: Change default to use the new pick first load balancer (`PickFirstLeafLoadBalancer`). ([#​11348](https://togithub.com/grpc/grpc-java/issues/11348)) - core: Use retryThrottling from defaultServiceConfig when the name resolver config doesn't provide this config. ([#​11274](https://togithub.com/grpc/grpc-java/issues/11274)) ([`062ebb4`](https://togithub.com/grpc/grpc-java/commit/062ebb4d7)) - netty: Enable use of Netty 4.1.111 by avoiding the optimization provided by `NettyAdaptiveCumulator` if Netty is on version 4.1.111 or later. ([#​11367](https://togithub.com/grpc/grpc-java/issues/11367)) - binder: Set a default connect timeout of 60 seconds. ([#​11359](https://togithub.com/grpc/grpc-java/issues/11359)) ([`21dec30`](https://togithub.com/grpc/grpc-java/commit/21dec3092)) - binder: Make `BinderServer` own `ServerAuthInterceptor`'s executor that helps avoid leaks. ([#​11293](https://togithub.com/grpc/grpc-java/issues/11293)) ([`15ad9f5`](https://togithub.com/grpc/grpc-java/commit/15ad9f546)) - services:: Added `ProtoReflectionServiceV1` for the v1 reflection protocol. The preexisting `ProtoReflectionService` implements the v1alpha reflection protocol. ([#​11237](https://togithub.com/grpc/grpc-java/issues/11237)) ([`0aa976c`](https://togithub.com/grpc/grpc-java/commit/0aa976c4e)) ##### Bug Fixes - binder: Add missing synchronization to prevent races when calling awaitTermination(). ([#​11277](https://togithub.com/grpc/grpc-java/issues/11277)) ([`14fd81f`](https://togithub.com/grpc/grpc-java/commit/14fd81f59)) - util: Fix `AdvancedTlsX509TrustManager` validation on servers when using SSLSocket. Previously it would try to use a null SSLEngine . ([`dcb1c01`](https://togithub.com/grpc/grpc-java/commit/dcb1c018c)) ##### Dependencies - compiler: Upgrade from CentOS 7 to AlmaLinux 8 for the pre-compiled Linux protoc-gen-grpc-java ([`71eb5fb`](https://togithub.com/grpc/grpc-java/commit/71eb5fb9f)). This adds a runtime dependency on libstdc++ - Upgrade animal-sniffer-annotations to 1.24 ([`a977385`](https://togithub.com/grpc/grpc-java/commit/a97738518)) - Upgrade error_prone_annotations to 2.28.0 ([`a977385`](https://togithub.com/grpc/grpc-java/commit/a97738518)) - Upgrade proto-google-common-protos to 2.41.0 ([`a977385`](https://togithub.com/grpc/grpc-java/commit/a97738518)) - Upgrade google-auth-library to 1.23.0 ([`a977385`](https://togithub.com/grpc/grpc-java/commit/a97738518)) - Upgrade gson to 2.11.0 ([`a977385`](https://togithub.com/grpc/grpc-java/commit/a97738518)) - Upgrade guava to 33.2.1 ([`a977385`](https://togithub.com/grpc/grpc-java/commit/a97738518)) - Upgrade opentelemetry to 1.40.0 ([`a977385`](https://togithub.com/grpc/grpc-java/commit/a97738518)) - Upgrade perfmark-api to 0.27.0 ([`a977385`](https://togithub.com/grpc/grpc-java/commit/a97738518)) - Upgrade protobuf-java to 3.25.3 ([`a977385`](https://togithub.com/grpc/grpc-java/commit/a97738518)) - xds: Remove unused opencensus-proto dependency ([`e7c3803`](https://togithub.com/grpc/grpc-java/commit/e7c3803b5)) - bazel: Replace `@com_github_cncf_udpa` usage with preexisting `@com_github_cncf_xds`; delete `@com_github_cncf_udpa` repo alias for xds ([`6dd6ca9`](https://togithub.com/grpc/grpc-java/commit/6dd6ca9f9)) - bazel: Upgrade envoyproxy/data-plane-api to [`1611a73`](https://togithub.com/grpc/grpc-java/commit/1611a730) ([`c540993`](https://togithub.com/grpc/grpc-java/commit/c540993aa)). The version used by Gradle had been updated in 1.62.0 ([`68334a0`](https://togithub.com/grpc/grpc-java/commit/68334a01)), but the bazel version had not - bazel: Use com_google_protobuf instead of com_google_protobuf_javalite ([`7a25e68`](https://togithub.com/grpc/grpc-java/commit/7a25e6895)). Bazel’s protobuf rules no longer use the old com_google_protobuf_javalite repository name - bazel: Don't require protobuf to be in maven_install ([`d3c2f5a`](https://togithub.com/grpc/grpc-java/commit/d3c2f5a2d)). Protobuf’s targets are generally just used directly; this fixed the only place that used maven’s `artifact()` syntax ##### Thanks to [@​hlx502](https://togithub.com/hlx502) [@​erm-g](https://togithub.com/erm-g) [@​jdcormie](https://togithub.com/jdcormie) [@​JoaoVitorStein](https://togithub.com/JoaoVitorStein) [@​cfredri4](https://togithub.com/cfredri4)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index df7aed1..40e25f0 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,9 +34,9 @@ dependencies { implementation 'com.google.guava:guava:33.3.0-jre' implementation 'info.picocli:picocli:4.7.6' implementation 'com.google.guava:guava:33.3.0-jre' - implementation 'io.grpc:grpc-protobuf:1.65.1' - implementation 'io.grpc:grpc-stub:1.65.1' - implementation 'io.grpc:grpc-services:1.65.1' + implementation 'io.grpc:grpc-protobuf:1.66.0' + implementation 'io.grpc:grpc-stub:1.66.0' + implementation 'io.grpc:grpc-services:1.66.0' implementation 'io.cloudquery:plugin-pb-java:0.0.23' implementation 'org.apache.arrow:arrow-memory-core:17.0.0' implementation 'org.apache.arrow:arrow-vector:17.0.0' @@ -48,8 +48,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.23.1' implementation 'org.apache.logging.log4j:log4j-core:2.23.1' - testImplementation 'io.grpc:grpc-testing:1.65.1' - testImplementation 'io.grpc:grpc-inprocess:1.65.1' + testImplementation 'io.grpc:grpc-testing:1.66.0' + testImplementation 'io.grpc:grpc-inprocess:1.66.0' testImplementation platform('org.junit:junit-bom:5.11.0') testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.0' From 3bed68c93b4264d8999add7ad50cc4b1b89cc44b Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Sep 2024 06:35:41 +0300 Subject: [PATCH 188/376] fix(deps): Update mockito monorepo to v5.13.0 (#267) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.mockito:mockito-junit-jupiter](https://togithub.com/mockito/mockito) | dependencies | minor | `5.12.0` -> `5.13.0` | | [org.mockito:mockito-core](https://togithub.com/mockito/mockito) | dependencies | minor | `5.12.0` -> `5.13.0` | --- ### Release Notes
mockito/mockito (org.mockito:mockito-junit-jupiter) ### [`v5.13.0`](https://togithub.com/mockito/mockito/releases/tag/v5.13.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://togithub.com/shipkit/shipkit-changelog)* ##### 5.13.0 - 2024-08-27 - [43 commit(s)](https://togithub.com/mockito/mockito/compare/v5.12.0...v5.13.0) by Breno A, Caleb Cushing, Jinwoo, Kurt Alfred Kluever, Stefano Cordio, Thach Le, dependabot\[bot] - Bump versions.bytebuddy from 1.14.19 to 1.15.0 [(#​3429)](https://togithub.com/mockito/mockito/pull/3429) - Bump org.jetbrains.kotlin:kotlin-stdlib from 2.0.10 to 2.0.20 [(#​3427)](https://togithub.com/mockito/mockito/pull/3427) - Bump org.junit.platform:junit-platform-launcher from 1.10.3 to 1.11.0 [(#​3425)](https://togithub.com/mockito/mockito/pull/3425) - Bump com.gradle.enterprise from 3.17.6 to 3.18 [(#​3423)](https://togithub.com/mockito/mockito/pull/3423) - Fix a typo in InjectMocks [(#​3422)](https://togithub.com/mockito/mockito/pull/3422) - Bump versions.bytebuddy from 1.14.18 to 1.14.19 [(#​3417)](https://togithub.com/mockito/mockito/pull/3417) - Bump androidx.test:runner from 1.6.1 to 1.6.2 [(#​3415)](https://togithub.com/mockito/mockito/pull/3415) - Bump versions.junitJupiter from 5.10.3 to 5.11.0 [(#​3413)](https://togithub.com/mockito/mockito/pull/3413) - Bump org.jetbrains.kotlin:kotlin-stdlib from 2.0.0 to 2.0.10 [(#​3409)](https://togithub.com/mockito/mockito/pull/3409) - Bump org.hamcrest:hamcrest-core from 2.2 to 3.0 [(#​3408)](https://togithub.com/mockito/mockito/pull/3408) - Bump com.google.googlejavaformat:google-java-format from 1.22.0 to 1.23.0 [(#​3407)](https://togithub.com/mockito/mockito/pull/3407) - Bump org.shipkit:shipkit-auto-version from 2.0.9 to 2.0.10 [(#​3405)](https://togithub.com/mockito/mockito/pull/3405) - Bump com.gradle.enterprise from 3.17.5 to 3.17.6 [(#​3404)](https://togithub.com/mockito/mockito/pull/3404) - Bump gradle/wrapper-validation-action from 3.4.2 to 3.5.0 [(#​3401)](https://togithub.com/mockito/mockito/pull/3401) - Bump org.assertj:assertj-core from 3.26.0 to 3.26.3 [(#​3398)](https://togithub.com/mockito/mockito/pull/3398) - Bump versions.bytebuddy from 1.14.17 to 1.14.18 [(#​3397)](https://togithub.com/mockito/mockito/pull/3397) - ci: add .m2 dependencies cache [(#​3396)](https://togithub.com/mockito/mockito/pull/3396) - Bump org.codehaus.groovy:groovy from 3.0.21 to 3.0.22 [(#​3394)](https://togithub.com/mockito/mockito/pull/3394) - Bump androidx.test:runner from 1.6.0 to 1.6.1 [(#​3393)](https://togithub.com/mockito/mockito/pull/3393) - Bump org.junit.platform:junit-platform-launcher from 1.10.2 to 1.10.3 [(#​3392)](https://togithub.com/mockito/mockito/pull/3392) - Gradle lazy configuration [(#​3391)](https://togithub.com/mockito/mockito/pull/3391) - Bump androidx.test.ext:junit from 1.2.0 to 1.2.1 [(#​3388)](https://togithub.com/mockito/mockito/pull/3388) - docs: cleanup javadoc for modularity [(#​3386)](https://togithub.com/mockito/mockito/pull/3386) - Bump versions.junitJupiter from 5.10.2 to 5.10.3 [(#​3385)](https://togithub.com/mockito/mockito/pull/3385) - Bump androidx.test.ext:junit from 1.1.5 to 1.2.0 [(#​3383)](https://togithub.com/mockito/mockito/pull/3383) - Bump androidx.test:runner from 1.5.2 to 1.6.0 [(#​3382)](https://togithub.com/mockito/mockito/pull/3382) - Bump net.ltgt.gradle:gradle-errorprone-plugin from 4.0.0 to 4.0.1 [(#​3380)](https://togithub.com/mockito/mockito/pull/3380) - Bump gradle/wrapper-validation-action from 3.4.1 to 3.4.2 [(#​3376)](https://togithub.com/mockito/mockito/pull/3376) - Bump gradle/wrapper-validation-action from 3.4.0 to 3.4.1 [(#​3372)](https://togithub.com/mockito/mockito/pull/3372) - Bump gradle/wrapper-validation-action from 3.3.2 to 3.4.0 [(#​3365)](https://togithub.com/mockito/mockito/pull/3365) - Bump org.shipkit:shipkit-auto-version from 2.0.7 to 2.0.9 [(#​3364)](https://togithub.com/mockito/mockito/pull/3364) - Bump com.gradle.enterprise from 3.17.4 to 3.17.5 [(#​3363)](https://togithub.com/mockito/mockito/pull/3363) - Bump org.eclipse.platform:org.eclipse.osgi from 3.19.0 to 3.20.0 [(#​3362)](https://togithub.com/mockito/mockito/pull/3362) - Bump net.ltgt.gradle:gradle-errorprone-plugin from 3.1.0 to 4.0.0 [(#​3361)](https://togithub.com/mockito/mockito/pull/3361) - Bump versions.bytebuddy from 1.14.16 to 1.14.17 [(#​3357)](https://togithub.com/mockito/mockito/pull/3357) - Bump org.assertj:assertj-core from 3.25.3 to 3.26.0 [(#​3355)](https://togithub.com/mockito/mockito/pull/3355) - EditorConfig enhancement [(#​3353)](https://togithub.com/mockito/mockito/pull/3353) - Bump versions.bytebuddy from 1.14.15 to 1.14.16 [(#​3352)](https://togithub.com/mockito/mockito/pull/3352) - Bump org.jetbrains.kotlin:kotlin-stdlib from 1.9.24 to 2.0.0 [(#​3351)](https://togithub.com/mockito/mockito/pull/3351) - Fixes [#​3237](https://togithub.com/mockito/mockito/issues/3237): Fix NullPointerException in Only.verify [(#​3349)](https://togithub.com/mockito/mockito/pull/3349) - Bump com.gradle.enterprise from 3.17.3 to 3.17.4 [(#​3348)](https://togithub.com/mockito/mockito/pull/3348) - potential editorconfig enhancement [(#​3347)](https://togithub.com/mockito/mockito/issues/3347) - Method `Only.verify` throws `NullPointerException` [(#​3237)](https://togithub.com/mockito/mockito/issues/3237)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 40e25f0..3feaa99 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -53,8 +53,8 @@ dependencies { testImplementation platform('org.junit:junit-bom:5.11.0') testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.0' - testImplementation 'org.mockito:mockito-core:5.12.0' - testImplementation 'org.mockito:mockito-junit-jupiter:5.12.0' + testImplementation 'org.mockito:mockito-core:5.13.0' + testImplementation 'org.mockito:mockito-junit-jupiter:5.13.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.16.2' testImplementation 'org.assertj:assertj-core:3.26.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.0' From 8ca46c9ad61fb0dfb63f5cc1ce97305086f37896 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Sep 2024 06:39:20 +0300 Subject: [PATCH 189/376] fix(deps): Update plugin io.freefair.lombok to v8.10 (#268) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.freefair.lombok | plugin | minor | `8.6` -> `8.10` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 3feaa99..e3d4f7e 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java-library' - id "io.freefair.lombok" version "8.6" + id "io.freefair.lombok" version "8.10" id "maven-publish" id "com.diffplug.spotless" version "6.25.0" } From eb838d5cabc34fa869889fdb7b757060bf071272 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 4 Sep 2024 20:27:03 +0300 Subject: [PATCH 190/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.24 (#269) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.23` -> `0.0.24` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index e3d4f7e..8deff5b 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.66.0' implementation 'io.grpc:grpc-stub:1.66.0' implementation 'io.grpc:grpc-services:1.66.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.23' + implementation 'io.cloudquery:plugin-pb-java:0.0.24' implementation 'org.apache.arrow:arrow-memory-core:17.0.0' implementation 'org.apache.arrow:arrow-vector:17.0.0' implementation 'commons-io:commons-io:2.16.1' From 94bcb9fa7fb54fca5b91b66a4d9c2ad6f0550049 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 17 Sep 2024 20:23:27 +0300 Subject: [PATCH 191/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.25 (#270) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.24` -> `0.0.25` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 8deff5b..4c61efd 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.66.0' implementation 'io.grpc:grpc-stub:1.66.0' implementation 'io.grpc:grpc-services:1.66.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.24' + implementation 'io.cloudquery:plugin-pb-java:0.0.25' implementation 'org.apache.arrow:arrow-memory-core:17.0.0' implementation 'org.apache.arrow:arrow-vector:17.0.0' implementation 'commons-io:commons-io:2.16.1' From 6f2071765a38a007f938a0ce3e0709573318256d Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 30 Sep 2024 20:56:19 -0400 Subject: [PATCH 192/376] fix(deps): Update dependency com.google.guava:guava to v33.3.1-jre (#271) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.google.guava:guava](https://togithub.com/google/guava) | dependencies | patch | `33.3.0-jre` -> `33.3.1-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 4c61efd..134141a 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -31,9 +31,9 @@ dependencies { // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'org.jooq:joou:0.9.4' - implementation 'com.google.guava:guava:33.3.0-jre' + implementation 'com.google.guava:guava:33.3.1-jre' implementation 'info.picocli:picocli:4.7.6' - implementation 'com.google.guava:guava:33.3.0-jre' + implementation 'com.google.guava:guava:33.3.1-jre' implementation 'io.grpc:grpc-protobuf:1.66.0' implementation 'io.grpc:grpc-stub:1.66.0' implementation 'io.grpc:grpc-services:1.66.0' From db4ff77224f790e9c4af5bd2996d245b64b54c0a Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 30 Sep 2024 20:59:50 -0400 Subject: [PATCH 193/376] fix(deps): Update dependency gradle to v8.10.2 (#272) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://togithub.com/gradle/gradle)) | patch | `8.10` -> `8.10.2` | --- ### Release Notes
gradle/gradle (gradle) ### [`v8.10.2`](https://togithub.com/gradle/gradle/releases/tag/v8.10.2): 8.10.2 [Compare Source](https://togithub.com/gradle/gradle/compare/v8.10.1...v8.10.2) This is a patch release for 8.10. We recommend using 8.10.2 instead of 8.10 It fixes the following issues: - [#​30472](https://togithub.com/gradle/gradle/issues/30472) Investigate possibly broken 8.10.1 - [#​30477](https://togithub.com/gradle/gradle/issues/30477) Kotlin Mutliplatform build with reused daemon fails with "Cannot query the value of task ':compileKotlinWindows' property 'kotlinNativeBundleBuildService' because it has no value available." - [#​30497](https://togithub.com/gradle/gradle/issues/30497) DefaultTaskCollection#configureEach(Action) on task set cannot be executed in the current context Issues fixed in the first patch release: - [#​30239](https://togithub.com/gradle/gradle/issues/30239) Gradle 8.10 Significantly Slower Due to Dependency Resolution - [#​30272](https://togithub.com/gradle/gradle/issues/30272) Broken equals() contract for LifecycleAwareProject - [#​30385](https://togithub.com/gradle/gradle/issues/30385) Gradle should not validate isolated projects when isolated projects is disabled [Read the Release Notes](https://docs.gradle.org/8.10.2/release-notes.html) #### Upgrade instructions Switch your build to use Gradle 8.10.2 by updating your wrapper: ./gradlew wrapper --gradle-version=8.10.2 See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.10.2/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.10.2/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://togithub.com/gradle). ### [`v8.10.1`](https://togithub.com/gradle/gradle/releases/tag/v8.10.1): 8.10.1 [Compare Source](https://togithub.com/gradle/gradle/compare/v8.10.0...v8.10.1) This is a patch release for 8.10. We recommend using 8.10.1 instead of 8.10 It fixes the following issues: - [#​30239](https://togithub.com/gradle/gradle/issues/30239) Gradle 8.10 Significantly Slower Due to Dependency Resolution - [#​30272](https://togithub.com/gradle/gradle/issues/30272) Broken equals() contract for LifecycleAwareProject - [#​30385](https://togithub.com/gradle/gradle/issues/30385) Gradle should not validate isolated projects when isolated projects is disabled [Read the Release Notes](https://docs.gradle.org/8.10.1/release-notes.html) #### Upgrade instructions Switch your build to use Gradle 8.10.1 by updating your wrapper: ./gradlew wrapper --gradle-version=8.10.1 See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.10.1/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.10.1/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://togithub.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9355b41..df97d72 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 5aca4224c1b181fe71b41219d74e995e971e62de Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 30 Sep 2024 21:49:18 -0400 Subject: [PATCH 194/376] fix(deps): Update junit5 monorepo to v5.11.1 (#273) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.junit.jupiter:junit-jupiter-engine](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.11.0` -> `5.11.1` | | [org.junit.jupiter:junit-jupiter-api](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.11.0` -> `5.11.1` | | [org.junit.jupiter:junit-jupiter](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.11.0` -> `5.11.1` | | [org.junit:junit-bom](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.11.0` -> `5.11.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 134141a..bfabbf7 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -50,14 +50,14 @@ dependencies { testImplementation 'io.grpc:grpc-testing:1.66.0' testImplementation 'io.grpc:grpc-inprocess:1.66.0' - testImplementation platform('org.junit:junit-bom:5.11.0') - testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.0' + testImplementation platform('org.junit:junit-bom:5.11.1') + testImplementation 'org.junit.jupiter:junit-jupiter:5.11.1' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.1' testImplementation 'org.mockito:mockito-core:5.13.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.13.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.16.2' testImplementation 'org.assertj:assertj-core:3.26.3' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.0' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.1' runtimeOnly "org.apache.arrow:arrow-memory-netty:17.0.0" } From 06e1ace0d3a3530de3774936c27f67abfc7a6688 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 30 Sep 2024 21:53:35 -0400 Subject: [PATCH 195/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.18.0 (#274) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-annotations](https://togithub.com/FasterXML/jackson) ([source](https://togithub.com/FasterXML/jackson-annotations)) | dependencies | minor | `2.17.2` -> `2.18.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index bfabbf7..03f2034 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -43,7 +43,7 @@ dependencies { implementation 'commons-io:commons-io:2.16.1' implementation "com.fasterxml.jackson.core:jackson-core:2.17.2" - implementation "com.fasterxml.jackson.core:jackson-annotations:2.17.2" + implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.0" implementation 'org.apache.logging.log4j:log4j-api:2.23.1' implementation 'org.apache.logging.log4j:log4j-core:2.23.1' From a6772ee8d6113f0ecd703c49d484a3341da3915b Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 30 Sep 2024 22:47:29 -0400 Subject: [PATCH 196/376] fix(deps): Update dependency commons-io:commons-io to v2.17.0 (#276) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [commons-io:commons-io](https://commons.apache.org/proper/commons-io/) ([source](https://gitbox.apache.org/repos/asf?p=commons-io.git)) | dependencies | minor | `2.16.1` -> `2.17.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 03f2034..cabff9a 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -40,7 +40,7 @@ dependencies { implementation 'io.cloudquery:plugin-pb-java:0.0.25' implementation 'org.apache.arrow:arrow-memory-core:17.0.0' implementation 'org.apache.arrow:arrow-vector:17.0.0' - implementation 'commons-io:commons-io:2.16.1' + implementation 'commons-io:commons-io:2.17.0' implementation "com.fasterxml.jackson.core:jackson-core:2.17.2" implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.0" From 174a527a9450ab4c48af3e42542689cacb12ed19 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 30 Sep 2024 23:29:52 -0400 Subject: [PATCH 197/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.17 (#277) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://togithub.com/jqno/equalsverifier)) | dependencies | minor | `3.16.2` -> `3.17` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.17`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#317---2024-09-24) ##### Added - \#withPrefabValuesForField method, where you can assign prefab values to a field instead of to a class. The values will then be used for that field only. ([Issue 747](https://togithub.com/jqno/equalsverifier/issues/747)) ##### Changed - The internal instantiation logic has been heavily refactored, to be more robust and extensible for future enhancements. ##### Deprecated - `Warning.ZERO_FIELDS`: the use case for this Warning is better handled by the new `#withPrefabValuesForField` method.
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index cabff9a..bce9852 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.1' testImplementation 'org.mockito:mockito-core:5.13.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.13.0' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.16.2' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.17' testImplementation 'org.assertj:assertj-core:3.26.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.1' From ba2ca973335113feef3489a61955ccb2283b8517 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 30 Sep 2024 23:33:52 -0400 Subject: [PATCH 198/376] fix(deps): Update grpc-java monorepo to v1.68.0 (#278) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-inprocess](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.66.0` -> `1.68.0` | | [io.grpc:grpc-testing](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.66.0` -> `1.68.0` | | [io.grpc:grpc-services](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.66.0` -> `1.68.0` | | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.66.0` -> `1.68.0` | | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.66.0` -> `1.68.0` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.68.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.68.0): MISTAKE This was supposed to be v1.67.0, but there was a mistake during the release process. This has everything in v1.67.1, *except* for: - xds: Fix NullPointerException introduced in "Fix load reporting when pick first is used for locality-routing" ([https://github.com/grpc/grpc-java/pull/11553](https://togithub.com/grpc/grpc-java/pull/11553)) ### [`v1.67.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.67.1) ##### gRPC Java 1.67.1 Release Notes There was no 1.67.0 release. There was a problem making the release and it went to Maven Central as 1.68.0 instead. This is a version-corrected release. ##### Improvements - Petiole load balancing policies (e.g., round_robin, weighted_round_robin, ring_hash, least_request) had internal refactorings. This should not have changed their behavior - api: Introduce onResult2 in NameResolver Listener2 that returns Status ([`90d0fab`](https://togithub.com/grpc/grpc-java/commit/90d0fabb1)) - core: touch() buffer when detach()ing ([`e821d5e`](https://togithub.com/grpc/grpc-java/commit/e821d5e15)). This makes it clearer whether a leak is a gRPC leak or an application leak when the Detachable API is being used - stub: Add newAttachMetadataServerInterceptor() MetadataUtil ([#​11458](https://togithub.com/grpc/grpc-java/issues/11458)) ([`6dbd1b9`](https://togithub.com/grpc/grpc-java/commit/6dbd1b9d5)) - opentelemetry: GrpcOpenTelemetry now has experimental tracing support. The support can be enabled by setting env var \`GRPC_EXPERIMENTAL_ENABLE_OTEL_TRACING=true\`. ([#​11477](https://togithub.com/grpc/grpc-java/issues/11477)) ([`421e237`](https://togithub.com/grpc/grpc-java/commit/421e2371e)) ([#​11409](https://togithub.com/grpc/grpc-java/issues/11409)) ([`043ba55`](https://togithub.com/grpc/grpc-java/commit/043ba556b)) - example: delete duplicate and unused code in KeepAliveClient.java ([`6a9bc3b`](https://togithub.com/grpc/grpc-java/commit/6a9bc3ba1)) - example: Added Dualstack example ([#​11451](https://togithub.com/grpc/grpc-java/issues/11451)) ([`72a977b`](https://togithub.com/grpc/grpc-java/commit/72a977bf7)) - xds: Separate xds clients for each channel target, each with its own connection to an xds server. ([#​11484](https://togithub.com/grpc/grpc-java/issues/11484)) ([`d034a56`](https://togithub.com/grpc/grpc-java/commit/d034a56cb)) - xds: Envoy proto sync to 2024-07-06 ([#​11401](https://togithub.com/grpc/grpc-java/issues/11401)) ([`96a788a`](https://togithub.com/grpc/grpc-java/commit/96a788a34)) - xds: cncf/xds proto sync to 2024-07-24 ([#​11417](https://togithub.com/grpc/grpc-java/issues/11417)) ([`0017c98`](https://togithub.com/grpc/grpc-java/commit/0017c98f6)) - xds: Import RLQS protos ([#​11418](https://togithub.com/grpc/grpc-java/issues/11418)) ([`c29763d`](https://togithub.com/grpc/grpc-java/commit/c29763d88)) - xds: ClusterManagerLB must update child configuration ([`10d6002`](https://togithub.com/grpc/grpc-java/commit/10d6002cb)). Previously, RLS configuration would not have been updated ##### Bug Fixes - core: Revert "Enable new PickFirst LB ([#​11348](https://togithub.com/grpc/grpc-java/issues/11348))" ([#​11425](https://togithub.com/grpc/grpc-java/issues/11425)) ([`cc1cbe9`](https://togithub.com/grpc/grpc-java/commit/cc1cbe987)) - util: Stop using SocketAddress.toString() for checking address equality ([`f866c80`](https://togithub.com/grpc/grpc-java/commit/f866c805c)). This change applies to all petiole load balancing policies. For regular usages that use dns name resolution, this is unlikely to matter as the default dns name resolver returns consistent addresses. But this might improve LB behavior for some custom load balancers - xds: Fix load reporting when pick first is used for locality-routing. ([#​11495](https://togithub.com/grpc/grpc-java/issues/11495)) ([`1dae144`](https://togithub.com/grpc/grpc-java/commit/1dae144f0)) - xds: Fix NullPointerException introduced in "Fix load reporting when pick first is used for locality-routing" ([#​11553](https://togithub.com/grpc/grpc-java/issues/11553)). This change is not present in 1.68.0 - xds: XdsClient should unsubscribe on last resource ([#​11264](https://togithub.com/grpc/grpc-java/issues/11264)) ([`448ec4f`](https://togithub.com/grpc/grpc-java/commit/448ec4f37)) - rls: Fix log statements incorrectly referring to "LRS" ([#​11497](https://togithub.com/grpc/grpc-java/issues/11497)) ([`c63e354`](https://togithub.com/grpc/grpc-java/commit/c63e35488)) ##### Dependencies - Upgrade Netty to 4.1.110 and tcnative to 2.0.65 ([#​11444](https://togithub.com/grpc/grpc-java/issues/11444)) ([`70ae832`](https://togithub.com/grpc/grpc-java/commit/70ae83288)) - examples: Upgrade Maven plugin versions ([`75012a5`](https://togithub.com/grpc/grpc-java/commit/75012a5be)) - Remove direct dependency on j2objc ([`ff8e413`](https://togithub.com/grpc/grpc-java/commit/ff8e41376)) ##### Thanks to [@​Juneezee](https://togithub.com/Juneezee) [@​lujiajing1126](https://togithub.com/lujiajing1126) [@​JarvisCraft](https://togithub.com/JarvisCraft) [@​sunpe](https://togithub.com/sunpe)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index bce9852..aa90de3 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,9 +34,9 @@ dependencies { implementation 'com.google.guava:guava:33.3.1-jre' implementation 'info.picocli:picocli:4.7.6' implementation 'com.google.guava:guava:33.3.1-jre' - implementation 'io.grpc:grpc-protobuf:1.66.0' - implementation 'io.grpc:grpc-stub:1.66.0' - implementation 'io.grpc:grpc-services:1.66.0' + implementation 'io.grpc:grpc-protobuf:1.68.0' + implementation 'io.grpc:grpc-stub:1.68.0' + implementation 'io.grpc:grpc-services:1.68.0' implementation 'io.cloudquery:plugin-pb-java:0.0.25' implementation 'org.apache.arrow:arrow-memory-core:17.0.0' implementation 'org.apache.arrow:arrow-vector:17.0.0' @@ -48,8 +48,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.23.1' implementation 'org.apache.logging.log4j:log4j-core:2.23.1' - testImplementation 'io.grpc:grpc-testing:1.66.0' - testImplementation 'io.grpc:grpc-inprocess:1.66.0' + testImplementation 'io.grpc:grpc-testing:1.68.0' + testImplementation 'io.grpc:grpc-inprocess:1.68.0' testImplementation platform('org.junit:junit-bom:5.11.1') testImplementation 'org.junit.jupiter:junit-jupiter:5.11.1' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.1' From aabdca2c13416bc40ec31fa9306ed39ea52c823d Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 1 Oct 2024 04:30:06 -0400 Subject: [PATCH 199/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-core to v2.18.0 (#275) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-core](https://togithub.com/FasterXML/jackson-core) | dependencies | minor | `2.17.2` -> `2.18.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index aa90de3..d8d4a5b 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -42,7 +42,7 @@ dependencies { implementation 'org.apache.arrow:arrow-vector:17.0.0' implementation 'commons-io:commons-io:2.17.0' - implementation "com.fasterxml.jackson.core:jackson-core:2.17.2" + implementation "com.fasterxml.jackson.core:jackson-core:2.18.0" implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.0" implementation 'org.apache.logging.log4j:log4j-api:2.23.1' From f1c952117ae09cf0a6cb37686c2edbbcd7b4bb76 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 1 Oct 2024 04:48:08 -0400 Subject: [PATCH 200/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.26 (#279) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.25` -> `0.0.26` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index d8d4a5b..4e37450 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.68.0' implementation 'io.grpc:grpc-stub:1.68.0' implementation 'io.grpc:grpc-services:1.68.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.25' + implementation 'io.cloudquery:plugin-pb-java:0.0.26' implementation 'org.apache.arrow:arrow-memory-core:17.0.0' implementation 'org.apache.arrow:arrow-vector:17.0.0' implementation 'commons-io:commons-io:2.17.0' From a9f909fdb3306872782af6445213923b2b1e1f3f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 1 Oct 2024 05:27:55 -0400 Subject: [PATCH 201/376] chore(main): Release v0.0.34 (#262) :robot: I have created a release *beep* *boop* --- ## [0.0.34](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.33...v0.0.34) (2024-10-01) ### Bug Fixes * **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.18.0 ([#274](https://github.com/cloudquery/plugin-sdk-java/issues/274)) ([06e1ace](https://github.com/cloudquery/plugin-sdk-java/commit/06e1ace0d3a3530de3774936c27f67abfc7a6688)) * **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.18.0 ([#275](https://github.com/cloudquery/plugin-sdk-java/issues/275)) ([aabdca2](https://github.com/cloudquery/plugin-sdk-java/commit/aabdca2c13416bc40ec31fa9306ed39ea52c823d)) * **deps:** Update dependency com.google.guava:guava to v33.3.0-jre ([#263](https://github.com/cloudquery/plugin-sdk-java/issues/263)) ([b49373c](https://github.com/cloudquery/plugin-sdk-java/commit/b49373c7823a579d528a12cd0d87bbe96b4baa57)) * **deps:** Update dependency com.google.guava:guava to v33.3.1-jre ([#271](https://github.com/cloudquery/plugin-sdk-java/issues/271)) ([6f20717](https://github.com/cloudquery/plugin-sdk-java/commit/6f2071765a38a007f938a0ce3e0709573318256d)) * **deps:** Update dependency commons-io:commons-io to v2.17.0 ([#276](https://github.com/cloudquery/plugin-sdk-java/issues/276)) ([a6772ee](https://github.com/cloudquery/plugin-sdk-java/commit/a6772ee8d6113f0ecd703c49d484a3341da3915b)) * **deps:** Update dependency gradle to v8.10 ([#264](https://github.com/cloudquery/plugin-sdk-java/issues/264)) ([aa13b26](https://github.com/cloudquery/plugin-sdk-java/commit/aa13b26b1b5be3b805bbc6af42a57cc9d2b34fe6)) * **deps:** Update dependency gradle to v8.10.2 ([#272](https://github.com/cloudquery/plugin-sdk-java/issues/272)) ([db4ff77](https://github.com/cloudquery/plugin-sdk-java/commit/db4ff77224f790e9c4af5bd2996d245b64b54c0a)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.24 ([#269](https://github.com/cloudquery/plugin-sdk-java/issues/269)) ([eb838d5](https://github.com/cloudquery/plugin-sdk-java/commit/eb838d5cabc34fa869889fdb7b757060bf071272)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.25 ([#270](https://github.com/cloudquery/plugin-sdk-java/issues/270)) ([94bcb9f](https://github.com/cloudquery/plugin-sdk-java/commit/94bcb9fa7fb54fca5b91b66a4d9c2ad6f0550049)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.26 ([#279](https://github.com/cloudquery/plugin-sdk-java/issues/279)) ([f1c9521](https://github.com/cloudquery/plugin-sdk-java/commit/f1c952117ae09cf0a6cb37686c2edbbcd7b4bb76)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.16.2 ([#261](https://github.com/cloudquery/plugin-sdk-java/issues/261)) ([4804e5e](https://github.com/cloudquery/plugin-sdk-java/commit/4804e5e75d0c0bd6cf76667baf3d44bcb240d716)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.17 ([#277](https://github.com/cloudquery/plugin-sdk-java/issues/277)) ([174a527](https://github.com/cloudquery/plugin-sdk-java/commit/174a527a9450ab4c48af3e42542689cacb12ed19)) * **deps:** Update grpc-java monorepo to v1.66.0 ([#265](https://github.com/cloudquery/plugin-sdk-java/issues/265)) ([0ec09c0](https://github.com/cloudquery/plugin-sdk-java/commit/0ec09c056ae5a72a8f77a2135d2a1ee76bfac275)) * **deps:** Update grpc-java monorepo to v1.68.0 ([#278](https://github.com/cloudquery/plugin-sdk-java/issues/278)) ([ba2ca97](https://github.com/cloudquery/plugin-sdk-java/commit/ba2ca973335113feef3489a61955ccb2283b8517)) * **deps:** Update junit5 monorepo to v5.11.0 ([#266](https://github.com/cloudquery/plugin-sdk-java/issues/266)) ([72ea770](https://github.com/cloudquery/plugin-sdk-java/commit/72ea770a1c0d5254368c930d17a4d6d5fb2cc936)) * **deps:** Update junit5 monorepo to v5.11.1 ([#273](https://github.com/cloudquery/plugin-sdk-java/issues/273)) ([5aca422](https://github.com/cloudquery/plugin-sdk-java/commit/5aca4224c1b181fe71b41219d74e995e971e62de)) * **deps:** Update mockito monorepo to v5.13.0 ([#267](https://github.com/cloudquery/plugin-sdk-java/issues/267)) ([3bed68c](https://github.com/cloudquery/plugin-sdk-java/commit/3bed68c93b4264d8999add7ad50cc4b1b89cc44b)) * **deps:** Update plugin io.freefair.lombok to v8.10 ([#268](https://github.com/cloudquery/plugin-sdk-java/issues/268)) ([8ca46c9](https://github.com/cloudquery/plugin-sdk-java/commit/8ca46c9ad61fb0dfb63f5cc1ce97305086f37896)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 24 ++++++++++++++++++++++++ lib/build.gradle | 2 +- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 25bf810..9efa5ca 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.33" + ".": "0.0.34" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 8696b03..9938a7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,29 @@ # Changelog +## [0.0.34](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.33...v0.0.34) (2024-10-01) + + +### Bug Fixes + +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.18.0 ([#274](https://github.com/cloudquery/plugin-sdk-java/issues/274)) ([06e1ace](https://github.com/cloudquery/plugin-sdk-java/commit/06e1ace0d3a3530de3774936c27f67abfc7a6688)) +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.18.0 ([#275](https://github.com/cloudquery/plugin-sdk-java/issues/275)) ([aabdca2](https://github.com/cloudquery/plugin-sdk-java/commit/aabdca2c13416bc40ec31fa9306ed39ea52c823d)) +* **deps:** Update dependency com.google.guava:guava to v33.3.0-jre ([#263](https://github.com/cloudquery/plugin-sdk-java/issues/263)) ([b49373c](https://github.com/cloudquery/plugin-sdk-java/commit/b49373c7823a579d528a12cd0d87bbe96b4baa57)) +* **deps:** Update dependency com.google.guava:guava to v33.3.1-jre ([#271](https://github.com/cloudquery/plugin-sdk-java/issues/271)) ([6f20717](https://github.com/cloudquery/plugin-sdk-java/commit/6f2071765a38a007f938a0ce3e0709573318256d)) +* **deps:** Update dependency commons-io:commons-io to v2.17.0 ([#276](https://github.com/cloudquery/plugin-sdk-java/issues/276)) ([a6772ee](https://github.com/cloudquery/plugin-sdk-java/commit/a6772ee8d6113f0ecd703c49d484a3341da3915b)) +* **deps:** Update dependency gradle to v8.10 ([#264](https://github.com/cloudquery/plugin-sdk-java/issues/264)) ([aa13b26](https://github.com/cloudquery/plugin-sdk-java/commit/aa13b26b1b5be3b805bbc6af42a57cc9d2b34fe6)) +* **deps:** Update dependency gradle to v8.10.2 ([#272](https://github.com/cloudquery/plugin-sdk-java/issues/272)) ([db4ff77](https://github.com/cloudquery/plugin-sdk-java/commit/db4ff77224f790e9c4af5bd2996d245b64b54c0a)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.24 ([#269](https://github.com/cloudquery/plugin-sdk-java/issues/269)) ([eb838d5](https://github.com/cloudquery/plugin-sdk-java/commit/eb838d5cabc34fa869889fdb7b757060bf071272)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.25 ([#270](https://github.com/cloudquery/plugin-sdk-java/issues/270)) ([94bcb9f](https://github.com/cloudquery/plugin-sdk-java/commit/94bcb9fa7fb54fca5b91b66a4d9c2ad6f0550049)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.26 ([#279](https://github.com/cloudquery/plugin-sdk-java/issues/279)) ([f1c9521](https://github.com/cloudquery/plugin-sdk-java/commit/f1c952117ae09cf0a6cb37686c2edbbcd7b4bb76)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.16.2 ([#261](https://github.com/cloudquery/plugin-sdk-java/issues/261)) ([4804e5e](https://github.com/cloudquery/plugin-sdk-java/commit/4804e5e75d0c0bd6cf76667baf3d44bcb240d716)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.17 ([#277](https://github.com/cloudquery/plugin-sdk-java/issues/277)) ([174a527](https://github.com/cloudquery/plugin-sdk-java/commit/174a527a9450ab4c48af3e42542689cacb12ed19)) +* **deps:** Update grpc-java monorepo to v1.66.0 ([#265](https://github.com/cloudquery/plugin-sdk-java/issues/265)) ([0ec09c0](https://github.com/cloudquery/plugin-sdk-java/commit/0ec09c056ae5a72a8f77a2135d2a1ee76bfac275)) +* **deps:** Update grpc-java monorepo to v1.68.0 ([#278](https://github.com/cloudquery/plugin-sdk-java/issues/278)) ([ba2ca97](https://github.com/cloudquery/plugin-sdk-java/commit/ba2ca973335113feef3489a61955ccb2283b8517)) +* **deps:** Update junit5 monorepo to v5.11.0 ([#266](https://github.com/cloudquery/plugin-sdk-java/issues/266)) ([72ea770](https://github.com/cloudquery/plugin-sdk-java/commit/72ea770a1c0d5254368c930d17a4d6d5fb2cc936)) +* **deps:** Update junit5 monorepo to v5.11.1 ([#273](https://github.com/cloudquery/plugin-sdk-java/issues/273)) ([5aca422](https://github.com/cloudquery/plugin-sdk-java/commit/5aca4224c1b181fe71b41219d74e995e971e62de)) +* **deps:** Update mockito monorepo to v5.13.0 ([#267](https://github.com/cloudquery/plugin-sdk-java/issues/267)) ([3bed68c](https://github.com/cloudquery/plugin-sdk-java/commit/3bed68c93b4264d8999add7ad50cc4b1b89cc44b)) +* **deps:** Update plugin io.freefair.lombok to v8.10 ([#268](https://github.com/cloudquery/plugin-sdk-java/issues/268)) ([8ca46c9](https://github.com/cloudquery/plugin-sdk-java/commit/8ca46c9ad61fb0dfb63f5cc1ce97305086f37896)) + ## [0.0.33](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.32...v0.0.33) (2024-08-01) diff --git a/lib/build.gradle b/lib/build.gradle index 4e37450..fe74de6 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.33' +version = '0.0.34' // x-release-please-end repositories { From 4b4d60310dadfdb7f3efa6f257c923c84a753172 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 31 Oct 2024 21:00:08 -0400 Subject: [PATCH 202/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.18.1 (#280) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-annotations](https://togithub.com/FasterXML/jackson) ([source](https://togithub.com/FasterXML/jackson-annotations)) | dependencies | patch | `2.18.0` -> `2.18.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index fe74de6..392557c 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -43,7 +43,7 @@ dependencies { implementation 'commons-io:commons-io:2.17.0' implementation "com.fasterxml.jackson.core:jackson-core:2.18.0" - implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.0" + implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.1" implementation 'org.apache.logging.log4j:log4j-api:2.23.1' implementation 'org.apache.logging.log4j:log4j-core:2.23.1' From 62ba6f08e72e4c831a2d4819b69c321459a0241f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 31 Oct 2024 21:54:57 -0400 Subject: [PATCH 203/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-core to v2.18.1 (#281) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-core](https://togithub.com/FasterXML/jackson-core) | dependencies | patch | `2.18.0` -> `2.18.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 392557c..02bd665 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -42,7 +42,7 @@ dependencies { implementation 'org.apache.arrow:arrow-vector:17.0.0' implementation 'commons-io:commons-io:2.17.0' - implementation "com.fasterxml.jackson.core:jackson-core:2.18.0" + implementation "com.fasterxml.jackson.core:jackson-core:2.18.1" implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.1" implementation 'org.apache.logging.log4j:log4j-api:2.23.1' From a327de7cd6aa1d65a8743cadd4ee8d52c5bb6076 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 31 Oct 2024 21:59:51 -0400 Subject: [PATCH 204/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.17.1 (#283) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://togithub.com/jqno/equalsverifier)) | dependencies | patch | `3.17` -> `3.17.1` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.17.1`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3171---2024-10-02) ##### Fixed - Instantiates `java.sql.Date` only when available, so EqualsVerifier no longer throws `NoClassDefFoundError` when it's not available (for instance, when running EqualsVerifier standalone instead of as part of a test suite). ([Issue 746](https://togithub.com/jqno/equalsverifier/issues/746))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 02bd665..2fdbbb1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.1' testImplementation 'org.mockito:mockito-core:5.13.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.13.0' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.17' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.17.1' testImplementation 'org.assertj:assertj-core:3.26.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.1' From 7ebc6db3f7068914a98d5ccdfe385c167b6104a2 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 31 Oct 2024 22:09:11 -0400 Subject: [PATCH 205/376] fix(deps): Update eclipse-temurin Docker tag to v21.0.5_11-jre (#284) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | patch | `21.0.4_7-jre` -> `21.0.5_11-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f15a432..24ae1a8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ COPY . . RUN gradle jar --no-daemon -FROM eclipse-temurin:21.0.4_7-jre +FROM eclipse-temurin:21.0.5_11-jre COPY --from=build /code/lib/build/libs/*.jar /app/app.jar From 569f4274dbe44c1ee54dbf2391e9f7ed8f55eaba Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 31 Oct 2024 22:50:46 -0400 Subject: [PATCH 206/376] fix(deps): Update grpc-java monorepo to v1.68.1 (#285) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-inprocess](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.68.0` -> `1.68.1` | | [io.grpc:grpc-testing](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.68.0` -> `1.68.1` | | [io.grpc:grpc-services](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.68.0` -> `1.68.1` | | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.68.0` -> `1.68.1` | | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.68.0` -> `1.68.1` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.68.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.68.1) ##### gRPC Java 1.68.1 Release Notes v1.68.0 was a mistake. This is the first release of version 1.68.x ##### Bug Fixes - xds: Fix NullPointerException introduced in "Fix load reporting when pick first is used for locality-routing" ([#​11553](https://togithub.com/grpc/grpc-java/issues/11553)). This was in 1.67.1 but not 1.68.0 ##### Behavior Changes - core: JSON parsing rejects duplicate keys in objects ([#​11575](https://togithub.com/grpc/grpc-java/issues/11575)) ([`4be69e3`](https://togithub.com/grpc/grpc-java/commit/4be69e3f8)). This is the existing behavior in C core. Duplicate keys in objects are dangerous as which value takes effect is undefined. Previously, the last value was used - okhttp: Detect transport executors with no remaining threads ([#​11503](https://togithub.com/grpc/grpc-java/issues/11503)) ([`3a6be9c`](https://togithub.com/grpc/grpc-java/commit/3a6be9ca1)). The transport uses two threads, but one is on-demand. If the executor provided to `builder.transportExecutor()` runs out of threads (e.g., it is a fixed-size thread pool), *all* transports can be wedged, unable to run on-demand tasks, until keepalive kills one of them. Two threads are now used when handshaking a new transport, and the transport will time out after 1 second with β€œTimed out waiting for second handshake thread” if two threads are unavailable - gcp-csm-o11y: Get `mesh_id` value from `CSM_MESH_ID` environment variable, instead of getting it from bootstrap file ([`84d30af`](https://togithub.com/grpc/grpc-java/commit/84d30afad)) ##### Improvements - New grpc-context-override-opentelemetry artifact ([#​11523](https://togithub.com/grpc/grpc-java/issues/11523)) ([`782a44a`](https://togithub.com/grpc/grpc-java/commit/782a44ad6)) ([#​11599](https://togithub.com/grpc/grpc-java/issues/11599)) ([`e59ae5f`](https://togithub.com/grpc/grpc-java/commit/e59ae5fad)). This is a `io.grpc.Context` storage override to store its state in `io.opentelemetry.context.Context`. Libraries should not add a dependency on this artifact, as applications can only have one storage override in their classpath - New grpc-s2a artifact. It is a transport that offloads the handshake similar to ALTS, but for TLS. It provides `io.grpc.s2a.S2AChannelCredentials` - api: Enhance name resolver \`ResolutionResult\` to hold addresses or error so the single listener API *onResult2* is used to convey both success and error cases for name resolution ([#​11330](https://togithub.com/grpc/grpc-java/issues/11330)) ([`1ded8af`](https://togithub.com/grpc/grpc-java/commit/1ded8aff8)) - core: Handle NameResolver/LoadBalancer exceptions when panicking ([`b692b9d`](https://togithub.com/grpc/grpc-java/commit/b692b9d26)). This expands the class of bugs that will fail RPCs with the panic error, versus some undefined behavior - core: Use the default service config in case of initial name resolver address resolution error ([#​11577](https://togithub.com/grpc/grpc-java/issues/11577)) ([`fa26a8b`](https://togithub.com/grpc/grpc-java/commit/fa26a8bc5)) - core: `StreamTracer.inboundMessageRead()` now reports uncompressed message size when the message does not need compression ([#​11598](https://togithub.com/grpc/grpc-java/issues/11598)) ([`2aae68e`](https://togithub.com/grpc/grpc-java/commit/2aae68e11)). Previously it always reported `-1` (unknown) - netty: Avoid TCP_USER_TIMEOUT warning when explicitly specifying a non-epoll channel type to use ([#​11564](https://togithub.com/grpc/grpc-java/issues/11564)) ([`62f4098`](https://togithub.com/grpc/grpc-java/commit/62f409810)) - okhttp: Don't warn about missing Conscrypt ([`6f35422`](https://togithub.com/grpc/grpc-java/commit/6f3542297)). This is especially helpful when using TLS but not running on Android - android: For `UdsChannelBuilder`, use fake IP instead of localhost ([`a908b5e`](https://togithub.com/grpc/grpc-java/commit/a908b5e40)). This avoids an unnecessary DNS lookup - xds: Add xDS node ID in select control plane errors to enable cross-referencing with control plane logs when debugging ([`f3cf7c3`](https://togithub.com/grpc/grpc-java/commit/f3cf7c3c7)) - xds: Enhanced how ADS stream terminations are handled, specifically addressing cases where a response has or hasn't been received (#​2e9c3e19f) - binder: Update status code documentation for Android 11's package visibility rules. ([#​11551](https://togithub.com/grpc/grpc-java/issues/11551)) ([`99be6e9`](https://togithub.com/grpc/grpc-java/commit/99be6e985)) - binder: Update binderDied() error description to spell out the possibilities for those unfamiliar with Android internals. ([#​11628](https://togithub.com/grpc/grpc-java/issues/11628)) ([`46c1b38`](https://togithub.com/grpc/grpc-java/commit/46c1b387f)) - example-gauth: Use application default creds instead of file argument ([#​11595](https://togithub.com/grpc/grpc-java/issues/11595)) ([`94a0a0d`](https://togithub.com/grpc/grpc-java/commit/94a0a0d1c)) - opentelemetry: Experimental OpenTelemetry tracing is available. Set the `GRPC_EXPERIMENTAL_ENABLE_OTEL_TRACING` environment variable to `true` to enable tracing support in `GrpcOpenTelemetry` ([#​11409](https://togithub.com/grpc/grpc-java/issues/11409), [#​11477](https://togithub.com/grpc/grpc-java/issues/11477))([`043ba55`](https://togithub.com/grpc/grpc-java/commit/043ba55), [`421e237`](https://togithub.com/grpc/grpc-java/commit/421e237)) ##### Dependencies - Updated protobuf-java to 3.25.5. This helps avoid CVE-2024-7254 ([`2ff837a`](https://togithub.com/grpc/grpc-java/commit/2ff837ab6)) Thanks to:\ [@​Juneezee](https://togithub.com/Juneezee)\ [@​lgalfaso](https://togithub.com/lgalfaso)\ [@​bestbeforetoday](https://togithub.com/bestbeforetoday)\ [@​hlx502](https://togithub.com/hlx502)\ [@​JoeCqupt](https://togithub.com/JoeCqupt)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 2fdbbb1..303fc80 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,9 +34,9 @@ dependencies { implementation 'com.google.guava:guava:33.3.1-jre' implementation 'info.picocli:picocli:4.7.6' implementation 'com.google.guava:guava:33.3.1-jre' - implementation 'io.grpc:grpc-protobuf:1.68.0' - implementation 'io.grpc:grpc-stub:1.68.0' - implementation 'io.grpc:grpc-services:1.68.0' + implementation 'io.grpc:grpc-protobuf:1.68.1' + implementation 'io.grpc:grpc-stub:1.68.1' + implementation 'io.grpc:grpc-services:1.68.1' implementation 'io.cloudquery:plugin-pb-java:0.0.26' implementation 'org.apache.arrow:arrow-memory-core:17.0.0' implementation 'org.apache.arrow:arrow-vector:17.0.0' @@ -48,8 +48,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.23.1' implementation 'org.apache.logging.log4j:log4j-core:2.23.1' - testImplementation 'io.grpc:grpc-testing:1.68.0' - testImplementation 'io.grpc:grpc-inprocess:1.68.0' + testImplementation 'io.grpc:grpc-testing:1.68.1' + testImplementation 'io.grpc:grpc-inprocess:1.68.1' testImplementation platform('org.junit:junit-bom:5.11.1') testImplementation 'org.junit.jupiter:junit-jupiter:5.11.1' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.1' From 18e0644d7d45aca0571d14ee48b2c360ddbab8ea Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 31 Oct 2024 23:36:27 -0400 Subject: [PATCH 207/376] fix(deps): Update junit5 monorepo to v5.11.3 (#286) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.junit.jupiter:junit-jupiter-engine](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.11.1` -> `5.11.3` | | [org.junit.jupiter:junit-jupiter-api](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.11.1` -> `5.11.3` | | [org.junit.jupiter:junit-jupiter](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.11.1` -> `5.11.3` | | [org.junit:junit-bom](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.11.1` -> `5.11.3` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 303fc80..c4c4496 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -50,14 +50,14 @@ dependencies { testImplementation 'io.grpc:grpc-testing:1.68.1' testImplementation 'io.grpc:grpc-inprocess:1.68.1' - testImplementation platform('org.junit:junit-bom:5.11.1') - testImplementation 'org.junit.jupiter:junit-jupiter:5.11.1' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.1' + testImplementation platform('org.junit:junit-bom:5.11.3') + testImplementation 'org.junit.jupiter:junit-jupiter:5.11.3' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.3' testImplementation 'org.mockito:mockito-core:5.13.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.13.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.17.1' testImplementation 'org.assertj:assertj-core:3.26.3' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.1' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.3' runtimeOnly "org.apache.arrow:arrow-memory-netty:17.0.0" } From e69b87fec058c791b0314d239625b628800fb90c Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 31 Oct 2024 23:40:35 -0400 Subject: [PATCH 208/376] fix(deps): Update plugin io.freefair.lombok to v8.10.2 (#287) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.freefair.lombok | plugin | patch | `8.10` -> `8.10.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index c4c4496..a5f7157 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java-library' - id "io.freefair.lombok" version "8.10" + id "io.freefair.lombok" version "8.10.2" id "maven-publish" id "com.diffplug.spotless" version "6.25.0" } From 671e7474411f3f9c14a5b144b3b5b2353bc28eeb Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 31 Oct 2024 23:44:21 -0400 Subject: [PATCH 209/376] fix(deps): Update log4j2 monorepo to v2.24.1 (#288) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.logging.log4j:log4j-core](https://logging.apache.org/log4j/2.x/) ([source](https://togithub.com/apache/logging-log4j2)) | dependencies | minor | `2.23.1` -> `2.24.1` | | [org.apache.logging.log4j:log4j-api](https://logging.apache.org/log4j/2.x/) ([source](https://togithub.com/apache/logging-log4j2)) | dependencies | minor | `2.23.1` -> `2.24.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index a5f7157..3052fef 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -45,8 +45,8 @@ dependencies { implementation "com.fasterxml.jackson.core:jackson-core:2.18.1" implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.1" - implementation 'org.apache.logging.log4j:log4j-api:2.23.1' - implementation 'org.apache.logging.log4j:log4j-core:2.23.1' + implementation 'org.apache.logging.log4j:log4j-api:2.24.1' + implementation 'org.apache.logging.log4j:log4j-core:2.24.1' testImplementation 'io.grpc:grpc-testing:1.68.1' testImplementation 'io.grpc:grpc-inprocess:1.68.1' From ac66f9f5310a1f7454692fb3f3ee5990d2902400 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 4 Nov 2024 03:46:07 -0500 Subject: [PATCH 210/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.27 (#289) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.26` -> `0.0.27` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 3052fef..a345ee4 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.68.1' implementation 'io.grpc:grpc-stub:1.68.1' implementation 'io.grpc:grpc-services:1.68.1' - implementation 'io.cloudquery:plugin-pb-java:0.0.26' + implementation 'io.cloudquery:plugin-pb-java:0.0.27' implementation 'org.apache.arrow:arrow-memory-core:17.0.0' implementation 'org.apache.arrow:arrow-vector:17.0.0' implementation 'commons-io:commons-io:2.17.0' From 6c28a71bd76f09a89c89d4a207ed5df3fdcd7b7c Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 4 Nov 2024 04:09:54 -0500 Subject: [PATCH 211/376] chore(main): Release v0.0.35 (#282) :robot: I have created a release *beep* *boop* --- ## [0.0.35](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.34...v0.0.35) (2024-11-04) ### Bug Fixes * **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.18.1 ([#280](https://github.com/cloudquery/plugin-sdk-java/issues/280)) ([4b4d603](https://github.com/cloudquery/plugin-sdk-java/commit/4b4d60310dadfdb7f3efa6f257c923c84a753172)) * **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.18.1 ([#281](https://github.com/cloudquery/plugin-sdk-java/issues/281)) ([62ba6f0](https://github.com/cloudquery/plugin-sdk-java/commit/62ba6f08e72e4c831a2d4819b69c321459a0241f)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.27 ([#289](https://github.com/cloudquery/plugin-sdk-java/issues/289)) ([ac66f9f](https://github.com/cloudquery/plugin-sdk-java/commit/ac66f9f5310a1f7454692fb3f3ee5990d2902400)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.17.1 ([#283](https://github.com/cloudquery/plugin-sdk-java/issues/283)) ([a327de7](https://github.com/cloudquery/plugin-sdk-java/commit/a327de7cd6aa1d65a8743cadd4ee8d52c5bb6076)) * **deps:** Update eclipse-temurin Docker tag to v21.0.5_11-jre ([#284](https://github.com/cloudquery/plugin-sdk-java/issues/284)) ([7ebc6db](https://github.com/cloudquery/plugin-sdk-java/commit/7ebc6db3f7068914a98d5ccdfe385c167b6104a2)) * **deps:** Update grpc-java monorepo to v1.68.1 ([#285](https://github.com/cloudquery/plugin-sdk-java/issues/285)) ([569f427](https://github.com/cloudquery/plugin-sdk-java/commit/569f4274dbe44c1ee54dbf2391e9f7ed8f55eaba)) * **deps:** Update junit5 monorepo to v5.11.3 ([#286](https://github.com/cloudquery/plugin-sdk-java/issues/286)) ([18e0644](https://github.com/cloudquery/plugin-sdk-java/commit/18e0644d7d45aca0571d14ee48b2c360ddbab8ea)) * **deps:** Update log4j2 monorepo to v2.24.1 ([#288](https://github.com/cloudquery/plugin-sdk-java/issues/288)) ([671e747](https://github.com/cloudquery/plugin-sdk-java/commit/671e7474411f3f9c14a5b144b3b5b2353bc28eeb)) * **deps:** Update plugin io.freefair.lombok to v8.10.2 ([#287](https://github.com/cloudquery/plugin-sdk-java/issues/287)) ([e69b87f](https://github.com/cloudquery/plugin-sdk-java/commit/e69b87fec058c791b0314d239625b628800fb90c)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 15 +++++++++++++++ lib/build.gradle | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 9efa5ca..a4c7ad2 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.34" + ".": "0.0.35" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 9938a7a..b39dfbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [0.0.35](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.34...v0.0.35) (2024-11-04) + + +### Bug Fixes + +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.18.1 ([#280](https://github.com/cloudquery/plugin-sdk-java/issues/280)) ([4b4d603](https://github.com/cloudquery/plugin-sdk-java/commit/4b4d60310dadfdb7f3efa6f257c923c84a753172)) +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.18.1 ([#281](https://github.com/cloudquery/plugin-sdk-java/issues/281)) ([62ba6f0](https://github.com/cloudquery/plugin-sdk-java/commit/62ba6f08e72e4c831a2d4819b69c321459a0241f)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.27 ([#289](https://github.com/cloudquery/plugin-sdk-java/issues/289)) ([ac66f9f](https://github.com/cloudquery/plugin-sdk-java/commit/ac66f9f5310a1f7454692fb3f3ee5990d2902400)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.17.1 ([#283](https://github.com/cloudquery/plugin-sdk-java/issues/283)) ([a327de7](https://github.com/cloudquery/plugin-sdk-java/commit/a327de7cd6aa1d65a8743cadd4ee8d52c5bb6076)) +* **deps:** Update eclipse-temurin Docker tag to v21.0.5_11-jre ([#284](https://github.com/cloudquery/plugin-sdk-java/issues/284)) ([7ebc6db](https://github.com/cloudquery/plugin-sdk-java/commit/7ebc6db3f7068914a98d5ccdfe385c167b6104a2)) +* **deps:** Update grpc-java monorepo to v1.68.1 ([#285](https://github.com/cloudquery/plugin-sdk-java/issues/285)) ([569f427](https://github.com/cloudquery/plugin-sdk-java/commit/569f4274dbe44c1ee54dbf2391e9f7ed8f55eaba)) +* **deps:** Update junit5 monorepo to v5.11.3 ([#286](https://github.com/cloudquery/plugin-sdk-java/issues/286)) ([18e0644](https://github.com/cloudquery/plugin-sdk-java/commit/18e0644d7d45aca0571d14ee48b2c360ddbab8ea)) +* **deps:** Update log4j2 monorepo to v2.24.1 ([#288](https://github.com/cloudquery/plugin-sdk-java/issues/288)) ([671e747](https://github.com/cloudquery/plugin-sdk-java/commit/671e7474411f3f9c14a5b144b3b5b2353bc28eeb)) +* **deps:** Update plugin io.freefair.lombok to v8.10.2 ([#287](https://github.com/cloudquery/plugin-sdk-java/issues/287)) ([e69b87f](https://github.com/cloudquery/plugin-sdk-java/commit/e69b87fec058c791b0314d239625b628800fb90c)) + ## [0.0.34](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.33...v0.0.34) (2024-10-01) diff --git a/lib/build.gradle b/lib/build.gradle index a345ee4..7898377 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.34' +version = '0.0.35' // x-release-please-end repositories { From 92919c2ac8c1c207ad04600f59ac189a9a1982e8 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Dec 2024 03:07:25 +0200 Subject: [PATCH 212/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.17.3 (#290) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://togithub.com/jqno/equalsverifier)) | dependencies | patch | `3.17.1` -> `3.17.3` | `3.17.4` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.17.3`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3173---2024-11-07) ##### Fixed - Fixes bug when passing a subclass of a field's type into `#withPrefabValues()` (which was introduced in the previous version). ([Issue 1014](https://togithub.com/jqno/equalsverifier/issues/1014)) - In Windows builds, the handling of line endings didn't work properly. ([Issue 1015](https://togithub.com/jqno/equalsverifier/issues/1015)) ### [`v3.17.2`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3172---2024-11-05) ##### Fixed - It's now possible to pass a subclass of a field's type into `#withPrefabValuesForField()`. ([Issue 1012](https://togithub.com/jqno/equalsverifier/issues/1012)) ##### Changed - The internal instantiation logic has been further refactored, to be more robust and extensible for future enhancements.
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 7898377..0190f64 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.3' testImplementation 'org.mockito:mockito-core:5.13.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.13.0' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.17.1' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.17.3' testImplementation 'org.assertj:assertj-core:3.26.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.3' From 4afac671f175df6222cf94a9826e6d6c5fcf0a8a Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Dec 2024 03:11:28 +0200 Subject: [PATCH 213/376] fix(deps): Update log4j2 monorepo to v2.24.2 (#291) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.logging.log4j:log4j-core](https://logging.apache.org/log4j/2.x/) ([source](https://togithub.com/apache/logging-log4j2)) | dependencies | patch | `2.24.1` -> `2.24.2` | | [org.apache.logging.log4j:log4j-api](https://logging.apache.org/log4j/2.x/) ([source](https://togithub.com/apache/logging-log4j2)) | dependencies | patch | `2.24.1` -> `2.24.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 0190f64..6e81369 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -45,8 +45,8 @@ dependencies { implementation "com.fasterxml.jackson.core:jackson-core:2.18.1" implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.1" - implementation 'org.apache.logging.log4j:log4j-api:2.24.1' - implementation 'org.apache.logging.log4j:log4j-core:2.24.1' + implementation 'org.apache.logging.log4j:log4j-api:2.24.2' + implementation 'org.apache.logging.log4j:log4j-core:2.24.2' testImplementation 'io.grpc:grpc-testing:1.68.1' testImplementation 'io.grpc:grpc-inprocess:1.68.1' From b3a12bf81d9e34fca594720e634b1037b83f13ff Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Dec 2024 03:59:44 +0200 Subject: [PATCH 214/376] fix(deps): Update dependency commons-io:commons-io to v2.18.0 (#293) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [commons-io:commons-io](https://commons.apache.org/proper/commons-io/) ([source](https://gitbox.apache.org/repos/asf?p=commons-io.git)) | dependencies | minor | `2.17.0` -> `2.18.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 6e81369..f3aa120 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -40,7 +40,7 @@ dependencies { implementation 'io.cloudquery:plugin-pb-java:0.0.27' implementation 'org.apache.arrow:arrow-memory-core:17.0.0' implementation 'org.apache.arrow:arrow-vector:17.0.0' - implementation 'commons-io:commons-io:2.17.0' + implementation 'commons-io:commons-io:2.18.0' implementation "com.fasterxml.jackson.core:jackson-core:2.18.1" implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.1" From 6a16d108d97a9d6397c0053f0082ad4c88eddfe9 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Dec 2024 04:04:08 +0200 Subject: [PATCH 215/376] fix(deps): Update dependency gradle to v8.11.1 (#294) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://togithub.com/gradle/gradle)) | minor | `8.10.2` -> `8.11.1` | --- ### Release Notes
gradle/gradle (gradle) ### [`v8.11.1`](https://togithub.com/gradle/gradle/releases/tag/v8.11.1): 8.11.1 [Compare Source](https://togithub.com/gradle/gradle/compare/v8.11.0...v8.11.1) This is a patch release for Gradle 8.11. We recommend users upgrade to 8.11.1 instead of 8.11. It fixes the following issues: - [#​31268](https://togithub.com/gradle/gradle/issues/31268) BuildEventsListenerRegistry corrupted with Isolated Projects and parallel configuration - [#​31282](https://togithub.com/gradle/gradle/issues/31282) Running executables sporadically fails with ETXTBSY (Text file busy) - [#​31284](https://togithub.com/gradle/gradle/issues/31284) ArrayIndexOutOfBoundsException after upgrading to gradle 8.11 when generating problems report - [#​31310](https://togithub.com/gradle/gradle/issues/31310) Unable to run Gradle task in 8.10 due to bytecode interception [Read the Release Notes](https://docs.gradle.org/8.11.1/release-notes.html) #### Upgrade instructions Switch your build to use Gradle 8.11.1 by updating your wrapper: ./gradlew wrapper --gradle-version=8.11.1 See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.11.1/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.11.1/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://togithub.com/gradle). ### [`v8.11`](https://togithub.com/gradle/gradle/releases/tag/v8.11.0): 8.11 [Compare Source](https://togithub.com/gradle/gradle/compare/v8.10.2...v8.11.0) The Gradle team is excited to announce Gradle 8.11. [Read the Release Notes](https://docs.gradle.org/8.11/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Adam](https://togithub.com/adam-enko), [alyssoncs](https://togithub.com/alyssoncs), [Bilel MEDIMEGH](https://togithub.com/LelouBil), [BjΓΆrn Kautler](https://togithub.com/Vampire), [Chuck Thomas](https://togithub.com/chuckthemole), [Daniel Lacasse](https://togithub.com/lacasseio), [Finn Petersen](https://togithub.com/fp7), [JK](https://togithub.com/jknair0), [JΓ©rΓ©mie Bresson](https://togithub.com/jmini), [luozexuan](https://togithub.com/luozexuan), [Mahdi Hosseinzadeh](https://togithub.com/mahozad), [Markus Gaisbauer](https://togithub.com/quijote), [Matthew Haughton](https://togithub.com/3flex), [Matthew Von-Maszewski](https://togithub.com/matthewvon), [ploober](https://togithub.com/ploober), [Siarhei](https://togithub.com/madhead), [Titus James](https://togithub.com/tj330), [vrp0211](https://togithub.com/vrp0211) #### Upgrade instructions Switch your build to use Gradle 8.11 by updating your wrapper: ./gradlew wrapper --gradle-version=8.11 See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.11/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.11/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://togithub.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index df97d72..e2847c8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 4556dbf2f86d819c68d585736cf0a6dca08a80c0 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Dec 2024 05:01:48 +0200 Subject: [PATCH 216/376] fix(deps): Update mockito monorepo to v5.14.2 (#295) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.mockito:mockito-junit-jupiter](https://togithub.com/mockito/mockito) | dependencies | minor | `5.13.0` -> `5.14.2` | | [org.mockito:mockito-core](https://togithub.com/mockito/mockito) | dependencies | minor | `5.13.0` -> `5.14.2` | --- ### Release Notes
mockito/mockito (org.mockito:mockito-junit-jupiter) ### [`v5.14.2`](https://togithub.com/mockito/mockito/releases/tag/v5.14.2) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://togithub.com/shipkit/shipkit-changelog)* ##### 5.14.2 - 2024-10-15 - [12 commit(s)](https://togithub.com/mockito/mockito/compare/v5.14.1...v5.14.2) by Brice Dutheil, Rafael Winterhalter, dependabot\[bot] - Fix [#​3466](https://togithub.com/mockito/mockito/issues/3466) nexus publishing configuration [(#​3470)](https://togithub.com/mockito/mockito/pull/3470) - Bump org.jetbrains.kotlin:kotlin-stdlib from 2.0.20 to 2.0.21 [(#​3468)](https://togithub.com/mockito/mockito/pull/3468) - Bump bytebuddy from 1.15.3 to 1.15.4 [(#​3467)](https://togithub.com/mockito/mockito/pull/3467) - Missing 5.14.2 release [(#​3466)](https://togithub.com/mockito/mockito/issues/3466) - chore: Tests whether JVM warnings / messages on dynamic attach [(#​3462)](https://togithub.com/mockito/mockito/pull/3462) - Bump junit-jupiter from 5.11.1 to 5.11.2 [(#​3461)](https://togithub.com/mockito/mockito/pull/3461) - Renames extension modules with `mockito-` prefix [(#​3460)](https://togithub.com/mockito/mockito/pull/3460) - Avoid attach warning if Byte Buddy is configured for command-line attach. [(#​3459)](https://togithub.com/mockito/mockito/pull/3459) - Bump org.shipkit:shipkit-auto-version from 2.0.10 to 2.0.11 [(#​3458)](https://togithub.com/mockito/mockito/pull/3458) - Bump junit-jupiter from 5.11.0 to 5.11.1 [(#​3455)](https://togithub.com/mockito/mockito/pull/3455) - Move root project to dedicated core folder [(#​3444)](https://togithub.com/mockito/mockito/issues/3444) - Bump biz.aQute.bnd:biz.aQute.bnd.gradle from 6.4.0 to 7.0.0 [(#​3136)](https://togithub.com/mockito/mockito/pull/3136) ### [`v5.14.1`](https://togithub.com/mockito/mockito/releases/tag/v5.14.1) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://togithub.com/shipkit/shipkit-changelog)* ##### 5.14.1 - 2024-09-30 - [2 commit(s)](https://togithub.com/mockito/mockito/compare/v5.14.0...v5.14.1) by Brice Dutheil, dependabot\[bot] - fix: gradle mockitoAgent configuration should not be transitive [(#​3454)](https://togithub.com/mockito/mockito/pull/3454) - Bump bytebuddy from 1.15.2 to 1.15.3 [(#​3452)](https://togithub.com/mockito/mockito/pull/3452) - Allow for installing a Java agent within the Mockito jar, without exposing Byte Buddy's attach mechanism. [(#​3437)](https://togithub.com/mockito/mockito/pull/3437) ### [`v5.14.0`](https://togithub.com/mockito/mockito/releases/tag/v5.14.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://togithub.com/shipkit/shipkit-changelog)* ##### 5.14.0 - 2024-09-27 - [9 commit(s)](https://togithub.com/mockito/mockito/compare/v5.13.0...v5.14.0) by Ali-Hassan, Brice Dutheil, David Saff, Rafael Winterhalter, dependabot\[bot] - Bump org.junit.platform:junit-platform-launcher from 1.11.0 to 1.11.1 [(#​3451)](https://togithub.com/mockito/mockito/pull/3451) - Bump bytebuddy from 1.15.1 to 1.15.2 [(#​3450)](https://togithub.com/mockito/mockito/pull/3450) - Update Documentation of ArgumentCaptor.java [(#​3448)](https://togithub.com/mockito/mockito/pull/3448) - Split subprojects [(#​3447)](https://togithub.com/mockito/mockito/pull/3447) - Separate extensions from integration tests [(#​3443)](https://togithub.com/mockito/mockito/issues/3443) - Bump org.eclipse.platform:org.eclipse.osgi from 3.20.0 to 3.21.0 [(#​3440)](https://togithub.com/mockito/mockito/pull/3440) - Bump com.gradle.enterprise from 3.18 to 3.18.1 [(#​3439)](https://togithub.com/mockito/mockito/pull/3439) - Allow for installing a Java agent within the Mockito jar, without exposing Byte Buddy's attach mechanism. [(#​3437)](https://togithub.com/mockito/mockito/pull/3437) - Bump bytebuddy from 1.15.0 to 1.15.1 [(#​3434)](https://togithub.com/mockito/mockito/pull/3434) - Fixes [#​3419](https://togithub.com/mockito/mockito/issues/3419): Disable mocks with an error message [(#​3424)](https://togithub.com/mockito/mockito/pull/3424) - Accessing a mock after clearInlineMocks could provide much more useful error message. [(#​3419)](https://togithub.com/mockito/mockito/issues/3419)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index f3aa120..06a674c 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -53,8 +53,8 @@ dependencies { testImplementation platform('org.junit:junit-bom:5.11.3') testImplementation 'org.junit.jupiter:junit-jupiter:5.11.3' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.3' - testImplementation 'org.mockito:mockito-core:5.13.0' - testImplementation 'org.mockito:mockito-junit-jupiter:5.13.0' + testImplementation 'org.mockito:mockito-core:5.14.2' + testImplementation 'org.mockito:mockito-junit-jupiter:5.14.2' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.17.3' testImplementation 'org.assertj:assertj-core:3.26.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.3' From 0c65f98a18f751d5773494fcf0f68c55713a1638 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Dec 2024 12:24:21 +0200 Subject: [PATCH 217/376] fix(deps): Update dependency org.apache.arrow:arrow-vector to v18 (#298) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.arrow:arrow-vector](https://arrow.apache.org/) | dependencies | major | `17.0.0` -> `18.1.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 06a674c..fd47a72 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -39,7 +39,7 @@ dependencies { implementation 'io.grpc:grpc-services:1.68.1' implementation 'io.cloudquery:plugin-pb-java:0.0.27' implementation 'org.apache.arrow:arrow-memory-core:17.0.0' - implementation 'org.apache.arrow:arrow-vector:17.0.0' + implementation 'org.apache.arrow:arrow-vector:18.1.0' implementation 'commons-io:commons-io:2.18.0' implementation "com.fasterxml.jackson.core:jackson-core:2.18.1" From 0373336d6f0bba3bd16ae82d6f52378969246292 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Dec 2024 12:27:53 +0200 Subject: [PATCH 218/376] fix(deps): Update dependency org.apache.arrow:arrow-memory-netty to v18 (#297) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.arrow:arrow-memory-netty](https://arrow.apache.org/) | dependencies | major | `17.0.0` -> `18.1.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index fd47a72..7b1420d 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -59,7 +59,7 @@ dependencies { testImplementation 'org.assertj:assertj-core:3.26.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.3' - runtimeOnly "org.apache.arrow:arrow-memory-netty:17.0.0" + runtimeOnly "org.apache.arrow:arrow-memory-netty:18.1.0" } test { From 5d89dc7e76f5548f58727bd7e5d1315062dd15cf Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Dec 2024 12:34:22 +0200 Subject: [PATCH 219/376] fix(deps): Update dependency org.apache.arrow:arrow-memory-core to v18 (#296) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.arrow:arrow-memory-core](https://arrow.apache.org/) | dependencies | major | `17.0.0` -> `18.1.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 7b1420d..70abc52 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation 'io.grpc:grpc-stub:1.68.1' implementation 'io.grpc:grpc-services:1.68.1' implementation 'io.cloudquery:plugin-pb-java:0.0.27' - implementation 'org.apache.arrow:arrow-memory-core:17.0.0' + implementation 'org.apache.arrow:arrow-memory-core:18.1.0' implementation 'org.apache.arrow:arrow-vector:18.1.0' implementation 'commons-io:commons-io:2.18.0' From d2e2095eb81241c4edff82e2bdb64476198fb4d1 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Dec 2024 13:28:11 +0200 Subject: [PATCH 220/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.18.2 (#299) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-annotations](https://togithub.com/FasterXML/jackson) ([source](https://togithub.com/FasterXML/jackson-annotations)) | dependencies | patch | `2.18.1` -> `2.18.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 70abc52..8a5be21 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -43,7 +43,7 @@ dependencies { implementation 'commons-io:commons-io:2.18.0' implementation "com.fasterxml.jackson.core:jackson-core:2.18.1" - implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.1" + implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.2" implementation 'org.apache.logging.log4j:log4j-api:2.24.2' implementation 'org.apache.logging.log4j:log4j-core:2.24.2' From 8f34697509c5749f7c9db03afe8d14ace09728b2 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Dec 2024 13:32:09 +0200 Subject: [PATCH 221/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.28 (#301) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.27` -> `0.0.28` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 8a5be21..8d79d0c 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.68.1' implementation 'io.grpc:grpc-stub:1.68.1' implementation 'io.grpc:grpc-services:1.68.1' - implementation 'io.cloudquery:plugin-pb-java:0.0.27' + implementation 'io.cloudquery:plugin-pb-java:0.0.28' implementation 'org.apache.arrow:arrow-memory-core:18.1.0' implementation 'org.apache.arrow:arrow-vector:18.1.0' implementation 'commons-io:commons-io:2.18.0' From 475e0965bfeb5d379a644170b55d2b59006cc666 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Dec 2024 13:36:15 +0200 Subject: [PATCH 222/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.17.4 (#302) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://togithub.com/jqno/equalsverifier)) | dependencies | patch | `3.17.3` -> `3.17.4` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.17.4`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3174---2024-11-29) - Fixes bug where the wrong generic type was provided when multiple fields of the same type but with different generic parameters exist. ([Issue 1022](https://togithub.com/jqno/equalsverifier/issues/1022)) ##### Changed - The internal instantiation logic has been further refactored, to be more robust and extensible for future enhancements.
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 8d79d0c..ac16a89 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.3' testImplementation 'org.mockito:mockito-core:5.14.2' testImplementation 'org.mockito:mockito-junit-jupiter:5.14.2' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.17.3' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.17.4' testImplementation 'org.assertj:assertj-core:3.26.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.3' From 39d00d8b5e76ab18335daa6cb0675b413a2674ef Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Dec 2024 13:39:50 +0200 Subject: [PATCH 223/376] fix(deps): Update plugin io.freefair.lombok to v8.11 (#304) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.freefair.lombok | plugin | minor | `8.10.2` -> `8.11` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index ac16a89..09f32bf 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java-library' - id "io.freefair.lombok" version "8.10.2" + id "io.freefair.lombok" version "8.11" id "maven-publish" id "com.diffplug.spotless" version "6.25.0" } From 612917d43ba46a2d6572964811fe5e14703fa606 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Dec 2024 13:43:28 +0200 Subject: [PATCH 224/376] fix(deps): Update plugin org.gradle.toolchains.foojay-resolver-convention to v0.9.0 (#305) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | org.gradle.toolchains.foojay-resolver-convention | plugin | minor | `0.8.0` -> `0.9.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- settings.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle b/settings.gradle index eadb282..758b930 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,7 +8,7 @@ plugins { // Apply the foojay-resolver plugin to allow automatic download of JDKs - id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0' + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.9.0' } rootProject.name = 'plugin-sdk-java' From 3377123c4d86f4011450f2a10b9da7fed36d1206 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Dec 2024 13:46:48 +0200 Subject: [PATCH 225/376] chore(deps): Update mikepenz/action-junit-report action to v5 (#306) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [mikepenz/action-junit-report](https://togithub.com/mikepenz/action-junit-report) | action | major | `v4` -> `v5` | --- ### Release Notes
mikepenz/action-junit-report (mikepenz/action-junit-report) ### [`v5`](https://togithub.com/mikepenz/action-junit-report/releases/tag/v5) [Compare Source](https://togithub.com/mikepenz/action-junit-report/compare/v4...v5) - no changes
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bee02b1..c696e63 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,7 +30,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_ACTOR: ${{ github.actor }} - name: Publish Test Report - uses: mikepenz/action-junit-report@v4 + uses: mikepenz/action-junit-report@v5 if: success() || failure() # always run even if the previous step fails with: report_paths: "**/build/test-results/test/TEST-*.xml" From 0f19754aa03ef90fc6716c04607ef6ee0029419b Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Dec 2024 14:32:33 +0200 Subject: [PATCH 226/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-core to v2.18.2 (#300) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-core](https://togithub.com/FasterXML/jackson-core) | dependencies | patch | `2.18.1` -> `2.18.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 09f32bf..ece8b30 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -42,7 +42,7 @@ dependencies { implementation 'org.apache.arrow:arrow-vector:18.1.0' implementation 'commons-io:commons-io:2.18.0' - implementation "com.fasterxml.jackson.core:jackson-core:2.18.1" + implementation "com.fasterxml.jackson.core:jackson-core:2.18.2" implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.2" implementation 'org.apache.logging.log4j:log4j-api:2.24.2' From 9e2369eee4c89b781c87a4c1e6719f1d2a516b98 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Dec 2024 14:37:07 +0200 Subject: [PATCH 227/376] fix(deps): Update grpc-java monorepo to v1.68.2 (#303) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-inprocess](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.68.1` -> `1.68.2` | | [io.grpc:grpc-testing](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.68.1` -> `1.68.2` | | [io.grpc:grpc-services](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.68.1` -> `1.68.2` | | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.68.1` -> `1.68.2` | | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | patch | `1.68.1` -> `1.68.2` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.68.2`](https://togithub.com/grpc/grpc-java/releases/tag/v1.68.2) ##### Bug Fixes - api: When forwarding from Listener onAddresses to Listener2 continue to use onResult ([https://github.com/grpc/grpc-java/pull/11688](https://togithub.com/grpc/grpc-java/pull/11688)). This fixes a 1.68.1 "IllegalStateException: Not called from the SynchronizationContext" regression ([#​11662](https://togithub.com/grpc/grpc-java/issues/11662)) that could be seen in certain custom NameResolvers - okhttp: If the frame handler thread is null do not schedule it on the executor ([https://github.com/grpc/grpc-java/pull/11716](https://togithub.com/grpc/grpc-java/pull/11716)). This fixes a 1.68.1 NullPointerException regression when a custom transportExecutor was provided to the channel and it did not have enough threads to run new tasks ##### Improvements - examples: Use xds-enabled server and xds credentials in example-gcp-csm-observability ([https://github.com/grpc/grpc-java/pull/11707](https://togithub.com/grpc/grpc-java/pull/11707))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index ece8b30..a4b87a9 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,9 +34,9 @@ dependencies { implementation 'com.google.guava:guava:33.3.1-jre' implementation 'info.picocli:picocli:4.7.6' implementation 'com.google.guava:guava:33.3.1-jre' - implementation 'io.grpc:grpc-protobuf:1.68.1' - implementation 'io.grpc:grpc-stub:1.68.1' - implementation 'io.grpc:grpc-services:1.68.1' + implementation 'io.grpc:grpc-protobuf:1.68.2' + implementation 'io.grpc:grpc-stub:1.68.2' + implementation 'io.grpc:grpc-services:1.68.2' implementation 'io.cloudquery:plugin-pb-java:0.0.28' implementation 'org.apache.arrow:arrow-memory-core:18.1.0' implementation 'org.apache.arrow:arrow-vector:18.1.0' @@ -48,8 +48,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.24.2' implementation 'org.apache.logging.log4j:log4j-core:2.24.2' - testImplementation 'io.grpc:grpc-testing:1.68.1' - testImplementation 'io.grpc:grpc-inprocess:1.68.1' + testImplementation 'io.grpc:grpc-testing:1.68.2' + testImplementation 'io.grpc:grpc-inprocess:1.68.2' testImplementation platform('org.junit:junit-bom:5.11.3') testImplementation 'org.junit.jupiter:junit-jupiter:5.11.3' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.3' From 7821b05cc46d67666209101e9a31960eec7a3caf Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Dec 2024 15:37:24 +0200 Subject: [PATCH 228/376] chore(main): Release v0.0.36 (#292) :robot: I have created a release *beep* *boop* --- ## [0.0.36](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.35...v0.0.36) (2024-12-02) ### Bug Fixes * **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.18.2 ([#299](https://github.com/cloudquery/plugin-sdk-java/issues/299)) ([d2e2095](https://github.com/cloudquery/plugin-sdk-java/commit/d2e2095eb81241c4edff82e2bdb64476198fb4d1)) * **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.18.2 ([#300](https://github.com/cloudquery/plugin-sdk-java/issues/300)) ([0f19754](https://github.com/cloudquery/plugin-sdk-java/commit/0f19754aa03ef90fc6716c04607ef6ee0029419b)) * **deps:** Update dependency commons-io:commons-io to v2.18.0 ([#293](https://github.com/cloudquery/plugin-sdk-java/issues/293)) ([b3a12bf](https://github.com/cloudquery/plugin-sdk-java/commit/b3a12bf81d9e34fca594720e634b1037b83f13ff)) * **deps:** Update dependency gradle to v8.11.1 ([#294](https://github.com/cloudquery/plugin-sdk-java/issues/294)) ([6a16d10](https://github.com/cloudquery/plugin-sdk-java/commit/6a16d108d97a9d6397c0053f0082ad4c88eddfe9)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.28 ([#301](https://github.com/cloudquery/plugin-sdk-java/issues/301)) ([8f34697](https://github.com/cloudquery/plugin-sdk-java/commit/8f34697509c5749f7c9db03afe8d14ace09728b2)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.17.3 ([#290](https://github.com/cloudquery/plugin-sdk-java/issues/290)) ([92919c2](https://github.com/cloudquery/plugin-sdk-java/commit/92919c2ac8c1c207ad04600f59ac189a9a1982e8)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.17.4 ([#302](https://github.com/cloudquery/plugin-sdk-java/issues/302)) ([475e096](https://github.com/cloudquery/plugin-sdk-java/commit/475e0965bfeb5d379a644170b55d2b59006cc666)) * **deps:** Update dependency org.apache.arrow:arrow-memory-core to v18 ([#296](https://github.com/cloudquery/plugin-sdk-java/issues/296)) ([5d89dc7](https://github.com/cloudquery/plugin-sdk-java/commit/5d89dc7e76f5548f58727bd7e5d1315062dd15cf)) * **deps:** Update dependency org.apache.arrow:arrow-memory-netty to v18 ([#297](https://github.com/cloudquery/plugin-sdk-java/issues/297)) ([0373336](https://github.com/cloudquery/plugin-sdk-java/commit/0373336d6f0bba3bd16ae82d6f52378969246292)) * **deps:** Update dependency org.apache.arrow:arrow-vector to v18 ([#298](https://github.com/cloudquery/plugin-sdk-java/issues/298)) ([0c65f98](https://github.com/cloudquery/plugin-sdk-java/commit/0c65f98a18f751d5773494fcf0f68c55713a1638)) * **deps:** Update grpc-java monorepo to v1.68.2 ([#303](https://github.com/cloudquery/plugin-sdk-java/issues/303)) ([9e2369e](https://github.com/cloudquery/plugin-sdk-java/commit/9e2369eee4c89b781c87a4c1e6719f1d2a516b98)) * **deps:** Update log4j2 monorepo to v2.24.2 ([#291](https://github.com/cloudquery/plugin-sdk-java/issues/291)) ([4afac67](https://github.com/cloudquery/plugin-sdk-java/commit/4afac671f175df6222cf94a9826e6d6c5fcf0a8a)) * **deps:** Update mockito monorepo to v5.14.2 ([#295](https://github.com/cloudquery/plugin-sdk-java/issues/295)) ([4556dbf](https://github.com/cloudquery/plugin-sdk-java/commit/4556dbf2f86d819c68d585736cf0a6dca08a80c0)) * **deps:** Update plugin io.freefair.lombok to v8.11 ([#304](https://github.com/cloudquery/plugin-sdk-java/issues/304)) ([39d00d8](https://github.com/cloudquery/plugin-sdk-java/commit/39d00d8b5e76ab18335daa6cb0675b413a2674ef)) * **deps:** Update plugin org.gradle.toolchains.foojay-resolver-convention to v0.9.0 ([#305](https://github.com/cloudquery/plugin-sdk-java/issues/305)) ([612917d](https://github.com/cloudquery/plugin-sdk-java/commit/612917d43ba46a2d6572964811fe5e14703fa606)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 21 +++++++++++++++++++++ lib/build.gradle | 2 +- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a4c7ad2..d1b9552 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.35" + ".": "0.0.36" } diff --git a/CHANGELOG.md b/CHANGELOG.md index b39dfbc..0709796 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## [0.0.36](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.35...v0.0.36) (2024-12-02) + + +### Bug Fixes + +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-annotations to v2.18.2 ([#299](https://github.com/cloudquery/plugin-sdk-java/issues/299)) ([d2e2095](https://github.com/cloudquery/plugin-sdk-java/commit/d2e2095eb81241c4edff82e2bdb64476198fb4d1)) +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.18.2 ([#300](https://github.com/cloudquery/plugin-sdk-java/issues/300)) ([0f19754](https://github.com/cloudquery/plugin-sdk-java/commit/0f19754aa03ef90fc6716c04607ef6ee0029419b)) +* **deps:** Update dependency commons-io:commons-io to v2.18.0 ([#293](https://github.com/cloudquery/plugin-sdk-java/issues/293)) ([b3a12bf](https://github.com/cloudquery/plugin-sdk-java/commit/b3a12bf81d9e34fca594720e634b1037b83f13ff)) +* **deps:** Update dependency gradle to v8.11.1 ([#294](https://github.com/cloudquery/plugin-sdk-java/issues/294)) ([6a16d10](https://github.com/cloudquery/plugin-sdk-java/commit/6a16d108d97a9d6397c0053f0082ad4c88eddfe9)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.28 ([#301](https://github.com/cloudquery/plugin-sdk-java/issues/301)) ([8f34697](https://github.com/cloudquery/plugin-sdk-java/commit/8f34697509c5749f7c9db03afe8d14ace09728b2)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.17.3 ([#290](https://github.com/cloudquery/plugin-sdk-java/issues/290)) ([92919c2](https://github.com/cloudquery/plugin-sdk-java/commit/92919c2ac8c1c207ad04600f59ac189a9a1982e8)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.17.4 ([#302](https://github.com/cloudquery/plugin-sdk-java/issues/302)) ([475e096](https://github.com/cloudquery/plugin-sdk-java/commit/475e0965bfeb5d379a644170b55d2b59006cc666)) +* **deps:** Update dependency org.apache.arrow:arrow-memory-core to v18 ([#296](https://github.com/cloudquery/plugin-sdk-java/issues/296)) ([5d89dc7](https://github.com/cloudquery/plugin-sdk-java/commit/5d89dc7e76f5548f58727bd7e5d1315062dd15cf)) +* **deps:** Update dependency org.apache.arrow:arrow-memory-netty to v18 ([#297](https://github.com/cloudquery/plugin-sdk-java/issues/297)) ([0373336](https://github.com/cloudquery/plugin-sdk-java/commit/0373336d6f0bba3bd16ae82d6f52378969246292)) +* **deps:** Update dependency org.apache.arrow:arrow-vector to v18 ([#298](https://github.com/cloudquery/plugin-sdk-java/issues/298)) ([0c65f98](https://github.com/cloudquery/plugin-sdk-java/commit/0c65f98a18f751d5773494fcf0f68c55713a1638)) +* **deps:** Update grpc-java monorepo to v1.68.2 ([#303](https://github.com/cloudquery/plugin-sdk-java/issues/303)) ([9e2369e](https://github.com/cloudquery/plugin-sdk-java/commit/9e2369eee4c89b781c87a4c1e6719f1d2a516b98)) +* **deps:** Update log4j2 monorepo to v2.24.2 ([#291](https://github.com/cloudquery/plugin-sdk-java/issues/291)) ([4afac67](https://github.com/cloudquery/plugin-sdk-java/commit/4afac671f175df6222cf94a9826e6d6c5fcf0a8a)) +* **deps:** Update mockito monorepo to v5.14.2 ([#295](https://github.com/cloudquery/plugin-sdk-java/issues/295)) ([4556dbf](https://github.com/cloudquery/plugin-sdk-java/commit/4556dbf2f86d819c68d585736cf0a6dca08a80c0)) +* **deps:** Update plugin io.freefair.lombok to v8.11 ([#304](https://github.com/cloudquery/plugin-sdk-java/issues/304)) ([39d00d8](https://github.com/cloudquery/plugin-sdk-java/commit/39d00d8b5e76ab18335daa6cb0675b413a2674ef)) +* **deps:** Update plugin org.gradle.toolchains.foojay-resolver-convention to v0.9.0 ([#305](https://github.com/cloudquery/plugin-sdk-java/issues/305)) ([612917d](https://github.com/cloudquery/plugin-sdk-java/commit/612917d43ba46a2d6572964811fe5e14703fa606)) + ## [0.0.35](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.34...v0.0.35) (2024-11-04) diff --git a/lib/build.gradle b/lib/build.gradle index a4b87a9..7aa6fe1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.35' +version = '0.0.36' // x-release-please-end repositories { From 16989e548d7a9fdc91be48321ff9383fec81c9ed Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Jan 2025 04:11:24 +0200 Subject: [PATCH 229/376] fix(deps): Update junit5 monorepo to v5.11.4 (#307) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.junit.jupiter:junit-jupiter-engine](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.11.3` -> `5.11.4` | | [org.junit.jupiter:junit-jupiter-api](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.11.3` -> `5.11.4` | | [org.junit.jupiter:junit-jupiter](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.11.3` -> `5.11.4` | | [org.junit:junit-bom](https://junit.org/junit5/) ([source](https://togithub.com/junit-team/junit5)) | dependencies | patch | `5.11.3` -> `5.11.4` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 7aa6fe1..4bbd4f1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -50,14 +50,14 @@ dependencies { testImplementation 'io.grpc:grpc-testing:1.68.2' testImplementation 'io.grpc:grpc-inprocess:1.68.2' - testImplementation platform('org.junit:junit-bom:5.11.3') - testImplementation 'org.junit.jupiter:junit-jupiter:5.11.3' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.3' + testImplementation platform('org.junit:junit-bom:5.11.4') + testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.4' testImplementation 'org.mockito:mockito-core:5.14.2' testImplementation 'org.mockito:mockito-junit-jupiter:5.14.2' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.17.4' testImplementation 'org.assertj:assertj-core:3.26.3' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.3' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' runtimeOnly "org.apache.arrow:arrow-memory-netty:18.1.0" } From 5967f9092724e2b8bbdf798c7dfdaf2779f11b52 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Jan 2025 04:15:32 +0200 Subject: [PATCH 230/376] fix(deps): Update log4j2 monorepo to v2.24.3 (#308) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.logging.log4j:log4j-core](https://logging.apache.org/log4j/2.x/) ([source](https://togithub.com/apache/logging-log4j2)) | dependencies | patch | `2.24.2` -> `2.24.3` | | [org.apache.logging.log4j:log4j-api](https://logging.apache.org/log4j/2.x/) ([source](https://togithub.com/apache/logging-log4j2)) | dependencies | patch | `2.24.2` -> `2.24.3` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 4bbd4f1..199b098 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -45,8 +45,8 @@ dependencies { implementation "com.fasterxml.jackson.core:jackson-core:2.18.2" implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.2" - implementation 'org.apache.logging.log4j:log4j-api:2.24.2' - implementation 'org.apache.logging.log4j:log4j-core:2.24.2' + implementation 'org.apache.logging.log4j:log4j-api:2.24.3' + implementation 'org.apache.logging.log4j:log4j-core:2.24.3' testImplementation 'io.grpc:grpc-testing:1.68.2' testImplementation 'io.grpc:grpc-inprocess:1.68.2' From 1a54ac6b4c9acb68b6803bc194f55ecb9a963621 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Jan 2025 05:17:46 +0200 Subject: [PATCH 231/376] fix(deps): Update dependency com.google.guava:guava to v33.4.0-jre (#310) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.google.guava:guava](https://togithub.com/google/guava) | dependencies | minor | `33.3.1-jre` -> `33.4.0-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 199b098..bfabbc6 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -31,9 +31,9 @@ dependencies { // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'org.jooq:joou:0.9.4' - implementation 'com.google.guava:guava:33.3.1-jre' + implementation 'com.google.guava:guava:33.4.0-jre' implementation 'info.picocli:picocli:4.7.6' - implementation 'com.google.guava:guava:33.3.1-jre' + implementation 'com.google.guava:guava:33.4.0-jre' implementation 'io.grpc:grpc-protobuf:1.68.2' implementation 'io.grpc:grpc-stub:1.68.2' implementation 'io.grpc:grpc-services:1.68.2' From 1b6dd6fa730135bb1e45a62af5c2bc91341127cf Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Jan 2025 05:21:14 +0200 Subject: [PATCH 232/376] fix(deps): Update dependency gradle to v8.12 (#311) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://togithub.com/gradle/gradle)) | minor | `8.11.1` -> `8.12` | --- ### Release Notes
gradle/gradle (gradle) ### [`v8.12`](https://togithub.com/gradle/gradle/releases/tag/v8.12.0): 8.12 [Compare Source](https://togithub.com/gradle/gradle/compare/v8.11.1...v8.12.0) The Gradle team is excited to announce Gradle 8.12. [Read the Release Notes](https://docs.gradle.org/8.12/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Abhiraj Adhikary](https://togithub.com/abhirajadhikary06), [Ayush Saxena](https://togithub.com/Ayushcode10), [BjΓΆrn Kautler](https://togithub.com/Vampire), [davidburstrom](https://togithub.com/davidburstrom), [Dominic Fellbaum](https://togithub.com/felldo), [Emmanuel Ferdman](https://togithub.com/emmanuel-ferdman), [Finn Petersen](https://togithub.com/fp7), [Johnny Lim](https://togithub.com/izeye), [Mahdi Hosseinzadeh](https://togithub.com/mahozad), [Martin Bonnin](https://togithub.com/martinbonnin), [Paint_Ninja](https://togithub.com/PaintNinja), [Petter MΓ₯hlΓ©n](https://togithub.com/pettermahlen), [Philip Wedemann](https://togithub.com/hfhbd), [stegeto22](https://togithub.com/stegeto22), [Tanish](https://togithub.com/Taz03), [TheGoesen](https://togithub.com/TheGoesen), [Tim Nielens](https://togithub.com/tnielens), [Trout Zhang](https://togithub.com/TroutZhang), [Victor Merkulov](https://togithub.com/urdak) #### Upgrade instructions Switch your build to use Gradle 8.12 by updating your wrapper: ./gradlew wrapper --gradle-version=8.12 See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.12/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.12/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://togithub.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e2847c8..cea7a79 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f5feea6..f3b75f3 100755 --- a/gradlew +++ b/gradlew @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum From b0b06e3e534122c26ca56e325f6eef20e7c863e0 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 7 Jan 2025 13:11:50 +0200 Subject: [PATCH 233/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.29 (#312) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.28` -> `0.0.29` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index bfabbc6..c248138 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.68.2' implementation 'io.grpc:grpc-stub:1.68.2' implementation 'io.grpc:grpc-services:1.68.2' - implementation 'io.cloudquery:plugin-pb-java:0.0.28' + implementation 'io.cloudquery:plugin-pb-java:0.0.29' implementation 'org.apache.arrow:arrow-memory-core:18.1.0' implementation 'org.apache.arrow:arrow-vector:18.1.0' implementation 'commons-io:commons-io:2.18.0' From d9a1ee6b6060c22f6961529fa9abb36dc6b5e8d0 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 7 Jan 2025 13:33:06 +0200 Subject: [PATCH 234/376] chore(main): Release v0.0.37 (#309) :robot: I have created a release *beep* *boop* --- ## [0.0.37](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.36...v0.0.37) (2025-01-07) ### Bug Fixes * **deps:** Update dependency com.google.guava:guava to v33.4.0-jre ([#310](https://github.com/cloudquery/plugin-sdk-java/issues/310)) ([1a54ac6](https://github.com/cloudquery/plugin-sdk-java/commit/1a54ac6b4c9acb68b6803bc194f55ecb9a963621)) * **deps:** Update dependency gradle to v8.12 ([#311](https://github.com/cloudquery/plugin-sdk-java/issues/311)) ([1b6dd6f](https://github.com/cloudquery/plugin-sdk-java/commit/1b6dd6fa730135bb1e45a62af5c2bc91341127cf)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.29 ([#312](https://github.com/cloudquery/plugin-sdk-java/issues/312)) ([b0b06e3](https://github.com/cloudquery/plugin-sdk-java/commit/b0b06e3e534122c26ca56e325f6eef20e7c863e0)) * **deps:** Update junit5 monorepo to v5.11.4 ([#307](https://github.com/cloudquery/plugin-sdk-java/issues/307)) ([16989e5](https://github.com/cloudquery/plugin-sdk-java/commit/16989e548d7a9fdc91be48321ff9383fec81c9ed)) * **deps:** Update log4j2 monorepo to v2.24.3 ([#308](https://github.com/cloudquery/plugin-sdk-java/issues/308)) ([5967f90](https://github.com/cloudquery/plugin-sdk-java/commit/5967f9092724e2b8bbdf798c7dfdaf2779f11b52)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 11 +++++++++++ lib/build.gradle | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d1b9552..b7d91ce 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.36" + ".": "0.0.37" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 0709796..3e45946 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [0.0.37](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.36...v0.0.37) (2025-01-07) + + +### Bug Fixes + +* **deps:** Update dependency com.google.guava:guava to v33.4.0-jre ([#310](https://github.com/cloudquery/plugin-sdk-java/issues/310)) ([1a54ac6](https://github.com/cloudquery/plugin-sdk-java/commit/1a54ac6b4c9acb68b6803bc194f55ecb9a963621)) +* **deps:** Update dependency gradle to v8.12 ([#311](https://github.com/cloudquery/plugin-sdk-java/issues/311)) ([1b6dd6f](https://github.com/cloudquery/plugin-sdk-java/commit/1b6dd6fa730135bb1e45a62af5c2bc91341127cf)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.29 ([#312](https://github.com/cloudquery/plugin-sdk-java/issues/312)) ([b0b06e3](https://github.com/cloudquery/plugin-sdk-java/commit/b0b06e3e534122c26ca56e325f6eef20e7c863e0)) +* **deps:** Update junit5 monorepo to v5.11.4 ([#307](https://github.com/cloudquery/plugin-sdk-java/issues/307)) ([16989e5](https://github.com/cloudquery/plugin-sdk-java/commit/16989e548d7a9fdc91be48321ff9383fec81c9ed)) +* **deps:** Update log4j2 monorepo to v2.24.3 ([#308](https://github.com/cloudquery/plugin-sdk-java/issues/308)) ([5967f90](https://github.com/cloudquery/plugin-sdk-java/commit/5967f9092724e2b8bbdf798c7dfdaf2779f11b52)) + ## [0.0.36](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.35...v0.0.36) (2024-12-02) diff --git a/lib/build.gradle b/lib/build.gradle index c248138..6ee8a00 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.36' +version = '0.0.37' // x-release-please-end repositories { From cf64ee1166ce2fab1c7a7322761c051ef340f1ec Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Tue, 28 Jan 2025 17:42:28 +0000 Subject: [PATCH 235/376] chore: Update CODEOWNERS (#313) --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index c4ff123..8a8bb30 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,4 +1,4 @@ -* @cloudquery/cloudquery-framework +* @cloudquery/integrations-backend lib/build.gradle .release-please-manifest.json From 0b29ccd5940d660f5e471e5055b5d2d1e98c2d29 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Feb 2025 01:01:58 +0000 Subject: [PATCH 236/376] fix(deps): Update dependency gradle to v8.12.1 (#314) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://togithub.com/gradle/gradle)) | patch | `8.12` -> `8.12.1` | --- ### Release Notes
gradle/gradle (gradle) ### [`v8.12.1`](https://togithub.com/gradle/gradle/releases/tag/v8.12.1): 8.12.1 [Compare Source](https://togithub.com/gradle/gradle/compare/v8.12.0...v8.12.1) The Gradle team is excited to announce Gradle 8.12.1. [Read the Release Notes](https://docs.gradle.org/8.12.1/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Abhiraj Adhikary](https://togithub.com/abhirajadhikary06), [Ayush Saxena](https://togithub.com/Ayushcode10), [BjΓΆrn Kautler](https://togithub.com/Vampire), [davidburstrom](https://togithub.com/davidburstrom), [Dominic Fellbaum](https://togithub.com/felldo), [Emmanuel Ferdman](https://togithub.com/emmanuel-ferdman), [Finn Petersen](https://togithub.com/fp7), [Johnny Lim](https://togithub.com/izeye), [Mahdi Hosseinzadeh](https://togithub.com/mahozad), [Martin Bonnin](https://togithub.com/martinbonnin), [Paint_Ninja](https://togithub.com/PaintNinja), [Petter MΓ₯hlΓ©n](https://togithub.com/pettermahlen), [Philip Wedemann](https://togithub.com/hfhbd), [stegeto22](https://togithub.com/stegeto22), [Tanish](https://togithub.com/Taz03), [TheGoesen](https://togithub.com/TheGoesen), [Tim Nielens](https://togithub.com/tnielens), [Trout Zhang](https://togithub.com/TroutZhang), [Victor Merkulov](https://togithub.com/urdak) #### Upgrade instructions Switch your build to use Gradle 8.12.1 by updating your wrapper: ./gradlew wrapper --gradle-version=8.12.1 See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.12.1/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.12.1/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://togithub.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cea7a79..e18bc25 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From c888a38482089def2a7bbbcef61b72d562a94268 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Feb 2025 01:06:52 +0000 Subject: [PATCH 237/376] fix(deps): Update eclipse-temurin Docker tag to v21.0.6_7-jre (#315) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | patch | `21.0.5_11-jre` -> `21.0.6_7-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 24ae1a8..07ef22b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ COPY . . RUN gradle jar --no-daemon -FROM eclipse-temurin:21.0.5_11-jre +FROM eclipse-temurin:21.0.6_7-jre COPY --from=build /code/lib/build/libs/*.jar /app/app.jar From c1d543d755c5328d9d6f970dbf0191d4d6738e01 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Feb 2025 02:02:26 +0000 Subject: [PATCH 238/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.18.1 (#317) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://togithub.com/jqno/equalsverifier)) | dependencies | minor | `3.17.4` -> `3.18.1` | `3.18.2` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.18.1`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3181---2025-01-09) ##### Added - Improved Kotlin support. ([Issue 506](https://togithub.com/jqno/equalsverifier/issues/506#issuecomment-2563664670)) ### [`v3.18`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3182---2025-01-30) ##### Fixed - Gives readable error message when trying to use `forPackage()` on third-party dependency package, instead of a `NullPointerException`. ([Issue 1040](https://togithub.com/jqno/equalsverifier/issues/1040)) ### [`v3.17.5`](https://togithub.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3175---2024-12-06) ##### Fixed - SpotBugs-annotations dependency is suddenly needed in builds that do certain kinds of annotation processing. ([Issue 1026](https://togithub.com/jqno/equalsverifier/issues/1026)) - Significant fields error when testing a class with a field that has a Map with an array as its value type. ([Issue 1027](https://togithub.com/jqno/equalsverifier/issues/1027)) ##### Changed - Reverted the refactorings introduced in versions 3.17.2, 3.17.3 and 3.17.4, as they were causing more problems than they were solving. See [this blog post](https://jqno.nl/post/2024/12/06/unrefactoring/) for some background.
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 6ee8a00..5240439 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.4' testImplementation 'org.mockito:mockito-core:5.14.2' testImplementation 'org.mockito:mockito-junit-jupiter:5.14.2' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.17.4' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.18.1' testImplementation 'org.assertj:assertj-core:3.26.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' From f3210842975ca24d4cff089e29539450360adbcd Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Feb 2025 02:49:59 +0000 Subject: [PATCH 239/376] fix(deps): Update dependency org.assertj:assertj-core to v3.27.3 (#318) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.assertj:assertj-core](https://assertj.github.io/doc/#assertj-core) ([source](https://togithub.com/assertj/assertj)) | dependencies | minor | `3.26.3` -> `3.27.3` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 5240439..7d777ea 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -56,7 +56,7 @@ dependencies { testImplementation 'org.mockito:mockito-core:5.14.2' testImplementation 'org.mockito:mockito-junit-jupiter:5.14.2' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.18.1' - testImplementation 'org.assertj:assertj-core:3.26.3' + testImplementation 'org.assertj:assertj-core:3.27.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' runtimeOnly "org.apache.arrow:arrow-memory-netty:18.1.0" From 97b3b6c2ffce1d61b0966ce29304a4faee39866d Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Feb 2025 02:54:52 +0000 Subject: [PATCH 240/376] fix(deps): Update grpc-java monorepo to v1.70.0 (#319) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-inprocess](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.68.2` -> `1.70.0` | | [io.grpc:grpc-testing](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.68.2` -> `1.70.0` | | [io.grpc:grpc-services](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.68.2` -> `1.70.0` | | [io.grpc:grpc-stub](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.68.2` -> `1.70.0` | | [io.grpc:grpc-protobuf](https://togithub.com/grpc/grpc-java) | dependencies | minor | `1.68.2` -> `1.70.0` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.70.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.70.0) ##### **Bug Fixes** - Re-enable animalsniffer, fixing most violations ([`8ea3629`](https://togithub.com/grpc/grpc-java/commit/8ea362937)). Violations would only have triggered on API level 23 and earlier, and the violations fixed here were highly unlikely to be triggered - api: Fix Android API level 23 and earlier compatibility for StatusRuntimeException without stacktrace ([#​11072](https://togithub.com/grpc/grpc-java/issues/11072)) ([`ebe2b48`](https://togithub.com/grpc/grpc-java/commit/ebe2b4867)). This fixes a regression introduced in 1.64.0. The regression should have caused failures on API level 23 and earlier when a StatusRuntimeException or StatusException was created. However, for unknown reasons tests on old devices didn’t notice issues - okhttp: Improve certificate handling by rejecting non-ASCII subject alternative names and hostnames as seen in CVE-2021-0341 ([#​11749](https://togithub.com/grpc/grpc-java/issues/11749)) ([`a0982ca`](https://togithub.com/grpc/grpc-java/commit/a0982ca0a)). Hostnames are considered trusted and CAs are required to use punycode for non-ASCII hostnames, so this is expected to provide defense-in-depth. See also the [related GoSecure blog post](https://gosecure.ai/blog/2020/10/27/weakness-in-java-tls-host-verification/) and the [AOSP fix](https://android.googlesource.com/platform/external/okhttp/+/ddc934efe3ed06ce34f3724d41cfbdcd7e7358fc) - okhttp: Fix for ipv6 link local with scope ([#​11725](https://togithub.com/grpc/grpc-java/issues/11725)) ([`65b32e6`](https://togithub.com/grpc/grpc-java/commit/65b32e60e)) - xds: Preserve nonce when unsubscribing last watcher of a particular type so that new discovery requests of that type are handled correctly ([`1cf1927`](https://togithub.com/grpc/grpc-java/commit/1cf1927d1)). This (along with [`6c12c2b`](https://togithub.com/grpc/grpc-java/commit/6c12c2bd2)) fixes a nonce-handling regression introduced in 1.66.0 that could cause resources to appear to not exist until re-creating the ADS stream. Triggering the behavior required specific config changes. It is easiest to trigger when clusters use EDS and routes are changed from one cluster to another. The error β€œfound 0 leaf (logical DNS or EDS) clusters for root cluster” might then be seen - xds: Remember nonces for unknown types ([`6c12c2b`](https://togithub.com/grpc/grpc-java/commit/6c12c2bd2)) - xds: Unexpected types in the bootstrap’s server_features should be ignored ([`e8ff6da`](https://togithub.com/grpc/grpc-java/commit/e8ff6da2c)). They were previously required to be strings - xds: Remove xds authority label from metric registration ([#​11760](https://togithub.com/grpc/grpc-java/issues/11760)) ([`6516c73`](https://togithub.com/grpc/grpc-java/commit/6516c7387)). This fixes the error β€œIncorrect number of required labels provided. Expected: 4” introduced in 1.69.0 - xds: Fixed unsupported unsigned 32 bits issue for circuit breaker ([#​11735](https://togithub.com/grpc/grpc-java/issues/11735)) ([`f8f6139`](https://togithub.com/grpc/grpc-java/commit/f8f613984)). This fixes clients treating large max_requests as β€œno requests” and failing all requests ##### **Improvements** - api: Introduce custom NameResolver.Args ([#​11669](https://togithub.com/grpc/grpc-java/issues/11669)) ([`0b2d440`](https://togithub.com/grpc/grpc-java/commit/0b2d44098)) - stub: Introduce new API: BlockingStubV2 which supports Bidi streaming, Client streaming, a cleaner Server streaming and Unary RPCs ([#​10318](https://togithub.com/grpc/grpc-java/issues/10318)) ([`ea8c31c`](https://togithub.com/grpc/grpc-java/commit/ea8c31c30)) - bazel: Remove workaround for DoNotCall fixed in Bazel 3.4 ([`805cad3`](https://togithub.com/grpc/grpc-java/commit/805cad378)) - binder: A standard API for pointing resolvers at a different Android User. ([#​11775](https://togithub.com/grpc/grpc-java/issues/11775)) ([`1126a8e`](https://togithub.com/grpc/grpc-java/commit/1126a8e30)) - xds: Fix XDS control plane client retry timer backoff duration when connection closes after results are received ([#​11766](https://togithub.com/grpc/grpc-java/issues/11766)) ([`ef7c2d5`](https://togithub.com/grpc/grpc-java/commit/ef7c2d59c)) - xds: Parsing xDS Cluster Metadata ([#​11741](https://togithub.com/grpc/grpc-java/issues/11741)) ([`1edc4d8`](https://togithub.com/grpc/grpc-java/commit/1edc4d84d)). Not used actively, but this adds validation. The validation is unlikely to fail but may reject invalid resources. - xds: Use "#server" as dataplane target value for xDS enabled gRPC servers ([#​11715](https://togithub.com/grpc/grpc-java/issues/11715)) ([`ebb43a6`](https://togithub.com/grpc/grpc-java/commit/ebb43a69e)). This only impacts the `grpc.target` label in `grpc.xds_client.*` metrics. Previously the empty string was used - rls: Reduce RLS debug channel logging ([`7f9c1f3`](https://togithub.com/grpc/grpc-java/commit/7f9c1f39f)). This only matters when debug logging is enabled ##### **Documentation** - examples: Simplify graceful shutdown in Hostname example ([`f1109e4`](https://togithub.com/grpc/grpc-java/commit/f1109e421)) - examples: Remove references to maven-central.storage-download.googleapis.com ([`c96e926`](https://togithub.com/grpc/grpc-java/commit/c96e926e6)) - examples: Updated the attachHeaders to newAttachHeadersInterceptor in HeaderClientInterceptor ([#​11759](https://togithub.com/grpc/grpc-java/issues/11759)) ([`5e8abc6`](https://togithub.com/grpc/grpc-java/commit/5e8abc677)) ##### **Dependencies** - Bazel 8 is released, so replace Bazel 6 testing with Bazel 7 ([`8a5f777`](https://togithub.com/grpc/grpc-java/commit/8a5f7776d)) ##### **Thanks to** - [@​panchenko](https://togithub.com/panchenko) - [@​benjaminp](https://togithub.com/benjaminp) - [@​ZachChuba](https://togithub.com/ZachChuba) - [@​vinodhabib](https://togithub.com/vinodhabib) ### [`v1.69.1`](https://togithub.com/grpc/grpc-java/releases/tag/v1.69.1) ##### Bug Fixes - okhttp: Improve certificate handling by rejecting non-ASCII subject alternative names and hostnames as seen in CVE-2021-0341 ([#​11749](https://togithub.com/grpc/grpc-java/issues/11749)) ([`a0982ca`](https://togithub.com/grpc/grpc-java/commit/a0982ca0a)). Hostnames are considered trusted and CAs are required to use punycode for non-ASCII hostnames, so this is expected to provide defense-in-depth. See also the [related GoSecure blog post](https://gosecure.ai/blog/2020/10/27/weakness-in-java-tls-host-verification/) and the [AOSP fix](https://android.googlesource.com/platform/external/okhttp/+/ddc934efe3ed06ce34f3724d41cfbdcd7e7358fc) - xds: Preserve nonce when unsubscribing last watcher of a particular type so that new discovery requests of that type are handled correctly ([`1cf1927`](https://togithub.com/grpc/grpc-java/commit/1cf1927d1)). This (along with [`6c12c2b`](https://togithub.com/grpc/grpc-java/commit/6c12c2bd2)) fixes a nonce-handling regression introduced in 1.66.0 that could cause resources to appear to not exist until re-creating the ADS stream. Triggering the behavior required specific config changes. It is easiest to trigger when clusters use EDS and routes are changed from one cluster to another. The error β€œfound 0 leaf (logical DNS or EDS) clusters for root cluster” might then be seen - xds: Remember nonces for unknown types ([`6c12c2b`](https://togithub.com/grpc/grpc-java/commit/6c12c2bd2)) - xds: Unexpected types in the bootstrap’s server_features should be ignored ([`e8ff6da`](https://togithub.com/grpc/grpc-java/commit/e8ff6da2c)). They were previously required to be strings - xds: Fixed unsupported unsigned 32 bits issue for circuit breaker ([#​11735](https://togithub.com/grpc/grpc-java/issues/11735)) ([`f8f6139`](https://togithub.com/grpc/grpc-java/commit/f8f613984)). This fixes clients treating large max_requests as β€œno requests” and failing all requests - xds: Remove xds authority label from metric registration ([#​11760](https://togithub.com/grpc/grpc-java/issues/11760)) ([`6516c73`](https://togithub.com/grpc/grpc-java/commit/6516c7387)). This fixes the error β€œIncorrect number of required labels provided. Expected: 4” introduced in 1.69.0 ### [`v1.69.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.69.0) **v1.69.0** New Features - api: Allow `LoadBalancer`s to specify an authority per-RPC.([#​11631](https://togithub.com/grpc/grpc-java/issues/11631)) ([`c167ead`](https://togithub.com/grpc/grpc-java/commit/c167ead85)) CallOptions.withAuthority() has higher precedence. - netty: Add soft Metadata size limit enforcement. ([#​11603](https://togithub.com/grpc/grpc-java/issues/11603)) ([`735b3f3`](https://togithub.com/grpc/grpc-java/commit/735b3f3fe)) The soft limit is a lower size limit that fails an increasing percentage of RPCs as the Metadata size approaches the upper limit. This can be used as an β€œearly warning” that the Metadata size is growing too large - alts: support altsCallCredentials in `GoogleDefaultChannelCredentials` ([#​11634](https://togithub.com/grpc/grpc-java/issues/11634)) ([`ba8ab79`](https://togithub.com/grpc/grpc-java/commit/ba8ab796e)) - xds: Add grpc.xds_client metrics, as documented by [OpenTelemetry Metrics](https://grpc.io/docs/guides/opentelemetry-metrics/#xdsclient-instruments) ([#​11661](https://togithub.com/grpc/grpc-java/issues/11661)) ([`20d09ce`](https://togithub.com/grpc/grpc-java/commit/20d09cee5)). `grpc.xds.authority` is not yet available Bug Fixes - api: When forwarding from `Listener` onAddresses to `Listener2` continue to use onResult ([#​11666](https://togithub.com/grpc/grpc-java/issues/11666)) ([`dae078c`](https://togithub.com/grpc/grpc-java/commit/dae078c0a)). This fixes a 1.68.1 "IllegalStateException: Not called from the SynchronizationContext" regression ([#​11662](https://togithub.com/grpc/grpc-java/issues/11662)) that could be seen in certain custom NameResolvers - okhttp: If the frame handler thread is null do not schedule it on the executor ([`ef1fe87`](https://togithub.com/grpc/grpc-java/commit/ef1fe8737)). This fixes a 1.68.1 NullPointerException regression when a custom transportExecutor was provided to the channel and it did not have enough threads to run new tasks Improvements - api: Add `java.time.Duration` overloads to `CallOptions`, `AbstractStub` methods that take TimeUnit and a time value ([#​11562](https://togithub.com/grpc/grpc-java/issues/11562)) ([`766b923`](https://togithub.com/grpc/grpc-java/commit/766b92379)) - core: Make timestamp usage in Channelz use nanos from Java.time.Instant when available ([#​11604](https://togithub.com/grpc/grpc-java/issues/11604)) ([`9176b55`](https://togithub.com/grpc/grpc-java/commit/9176b5528)). This increases the timestamp precision from milliseconds - okhttp: Fix for ipv6 link local with scope ([#​11725](https://togithub.com/grpc/grpc-java/issues/11725)[) (e98e7445b)](https://togithub.com/grpc/grpc-java/commit/e98e7445be6209ed4300724d6c2769635ceef5e4) - binder: Let `AndroidComponentAddress` specify a target UserHandle ([#​11670](https://togithub.com/grpc/grpc-java/issues/11670)) ([`e58c998`](https://togithub.com/grpc/grpc-java/commit/e58c998a4)) - servlet: Deframe failures should be logged on the server as warnings ([#​11645](https://togithub.com/grpc/grpc-java/issues/11645)) ([`a5db67d`](https://togithub.com/grpc/grpc-java/commit/a5db67d0c)) - s2a: Rename the Bazel target s2av2\_credentials to s2a ([`29dd9ba`](https://togithub.com/grpc/grpc-java/commit/29dd9bad3)). The target s2a had been referenced by IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS but didn’t previously exist - services: Make channelz work with proto lite ([#​11685](https://togithub.com/grpc/grpc-java/issues/11685)) ([`b170334`](https://togithub.com/grpc/grpc-java/commit/b1703345f)). This compatibility is on the source level. There is not a pre-built binary on Maven Central that supports proto lite - services: Deprecate ProtoReflectionService ([#​11681](https://togithub.com/grpc/grpc-java/issues/11681)) ([`921f88a`](https://togithub.com/grpc/grpc-java/commit/921f88ae3)). The class implements the deprecated v1alpha of the reflection protocol. Prefer ProtoReflectionServiceV1, which implements the v1 version of the reflection protocol Dependencies - Upgrade proto-google-common-protos to 2.48.0 ([`1993e68`](https://togithub.com/grpc/grpc-java/commit/1993e68b0)) - Upgrade google-auth-library to 1.24.1 ([`1993e68`](https://togithub.com/grpc/grpc-java/commit/1993e68b0)) - Upgrade error_prone_annotations to 2.30.0 ([`1993e68`](https://togithub.com/grpc/grpc-java/commit/1993e68b0)) - Upgrade Guava to 33.3.1-android ([`1993e68`](https://togithub.com/grpc/grpc-java/commit/1993e68b0)) - Upgrade opentelemetry-api to 1.43.0 ([`1993e68`](https://togithub.com/grpc/grpc-java/commit/1993e68b0)) - xds: Remove Bazel dependency on xds v2 ([`664f1fc`](https://togithub.com/grpc/grpc-java/commit/664f1fcf8)). This had been done for the Maven Central binaries in 1.63.0, but had been missed for Bazel builds Documentation - binder: Update error codes doc for new "Safer Intent" rules. ([#​11639](https://togithub.com/grpc/grpc-java/issues/11639)) ([`fe350cf`](https://togithub.com/grpc/grpc-java/commit/fe350cfd5)) - examples: Use xds-enabled server and xds credentials in example-gcp-csm-observability ([#​11706](https://togithub.com/grpc/grpc-java/issues/11706)) ([`a79982c`](https://togithub.com/grpc/grpc-java/commit/a79982c7f)) Thanks to\ [@​niloc132](https://togithub.com/niloc132)\ [@​rockspore](https://togithub.com/rockspore)\ [@​SreeramdasLavanya](https://togithub.com/SreeramdasLavanya)\ [@​vinodhabib](https://togithub.com/vinodhabib) ### [`v1.68.3`](https://togithub.com/grpc/grpc-java/releases/tag/v1.68.3) ##### Bug Fixes - okhttp: Improve certificate handling by rejecting non-ASCII subject alternative names and hostnames as seen in CVE-2021-0341 ([#​11749](https://togithub.com/grpc/grpc-java/issues/11749)) ([`a0982ca`](https://togithub.com/grpc/grpc-java/commit/a0982ca0a)). Hostnames are considered trusted and CAs are required to use punycode for non-ASCII hostnames, so this is expected to provide defense-in-depth. See also the [related GoSecure blog post](https://gosecure.ai/blog/2020/10/27/weakness-in-java-tls-host-verification/) and the [AOSP fix](https://android.googlesource.com/platform/external/okhttp/+/ddc934efe3ed06ce34f3724d41cfbdcd7e7358fc) - xds: Preserve nonce when unsubscribing last watcher of a particular type so that new discovery requests of that type are handled correctly ([`1cf1927`](https://togithub.com/grpc/grpc-java/commit/1cf1927d1)). This (along with [`6c12c2b`](https://togithub.com/grpc/grpc-java/commit/6c12c2bd2)) fixes a nonce-handling regression introduced in 1.66.0 that could cause resources to appear to not exist until re-creating the ADS stream. Triggering the behavior required specific config changes. It is easiest to trigger when clusters use EDS and routes are changed from one cluster to another. The error β€œfound 0 leaf (logical DNS or EDS) clusters for root cluster” might then be seen - xds: Remember nonces for unknown types ([`6c12c2b`](https://togithub.com/grpc/grpc-java/commit/6c12c2bd2)) - xds: Unexpected types in the bootstrap’s server_features should be ignored ([`e8ff6da`](https://togithub.com/grpc/grpc-java/commit/e8ff6da2c)). They were previously required to be strings - xds: Fixed unsupported unsigned 32 bits issue for circuit breaker ([#​11735](https://togithub.com/grpc/grpc-java/issues/11735)) ([`f8f6139`](https://togithub.com/grpc/grpc-java/commit/f8f613984)). This fixes clients treating large max_requests as β€œno requests” and failing all requests
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 7d777ea..0444dfa 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,9 +34,9 @@ dependencies { implementation 'com.google.guava:guava:33.4.0-jre' implementation 'info.picocli:picocli:4.7.6' implementation 'com.google.guava:guava:33.4.0-jre' - implementation 'io.grpc:grpc-protobuf:1.68.2' - implementation 'io.grpc:grpc-stub:1.68.2' - implementation 'io.grpc:grpc-services:1.68.2' + implementation 'io.grpc:grpc-protobuf:1.70.0' + implementation 'io.grpc:grpc-stub:1.70.0' + implementation 'io.grpc:grpc-services:1.70.0' implementation 'io.cloudquery:plugin-pb-java:0.0.29' implementation 'org.apache.arrow:arrow-memory-core:18.1.0' implementation 'org.apache.arrow:arrow-vector:18.1.0' @@ -48,8 +48,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.24.3' implementation 'org.apache.logging.log4j:log4j-core:2.24.3' - testImplementation 'io.grpc:grpc-testing:1.68.2' - testImplementation 'io.grpc:grpc-inprocess:1.68.2' + testImplementation 'io.grpc:grpc-testing:1.70.0' + testImplementation 'io.grpc:grpc-inprocess:1.70.0' testImplementation platform('org.junit:junit-bom:5.11.4') testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.4' From 5110a9a8f2a93cf808f58b20ca27b1e4a02806a7 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Feb 2025 02:58:15 +0000 Subject: [PATCH 241/376] fix(deps): Update mockito monorepo to v5.15.2 (#320) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.mockito:mockito-junit-jupiter](https://togithub.com/mockito/mockito) | dependencies | minor | `5.14.2` -> `5.15.2` | | [org.mockito:mockito-core](https://togithub.com/mockito/mockito) | dependencies | minor | `5.14.2` -> `5.15.2` | --- ### Release Notes
mockito/mockito (org.mockito:mockito-junit-jupiter) ### [`v5.15.2`](https://togithub.com/mockito/mockito/releases/tag/v5.15.2) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://togithub.com/shipkit/shipkit-changelog)* ##### 5.15.2 - 2025-01-02 - [2 commit(s)](https://togithub.com/mockito/mockito/compare/v5.15.1...v5.15.2) by Brice Dutheil, dependabot\[bot] - Fix javadoc publication [(#​3561)](https://togithub.com/mockito/mockito/pull/3561) - Bump org.assertj:assertj-core from 3.27.0 to 3.27.1 [(#​3560)](https://togithub.com/mockito/mockito/pull/3560) - The release job is failed again [(#​3542)](https://togithub.com/mockito/mockito/issues/3542)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 0444dfa..2fee280 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -53,8 +53,8 @@ dependencies { testImplementation platform('org.junit:junit-bom:5.11.4') testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.4' - testImplementation 'org.mockito:mockito-core:5.14.2' - testImplementation 'org.mockito:mockito-junit-jupiter:5.14.2' + testImplementation 'org.mockito:mockito-core:5.15.2' + testImplementation 'org.mockito:mockito-junit-jupiter:5.15.2' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.18.1' testImplementation 'org.assertj:assertj-core:3.27.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' From b875a01de78de0d68d4655614fb542672cb62790 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 3 Feb 2025 11:26:36 +0000 Subject: [PATCH 242/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.30 (#321) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.29` -> `0.0.30` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 2fee280..9b0ba10 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.70.0' implementation 'io.grpc:grpc-stub:1.70.0' implementation 'io.grpc:grpc-services:1.70.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.29' + implementation 'io.cloudquery:plugin-pb-java:0.0.30' implementation 'org.apache.arrow:arrow-memory-core:18.1.0' implementation 'org.apache.arrow:arrow-vector:18.1.0' implementation 'commons-io:commons-io:2.18.0' From d88a75743308eefcf314a1286601605794be318f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 3 Feb 2025 15:26:05 +0000 Subject: [PATCH 243/376] chore(main): Release v0.0.38 (#316) :robot: I have created a release *beep* *boop* --- ## [0.0.38](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.37...v0.0.38) (2025-02-03) ### Bug Fixes * **deps:** Update dependency gradle to v8.12.1 ([#314](https://github.com/cloudquery/plugin-sdk-java/issues/314)) ([0b29ccd](https://github.com/cloudquery/plugin-sdk-java/commit/0b29ccd5940d660f5e471e5055b5d2d1e98c2d29)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.30 ([#321](https://github.com/cloudquery/plugin-sdk-java/issues/321)) ([b875a01](https://github.com/cloudquery/plugin-sdk-java/commit/b875a01de78de0d68d4655614fb542672cb62790)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.18.1 ([#317](https://github.com/cloudquery/plugin-sdk-java/issues/317)) ([c1d543d](https://github.com/cloudquery/plugin-sdk-java/commit/c1d543d755c5328d9d6f970dbf0191d4d6738e01)) * **deps:** Update dependency org.assertj:assertj-core to v3.27.3 ([#318](https://github.com/cloudquery/plugin-sdk-java/issues/318)) ([f321084](https://github.com/cloudquery/plugin-sdk-java/commit/f3210842975ca24d4cff089e29539450360adbcd)) * **deps:** Update eclipse-temurin Docker tag to v21.0.6_7-jre ([#315](https://github.com/cloudquery/plugin-sdk-java/issues/315)) ([c888a38](https://github.com/cloudquery/plugin-sdk-java/commit/c888a38482089def2a7bbbcef61b72d562a94268)) * **deps:** Update grpc-java monorepo to v1.70.0 ([#319](https://github.com/cloudquery/plugin-sdk-java/issues/319)) ([97b3b6c](https://github.com/cloudquery/plugin-sdk-java/commit/97b3b6c2ffce1d61b0966ce29304a4faee39866d)) * **deps:** Update mockito monorepo to v5.15.2 ([#320](https://github.com/cloudquery/plugin-sdk-java/issues/320)) ([5110a9a](https://github.com/cloudquery/plugin-sdk-java/commit/5110a9a8f2a93cf808f58b20ca27b1e4a02806a7)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ lib/build.gradle | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b7d91ce..7ed2cd0 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.37" + ".": "0.0.38" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e45946..b3136bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.0.38](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.37...v0.0.38) (2025-02-03) + + +### Bug Fixes + +* **deps:** Update dependency gradle to v8.12.1 ([#314](https://github.com/cloudquery/plugin-sdk-java/issues/314)) ([0b29ccd](https://github.com/cloudquery/plugin-sdk-java/commit/0b29ccd5940d660f5e471e5055b5d2d1e98c2d29)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.30 ([#321](https://github.com/cloudquery/plugin-sdk-java/issues/321)) ([b875a01](https://github.com/cloudquery/plugin-sdk-java/commit/b875a01de78de0d68d4655614fb542672cb62790)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.18.1 ([#317](https://github.com/cloudquery/plugin-sdk-java/issues/317)) ([c1d543d](https://github.com/cloudquery/plugin-sdk-java/commit/c1d543d755c5328d9d6f970dbf0191d4d6738e01)) +* **deps:** Update dependency org.assertj:assertj-core to v3.27.3 ([#318](https://github.com/cloudquery/plugin-sdk-java/issues/318)) ([f321084](https://github.com/cloudquery/plugin-sdk-java/commit/f3210842975ca24d4cff089e29539450360adbcd)) +* **deps:** Update eclipse-temurin Docker tag to v21.0.6_7-jre ([#315](https://github.com/cloudquery/plugin-sdk-java/issues/315)) ([c888a38](https://github.com/cloudquery/plugin-sdk-java/commit/c888a38482089def2a7bbbcef61b72d562a94268)) +* **deps:** Update grpc-java monorepo to v1.70.0 ([#319](https://github.com/cloudquery/plugin-sdk-java/issues/319)) ([97b3b6c](https://github.com/cloudquery/plugin-sdk-java/commit/97b3b6c2ffce1d61b0966ce29304a4faee39866d)) +* **deps:** Update mockito monorepo to v5.15.2 ([#320](https://github.com/cloudquery/plugin-sdk-java/issues/320)) ([5110a9a](https://github.com/cloudquery/plugin-sdk-java/commit/5110a9a8f2a93cf808f58b20ca27b1e4a02806a7)) + ## [0.0.37](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.36...v0.0.37) (2025-01-07) diff --git a/lib/build.gradle b/lib/build.gradle index 9b0ba10..3534cb3 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.37' +version = '0.0.38' // x-release-please-end repositories { From fd4d4557529c38d1ea7ca2cbc7df41690b29c3f1 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Mar 2025 03:05:39 +0200 Subject: [PATCH 244/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.19.1 (#322) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://redirect.github.com/jqno/equalsverifier)) | dependencies | minor | `3.18.1` -> `3.19.1` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.19.1`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3191---2025-02-17) ##### Added - Prefab value for `java.util.concurrent.locks.ReentrantLock`. ([Issue 981](https://redirect.github.com/jqno/equalsverifier/issues/981)) ##### Fixed - Bug in `withPrefabValueForField` where in some cases the prefab value is not used. ### [`v3.19`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3191---2025-02-17) ##### Added - Prefab value for `java.util.concurrent.locks.ReentrantLock`. ([Issue 981](https://redirect.github.com/jqno/equalsverifier/issues/981)) ##### Fixed - Bug in `withPrefabValueForField` where in some cases the prefab value is not used. ### [`v3.18.2`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3182---2025-01-30) ##### Fixed - Gives readable error message when trying to use `forPackage()` on third-party dependency package, instead of a `NullPointerException`. ([Issue 1040](https://redirect.github.com/jqno/equalsverifier/issues/1040))
--- ### Configuration πŸ“… **Schedule**: Branch creation - "* 0-3 1 * *" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 3534cb3..5ede2c1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.4' testImplementation 'org.mockito:mockito-core:5.15.2' testImplementation 'org.mockito:mockito-junit-jupiter:5.15.2' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.18.1' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.19.1' testImplementation 'org.assertj:assertj-core:3.27.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' From db4448c1b2d473153c254fe3073508077c4b295d Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Mar 2025 03:09:30 +0200 Subject: [PATCH 245/376] fix(deps): Update dependency org.apache.arrow:arrow-memory-core to v18.2.0 (#323) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.arrow:arrow-memory-core](https://arrow.apache.org/) | dependencies | minor | `18.1.0` -> `18.2.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "* 0-3 1 * *" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 5ede2c1..44a1dcc 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation 'io.grpc:grpc-stub:1.70.0' implementation 'io.grpc:grpc-services:1.70.0' implementation 'io.cloudquery:plugin-pb-java:0.0.30' - implementation 'org.apache.arrow:arrow-memory-core:18.1.0' + implementation 'org.apache.arrow:arrow-memory-core:18.2.0' implementation 'org.apache.arrow:arrow-vector:18.1.0' implementation 'commons-io:commons-io:2.18.0' From efa937d7c0ad245177589580647da9816649cb8f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Mar 2025 05:07:34 +0200 Subject: [PATCH 246/376] fix(deps): Update dependency org.apache.arrow:arrow-memory-netty to v18.2.0 (#325) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.arrow:arrow-memory-netty](https://arrow.apache.org/) | dependencies | minor | `18.1.0` -> `18.2.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "* 0-3 1 * *" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 44a1dcc..4f20703 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -59,7 +59,7 @@ dependencies { testImplementation 'org.assertj:assertj-core:3.27.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' - runtimeOnly "org.apache.arrow:arrow-memory-netty:18.1.0" + runtimeOnly "org.apache.arrow:arrow-memory-netty:18.2.0" } test { From 5c884bd91260bb118d3e8353b589c69800538a8c Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Mar 2025 05:11:08 +0200 Subject: [PATCH 247/376] fix(deps): Update dependency org.apache.arrow:arrow-vector to v18.2.0 (#326) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.arrow:arrow-vector](https://arrow.apache.org/) | dependencies | minor | `18.1.0` -> `18.2.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - "* 0-3 1 * *" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 4f20703..a0bf755 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -39,7 +39,7 @@ dependencies { implementation 'io.grpc:grpc-services:1.70.0' implementation 'io.cloudquery:plugin-pb-java:0.0.30' implementation 'org.apache.arrow:arrow-memory-core:18.2.0' - implementation 'org.apache.arrow:arrow-vector:18.1.0' + implementation 'org.apache.arrow:arrow-vector:18.2.0' implementation 'commons-io:commons-io:2.18.0' implementation "com.fasterxml.jackson.core:jackson-core:2.18.2" From b03822bbf71559511f534b06a416b56a2bd41a24 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 5 Mar 2025 13:26:08 +0200 Subject: [PATCH 248/376] chore(main): Release v0.0.39 (#324) :robot: I have created a release *beep* *boop* --- ## [0.0.39](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.38...v0.0.39) (2025-03-01) ### Bug Fixes * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.19.1 ([#322](https://github.com/cloudquery/plugin-sdk-java/issues/322)) ([fd4d455](https://github.com/cloudquery/plugin-sdk-java/commit/fd4d4557529c38d1ea7ca2cbc7df41690b29c3f1)) * **deps:** Update dependency org.apache.arrow:arrow-memory-core to v18.2.0 ([#323](https://github.com/cloudquery/plugin-sdk-java/issues/323)) ([db4448c](https://github.com/cloudquery/plugin-sdk-java/commit/db4448c1b2d473153c254fe3073508077c4b295d)) * **deps:** Update dependency org.apache.arrow:arrow-memory-netty to v18.2.0 ([#325](https://github.com/cloudquery/plugin-sdk-java/issues/325)) ([efa937d](https://github.com/cloudquery/plugin-sdk-java/commit/efa937d7c0ad245177589580647da9816649cb8f)) * **deps:** Update dependency org.apache.arrow:arrow-vector to v18.2.0 ([#326](https://github.com/cloudquery/plugin-sdk-java/issues/326)) ([5c884bd](https://github.com/cloudquery/plugin-sdk-java/commit/5c884bd91260bb118d3e8353b589c69800538a8c)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 10 ++++++++++ lib/build.gradle | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 7ed2cd0..39fa8ed 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.38" + ".": "0.0.39" } diff --git a/CHANGELOG.md b/CHANGELOG.md index b3136bd..5e63ceb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.0.39](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.38...v0.0.39) (2025-03-01) + + +### Bug Fixes + +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.19.1 ([#322](https://github.com/cloudquery/plugin-sdk-java/issues/322)) ([fd4d455](https://github.com/cloudquery/plugin-sdk-java/commit/fd4d4557529c38d1ea7ca2cbc7df41690b29c3f1)) +* **deps:** Update dependency org.apache.arrow:arrow-memory-core to v18.2.0 ([#323](https://github.com/cloudquery/plugin-sdk-java/issues/323)) ([db4448c](https://github.com/cloudquery/plugin-sdk-java/commit/db4448c1b2d473153c254fe3073508077c4b295d)) +* **deps:** Update dependency org.apache.arrow:arrow-memory-netty to v18.2.0 ([#325](https://github.com/cloudquery/plugin-sdk-java/issues/325)) ([efa937d](https://github.com/cloudquery/plugin-sdk-java/commit/efa937d7c0ad245177589580647da9816649cb8f)) +* **deps:** Update dependency org.apache.arrow:arrow-vector to v18.2.0 ([#326](https://github.com/cloudquery/plugin-sdk-java/issues/326)) ([5c884bd](https://github.com/cloudquery/plugin-sdk-java/commit/5c884bd91260bb118d3e8353b589c69800538a8c)) + ## [0.0.38](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.37...v0.0.38) (2025-02-03) diff --git a/lib/build.gradle b/lib/build.gradle index a0bf755..5deee32 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.38' +version = '0.0.39' // x-release-please-end repositories { From ba04bd3a666fe4146cab45259acfd7d716d56945 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 1 Apr 2025 04:18:36 +0100 Subject: [PATCH 249/376] fix(deps): Update dependency com.google.guava:guava to v33.4.5-jre (#327) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | [com.google.guava:guava](https://redirect.github.com/google/guava) | dependencies | patch | `33.4.0-jre` -> `33.4.5-jre` | `33.4.6-jre` (+1) | --- ### Configuration πŸ“… **Schedule**: Branch creation - "* 0-3 1 * *" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 5deee32..7b25210 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -31,9 +31,9 @@ dependencies { // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'org.jooq:joou:0.9.4' - implementation 'com.google.guava:guava:33.4.0-jre' + implementation 'com.google.guava:guava:33.4.5-jre' implementation 'info.picocli:picocli:4.7.6' - implementation 'com.google.guava:guava:33.4.0-jre' + implementation 'com.google.guava:guava:33.4.5-jre' implementation 'io.grpc:grpc-protobuf:1.70.0' implementation 'io.grpc:grpc-stub:1.70.0' implementation 'io.grpc:grpc-services:1.70.0' From 8928df4817126f752e2867f5128fef577a53a8e8 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 1 Apr 2025 04:25:22 +0100 Subject: [PATCH 250/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.19.2 (#328) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://redirect.github.com/jqno/equalsverifier)) | dependencies | patch | `3.19.1` -> `3.19.2` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.19.2`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3192---2025-03-14) ##### Fixed - Exception when superclass of class under test has field with the same name but different type. ([Issue 1056](https://redirect.github.com/jqno/equalsverifier/issues/1056)) - Bug in `withPrefabValueForField` where fields in the superclass of the class under test is ignored.
--- ### Configuration πŸ“… **Schedule**: Branch creation - "* 0-3 1 * *" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 7b25210..105710c 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.4' testImplementation 'org.mockito:mockito-core:5.15.2' testImplementation 'org.mockito:mockito-junit-jupiter:5.15.2' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.19.1' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.19.2' testImplementation 'org.assertj:assertj-core:3.27.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' From cf7fc42c19128ade5819fae3455e98a24d008eee Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 1 Apr 2025 14:52:46 +0100 Subject: [PATCH 251/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.31 (#330) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.30` -> `0.0.31` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 105710c..99bfc83 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.70.0' implementation 'io.grpc:grpc-stub:1.70.0' implementation 'io.grpc:grpc-services:1.70.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.30' + implementation 'io.cloudquery:plugin-pb-java:0.0.31' implementation 'org.apache.arrow:arrow-memory-core:18.2.0' implementation 'org.apache.arrow:arrow-vector:18.2.0' implementation 'commons-io:commons-io:2.18.0' From b408fd2c1f09a262eefc4e4ad56602c75e98b56d Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 1 Apr 2025 14:57:14 +0100 Subject: [PATCH 252/376] chore(main): Release v0.0.40 (#329) :robot: I have created a release *beep* *boop* --- ## [0.0.40](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.39...v0.0.40) (2025-04-01) ### Bug Fixes * **deps:** Update dependency com.google.guava:guava to v33.4.5-jre ([#327](https://github.com/cloudquery/plugin-sdk-java/issues/327)) ([ba04bd3](https://github.com/cloudquery/plugin-sdk-java/commit/ba04bd3a666fe4146cab45259acfd7d716d56945)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.31 ([#330](https://github.com/cloudquery/plugin-sdk-java/issues/330)) ([cf7fc42](https://github.com/cloudquery/plugin-sdk-java/commit/cf7fc42c19128ade5819fae3455e98a24d008eee)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.19.2 ([#328](https://github.com/cloudquery/plugin-sdk-java/issues/328)) ([8928df4](https://github.com/cloudquery/plugin-sdk-java/commit/8928df4817126f752e2867f5128fef577a53a8e8)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 9 +++++++++ lib/build.gradle | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 39fa8ed..28d28bd 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.39" + ".": "0.0.40" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e63ceb..1b30da5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [0.0.40](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.39...v0.0.40) (2025-04-01) + + +### Bug Fixes + +* **deps:** Update dependency com.google.guava:guava to v33.4.5-jre ([#327](https://github.com/cloudquery/plugin-sdk-java/issues/327)) ([ba04bd3](https://github.com/cloudquery/plugin-sdk-java/commit/ba04bd3a666fe4146cab45259acfd7d716d56945)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.31 ([#330](https://github.com/cloudquery/plugin-sdk-java/issues/330)) ([cf7fc42](https://github.com/cloudquery/plugin-sdk-java/commit/cf7fc42c19128ade5819fae3455e98a24d008eee)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.19.2 ([#328](https://github.com/cloudquery/plugin-sdk-java/issues/328)) ([8928df4](https://github.com/cloudquery/plugin-sdk-java/commit/8928df4817126f752e2867f5128fef577a53a8e8)) + ## [0.0.39](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.38...v0.0.39) (2025-03-01) diff --git a/lib/build.gradle b/lib/build.gradle index 99bfc83..06f87ee 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.39' +version = '0.0.40' // x-release-please-end repositories { From becd515da6ff4786d2a733d87294d3814f2cd89e Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 May 2025 03:27:10 +0100 Subject: [PATCH 253/376] fix(deps): Update dependency com.google.guava:guava to v33.4.8-jre (#331) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.google.guava:guava](https://redirect.github.com/google/guava) | dependencies | patch | `33.4.5-jre` -> `33.4.8-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 06f87ee..d1d9f3a 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -31,9 +31,9 @@ dependencies { // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'org.jooq:joou:0.9.4' - implementation 'com.google.guava:guava:33.4.5-jre' + implementation 'com.google.guava:guava:33.4.8-jre' implementation 'info.picocli:picocli:4.7.6' - implementation 'com.google.guava:guava:33.4.5-jre' + implementation 'com.google.guava:guava:33.4.8-jre' implementation 'io.grpc:grpc-protobuf:1.70.0' implementation 'io.grpc:grpc-stub:1.70.0' implementation 'io.grpc:grpc-services:1.70.0' From 0e12831cf0663b2abdced91eabd406e4bf4c4440 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 May 2025 04:03:46 +0100 Subject: [PATCH 254/376] fix(deps): Update dependency info.picocli:picocli to v4.7.7 (#332) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [info.picocli:picocli](https://picocli.info) ([source](https://redirect.github.com/remkop/picocli)) | dependencies | patch | `4.7.6` -> `4.7.7` | --- ### Release Notes
remkop/picocli (info.picocli:picocli) ### [`v4.7.7`](https://redirect.github.com/remkop/picocli/blob/HEAD/RELEASE-NOTES.md#a-name477a-Picocli-477) The picocli community is pleased to announce picocli 4.7.7. This release includes bugfixes and enhancements. Many thanks to the picocli community for raising these issues and providing the pull requests to address them! This is the eighty-sixth public release. Picocli follows [semantic versioning](https://semver.org/). Artifacts in this release are signed by Remko Popma (6601 E5C0 8DCC BB96). #### Table of Contents - [New and noteworthy](#​4.7.7-new) - [Fixed issues](#​4.7.7-fixes) - [Deprecations](#​4.7.7-deprecated) - [Potential breaking changes](#​4.7.7-breaking-changes) #### New and Noteworthy This release fixes a problem that was introduced in the previous release (4.7.6), where using an `ArgGroup` in a `Mixin` would result in options being added twice, or `DuplicateOptionAnnotationsException`. The built-in `picocli.CommandLine.HelpCommand` subcommand now implements `Callable` and returns the exit code of the subcommand's `exitCodeOnUsageHelp` value for the subcommand whose help was requested. From this release, if a command implements both `Callable` and `Runnable`, then the default execution strategy will invoke the `call` method instead of the `run` method. #### Fixed issues - \[[#​2353](https://redirect.github.com/remkop/picocli/issues/2353)] Enhancement: `picocli.shell.jline3.PicocliCommands::invoke` now returns `ParseResult` instead of null. Thanks to [Paul](https://redirect.github.com/pford19) for raising this. - \[[#​2336](https://redirect.github.com/remkop/picocli/issues/2336)] Enhancement: Avoid syntax error in auto-completion script for invalid option names and `paramLabel` values starting with a digit. Thanks to [Ruud Senden](https://redirect.github.com/rsenden) and [Tobias Knerr](https://redirect.github.com/tordanik) for raising this. - \[[#​2281](https://redirect.github.com/remkop/picocli/issues/2281)] Enhancement: Variable interpolation should work for `ArgGroup.heading` attribute. Thanks to [Marc Philipp](https://redirect.github.com/marcphilipp) for raising this. - \[[#​2355](https://redirect.github.com/remkop/picocli/issues/2355)] Bugfix: The built-in `help` subcommand should return the exit code of the subcommand's `exitCodeOnUsageHelp` value for the subcommand whose help was requested. Thanks to [marco-brandizi](https://redirect.github.com/marco-brandizi) for raising this. - \[[#​2335](https://redirect.github.com/remkop/picocli/issues/2335)] Bugfix: Module info missing in all jars except the main picocli jar file. Thanks to [Oliver B. Fischer](https://redirect.github.com/obfischer) for raising this. - \[[#​2331](https://redirect.github.com/remkop/picocli/issues/2331)] Bugfix: AutoComplete with jline3 was showing hidden commands. Thanks to [clebertsuconic](https://redirect.github.com/clebertsuconic) for raising this. - \[[#​2291](https://redirect.github.com/remkop/picocli/issues/2291)] Bugfix: NullPointerException when using PropertiesDefaultProvider. Thanks to [JessHolle](https://redirect.github.com/JessHolle) for raising this. - \[[#​2344](https://redirect.github.com/remkop/picocli/issues/2344)] Bugfix: `negatable=true` option in an `ArgGroup` should not add negated option twice. Thanks to [Robin Fritz](https://redirect.github.com/DevSnobo) for raising this. - \[[#​2309](https://redirect.github.com/remkop/picocli/issues/2309)] Bugfix: Duplicate help output for `ArgGroup` from a `Mixin`. Thanks to [s-falke](https://redirect.github.com/s-falke) for raising this. Thanks to [Simon Gamma](https://redirect.github.com/simschla) for providing a pull request for this. - \[[#​2341](https://redirect.github.com/remkop/picocli/issues/2341)] Bugfix: Options get doubled in non validating `ArgGroup` when used in `Mixin`. Thanks to [Selene Feigl](https://redirect.github.com/sfeigl) for raising this. - \[[#​2349](https://redirect.github.com/remkop/picocli/issues/2349)] Bugfix: Incorrect results when using `ArgGroup` + defaultValue + split + List/Set. Thanks to [Mithun Josalyn Gonsalvez](https://redirect.github.com/mithungonsalvez) for raising this. - \[[#​2292](https://redirect.github.com/remkop/picocli/issues/2292)] Bugfix: `DuplicateOptionAnnotationsException` on using negatable option in `ArgGroup`. Thanks to [Bhavik Patel](https://redirect.github.com/bhavikp19) for raising this. - \[[#​2380](https://redirect.github.com/remkop/picocli/issues/2380)] Bugfix: boolean with `arity=0` and `defaultValue=false` behaved unexpectedly. Thanks to [Leonard BrΓΌnings](https://redirect.github.com/leonard84) for raising this. - \[[#​2290](https://redirect.github.com/remkop/picocli/issues/2290)] DOC: User guide, CDI 2.0 (JSR 365) section: fix example and add warning about dynamic proxies. Thanks to [Mert Zeybekler](https://redirect.github.com/Mert-Z) for the pull request. - \[[#​2347](https://redirect.github.com/remkop/picocli/issues/2347)] DOC: Fix line-endings in generated asciidoc HTML. Thanks to [Fridrich Ε trba](https://redirect.github.com/fridrich) for the pull request. - \[[#​2367](https://redirect.github.com/remkop/picocli/issues/2367)] DOC: Fix broken link. Thanks to [yeoleobun](https://redirect.github.com/yeoleobun) for the pull request. - \[[#​2370](https://redirect.github.com/remkop/picocli/issues/2370)] DOC: Add at least a link to how to use the CodeGen APT under Bazel. Thanks to [Michael Vorburger](https://redirect.github.com/vorburger) for the pull request. - \[[#​2302](https://redirect.github.com/remkop/picocli/issues/2302)] DEP: Bump actions/checkout from 4.1.4 to 4.1.7 - \[[#​2391](https://redirect.github.com/remkop/picocli/issues/2391)] DEP: Bump actions/checkout from 4.1.7 to 4.2.2 - \[[#​2388](https://redirect.github.com/remkop/picocli/issues/2388)] DEP: Bump actions/setup-java from 4.2.1 to 4.7.1 - \[[#​2390](https://redirect.github.com/remkop/picocli/issues/2390)] DEP: Bump actions/upload-artifact from 4.3.3 to 4.6.2 - \[[#​2317](https://redirect.github.com/remkop/picocli/issues/2317)] DEP: Bump gradle/wrapper-validation-action from 3.3.2 to 3.5.0 - \[[#​2321](https://redirect.github.com/remkop/picocli/issues/2321)] DEP: Bump com.google.errorprone:error_prone_core from 2.27.1 to 2.29.2 - \[[#​2382](https://redirect.github.com/remkop/picocli/issues/2382)] DEP: Bump com.google.errorprone:error_prone_core from 2.29.2 to 2.37.0 - \[[#​2329](https://redirect.github.com/remkop/picocli/issues/2329)] DEP: Bump github/codeql-action from 3.25.3 to 3.25.15 - \[[#​2387](https://redirect.github.com/remkop/picocli/issues/2387)] DEP: Bump github/codeql-action from 3.25.15 to 3.28.15 \[[#​2399](https://redirect.github.com/remkop/picocli/issues/2399)] DEP: Bump jakarta.validation:jakarta.validation-api from 3.1.0 to 3.1.1 - \[[#​2384](https://redirect.github.com/remkop/picocli/issues/2384)] DEP: Bump junit5Version from 5.10.2 to 5.12.2 - \[[#​2392](https://redirect.github.com/remkop/picocli/issues/2392)] DEP: Bump log4j2Version from 2.23.1 to 2.24.3 - \[[#​2308](https://redirect.github.com/remkop/picocli/issues/2308)] DEP: Bump net.ltgt.gradle:gradle-errorprone-plugin from 3.1.0 to 4.0.1 \[[#​2403](https://redirect.github.com/remkop/picocli/issues/2403)] DEP: Bump net.ltgt.gradle:gradle-errorprone-plugin from 4.1.0 to 4.2.0 - \[[#​2393](https://redirect.github.com/remkop/picocli/issues/2393)] DEP: Bump org.apache.ivy:ivy from 2.5.2 to 2.5.3 - \[[#​2385](https://redirect.github.com/remkop/picocli/issues/2385)] DEP: Bump org.asciidoctor:asciidoctor-gradle-jvm from 4.0.2 to 4.0.4 - \[[#​2386](https://redirect.github.com/remkop/picocli/issues/2386)] DEP: Bump org.asciidoctor:asciidoctorj-pdf from 2.3.15 to 2.3.19 - \[[#​2394](https://redirect.github.com/remkop/picocli/issues/2394)] DEP: Bump org.hamcrest:hamcrest-core from 2.2 to 3.0 (REVERTED) - \[[#​2396](https://redirect.github.com/remkop/picocli/issues/2396)] DEP: Bump org.hibernate.validator:hibernate-validator from 8.0.1.Final to 8.0.2.Final - \[[#​2395](https://redirect.github.com/remkop/picocli/issues/2395)] DEP: Bump org.hibernate.validator:hibernate-validator-annotation-processor from 8.0.1.Final to 8.0.2.Final \[[#​2400](https://redirect.github.com/remkop/picocli/issues/2400)] DEP: Bump org.jetbrains.kotlin:kotlin-gradle-plugin from 2.0.0 to 2.1.20 \[[#​2401](https://redirect.github.com/remkop/picocli/issues/2401)] DEP: Bump org.jetbrains.kotlin:kotlin-script-runtime from 2.0.0 to 2.1.20 \[[#​2402](https://redirect.github.com/remkop/picocli/issues/2402)] DEP: Bump org.jline:jline from 3.26.1 to 3.29.0 - \[[#​2383](https://redirect.github.com/remkop/picocli/issues/2383)] DEP: Bump org.scala-lang:scala-library from 2.13.14 to 2.13.16 - \[[#​2330](https://redirect.github.com/remkop/picocli/issues/2330)] DEP: Bump ossf/scorecard-action from 2.3.1 to 2.4.0 - \[[#​2389](https://redirect.github.com/remkop/picocli/issues/2389)] DEP: Bump ossf/scorecard-action from 2.4.0 to 2.4.1 - \[[#​2320](https://redirect.github.com/remkop/picocli/issues/2320)] DEP: Bump step-security/harden-runner from 2.7.1 to 2.9.0 - \[[#​2397](https://redirect.github.com/remkop/picocli/issues/2397)] DEP: Bump step-security/harden-runner from 2.9.0 to 2.11.1 #### Deprecations No features were deprecated in this release. #### Potential breaking changes This release has no breaking changes.
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index d1d9f3a..9e1440d 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -32,7 +32,7 @@ dependencies { // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'org.jooq:joou:0.9.4' implementation 'com.google.guava:guava:33.4.8-jre' - implementation 'info.picocli:picocli:4.7.6' + implementation 'info.picocli:picocli:4.7.7' implementation 'com.google.guava:guava:33.4.8-jre' implementation 'io.grpc:grpc-protobuf:1.70.0' implementation 'io.grpc:grpc-stub:1.70.0' From a541e73db6eafcc656a3c0e00e79624c4a314418 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 May 2025 04:07:08 +0100 Subject: [PATCH 255/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.19.3 (#334) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://redirect.github.com/jqno/equalsverifier)) | dependencies | patch | `3.19.2` -> `3.19.3` | `3.19.4` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.19.3`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3193---2025-04-04) ##### Fixed - StackOverflowError when a field has type with a generic type bound that recurses into itself with a wildcard: `interface X>`. ([Issue 1062](https://redirect.github.com/jqno/equalsverifier/issues/1062))
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 9e1440d..f17df26 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.4' testImplementation 'org.mockito:mockito-core:5.15.2' testImplementation 'org.mockito:mockito-junit-jupiter:5.15.2' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.19.2' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.19.3' testImplementation 'org.assertj:assertj-core:3.27.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' From 97b296b828c9b13c2a0eca430457e0ef75019f21 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 May 2025 04:11:03 +0100 Subject: [PATCH 256/376] fix(deps): Update eclipse-temurin Docker tag to v21.0.7_6-jre (#335) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | patch | `21.0.6_7-jre` -> `21.0.7_6-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 07ef22b..8bcec09 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ COPY . . RUN gradle jar --no-daemon -FROM eclipse-temurin:21.0.6_7-jre +FROM eclipse-temurin:21.0.7_6-jre COPY --from=build /code/lib/build/libs/*.jar /app/app.jar From 24ef423ef0497b92c83a950a2728d5baa3956cd6 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 9 May 2025 13:01:49 +0100 Subject: [PATCH 257/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.32 (#336) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.31` -> `0.0.32` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index f17df26..1f29595 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.70.0' implementation 'io.grpc:grpc-stub:1.70.0' implementation 'io.grpc:grpc-services:1.70.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.31' + implementation 'io.cloudquery:plugin-pb-java:0.0.32' implementation 'org.apache.arrow:arrow-memory-core:18.2.0' implementation 'org.apache.arrow:arrow-vector:18.2.0' implementation 'commons-io:commons-io:2.18.0' From 430df9be551adafae44d517c72a2faeeee9d4e25 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 9 May 2025 13:05:46 +0100 Subject: [PATCH 258/376] chore(main): Release v0.0.41 (#333) :robot: I have created a release *beep* *boop* --- ## [0.0.41](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.40...v0.0.41) (2025-05-09) ### Bug Fixes * **deps:** Update dependency com.google.guava:guava to v33.4.8-jre ([#331](https://github.com/cloudquery/plugin-sdk-java/issues/331)) ([becd515](https://github.com/cloudquery/plugin-sdk-java/commit/becd515da6ff4786d2a733d87294d3814f2cd89e)) * **deps:** Update dependency info.picocli:picocli to v4.7.7 ([#332](https://github.com/cloudquery/plugin-sdk-java/issues/332)) ([0e12831](https://github.com/cloudquery/plugin-sdk-java/commit/0e12831cf0663b2abdced91eabd406e4bf4c4440)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.32 ([#336](https://github.com/cloudquery/plugin-sdk-java/issues/336)) ([24ef423](https://github.com/cloudquery/plugin-sdk-java/commit/24ef423ef0497b92c83a950a2728d5baa3956cd6)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.19.3 ([#334](https://github.com/cloudquery/plugin-sdk-java/issues/334)) ([a541e73](https://github.com/cloudquery/plugin-sdk-java/commit/a541e73db6eafcc656a3c0e00e79624c4a314418)) * **deps:** Update eclipse-temurin Docker tag to v21.0.7_6-jre ([#335](https://github.com/cloudquery/plugin-sdk-java/issues/335)) ([97b296b](https://github.com/cloudquery/plugin-sdk-java/commit/97b296b828c9b13c2a0eca430457e0ef75019f21)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 11 +++++++++++ lib/build.gradle | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 28d28bd..2be0982 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.40" + ".": "0.0.41" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b30da5..8b7503e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [0.0.41](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.40...v0.0.41) (2025-05-09) + + +### Bug Fixes + +* **deps:** Update dependency com.google.guava:guava to v33.4.8-jre ([#331](https://github.com/cloudquery/plugin-sdk-java/issues/331)) ([becd515](https://github.com/cloudquery/plugin-sdk-java/commit/becd515da6ff4786d2a733d87294d3814f2cd89e)) +* **deps:** Update dependency info.picocli:picocli to v4.7.7 ([#332](https://github.com/cloudquery/plugin-sdk-java/issues/332)) ([0e12831](https://github.com/cloudquery/plugin-sdk-java/commit/0e12831cf0663b2abdced91eabd406e4bf4c4440)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.32 ([#336](https://github.com/cloudquery/plugin-sdk-java/issues/336)) ([24ef423](https://github.com/cloudquery/plugin-sdk-java/commit/24ef423ef0497b92c83a950a2728d5baa3956cd6)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.19.3 ([#334](https://github.com/cloudquery/plugin-sdk-java/issues/334)) ([a541e73](https://github.com/cloudquery/plugin-sdk-java/commit/a541e73db6eafcc656a3c0e00e79624c4a314418)) +* **deps:** Update eclipse-temurin Docker tag to v21.0.7_6-jre ([#335](https://github.com/cloudquery/plugin-sdk-java/issues/335)) ([97b296b](https://github.com/cloudquery/plugin-sdk-java/commit/97b296b828c9b13c2a0eca430457e0ef75019f21)) + ## [0.0.40](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.39...v0.0.40) (2025-04-01) diff --git a/lib/build.gradle b/lib/build.gradle index 1f29595..c1ad381 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.40' +version = '0.0.41' // x-release-please-end repositories { From f99a5aa606f2114fd3711fc01063510911629441 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 1 Jul 2025 03:29:20 +0100 Subject: [PATCH 259/376] fix(deps): Update dependency commons-io:commons-io to v2.19.0 (#339) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [commons-io:commons-io](https://commons.apache.org/proper/commons-io/) ([source](https://gitbox.apache.org/repos/asf?p=commons-io.git)) | dependencies | minor | `2.18.0` -> `2.19.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index c1ad381..c49e844 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -40,7 +40,7 @@ dependencies { implementation 'io.cloudquery:plugin-pb-java:0.0.32' implementation 'org.apache.arrow:arrow-memory-core:18.2.0' implementation 'org.apache.arrow:arrow-vector:18.2.0' - implementation 'commons-io:commons-io:2.18.0' + implementation 'commons-io:commons-io:2.19.0' implementation "com.fasterxml.jackson.core:jackson-core:2.18.2" implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.2" From 41b66b78b33d9839d5a9851e5ddd5f0dfaac6d7f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 1 Jul 2025 10:14:28 +0100 Subject: [PATCH 260/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v3.19.4 (#338) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://redirect.github.com/jqno/equalsverifier)) | dependencies | patch | `3.19.3` -> `3.19.4` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v3.19.4`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#3194---2025-04-30) ##### Fixed - Suppressing `Warning.IDENTICAL_COPY_FOR_VERSIONED_ENTITY` doesn't work for a versioned entity class when `equals` is defined in an entity parent class.
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index c49e844..07090f1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.4' testImplementation 'org.mockito:mockito-core:5.15.2' testImplementation 'org.mockito:mockito-junit-jupiter:5.15.2' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.19.3' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.19.4' testImplementation 'org.assertj:assertj-core:3.27.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' From 44b294c9903aed0354bc23226d3a1c7eb2dcc32e Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 1 Jul 2025 10:25:59 +0100 Subject: [PATCH 261/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.33 (#337) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.32` -> `0.0.33` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 07090f1..748e285 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.70.0' implementation 'io.grpc:grpc-stub:1.70.0' implementation 'io.grpc:grpc-services:1.70.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.32' + implementation 'io.cloudquery:plugin-pb-java:0.0.33' implementation 'org.apache.arrow:arrow-memory-core:18.2.0' implementation 'org.apache.arrow:arrow-vector:18.2.0' implementation 'commons-io:commons-io:2.19.0' From 2eb3a83feef57382c79c36c2f74235465b7e3147 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 1 Jul 2025 11:44:56 +0100 Subject: [PATCH 262/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.34 (#341) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.33` -> `0.0.34` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 748e285..88192bd 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.70.0' implementation 'io.grpc:grpc-stub:1.70.0' implementation 'io.grpc:grpc-services:1.70.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.33' + implementation 'io.cloudquery:plugin-pb-java:0.0.34' implementation 'org.apache.arrow:arrow-memory-core:18.2.0' implementation 'org.apache.arrow:arrow-vector:18.2.0' implementation 'commons-io:commons-io:2.19.0' From 5651b588acc835222a1a134f5ce71a2409e157ee Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Tue, 1 Jul 2025 13:12:46 +0100 Subject: [PATCH 263/376] chore(main): Release v0.0.42 (#340) :robot: I have created a release *beep* *boop* --- ## [0.0.42](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.41...v0.0.42) (2025-07-01) ### Bug Fixes * **deps:** Update dependency commons-io:commons-io to v2.19.0 ([#339](https://github.com/cloudquery/plugin-sdk-java/issues/339)) ([f99a5aa](https://github.com/cloudquery/plugin-sdk-java/commit/f99a5aa606f2114fd3711fc01063510911629441)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.33 ([#337](https://github.com/cloudquery/plugin-sdk-java/issues/337)) ([44b294c](https://github.com/cloudquery/plugin-sdk-java/commit/44b294c9903aed0354bc23226d3a1c7eb2dcc32e)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.34 ([#341](https://github.com/cloudquery/plugin-sdk-java/issues/341)) ([2eb3a83](https://github.com/cloudquery/plugin-sdk-java/commit/2eb3a83feef57382c79c36c2f74235465b7e3147)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.19.4 ([#338](https://github.com/cloudquery/plugin-sdk-java/issues/338)) ([41b66b7](https://github.com/cloudquery/plugin-sdk-java/commit/41b66b78b33d9839d5a9851e5ddd5f0dfaac6d7f)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 10 ++++++++++ lib/build.gradle | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2be0982..34879d8 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.41" + ".": "0.0.42" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b7503e..86a7bb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.0.42](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.41...v0.0.42) (2025-07-01) + + +### Bug Fixes + +* **deps:** Update dependency commons-io:commons-io to v2.19.0 ([#339](https://github.com/cloudquery/plugin-sdk-java/issues/339)) ([f99a5aa](https://github.com/cloudquery/plugin-sdk-java/commit/f99a5aa606f2114fd3711fc01063510911629441)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.33 ([#337](https://github.com/cloudquery/plugin-sdk-java/issues/337)) ([44b294c](https://github.com/cloudquery/plugin-sdk-java/commit/44b294c9903aed0354bc23226d3a1c7eb2dcc32e)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.34 ([#341](https://github.com/cloudquery/plugin-sdk-java/issues/341)) ([2eb3a83](https://github.com/cloudquery/plugin-sdk-java/commit/2eb3a83feef57382c79c36c2f74235465b7e3147)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v3.19.4 ([#338](https://github.com/cloudquery/plugin-sdk-java/issues/338)) ([41b66b7](https://github.com/cloudquery/plugin-sdk-java/commit/41b66b78b33d9839d5a9851e5ddd5f0dfaac6d7f)) + ## [0.0.41](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.40...v0.0.41) (2025-05-09) diff --git a/lib/build.gradle b/lib/build.gradle index 88192bd..7740ca3 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.41' +version = '0.0.42' // x-release-please-end repositories { From d41d0f4cd526e1be67bc11550694a15c91c5e9f9 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Mon, 21 Jul 2025 11:35:09 +0100 Subject: [PATCH 264/376] chore: Update CODEOWNERS (#342) --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 8a8bb30..17e56b3 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,4 +1,4 @@ -* @cloudquery/integrations-backend +* @cloudquery/backend lib/build.gradle .release-please-manifest.json From a8781df5d3498638eab256e31fb95fce89f821e7 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Aug 2025 02:17:21 +0100 Subject: [PATCH 265/376] fix(deps): Update dependency commons-io:commons-io to v2.20.0 (#343) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [commons-io:commons-io](https://commons.apache.org/proper/commons-io/) ([source](https://gitbox.apache.org/repos/asf?p=commons-io.git)) | dependencies | minor | `2.19.0` -> `2.20.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 7740ca3..3b4f5ff 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -40,7 +40,7 @@ dependencies { implementation 'io.cloudquery:plugin-pb-java:0.0.34' implementation 'org.apache.arrow:arrow-memory-core:18.2.0' implementation 'org.apache.arrow:arrow-vector:18.2.0' - implementation 'commons-io:commons-io:2.19.0' + implementation 'commons-io:commons-io:2.20.0' implementation "com.fasterxml.jackson.core:jackson-core:2.18.2" implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.2" From 9bfb2baac9d8ce480c1cde1647c7efcce110a708 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Aug 2025 02:21:07 +0100 Subject: [PATCH 266/376] fix(deps): Update dependency gradle to v8.14.3 (#344) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://redirect.github.com/gradle/gradle)) | minor | `8.12.1` -> `8.14.3` | --- ### Release Notes
gradle/gradle (gradle) ### [`v8.14.3`](https://redirect.github.com/gradle/gradle/releases/tag/v8.14.3): 8.14.3 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.14.2...v8.14.3) The Gradle team is excited to announce Gradle 8.14.3. This is a patch release for 8.14. We recommend using 8.14.3 instead of 8.14. Here are the highlights of this release: - Java 24 support - GraalVM Native Image toolchain selection - Enhancements to test reporting - Build Authoring improvements [Read the Release Notes](https://docs.gradle.org/8.14.3/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Aurimas](https://redirect.github.com/liutikas), [Ben Bader](https://redirect.github.com/benjamin-bader), [BjΓΆrn Kautler](https://redirect.github.com/Vampire), [chandre92](https://redirect.github.com/chandre92), [Daniel Hammer](https://redirect.github.com/dlehammer), [Danish Nawab](https://redirect.github.com/danishnawab), [Florian Dreier](https://redirect.github.com/DreierF), [Ivy Chen](https://redirect.github.com/Mengmeiivy), [Jendrik Johannes](https://redirect.github.com/jjohannes), [jimmy1995-gu](https://redirect.github.com/jimmy1995-gu), [Madalin Valceleanu](https://redirect.github.com/vmadalin), [Na Minhyeok](https://redirect.github.com/NaMinhyeok). #### Upgrade instructions Switch your build to use Gradle 8.14.3 by updating your wrapper: ./gradlew wrapper --gradle-version=8.14.3 && ./gradlew wrapper See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.14.3/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.14.3/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle). ### [`v8.14.2`](https://redirect.github.com/gradle/gradle/releases/tag/v8.14.2): 8.14.2 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.14.1...v8.14.2) The Gradle team is excited to announce Gradle 8.14.2. Here are the highlights of this release: - Java 24 support - GraalVM Native Image toolchain selection - Enhancements to test reporting - Build Authoring improvements [Read the Release Notes](https://docs.gradle.org/8.14.2/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Aurimas](https://redirect.github.com/liutikas), [Ben Bader](https://redirect.github.com/benjamin-bader), [BjΓΆrn Kautler](https://redirect.github.com/Vampire), [chandre92](https://redirect.github.com/chandre92), [Daniel Hammer](https://redirect.github.com/dlehammer), [Danish Nawab](https://redirect.github.com/danishnawab), [Florian Dreier](https://redirect.github.com/DreierF), [Ivy Chen](https://redirect.github.com/Mengmeiivy), [Jendrik Johannes](https://redirect.github.com/jjohannes), [jimmy1995-gu](https://redirect.github.com/jimmy1995-gu), [Madalin Valceleanu](https://redirect.github.com/vmadalin), [Na Minhyeok](https://redirect.github.com/NaMinhyeok). #### Upgrade instructions Switch your build to use Gradle 8.14.2 by updating your wrapper: ./gradlew wrapper --gradle-version=8.14.2 && ./gradlew wrapper See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.14.2/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.14.2/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle). ### [`v8.14.1`](https://redirect.github.com/gradle/gradle/releases/tag/v8.14.1): 8.14.1 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.14.0...v8.14.1) The Gradle team is excited to announce Gradle 8.14.1. [Read the Release Notes](https://docs.gradle.org/8.14.1/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Aurimas](https://redirect.github.com/liutikas), [Ben Bader](https://redirect.github.com/benjamin-bader), [BjΓΆrn Kautler](https://redirect.github.com/Vampire), [chandre92](https://redirect.github.com/chandre92), [Daniel Hammer](https://redirect.github.com/dlehammer), [Danish Nawab](https://redirect.github.com/danishnawab), [Florian Dreier](https://redirect.github.com/DreierF), [Ivy Chen](https://redirect.github.com/Mengmeiivy), [Jendrik Johannes](https://redirect.github.com/jjohannes), [jimmy1995-gu](https://redirect.github.com/jimmy1995-gu), [Madalin Valceleanu](https://redirect.github.com/vmadalin), [Na Minhyeok](https://redirect.github.com/NaMinhyeok). #### Upgrade instructions Switch your build to use Gradle 8.14.1 by updating your wrapper: ./gradlew wrapper --gradle-version=8.14.1 && ./gradlew wrapper See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.14.1/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.14.1/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle). ### [`v8.14`](https://redirect.github.com/gradle/gradle/releases/tag/v8.14.0): 8.14 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.13.0...v8.14.0) The Gradle team is excited to announce Gradle 8.14. [Read the Release Notes](https://docs.gradle.org/8.14/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Aurimas](https://redirect.github.com/liutikas), [Ben Bader](https://redirect.github.com/benjamin-bader), [BjΓΆrn Kautler](https://redirect.github.com/Vampire), [chandre92](https://redirect.github.com/chandre92), [Daniel Hammer](https://redirect.github.com/dlehammer), [Danish Nawab](https://redirect.github.com/danishnawab), [Florian Dreier](https://redirect.github.com/DreierF), [Ivy Chen](https://redirect.github.com/Mengmeiivy), [Jendrik Johannes](https://redirect.github.com/jjohannes), [jimmy1995-gu](https://redirect.github.com/jimmy1995-gu), [Madalin Valceleanu](https://redirect.github.com/vmadalin), [Na Minhyeok](https://redirect.github.com/NaMinhyeok). #### Upgrade instructions Switch your build to use Gradle 8.14 by updating your wrapper: ./gradlew wrapper --gradle-version=8.14 && ./gradlew wrapper See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.14/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.14/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle). ### [`v8.13`](https://redirect.github.com/gradle/gradle/releases/tag/v8.13.0): 8.13 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.12.1...v8.13.0) The Gradle team is excited to announce Gradle 8.13. [Read the Release Notes](https://docs.gradle.org/8.13/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Adam](https://redirect.github.com/adam-enko), [Adam](https://redirect.github.com/aSemy), [Ahmad Al-Masry](https://redirect.github.com/AhmadMasry), [Ahmed Ehab](https://redirect.github.com/ahmedehabb), [Aurimas](https://redirect.github.com/liutikas), [Baptiste Decroix](https://redirect.github.com/bdecroix-spiria), [BjΓΆrn Kautler](https://redirect.github.com/Vampire), [Borewit](https://redirect.github.com/Borewit), [Jorge Matamoros](https://redirect.github.com/YungOkra), [Lei Zhu](https://redirect.github.com/Korov), [Madalin Valceleanu](https://redirect.github.com/vmadalin), [Mohammed Thavaf](https://redirect.github.com/mthavaf), [Patrick BrΓΌckner](https://redirect.github.com/madmuffin1), [Philip Wedemann](https://redirect.github.com/hfhbd), [Roberto Perez Alcolea](https://redirect.github.com/rpalcolea), [RΓ³bert Papp](https://redirect.github.com/TWiStErRob), [Semyon Gaschenko](https://redirect.github.com/gasches), [Shi Chen](https://redirect.github.com/CsCherrYY), [Stefan M.](https://redirect.github.com/StefMa), [Steven Schoen](https://redirect.github.com/DSteve595), [tg-freigmbh](https://redirect.github.com/tg-freigmbh), [TheGoesen](https://redirect.github.com/TheGoesen), [Tony Robalik](https://redirect.github.com/autonomousapps), [Zongle Wang](https://redirect.github.com/Goooler). #### Upgrade instructions Switch your build to use Gradle 8.13 by updating your wrapper: ./gradlew wrapper --gradle-version=8.13 && ./gradlew wrapper See the Gradle [8.x upgrade guide](https://docs.gradle.org/8.13/userguide/upgrading_version\_8.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/8.13/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.jar | Bin 43583 -> 43764 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 6 +++--- gradlew.bat | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b9530d66f5e68d973ea569d8e19de379189..1b33c55baabb587c669f562ae36f953de2481846 100644 GIT binary patch delta 34943 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

Gn4F+B~IivciU9^t0j-Mgao3 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 DDw4oP diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e18bc25..d4081da 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f3b75f3..23d15a9 100755 --- a/gradlew +++ b/gradlew @@ -114,7 +114,7 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar +CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -205,7 +205,7 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. @@ -213,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 9d21a21..db3a6ac 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,11 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar +set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell From 7a72630fd95ac3f7c0e6a45f08d6015cc7e256e1 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Aug 2025 04:29:39 +0100 Subject: [PATCH 267/376] fix(deps): Update dependency org.apache.arrow:arrow-memory-core to v18.3.0 (#346) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.arrow:arrow-memory-core](https://arrow.apache.org/) | dependencies | minor | `18.2.0` -> `18.3.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 3b4f5ff..771f432 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation 'io.grpc:grpc-stub:1.70.0' implementation 'io.grpc:grpc-services:1.70.0' implementation 'io.cloudquery:plugin-pb-java:0.0.34' - implementation 'org.apache.arrow:arrow-memory-core:18.2.0' + implementation 'org.apache.arrow:arrow-memory-core:18.3.0' implementation 'org.apache.arrow:arrow-vector:18.2.0' implementation 'commons-io:commons-io:2.20.0' From a842d833b1876a43424b01e849a9b72e75705b74 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 1 Aug 2025 04:33:19 +0100 Subject: [PATCH 268/376] fix(deps): Update dependency org.apache.arrow:arrow-memory-netty to v18.3.0 (#347) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.arrow:arrow-memory-netty](https://arrow.apache.org/) | dependencies | minor | `18.2.0` -> `18.3.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 771f432..c7f79e1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -59,7 +59,7 @@ dependencies { testImplementation 'org.assertj:assertj-core:3.27.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' - runtimeOnly "org.apache.arrow:arrow-memory-netty:18.2.0" + runtimeOnly "org.apache.arrow:arrow-memory-netty:18.3.0" } test { From 74cc2cf5117e3665c8666a0fccedb3d751fe5642 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Fri, 1 Aug 2025 11:32:50 +0100 Subject: [PATCH 269/376] chore: Use non deprecated action (#348) --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c696e63..b50b8ca 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,8 @@ jobs: name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@f9c9c575b8b21b6485636a91ffecd10e558c62f6 + # v4.4.1 + uses: gradle/actions/wrapper-validation@ac638b010cf58a27ee6c972d7336334ccaf61c96 - name: Build package run: ./gradlew build env: From 32476581b1cd221562cb291b5aacf90c10ac825c Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Sep 2025 02:15:16 +0100 Subject: [PATCH 270/376] chore(deps): Update gradle/actions digest to 83c124b (#349) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/actions | action | digest | `ac638b0` -> `83c124b` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b50b8ca..b953b8b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,7 +24,7 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Validate Gradle wrapper # v4.4.1 - uses: gradle/actions/wrapper-validation@ac638b010cf58a27ee6c972d7336334ccaf61c96 + uses: gradle/actions/wrapper-validation@83c124bfb09badf85ddfbf01158b5592c1a78c4a - name: Build package run: ./gradlew build env: From 8812244e2dd808027a76b71c15e6d980910b3878 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Sep 2025 02:19:09 +0100 Subject: [PATCH 271/376] fix(deps): Update dependency org.assertj:assertj-core to v3.27.4 (#350) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.assertj:assertj-core](https://assertj.github.io/doc/#assertj-core) ([source](https://redirect.github.com/assertj/assertj)) | dependencies | patch | `3.27.3` -> `3.27.4` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index c7f79e1..6b8e875 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -56,7 +56,7 @@ dependencies { testImplementation 'org.mockito:mockito-core:5.15.2' testImplementation 'org.mockito:mockito-junit-jupiter:5.15.2' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.19.4' - testImplementation 'org.assertj:assertj-core:3.27.3' + testImplementation 'org.assertj:assertj-core:3.27.4' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' runtimeOnly "org.apache.arrow:arrow-memory-netty:18.3.0" From 52b6f5f3d94536f6284504aa9dc4faf85e621056 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Sep 2025 03:18:09 +0100 Subject: [PATCH 272/376] fix(deps): Update eclipse-temurin Docker tag to v21.0.8_9-jre (#351) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | patch | `21.0.7_6-jre` -> `21.0.8_9-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 8bcec09..e43690b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ COPY . . RUN gradle jar --no-daemon -FROM eclipse-temurin:21.0.7_6-jre +FROM eclipse-temurin:21.0.8_9-jre COPY --from=build /code/lib/build/libs/*.jar /app/app.jar From 5b81081f171853d2beffe3daae900b02f919f6de Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Sep 2025 03:21:48 +0100 Subject: [PATCH 273/376] fix(deps): Update dependency org.apache.arrow:arrow-vector to v18.3.0 (#352) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.arrow:arrow-vector](https://arrow.apache.org/) | dependencies | minor | `18.2.0` -> `18.3.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 6b8e875..e5ff9cb 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -39,7 +39,7 @@ dependencies { implementation 'io.grpc:grpc-services:1.70.0' implementation 'io.cloudquery:plugin-pb-java:0.0.34' implementation 'org.apache.arrow:arrow-memory-core:18.3.0' - implementation 'org.apache.arrow:arrow-vector:18.2.0' + implementation 'org.apache.arrow:arrow-vector:18.3.0' implementation 'commons-io:commons-io:2.20.0' implementation "com.fasterxml.jackson.core:jackson-core:2.18.2" From b7f7f877e42e8633dcfa32a665836d5925b4ea75 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Sep 2025 10:42:20 +0100 Subject: [PATCH 274/376] chore(main): Release v0.0.43 (#345) :robot: I have created a release *beep* *boop* --- ## [0.0.43](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.42...v0.0.43) (2025-09-01) ### Bug Fixes * **deps:** Update dependency commons-io:commons-io to v2.20.0 ([#343](https://github.com/cloudquery/plugin-sdk-java/issues/343)) ([a8781df](https://github.com/cloudquery/plugin-sdk-java/commit/a8781df5d3498638eab256e31fb95fce89f821e7)) * **deps:** Update dependency gradle to v8.14.3 ([#344](https://github.com/cloudquery/plugin-sdk-java/issues/344)) ([9bfb2ba](https://github.com/cloudquery/plugin-sdk-java/commit/9bfb2baac9d8ce480c1cde1647c7efcce110a708)) * **deps:** Update dependency org.apache.arrow:arrow-memory-core to v18.3.0 ([#346](https://github.com/cloudquery/plugin-sdk-java/issues/346)) ([7a72630](https://github.com/cloudquery/plugin-sdk-java/commit/7a72630fd95ac3f7c0e6a45f08d6015cc7e256e1)) * **deps:** Update dependency org.apache.arrow:arrow-memory-netty to v18.3.0 ([#347](https://github.com/cloudquery/plugin-sdk-java/issues/347)) ([a842d83](https://github.com/cloudquery/plugin-sdk-java/commit/a842d833b1876a43424b01e849a9b72e75705b74)) * **deps:** Update dependency org.apache.arrow:arrow-vector to v18.3.0 ([#352](https://github.com/cloudquery/plugin-sdk-java/issues/352)) ([5b81081](https://github.com/cloudquery/plugin-sdk-java/commit/5b81081f171853d2beffe3daae900b02f919f6de)) * **deps:** Update dependency org.assertj:assertj-core to v3.27.4 ([#350](https://github.com/cloudquery/plugin-sdk-java/issues/350)) ([8812244](https://github.com/cloudquery/plugin-sdk-java/commit/8812244e2dd808027a76b71c15e6d980910b3878)) * **deps:** Update eclipse-temurin Docker tag to v21.0.8_9-jre ([#351](https://github.com/cloudquery/plugin-sdk-java/issues/351)) ([52b6f5f](https://github.com/cloudquery/plugin-sdk-java/commit/52b6f5f3d94536f6284504aa9dc4faf85e621056)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ lib/build.gradle | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 34879d8..d7a636b 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.42" + ".": "0.0.43" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 86a7bb9..d6c97d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.0.43](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.42...v0.0.43) (2025-09-01) + + +### Bug Fixes + +* **deps:** Update dependency commons-io:commons-io to v2.20.0 ([#343](https://github.com/cloudquery/plugin-sdk-java/issues/343)) ([a8781df](https://github.com/cloudquery/plugin-sdk-java/commit/a8781df5d3498638eab256e31fb95fce89f821e7)) +* **deps:** Update dependency gradle to v8.14.3 ([#344](https://github.com/cloudquery/plugin-sdk-java/issues/344)) ([9bfb2ba](https://github.com/cloudquery/plugin-sdk-java/commit/9bfb2baac9d8ce480c1cde1647c7efcce110a708)) +* **deps:** Update dependency org.apache.arrow:arrow-memory-core to v18.3.0 ([#346](https://github.com/cloudquery/plugin-sdk-java/issues/346)) ([7a72630](https://github.com/cloudquery/plugin-sdk-java/commit/7a72630fd95ac3f7c0e6a45f08d6015cc7e256e1)) +* **deps:** Update dependency org.apache.arrow:arrow-memory-netty to v18.3.0 ([#347](https://github.com/cloudquery/plugin-sdk-java/issues/347)) ([a842d83](https://github.com/cloudquery/plugin-sdk-java/commit/a842d833b1876a43424b01e849a9b72e75705b74)) +* **deps:** Update dependency org.apache.arrow:arrow-vector to v18.3.0 ([#352](https://github.com/cloudquery/plugin-sdk-java/issues/352)) ([5b81081](https://github.com/cloudquery/plugin-sdk-java/commit/5b81081f171853d2beffe3daae900b02f919f6de)) +* **deps:** Update dependency org.assertj:assertj-core to v3.27.4 ([#350](https://github.com/cloudquery/plugin-sdk-java/issues/350)) ([8812244](https://github.com/cloudquery/plugin-sdk-java/commit/8812244e2dd808027a76b71c15e6d980910b3878)) +* **deps:** Update eclipse-temurin Docker tag to v21.0.8_9-jre ([#351](https://github.com/cloudquery/plugin-sdk-java/issues/351)) ([52b6f5f](https://github.com/cloudquery/plugin-sdk-java/commit/52b6f5f3d94536f6284504aa9dc4faf85e621056)) + ## [0.0.42](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.41...v0.0.42) (2025-07-01) diff --git a/lib/build.gradle b/lib/build.gradle index e5ff9cb..05e7930 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.42' +version = '0.0.43' // x-release-please-end repositories { From fbb196cfb7268e3209cfa99997055e77deb75c8c Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Sep 2025 12:58:29 +0100 Subject: [PATCH 275/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.35 (#353) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.34` -> `0.0.35` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 05e7930..8b3d290 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.70.0' implementation 'io.grpc:grpc-stub:1.70.0' implementation 'io.grpc:grpc-services:1.70.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.34' + implementation 'io.cloudquery:plugin-pb-java:0.0.35' implementation 'org.apache.arrow:arrow-memory-core:18.3.0' implementation 'org.apache.arrow:arrow-vector:18.3.0' implementation 'commons-io:commons-io:2.20.0' From 6708fb3906077fd20c7449a04740edfb3e811c94 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Mon, 29 Sep 2025 15:21:20 +0100 Subject: [PATCH 276/376] chore: Add permissions to all workflows (#355) --- .github/workflows/ci.yml | 3 +++ .github/workflows/pr_title.yml | 5 +++- .github/workflows/publish.yml | 41 +++++++++++++++++--------------- .github/workflows/release_pr.yml | 3 +++ 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b953b8b..335bfce 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,6 +8,9 @@ on: branches: - main +permissions: + contents: read + jobs: build: runs-on: ubuntu-latest diff --git a/.github/workflows/pr_title.yml b/.github/workflows/pr_title.yml index c7c8e47..1844a58 100644 --- a/.github/workflows/pr_title.yml +++ b/.github/workflows/pr_title.yml @@ -7,6 +7,9 @@ on: - edited - synchronize +permissions: + pull-requests: read + jobs: main: name: Validate PR title @@ -41,7 +44,7 @@ jobs: # special "[WIP]" prefix to indicate this state. This will avoid the # validation of the PR title and the pull request checks remain pending. # Note that a second check will be reported if this is enabled. - wip: true + wip: false # When using "Squash and merge" on a PR with only one commit, GitHub # will suggest using that commit message instead of the PR title for the # merge commit, and it's easy to commit this by mistake. Enable this option diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 091c0d4..781e68e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -2,24 +2,27 @@ name: publish on: push: tags: - - 'v*.*.*' + - "v*.*.*" + +permissions: + contents: read jobs: - publish: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: '18' - cache: 'gradle' - - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@f9c9c575b8b21b6485636a91ffecd10e558c62f6 - - name: Publish package - uses: gradle/gradle-build-action@093dfe9d598ec5a42246855d09b49dc76803c005 - with: - arguments: publish - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + publish: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: "temurin" + java-version: "18" + cache: "gradle" + - name: Validate Gradle wrapper + uses: gradle/wrapper-validation-action@f9c9c575b8b21b6485636a91ffecd10e558c62f6 + - name: Publish package + uses: gradle/gradle-build-action@093dfe9d598ec5a42246855d09b49dc76803c005 + with: + arguments: publish + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release_pr.yml b/.github/workflows/release_pr.yml index ddb8a6b..524d22a 100644 --- a/.github/workflows/release_pr.yml +++ b/.github/workflows/release_pr.yml @@ -4,6 +4,9 @@ on: branches: - main +permissions: + contents: read + jobs: release-please: runs-on: ubuntu-latest From e61b9556c907ac38596ff2c16c5b2a62902e63fb Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 02:21:35 +0100 Subject: [PATCH 277/376] chore(deps): Update gradle/actions digest to 4d9f0ba (#356) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/actions | action | digest | `83c124b` -> `4d9f0ba` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 335bfce..4248786 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Validate Gradle wrapper # v4.4.1 - uses: gradle/actions/wrapper-validation@83c124bfb09badf85ddfbf01158b5592c1a78c4a + uses: gradle/actions/wrapper-validation@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 - name: Build package run: ./gradlew build env: From af74a56160220e58d901db67961b3bd3f95d43d2 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 02:24:36 +0100 Subject: [PATCH 278/376] fix(deps): Update dependency org.assertj:assertj-core to v3.27.6 (#357) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.assertj:assertj-core](https://assertj.github.io/doc/#assertj-core) ([source](https://redirect.github.com/assertj/assertj)) | dependencies | patch | `3.27.4` -> `3.27.6` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 8b3d290..bd54a78 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -56,7 +56,7 @@ dependencies { testImplementation 'org.mockito:mockito-core:5.15.2' testImplementation 'org.mockito:mockito-junit-jupiter:5.15.2' testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.19.4' - testImplementation 'org.assertj:assertj-core:3.27.4' + testImplementation 'org.assertj:assertj-core:3.27.6' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' runtimeOnly "org.apache.arrow:arrow-memory-netty:18.3.0" From e60eb99b2ea35bbd45ed88d439e1db1e27ba7752 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 03:20:37 +0100 Subject: [PATCH 279/376] fix(deps): Update dependency com.google.guava:guava to v33.5.0-jre (#358) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.google.guava:guava](https://redirect.github.com/google/guava) | dependencies | minor | `33.4.8-jre` -> `33.5.0-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index bd54a78..16fac46 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -31,9 +31,9 @@ dependencies { // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'org.jooq:joou:0.9.4' - implementation 'com.google.guava:guava:33.4.8-jre' + implementation 'com.google.guava:guava:33.5.0-jre' implementation 'info.picocli:picocli:4.7.7' - implementation 'com.google.guava:guava:33.4.8-jre' + implementation 'com.google.guava:guava:33.5.0-jre' implementation 'io.grpc:grpc-protobuf:1.70.0' implementation 'io.grpc:grpc-stub:1.70.0' implementation 'io.grpc:grpc-services:1.70.0' From ce61e70ab7aebbb24b2ea49a5082cb70bf3bd9a3 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Wed, 1 Oct 2025 10:42:47 +0100 Subject: [PATCH 280/376] chore: Add package rules for JUnit in Renovate config (#362) --- .github/renovate.json5 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index df06f33..997bad8 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -1,3 +1,9 @@ { extends: ["github>cloudquery/.github//.github/renovate-java-default.json5"], + packageRules: [ + { + matchPackageNames: ["^org.junit"], + groupName: "junit, + }, + ], } From 15daf3fe2f17d0a6c60b8648b0d6bcdae69764cd Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Wed, 1 Oct 2025 11:56:26 +0100 Subject: [PATCH 281/376] chore: Fix syntax error in renovate.json5 --- .github/renovate.json5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 997bad8..f24d8d3 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -3,7 +3,7 @@ packageRules: [ { matchPackageNames: ["^org.junit"], - groupName: "junit, + groupName: "junit", }, ], } From cd8f5fa719f99abf70d3e96ec54fa675792974d1 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 12:37:49 +0100 Subject: [PATCH 282/376] fix(deps): Update grpc-java monorepo to v1.75.0 (#365) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-inprocess](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.70.0` -> `1.75.0` | | [io.grpc:grpc-testing](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.70.0` -> `1.75.0` | | [io.grpc:grpc-services](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.70.0` -> `1.75.0` | | [io.grpc:grpc-stub](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.70.0` -> `1.75.0` | | [io.grpc:grpc-protobuf](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.70.0` -> `1.75.0` | --- ### Release Notes

grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.75.0`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.75.0) ##### Behavior Changes - binder: Introduce server pre-authorization ([#​12127](https://redirect.github.com/grpc/grpc-java/issues/12127)). grpc-binder clients authorize servers by checking the UID of the sender of the SETUP_TRANSPORT Binder transaction against some SecurityPolicy. But merely binding to an unauthorized server to learn its UID can enable "keep-alive" and "background activity launch" abuse, even if security policy ultimately causes the grpc connection to fail. Pre-authorization mitigates this kind of abuse by resolving addresses and authorizing a candidate server Application's UID before binding to it. Pre-auth is especially important when the server's address is not fixed in advance but discovered by PackageManager lookup. ##### Bug Fixes - core: `grpc-timeout` should always be positive ([#​12201](https://redirect.github.com/grpc/grpc-java/issues/12201)) ([`6dfa03c`](https://redirect.github.com/grpc/grpc-java/commit/6dfa03c51)). There is a local race between when the deadline is checked before sending the RPC and when the timeout is calculated to put on-the-wire. The code replaced negative timeouts with 0 nanoseconds. gRPC’s PROTOCOL-HTTP2 spec states that timeouts should be positive, so now non-positive values are replaced with 1 nanosecond - core: Improved DEADLINE_EXCEEDED message for delayed calls ([`6ff8eca`](https://redirect.github.com/grpc/grpc-java/commit/6ff8ecac0)). Delayed calls are the first calls on a Channel before name resolution has resolved addresses. Previously you could see confusing errors saying the deadline β€œwill be exceeded in” X time. The message tense was simply wrong, and now will be correct: deadline β€œwas exceeded after” X time. - xds: PriorityLB now only uses the failOverTimer to start additional priorities, not fail RPCs ([`c4256ad`](https://redirect.github.com/grpc/grpc-java/commit/c4256add4)). You should no longer see β€œConnection timeout for priority” errors. ##### Improvements - netty: Count sent RST_STREAMs against `NettyServerBuilder.maxRstFramesPerWindow()` limit ([#​12288](https://redirect.github.com/grpc/grpc-java/issues/12288)). This extends the Rapid Reset tool to also cover MadeYouReset. the reset stream count will cause a 420 "Enhance your calm response" to be sent. This depends on Netty 4.1.124 for a bug fix to actually call the encoder by the frame writer. - xds: Convert CdsLb to `XdsDepManager` ([`297ab05`](https://redirect.github.com/grpc/grpc-java/commit/297ab05ef)). This is part of gRFC A74 to have atomic xDS config updates. This is an internal change, but does change the error description seen in certain cases, especially DEADLINE_EXCEEDED on a brand-new channel. - census: APIs for stats and tracing ([#​12050](https://redirect.github.com/grpc/grpc-java/issues/12050)) ([`9193701`](https://redirect.github.com/grpc/grpc-java/commit/919370172)). Client channel and server builders with interceptors and factories respectively for stats and tracing. - stub: simplify `BlockingClientCall` infinite blocking ([#​12217](https://redirect.github.com/grpc/grpc-java/issues/12217)) ([`ba0a732`](https://redirect.github.com/grpc/grpc-java/commit/ba0a7329d)). Move deadline computation into overloads with finite timeouts. Blocking calls without timeouts now do not have to read the clock. - xds: Do RLS fallback policy eagar start ([#​12211](https://redirect.github.com/grpc/grpc-java/issues/12211)) ([`42e1829`](https://redirect.github.com/grpc/grpc-java/commit/42e1829b3)). In gRPC-Java, the xDS clusters were lazily subscribed, which meant the fallback target which is returned in the RLS config wasn’t subscribed until a RPC actually falls back to it. The delayed resource subscription process in gRPC Java made it more susceptible to the effects of the INITIAL_RESOURCE_FETCH_TIMEOUT compared to other programming languages. It also had impact beyond the RLS cache expiration case, for example, when the first time the client initialized the channel, we couldn't fallback when the intended target times out, because of the lazy subscription. This change starts the fallback LB policy for the default target at the start of RLS policy instead of only when falling back to the default target, which fixes the above mentioned problems. - xds: Aggregate cluster fixes (A75) ([#​12186](https://redirect.github.com/grpc/grpc-java/issues/12186)) ([`7e982e4`](https://redirect.github.com/grpc/grpc-java/commit/7e982e48a)). The earlier implementation of aggregate clusters concatenated the priorities from the underlying clusters into a single list, so that it could use a single LB policy defined at the aggregate cluster layer to choose a priority from that combined list. However, it turns out that aggregate clusters don't actually define the LB policy in the aggregate cluster; instead, the aggregate cluster uses a special cluster-provided LB policy that first chooses the underlying cluster and then delegates to the LB policy of the underlying cluster. This change implements that. - api: set size correctly for sets and maps in handling `Metadata` values to be exchanged during a call ([#​12229](https://redirect.github.com/grpc/grpc-java/issues/12229)) ([`8021727`](https://redirect.github.com/grpc/grpc-java/commit/80217275d)) - xds: xdsClient cache transient error for new watchers ([#​12291](https://redirect.github.com/grpc/grpc-java/issues/12291)). When a resource update is NACKed, cache the error and update new watchers that get added with that error instead of making them hang. - xds: Avoid PriorityLb re-enabling timer on duplicate CONNECTING ([#​12289](https://redirect.github.com/grpc/grpc-java/issues/12289)). If a LB policy gives extraneous updates with state CONNECTING, then it was possible to re-create `failOverTimer` which would then wait the 10 seconds for the child to finish CONNECTING. We only want to give the child one opportunity after transitioning out of READY/IDLE. - xds: Use a different log name for `XdsClientImpl` and `ControlPlaneClient` ([#​12287](https://redirect.github.com/grpc/grpc-java/issues/12287)). `ControlPlaneClient` uses "xds-cp-client" now instead of "xds-client" while logging. ##### Dependencies Changes - Upgrade to Netty 4.1.124.Final ([#​12286](https://redirect.github.com/grpc/grpc-java/issues/12286)). This implicitly disables `NettyAdaptiveCumulator` ([#​11284](https://redirect.github.com/grpc/grpc-java/issues/11284)), which can have a performance impact. We delayed upgrading Netty to give time to rework the optimization, but we've gone too long already without upgrading which causes problems for vulnerability tracking. - bazel: Use `jar_jar` to avoid xds deps ([#​12243](https://redirect.github.com/grpc/grpc-java/issues/12243)) ([`8f09b96`](https://redirect.github.com/grpc/grpc-java/commit/8f09b9689)). The //xds and //xds:orca targets now use `jar_jar` to shade the protobuf generated code. This allows them to use their own private copy of the protos and drop direct Bazel dependencies on cel-spec, grpc, rules_go, com_github_cncf_xds, envoy_api, com_envoyproxy_protoc_gen_validate, and opencensus_proto. This mirrors the shading of protobuf messages done for grpc-xds provided on Maven Central and should simplify dependency management ##### Documentation - Clarify requirements for creating a cross-user Channel. ([#​12181](https://redirect.github.com/grpc/grpc-java/issues/12181)). The `@SystemApi` runtime visibility requirement isn't really new. It has always been implicit in the required INTERACT_ACROSS_USERS permission, which can only be held by system apps in production. Now deprecated `BinderChannelBuilder#bindAsUser` has always required SDK_INT >= 30. This change just copies that requirement forward to its replacement APIs in `AndroidComponentAddress` and the TARGET_ANDROID_USER `NameResolver.Args`. - api: Add more Javadoc for `NameResolver.Listener2` interface ([#​12220](https://redirect.github.com/grpc/grpc-java/issues/12220)) ([`d352540`](https://redirect.github.com/grpc/grpc-java/commit/d352540a0)) ##### Thanks to [@​benjaminp](https://redirect.github.com/benjaminp) [@​werkt](https://redirect.github.com/werkt) [@​kilink](https://redirect.github.com/kilink) [@​vimanikag](https://redirect.github.com/vimanikag) ### [`v1.74.0`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.74.0) ##### Behavior Changes - compiler: Default to `@generated=omit` ([`f8700a1`](https://redirect.github.com/grpc/grpc-java/commit/f8700a13a)). This omits `javax.annotation.Generated` from the generated code and makes the `org.apache.tomcat:annotations-api` compile-only dependency unnecessary (README and examples changes forthcoming; we delayed those changes until the release landed). You can use the option `@generated=javax` for the previous behavior, but please also file an issue so we can develop alternatives - compiler: generate blocking v2 unary calls that throw StatusException ([#​12126](https://redirect.github.com/grpc/grpc-java/issues/12126)) ([`a16d655`](https://redirect.github.com/grpc/grpc-java/commit/a16d65591)). Previously, the new blocking stub API was identical to the older blocking stub for unary RPCs and used the unchecked `StatusRuntimeException`. However, feedback demonstrated it was confusing to mix that with the checked `StatusException` in `BlockingClientCall`. Now the new blocking stub uses StatusException throughout. grpc-java continues to support the old generated code, but the version of protoc-gen-grpc-java will dictate which API you see. If you support multiple generated code versions, you can use the older blocking v1 stub for unary RPCs ##### Bug Fixes - netty: Fix a race that caused RPCs to hang on start when a GOAWAY was received while the RPCs’ headers were being written to the OS ([`b04c673`](https://redirect.github.com/grpc/grpc-java/commit/b04c673fd), [`15c7573`](https://redirect.github.com/grpc/grpc-java/commit/15c757398)). This was a very old race, not a recent regression. All streams should now properly fail instead of hanging, although in some cases they may be transparently retried - util: OutlierDetection should use nanoTime, not currentTimeMillis ([#​12110](https://redirect.github.com/grpc/grpc-java/issues/12110)) ([`1c43098`](https://redirect.github.com/grpc/grpc-java/commit/1c4309899)). Previously, changes in the wall time would impact its accounting - xds: Don't allow hostnames in address field in EDS ([#​12123](https://redirect.github.com/grpc/grpc-java/issues/12123)) ([`482dc5c`](https://redirect.github.com/grpc/grpc-java/commit/482dc5c1c)). Only IP addresses were handled properly, and only IP addresses should be handled per gRFC A27 - xds: In resource handling, call onError() for RDS and EDS NACKs ([#​12122](https://redirect.github.com/grpc/grpc-java/issues/12122)) ([`efe9ccc`](https://redirect.github.com/grpc/grpc-java/commit/efe9ccc22)). Previously the resource was NACKed, but gRPC would continue waiting for the resource until a timeout was reached and claim the control plane didn’t send the resource. Now it will fail quickly with an informative error - xds: Implement equals in RingHashConfig ([`a5eaa66`](https://redirect.github.com/grpc/grpc-java/commit/a5eaa66cc)). Previously all configuration refreshes were considered a new config, which had the potential for causing unexpected inefficiency problems. This was noticed by new code for gRFC A74 xDS Config Tears that is not yet enabled, so there are no known problems that this caused - LBs should avoid calling LBs after lb.shutdown() ([`1df2a33`](https://redirect.github.com/grpc/grpc-java/commit/1df2a3305)). This fixed pick_first and ring_hash behavior that could cause rare and β€œrandom” races in parent load balancers like a `NullPointerException` in `ClusterImplLoadBalancer.createSubchannel()`, which had a ring_hash child. This is most likely to help xDS, as it heavily uses hierarchical LB policies ##### Improvements - util: Deliver addresses in a random order to shuffle connection creation ordering ([`f07eb47`](https://redirect.github.com/grpc/grpc-java/commit/f07eb47ca)). Previously, connections were created in-order (but non-blocking), so in a fast network the first address could be more likely to connect first given a "microsecond" headstart. That first connection then receives all the buffered RPCs, which could cause temporary, but repeated, load imbalances of the same backend when all clients receive the same list of addresses in the same order. This has been seen in practice, but it is unclear how often it happens. Shuffling has the potential to improve load distribution of new clients when using round_robin, weighted_round_robin, and least_request, which connect simultaneously to multiple addresses - core: Use lazy message formatting in checkState ([#​12144](https://redirect.github.com/grpc/grpc-java/issues/12144)) ([`26bd0ee`](https://redirect.github.com/grpc/grpc-java/commit/26bd0eee4)). This avoids the potential of unnecessarily formatting an exception as a string when a subchannel fails to connect - bazel: Migrate java_grpc_library to use DefaultInfo ([#​12148](https://redirect.github.com/grpc/grpc-java/issues/12148)) ([`6f69363`](https://redirect.github.com/grpc/grpc-java/commit/6f69363d9)). This adds compatibility for `--incompatible_disable_target_default_provider_fields` - binder: Rationalize [@​ThreadSafe-ty](https://redirect.github.com/ThreadSafe-ty) inside BinderTransport ([#​12130](https://redirect.github.com/grpc/grpc-java/issues/12130)) ([`c206428`](https://redirect.github.com/grpc/grpc-java/commit/c20642874)) - binder: Cancel checkAuthorization() request if still pending upon termination ([#​12167](https://redirect.github.com/grpc/grpc-java/issues/12167)) ([`30d40a6`](https://redirect.github.com/grpc/grpc-java/commit/30d40a617)) ##### Dependencies - compiler: Upgrade Protobuf C++ to 22.5 ([#​11961](https://redirect.github.com/grpc/grpc-java/issues/11961)) ([`46485c8`](https://redirect.github.com/grpc/grpc-java/commit/46485c8b6)). This is used by the pre-built protoc-gen-grpc-java plugin on Maven Central. This should have no visible benefit, but gets us closer to upgrading to Protobuf 27 which added edition 2023 support - release: Migrate artifacts publishing changed from legacy OSSRH to Central Portal ([#​12156](https://redirect.github.com/grpc/grpc-java/issues/12156)) ([`f99b2aa`](https://redirect.github.com/grpc/grpc-java/commit/f99b2aaef)). We aren’t aware of any visible changes to the results on Maven Central ### [`v1.73.0`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.73.0) ##### API Changes xds: Enable least request by default ([#​12062](https://redirect.github.com/grpc/grpc-java/issues/12062)) core: Delete the long-deprecated GRPC_PROXY_EXP env variable ([#​11988](https://redirect.github.com/grpc/grpc-java/issues/11988)) ([`908f9f1`](https://redirect.github.com/grpc/grpc-java/commit/908f9f19c)). This was experimental and has been warning when used since v1.8.0. Use the Java-standard -Dhttps.proxyHost and -Dhttps.proxyPort instead api: Remove deprecated SubchannelPicker.requestConnection() ([`f79ab2f`](https://redirect.github.com/grpc/grpc-java/commit/f79ab2f16)). This API was replaced by LoadBalancer.requestConnection() in v1.22.0 ##### Bug Fixes config: prevents global stats config freeze in ConfiguratorRegistry.getConfigurators() ([#​11991](https://redirect.github.com/grpc/grpc-java/issues/11991)) ([`d4c46a7`](https://redirect.github.com/grpc/grpc-java/commit/d4c46a7f1)) xds: XdsDepManager should ignore updates after shutdown ([`25199e9`](https://redirect.github.com/grpc/grpc-java/commit/25199e9df)). This fixes a source of java.lang.NullPointerException: Cannot invoke "io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()" because "routeSource" is null regression introduced in v1.72.0 ##### Improvements xds: listener type validation ([#​11933](https://redirect.github.com/grpc/grpc-java/issues/11933)) ([`c8d1e6e`](https://redirect.github.com/grpc/grpc-java/commit/c8d1e6e39)) xds: add the missing xds.authority metric defined in [gRFC A78](https://redirect.github.com/grpc/proposal/blob/master/A78-grpc-metrics-wrr-pf-xds.md#xdsclient) ([#​12018](https://redirect.github.com/grpc/grpc-java/issues/12018)) ([`6cd007d`](https://redirect.github.com/grpc/grpc-java/commit/6cd007d0d)) ##### New Features xds: float LRU cache across interceptors ([#​11992](https://redirect.github.com/grpc/grpc-java/issues/11992)) ([`7a08fdb`](https://redirect.github.com/grpc/grpc-java/commit/7a08fdb7f)) xds: propagate audience from cluster resource in gcp auth filter. This completes the gRFC A83, implementation of GCP Authentication Filter. ([#​11972](https://redirect.github.com/grpc/grpc-java/issues/11972)) ([`84c7713`](https://redirect.github.com/grpc/grpc-java/commit/84c7713b2)) opentelemetry: Implement grpc.lb.backend_service optional label ([`9619453`](https://redirect.github.com/grpc/grpc-java/commit/961945379)). This completes the [gRFC A89](https://redirect.github.com/grpc/proposal/blob/master/A89-backend-service-metric-label.md) implementation, which is enabled when requesting the new label ##### Documentation api: Remove mention of "epoch" from Ticker.nanoTime() javadocs ([`84bd014`](https://redirect.github.com/grpc/grpc-java/commit/84bd01454)) ### [`v1.72.0`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.72.0) ##### API Changes - util: Remove deprecated method GracefulSwitchLb.switchTo() ([`f207be3`](https://redirect.github.com/grpc/grpc-java/commit/f207be39a)). It is rarely used outside of gRPC itself. The configuration is passed as lb policy configuration instead - xds: Add support for custom per-target credentials on the transport ([#​11951](https://redirect.github.com/grpc/grpc-java/issues/11951)) ([`1958e42`](https://redirect.github.com/grpc/grpc-java/commit/1958e4237)) - xds: Explicitly set request hash key for the ring hash LB policy ([`892144d`](https://redirect.github.com/grpc/grpc-java/commit/892144dca)) ##### Bug Fixes - core: Apply ManagedChannelImpl's updateBalancingState() immediately ([`ca4819a`](https://redirect.github.com/grpc/grpc-java/commit/ca4819ac6)) - xds: Fix cluster selection races when updating config selector ([`d82613a`](https://redirect.github.com/grpc/grpc-java/commit/d82613a74)) - otel: Fix span names as per the A72 gRFC changes ([#​11974](https://redirect.github.com/grpc/grpc-java/issues/11974)) ([`94f8e93`](https://redirect.github.com/grpc/grpc-java/commit/94f8e9369)) - xds: ClusterResolverLoadBalancer handle update for both resolved addresses and errors via ResolutionResult ([#​11997](https://redirect.github.com/grpc/grpc-java/issues/11997)) ([`8681786`](https://redirect.github.com/grpc/grpc-java/commit/868178651)) ##### Improvements - netty: Avoid allocating an exception on transport shutdown. This reduces allocation rate for connection-heavy workloads/load testing ([`a57c14a`](https://redirect.github.com/grpc/grpc-java/commit/a57c14a51)) - servlet: Set an explicit description for CANCELLED status ([#​11927](https://redirect.github.com/grpc/grpc-java/issues/11927)) ([`fca1d3c`](https://redirect.github.com/grpc/grpc-java/commit/fca1d3cf4)) - xds: [gRFC A74 xDS Config Tears](https://redirect.github.com/grpc/proposal/blob/master/A74-xds-config-tears.md) implementation in the XdsNameResolver ([`e80c197`](https://redirect.github.com/grpc/grpc-java/commit/e80c19745)). While there is more remaining, users may already see reduced latency when resources are replaced. For example, if changing a route from one backend service to another, RPCs may see less latency during the transition - core: Log any exception during channel panic because of exception ([`3961a92`](https://redirect.github.com/grpc/grpc-java/commit/3961a923a)). This prevents the exception from propagating up the stack on an arbitrary thread. Such exceptions are rarely interesting. Instead, the exception that caused the channel panic is the important one, and RPCs will still fail with its details - util: Graceful switch to new LB when leaving CONNECTING ([`2e260a4`](https://redirect.github.com/grpc/grpc-java/commit/2e260a4bb)). Previously when using xDS and the configuration changes the LB policy, the old LB policy is used until the new one is READY. Now the old LB policy is used until the new policy becomes READY, TRANSIENT_FAILURE, or IDLE - core: Use java.time.Time.getNano directly in InstantTimeProvider. Previously reflection was used which would confuse R8 full mode ([#​11977](https://redirect.github.com/grpc/grpc-java/issues/11977)) ([`7507a9e`](https://redirect.github.com/grpc/grpc-java/commit/7507a9ec0)) - core: Avoid cancellation exceptions when notifying watchers that already have their connections cancelled ([#​11934](https://redirect.github.com/grpc/grpc-java/issues/11934)) ([`350f90e`](https://redirect.github.com/grpc/grpc-java/commit/350f90e1a)) - rls: allow maxAge in RLS config to exceed 5 minutes if staleAge is set. Previously, the limit was 5 minutes, which isn't enough for some gRPC clients ([#​11931](https://redirect.github.com/grpc/grpc-java/issues/11931)) ([`c340f4a`](https://redirect.github.com/grpc/grpc-java/commit/c340f4a2f)) - xds: avoid unnecessary dns lookup for CIDR addresses ([#​11932](https://redirect.github.com/grpc/grpc-java/issues/11932)) ([`602aece`](https://redirect.github.com/grpc/grpc-java/commit/602aece08)) - netty: Swap to UniformStreamByteDistributor ([#​11954](https://redirect.github.com/grpc/grpc-java/issues/11954)) ([`2f52a00`](https://redirect.github.com/grpc/grpc-java/commit/2f52a0036)). gRPC will no longer observe the HTTP/2 priorities, which were not used directly by gRPC and deprecated in RFC 9113 - core: Avoid Set.removeAll() when passing a possibly-large List ([#​11994](https://redirect.github.com/grpc/grpc-java/issues/11994)) ([`666136b`](https://redirect.github.com/grpc/grpc-java/commit/666136b4b)) - stub: trailersFromThrowable() metadata should be copied ([#​11979](https://redirect.github.com/grpc/grpc-java/issues/11979)) ([`a6e1c1f`](https://redirect.github.com/grpc/grpc-java/commit/a6e1c1f09)) ##### New Features - xds: xDS-based HTTP CONNECT configuration ([#​11861](https://redirect.github.com/grpc/grpc-java/issues/11861)) ([`1219706`](https://redirect.github.com/grpc/grpc-java/commit/12197065f)) - netty: Per-rpc authority verification against peer cert subject names. Overriding transport authority at rpc time is only allowed when using TlsChannelCredentials. The per-rpc authority verification feature is guarded by the environment variable GRPC_ENABLE_PER_RPC_AUTHORITY_CHECK in this release. When this is false or not set, the rpc will not fail when the authority verification fails but a warning will be logged. In a subsequent release the usage of this environment variable will be removed and RPCs will start failing if the authority doesn't match the peer certificate names. The environment variable is temporary; if you are depending on the existing insecure behavior, please file an issue ([#​11724](https://redirect.github.com/grpc/grpc-java/issues/11724)) ([`cdab410`](https://redirect.github.com/grpc/grpc-java/commit/cdab410b8)) ##### Thanks to [@​panchenko](https://redirect.github.com/panchenko) [@​emmanuel-ferdman](https://redirect.github.com/emmanuel-ferdman) [@​JoeCqupt](https://redirect.github.com/JoeCqupt) ### [`v1.71.0`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.71.0) ##### API Changes - xds: Enable Xds Client Fallback by default. This allows having a backup xDS server as described in gRFC [A71-xds-fallback.md](https://redirect.github.com/grpc/proposal/blob/master/A71-xds-fallback.md) ([#​11817](https://redirect.github.com/grpc/grpc-java/issues/11817)) ([`176f3ee`](https://redirect.github.com/grpc/grpc-java/commit/176f3eed1)) - protobuf: Experimental API marshallerWithRecursionLimit in `ProtoUtils` is now stabilized ([#​11884](https://redirect.github.com/grpc/grpc-java/issues/11884)) ([`90b1c4f`](https://redirect.github.com/grpc/grpc-java/commit/90b1c4fe9)) ##### Bug Fixes - xds: Cluster weights should be uint32 ([`199a7ea`](https://redirect.github.com/grpc/grpc-java/commit/199a7ea3e)). They were previously processed as int32, although the sum of weights was checked to be positive. So this would have caused a very large weight to never be selected and to reduce the chances of immediately-following clusters to be selected. There have been no reports of control planes using such large weights - xds: Fix an unlikely infinite loop triggered by route update ([`199a7ea`](https://redirect.github.com/grpc/grpc-java/commit/199a7ea3e)). Triggering required the old cluster to no longer be used, an RPC processing when the update arrived, and for a RPC to not match any route in the new config. There have been no reports of this actually happening - core: Release data frame if it is received before the headers ([`dc316f7`](https://redirect.github.com/grpc/grpc-java/commit/dc316f7fd)) ##### Improvements - Replace jsr305's `CheckReturnValue` with Error Prone's ([#​11811](https://redirect.github.com/grpc/grpc-java/issues/11811)) ([`7b5d069`](https://redirect.github.com/grpc/grpc-java/commit/7b5d0692c)) - core: optimize number of buffer allocations for message sizes larger than 1 MB ([#​11879](https://redirect.github.com/grpc/grpc-java/issues/11879)) ([`5a7f350`](https://redirect.github.com/grpc/grpc-java/commit/5a7f35053)) - core: Update the retry backoff range from \[0, 1] to \[0.8, 1.2] as per the A6 redefinition ([#​11858](https://redirect.github.com/grpc/grpc-java/issues/11858)) ([`44e92e2`](https://redirect.github.com/grpc/grpc-java/commit/44e92e2c2)) - core: include last pick status in status message when wait-for-ready RPC’s deadline expires ([#​11851](https://redirect.github.com/grpc/grpc-java/issues/11851)) ([`7585b16`](https://redirect.github.com/grpc/grpc-java/commit/7585b1607)). This makes it much easier to debug connectivity issues when using wait-for-ready RPCs - xds: Include max concurrent request limit in the error status for concurrent connections limit exceeded ([#​11845](https://redirect.github.com/grpc/grpc-java/issues/11845)) ([`0f5503e`](https://redirect.github.com/grpc/grpc-java/commit/0f5503ebb)) - netty, servlet: Remove 4096 min write buffer size because `MessageFramer`.flush() is being called between every message, so messages are never combined and the larger allocation just wastes memory. ([`4a10a38`](https://redirect.github.com/grpc/grpc-java/commit/4a10a3816), [`7153ff8`](https://redirect.github.com/grpc/grpc-java/commit/7153ff852)) - core: When `ClientStreamObserver` closes the response observer log the error message if this operation fails ([#​11880](https://redirect.github.com/grpc/grpc-java/issues/11880)) ([`302342c`](https://redirect.github.com/grpc/grpc-java/commit/302342cfc)) - bom: use gradle java-platform to build pom instead of custom xml generation ([#​11875](https://redirect.github.com/grpc/grpc-java/issues/11875)) ([`3142928`](https://redirect.github.com/grpc/grpc-java/commit/3142928fa)) - xds: Reuse filter interceptors on client-side across RPCs ([`c506190`](https://redirect.github.com/grpc/grpc-java/commit/c506190b0), [`b3db8c2`](https://redirect.github.com/grpc/grpc-java/commit/b3db8c248)). This was an internal refactor that should have no user-visible change - alts: Enhance `AltsContextUtil` to allow getting the `AltsContext` on client-side ([`b1bc0a9`](https://redirect.github.com/grpc/grpc-java/commit/b1bc0a9d2)) - xds: Envoy proto sync to 2024-11-11 ([#​11816](https://redirect.github.com/grpc/grpc-java/issues/11816)) ([`b44ebce`](https://redirect.github.com/grpc/grpc-java/commit/b44ebce45)) ##### Documentation - examples: Update `HelloWorldServer` to use Executor ([#​11850](https://redirect.github.com/grpc/grpc-java/issues/11850)) ([`16edf7a`](https://redirect.github.com/grpc/grpc-java/commit/16edf7ac4)) - examples: Add README for all examples lacking it ([#​11676](https://redirect.github.com/grpc/grpc-java/issues/11676)) ([`9e86299`](https://redirect.github.com/grpc/grpc-java/commit/9e8629914)) ##### Dependencies - Version upgrades ([#​11874](https://redirect.github.com/grpc/grpc-java/issues/11874)) ([`fc8571a`](https://redirect.github.com/grpc/grpc-java/commit/fc8571a0e)) - Upgrade netty-tcnative to 2.0.70 ([`122b683`](https://redirect.github.com/grpc/grpc-java/commit/122b68371)) ##### Thanks to [@​benjamin](https://redirect.github.com/benjamin) [@​panchenko](https://redirect.github.com/panchenko) [@​harshagoo94](https://redirect.github.com/harshagoo94) [@​NaveenPrasannaV](https://redirect.github.com/NaveenPrasannaV)
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 16fac46..b6d1580 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,9 +34,9 @@ dependencies { implementation 'com.google.guava:guava:33.5.0-jre' implementation 'info.picocli:picocli:4.7.7' implementation 'com.google.guava:guava:33.5.0-jre' - implementation 'io.grpc:grpc-protobuf:1.70.0' - implementation 'io.grpc:grpc-stub:1.70.0' - implementation 'io.grpc:grpc-services:1.70.0' + implementation 'io.grpc:grpc-protobuf:1.75.0' + implementation 'io.grpc:grpc-stub:1.75.0' + implementation 'io.grpc:grpc-services:1.75.0' implementation 'io.cloudquery:plugin-pb-java:0.0.35' implementation 'org.apache.arrow:arrow-memory-core:18.3.0' implementation 'org.apache.arrow:arrow-vector:18.3.0' @@ -48,8 +48,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.24.3' implementation 'org.apache.logging.log4j:log4j-core:2.24.3' - testImplementation 'io.grpc:grpc-testing:1.70.0' - testImplementation 'io.grpc:grpc-inprocess:1.70.0' + testImplementation 'io.grpc:grpc-testing:1.75.0' + testImplementation 'io.grpc:grpc-inprocess:1.75.0' testImplementation platform('org.junit:junit-bom:5.11.4') testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.4' From 05df6b2e6984b48d1e2997b3438903d291a9601c Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 12:41:58 +0100 Subject: [PATCH 283/376] fix(deps): Update jackson monorepo (#366) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-annotations](https://redirect.github.com/FasterXML/jackson) ([source](https://redirect.github.com/FasterXML/jackson-annotations)) | dependencies | minor | `2.18.2` -> `2.20` | | [com.fasterxml.jackson.core:jackson-core](https://redirect.github.com/FasterXML/jackson-core) | dependencies | minor | `2.18.2` -> `2.20.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index b6d1580..b72b483 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -42,8 +42,8 @@ dependencies { implementation 'org.apache.arrow:arrow-vector:18.3.0' implementation 'commons-io:commons-io:2.20.0' - implementation "com.fasterxml.jackson.core:jackson-core:2.18.2" - implementation "com.fasterxml.jackson.core:jackson-annotations:2.18.2" + implementation "com.fasterxml.jackson.core:jackson-core:2.20.0" + implementation "com.fasterxml.jackson.core:jackson-annotations:2.20" implementation 'org.apache.logging.log4j:log4j-api:2.24.3' implementation 'org.apache.logging.log4j:log4j-core:2.24.3' From a97895901f8dac1cbd0155e2b85a9c3f87e977fd Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 12:45:45 +0100 Subject: [PATCH 284/376] fix(deps): Update log4j2 monorepo to v2.25.2 (#367) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.logging.log4j:log4j-core](https://logging.apache.org/log4j/2.x/) ([source](https://redirect.github.com/apache/logging-log4j2)) | dependencies | minor | `2.24.3` -> `2.25.2` | | [org.apache.logging.log4j:log4j-api](https://logging.apache.org/log4j/2.x/) ([source](https://redirect.github.com/apache/logging-log4j2)) | dependencies | minor | `2.24.3` -> `2.25.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index b72b483..1d87946 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -45,8 +45,8 @@ dependencies { implementation "com.fasterxml.jackson.core:jackson-core:2.20.0" implementation "com.fasterxml.jackson.core:jackson-annotations:2.20" - implementation 'org.apache.logging.log4j:log4j-api:2.24.3' - implementation 'org.apache.logging.log4j:log4j-core:2.24.3' + implementation 'org.apache.logging.log4j:log4j-api:2.25.2' + implementation 'org.apache.logging.log4j:log4j-core:2.25.2' testImplementation 'io.grpc:grpc-testing:1.75.0' testImplementation 'io.grpc:grpc-inprocess:1.75.0' From 94dd81c2d396cdaa425cb1b020415b117fcc1520 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 12:49:35 +0100 Subject: [PATCH 285/376] fix(deps): Update plugin io.freefair.lombok to v8.14.2 (#369) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.freefair.lombok | plugin | minor | `8.11` -> `8.14.2` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 1d87946..6404b86 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java-library' - id "io.freefair.lombok" version "8.11" + id "io.freefair.lombok" version "8.14.2" id "maven-publish" id "com.diffplug.spotless" version "6.25.0" } From fbe0ce7b8969add19d555dd17368349729b35047 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 12:53:22 +0100 Subject: [PATCH 286/376] fix(deps): Update plugin org.gradle.toolchains.foojay-resolver-convention to v0.10.0 (#370) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | org.gradle.toolchains.foojay-resolver-convention | plugin | minor | `0.9.0` -> `0.10.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- settings.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle b/settings.gradle index 758b930..db895b3 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,7 +8,7 @@ plugins { // Apply the foojay-resolver plugin to allow automatic download of JDKs - id 'org.gradle.toolchains.foojay-resolver-convention' version '0.9.0' + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.10.0' } rootProject.name = 'plugin-sdk-java' From 1b03c1a4bc5bdaac939fc76d34ec1cb26dd3f49e Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 15:04:38 +0100 Subject: [PATCH 287/376] chore(main): Release v0.0.44 (#354) :robot: I have created a release *beep* *boop* --- ## [0.0.44](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.43...v0.0.44) (2025-10-01) ### Bug Fixes * **deps:** Update dependency com.google.guava:guava to v33.5.0-jre ([#358](https://github.com/cloudquery/plugin-sdk-java/issues/358)) ([e60eb99](https://github.com/cloudquery/plugin-sdk-java/commit/e60eb99b2ea35bbd45ed88d439e1db1e27ba7752)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.35 ([#353](https://github.com/cloudquery/plugin-sdk-java/issues/353)) ([fbb196c](https://github.com/cloudquery/plugin-sdk-java/commit/fbb196cfb7268e3209cfa99997055e77deb75c8c)) * **deps:** Update dependency org.assertj:assertj-core to v3.27.6 ([#357](https://github.com/cloudquery/plugin-sdk-java/issues/357)) ([af74a56](https://github.com/cloudquery/plugin-sdk-java/commit/af74a56160220e58d901db67961b3bd3f95d43d2)) * **deps:** Update grpc-java monorepo to v1.75.0 ([#365](https://github.com/cloudquery/plugin-sdk-java/issues/365)) ([cd8f5fa](https://github.com/cloudquery/plugin-sdk-java/commit/cd8f5fa719f99abf70d3e96ec54fa675792974d1)) * **deps:** Update jackson monorepo ([#366](https://github.com/cloudquery/plugin-sdk-java/issues/366)) ([05df6b2](https://github.com/cloudquery/plugin-sdk-java/commit/05df6b2e6984b48d1e2997b3438903d291a9601c)) * **deps:** Update log4j2 monorepo to v2.25.2 ([#367](https://github.com/cloudquery/plugin-sdk-java/issues/367)) ([a978959](https://github.com/cloudquery/plugin-sdk-java/commit/a97895901f8dac1cbd0155e2b85a9c3f87e977fd)) * **deps:** Update plugin io.freefair.lombok to v8.14.2 ([#369](https://github.com/cloudquery/plugin-sdk-java/issues/369)) ([94dd81c](https://github.com/cloudquery/plugin-sdk-java/commit/94dd81c2d396cdaa425cb1b020415b117fcc1520)) * **deps:** Update plugin org.gradle.toolchains.foojay-resolver-convention to v0.10.0 ([#370](https://github.com/cloudquery/plugin-sdk-java/issues/370)) ([fbe0ce7](https://github.com/cloudquery/plugin-sdk-java/commit/fbe0ce7b8969add19d555dd17368349729b35047)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 14 ++++++++++++++ lib/build.gradle | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d7a636b..23eee9e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.43" + ".": "0.0.44" } diff --git a/CHANGELOG.md b/CHANGELOG.md index d6c97d2..ebf7349 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.0.44](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.43...v0.0.44) (2025-10-01) + + +### Bug Fixes + +* **deps:** Update dependency com.google.guava:guava to v33.5.0-jre ([#358](https://github.com/cloudquery/plugin-sdk-java/issues/358)) ([e60eb99](https://github.com/cloudquery/plugin-sdk-java/commit/e60eb99b2ea35bbd45ed88d439e1db1e27ba7752)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.35 ([#353](https://github.com/cloudquery/plugin-sdk-java/issues/353)) ([fbb196c](https://github.com/cloudquery/plugin-sdk-java/commit/fbb196cfb7268e3209cfa99997055e77deb75c8c)) +* **deps:** Update dependency org.assertj:assertj-core to v3.27.6 ([#357](https://github.com/cloudquery/plugin-sdk-java/issues/357)) ([af74a56](https://github.com/cloudquery/plugin-sdk-java/commit/af74a56160220e58d901db67961b3bd3f95d43d2)) +* **deps:** Update grpc-java monorepo to v1.75.0 ([#365](https://github.com/cloudquery/plugin-sdk-java/issues/365)) ([cd8f5fa](https://github.com/cloudquery/plugin-sdk-java/commit/cd8f5fa719f99abf70d3e96ec54fa675792974d1)) +* **deps:** Update jackson monorepo ([#366](https://github.com/cloudquery/plugin-sdk-java/issues/366)) ([05df6b2](https://github.com/cloudquery/plugin-sdk-java/commit/05df6b2e6984b48d1e2997b3438903d291a9601c)) +* **deps:** Update log4j2 monorepo to v2.25.2 ([#367](https://github.com/cloudquery/plugin-sdk-java/issues/367)) ([a978959](https://github.com/cloudquery/plugin-sdk-java/commit/a97895901f8dac1cbd0155e2b85a9c3f87e977fd)) +* **deps:** Update plugin io.freefair.lombok to v8.14.2 ([#369](https://github.com/cloudquery/plugin-sdk-java/issues/369)) ([94dd81c](https://github.com/cloudquery/plugin-sdk-java/commit/94dd81c2d396cdaa425cb1b020415b117fcc1520)) +* **deps:** Update plugin org.gradle.toolchains.foojay-resolver-convention to v0.10.0 ([#370](https://github.com/cloudquery/plugin-sdk-java/issues/370)) ([fbe0ce7](https://github.com/cloudquery/plugin-sdk-java/commit/fbe0ce7b8969add19d555dd17368349729b35047)) + ## [0.0.43](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.42...v0.0.43) (2025-09-01) diff --git a/lib/build.gradle b/lib/build.gradle index 6404b86..684b3a0 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -11,7 +11,7 @@ ext { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.43' +version = '0.0.44' // x-release-please-end repositories { From 34272b8af409b66b1b9aeed9329e4865c408c173 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Wed, 1 Oct 2025 15:06:40 +0100 Subject: [PATCH 288/376] chore: Update JUnit package matching pattern --- .github/renovate.json5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index f24d8d3..c0dec84 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -2,7 +2,7 @@ extends: ["github>cloudquery/.github//.github/renovate-java-default.json5"], packageRules: [ { - matchPackageNames: ["^org.junit"], + matchPackageNames: ["/junit/"], groupName: "junit", }, ], From 112519ac1a39e9fc2d64bd7a7fdd692ea1b777cf Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 15:11:13 +0100 Subject: [PATCH 289/376] chore(deps): Update actions/checkout action to v5 (#371) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://redirect.github.com/actions/checkout) | action | major | `v4` -> `v5` | --- ### Release Notes
actions/checkout (actions/checkout) ### [`v5`](https://redirect.github.com/actions/checkout/compare/v4...v5) [Compare Source](https://redirect.github.com/actions/checkout/compare/v4...v5)
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4248786..5b5c886 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - uses: actions/setup-java@v4 with: distribution: "temurin" diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 781e68e..da82b35 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - uses: actions/setup-java@v4 with: distribution: "temurin" From a7b83044b21a30a96bf29dcf4ad66ed21825795f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 15:13:05 +0100 Subject: [PATCH 290/376] chore(deps): Update amannn/action-semantic-pull-request action to v6 (#373) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [amannn/action-semantic-pull-request](https://redirect.github.com/amannn/action-semantic-pull-request) | action | major | `v5` -> `v6` | --- ### Release Notes
amannn/action-semantic-pull-request (amannn/action-semantic-pull-request) ### [`v6`](https://redirect.github.com/amannn/action-semantic-pull-request/compare/v5...v6) [Compare Source](https://redirect.github.com/amannn/action-semantic-pull-request/compare/v5...v6)
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/pr_title.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_title.yml b/.github/workflows/pr_title.yml index 1844a58..fb72636 100644 --- a/.github/workflows/pr_title.yml +++ b/.github/workflows/pr_title.yml @@ -17,7 +17,7 @@ jobs: steps: # Please look up the latest version from # https://github.com/amannn/action-semantic-pull-request/releases - - uses: amannn/action-semantic-pull-request@v5 + - uses: amannn/action-semantic-pull-request@v6 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: From ff6972d5691e173845c24c74a45a49cedb75daf5 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 15:17:43 +0100 Subject: [PATCH 291/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v4 (#375) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://redirect.github.com/jqno/equalsverifier)) | dependencies | major | `3.19.4` -> `4.1.1` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v4.1.1`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#411---2025-09-22) ##### Fixed - Classes that extend `Enum` throws `ModuleException`. ([Issue 1122](https://redirect.github.com/jqno/equalsverifier/issues/1122)) ### [`v4.1`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#411---2025-09-22) ##### Fixed - Classes that extend `Enum` throws `ModuleException`. ([Issue 1122](https://redirect.github.com/jqno/equalsverifier/issues/1122)) ### [`v4.0.9`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#409---2025-08-22) ##### Fixed - Regression introduced in version 4.0.8: StackOverflowError when testing a non-abstract sealed type. ([Issue 1111](https://redirect.github.com/jqno/equalsverifier/issues/1111#issuecomment-3213790771)) ### [`v4.0.8`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#408---2025-08-22) ##### Fixed - `NullPointerException` with abstract sealed types whose subtypes add state and need `Warning.NULL_FIELDS` suppressed. ([Issue 1111](https://redirect.github.com/jqno/equalsverifier/issues/1111)) ### [`v4.0.7`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#407---2025-07-30) ##### Fixed - `StringIndexOutOfBoundsException` when using `forPackage` on Windows. ([Issue 1106](https://redirect.github.com/jqno/equalsverifier/issues/1106)) ### [`v4.0.6`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#406---2025-07-18) ##### Changed - EqualsVerifier will issue an error when an entity has lazy fields that should be accessed by their getter, and the getter is final, because in that case it can't perform the check. ([Issue 1102](https://redirect.github.com/jqno/equalsverifier/issues/1102)) ### [`v4.0.5`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#405---2025-07-07) ##### Fixed - When verifying a relaxed equals relation, `andUnequalExamples` thinks two unequal examples are equal. ([Issue 1098](https://redirect.github.com/jqno/equalsverifier/issues/1098)) ### [`v4.0.4`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#404---2025-07-03) ##### Fixed - Can now test a class with a field whose type is an array of a single value enum. ([Issue 1093](https://redirect.github.com/jqno/equalsverifier/issues/1093)) ### [`v4.0.3`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#403---2025-06-23) ##### Changed - `forPackage` can now also scan jar files, which is handy for certain kinds of integration tests that run against jar files instead of directories with `.class` files. ([Issue 1078](https://redirect.github.com/jqno/equalsverifier/issues/1078)) ### [`v4.0.2`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#402---2025-06-12) ##### Added - Support for Kotlin delegates. ([Issue 1083](https://redirect.github.com/jqno/equalsverifier/issues/1083)) ##### Changed - When a Mockito error occurs, the error message now says which mocked method was attempted to call. ([Issue 1082](https://redirect.github.com/jqno/equalsverifier/issues/1082)) ### [`v4.0.1`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#401---2025-06-10) ##### Fixed - A class with field of type `EnumMap` or `EnumSet` produces `MockitoException` when Mockito is present. ([Issue 1080](https://redirect.github.com/jqno/equalsverifier/issues/1080)) ### [`v4.0`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#409---2025-08-22) ##### Fixed - Regression introduced in version 4.0.8: StackOverflowError when testing a non-abstract sealed type. ([Issue 1111](https://redirect.github.com/jqno/equalsverifier/issues/1111#issuecomment-3213790771))
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 684b3a0..040c82b 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.4' testImplementation 'org.mockito:mockito-core:5.15.2' testImplementation 'org.mockito:mockito-junit-jupiter:5.15.2' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.19.4' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.1.1' testImplementation 'org.assertj:assertj-core:3.27.6' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' From d38c03e16e92f26fa884b0058e26fa5d483a39e8 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 15:22:10 +0100 Subject: [PATCH 292/376] fix(deps): Update plugin com.diffplug.spotless to v7 (#376) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | com.diffplug.spotless | plugin | major | `6.25.0` -> `7.2.1` | `8.0.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 040c82b..e24e2f9 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -2,7 +2,7 @@ plugins { id 'java-library' id "io.freefair.lombok" version "8.14.2" id "maven-publish" - id "com.diffplug.spotless" version "6.25.0" + id "com.diffplug.spotless" version "7.2.1" } ext { From 0c0c48cab9196fd21b5f97925fc87e6ab4d5a75a Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 15:26:02 +0100 Subject: [PATCH 293/376] fix(deps): Update plugin org.gradle.toolchains.foojay-resolver-convention to v1 (#377) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | org.gradle.toolchains.foojay-resolver-convention | plugin | major | `0.10.0` -> `1.0.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- settings.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle b/settings.gradle index db895b3..cd361fa 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,7 +8,7 @@ plugins { // Apply the foojay-resolver plugin to allow automatic download of JDKs - id 'org.gradle.toolchains.foojay-resolver-convention' version '0.10.0' + id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0' } rootProject.name = 'plugin-sdk-java' From 443f0b48649910ddeb5ab4b0545f1095a574c2fc Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 15:32:52 +0100 Subject: [PATCH 294/376] chore(deps): Update actions/setup-java action to v5 (#372) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/setup-java](https://redirect.github.com/actions/setup-java) | action | major | `v4` -> `v5` | --- ### Release Notes
actions/setup-java (actions/setup-java) ### [`v5`](https://redirect.github.com/actions/setup-java/compare/v4...v5) [Compare Source](https://redirect.github.com/actions/setup-java/compare/v4...v5)
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5b5c886..02d1091 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@v5 - - uses: actions/setup-java@v4 + - uses: actions/setup-java@v5 with: distribution: "temurin" java-version: "18" diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index da82b35..9813335 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -13,7 +13,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@v5 - - uses: actions/setup-java@v4 + - uses: actions/setup-java@v5 with: distribution: "temurin" java-version: "18" From 14791e27b2cca4d0bae855d2beb395ce06f4b304 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 15:36:53 +0100 Subject: [PATCH 295/376] fix(deps): Update dependency org.mockito:mockito-core to v5.20.0 (#368) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.mockito:mockito-core](https://redirect.github.com/mockito/mockito) | dependencies | minor | `5.15.2` -> `5.20.0` | --- ### Release Notes
mockito/mockito (org.mockito:mockito-core) ### [`v5.20.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.20.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.20.0 - 2025-09-20 - [11 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.19.0...v5.20.0) by Adrian-Kim, Giulio Longfils, Rafael Winterhalter, dependabot\[bot] - Bump org.assertj:assertj-core from 3.27.4 to 3.27.5 [(#​3730)](https://redirect.github.com/mockito/mockito/pull/3730) - Introducing the Ability to Mock Construction of Generic Types ([#​2401](https://redirect.github.com/mockito/mockito/issues/2401)) [(#​3729)](https://redirect.github.com/mockito/mockito/pull/3729) - Bump com.gradle.develocity from 4.1.1 to 4.2 [(#​3726)](https://redirect.github.com/mockito/mockito/pull/3726) - Bump graalvm/setup-graalvm from 1.3.6 to 1.3.7 [(#​3725)](https://redirect.github.com/mockito/mockito/pull/3725) - Bump org.eclipse.platform:org.eclipse.osgi from 3.23.100 to 3.23.200 [(#​3720)](https://redirect.github.com/mockito/mockito/pull/3720) - Bump graalvm/setup-graalvm from 1.3.5 to 1.3.6 [(#​3719)](https://redirect.github.com/mockito/mockito/pull/3719) - Bump actions/setup-java from 4 to 5 [(#​3715)](https://redirect.github.com/mockito/mockito/pull/3715) - Bump com.gradle.develocity from 4.1 to 4.1.1 [(#​3713)](https://redirect.github.com/mockito/mockito/pull/3713) - Bump bytebuddy from 1.17.6 to 1.17.7 [(#​3712)](https://redirect.github.com/mockito/mockito/pull/3712) - test: Use Assume.assumeThat for SequencedCollection tests [(#​3711)](https://redirect.github.com/mockito/mockito/pull/3711) - Fix [#​3709](https://redirect.github.com/mockito/mockito/issues/3709) [(#​3710)](https://redirect.github.com/mockito/mockito/pull/3710) - feat: Add support for JDK21 Sequenced Collections. [(#​3708)](https://redirect.github.com/mockito/mockito/pull/3708) - Introducing the Ability to Mock Construction of Generic Types [(#​2401)](https://redirect.github.com/mockito/mockito/issues/2401) ### [`v5.19.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.19.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.19.0 - 2025-08-15 - [37 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.18.0...v5.19.0) by Adrian-Kim, Tim van der Lippe, Tran Ngoc Nhan, dependabot\[bot], juyeop - feat: Add support for JDK21 Sequenced Collections. [(#​3708)](https://redirect.github.com/mockito/mockito/pull/3708) - Bump actions/checkout from 4 to 5 [(#​3707)](https://redirect.github.com/mockito/mockito/pull/3707) - build: Allow overriding 'Created-By' for reproducible builds [(#​3704)](https://redirect.github.com/mockito/mockito/pull/3704) - Bump org.assertj:assertj-core from 3.27.3 to 3.27.4 [(#​3703)](https://redirect.github.com/mockito/mockito/pull/3703) - Bump androidx.test:runner from 1.6.2 to 1.7.0 [(#​3697)](https://redirect.github.com/mockito/mockito/pull/3697) - Bump org.junit.platform:junit-platform-launcher from 1.13.3 to 1.13.4 [(#​3694)](https://redirect.github.com/mockito/mockito/pull/3694) - Bump com.diffplug.spotless:spotless-plugin-gradle from 7.1.0 to 7.2.1 [(#​3693)](https://redirect.github.com/mockito/mockito/pull/3693) - Bump junit-jupiter from 5.13.3 to 5.13.4 [(#​3691)](https://redirect.github.com/mockito/mockito/pull/3691) - Bump com.gradle.develocity from 4.0.2 to 4.1 [(#​3689)](https://redirect.github.com/mockito/mockito/pull/3689) - Bump com.google.googlejavaformat:google-java-format from 1.27.0 to 1.28.0 [(#​3688)](https://redirect.github.com/mockito/mockito/pull/3688) - Bump com.google.googlejavaformat:google-java-format from 1.25.2 to 1.27.0 [(#​3686)](https://redirect.github.com/mockito/mockito/pull/3686) - Bump com.diffplug.spotless:spotless-plugin-gradle from 7.0.4 to 7.1.0 [(#​3685)](https://redirect.github.com/mockito/mockito/pull/3685) - Bump junit-jupiter from 5.13.2 to 5.13.3 [(#​3684)](https://redirect.github.com/mockito/mockito/pull/3684) - Bump org.shipkit:shipkit-auto-version from 2.1.0 to 2.1.2 [(#​3683)](https://redirect.github.com/mockito/mockito/pull/3683) - Bump com.diffplug.spotless:spotless-plugin-gradle from 7.0.2 to 7.0.4 [(#​3682)](https://redirect.github.com/mockito/mockito/pull/3682) - Only run release after both Java and Android tests have finished [(#​3681)](https://redirect.github.com/mockito/mockito/pull/3681) - Bump org.junit.platform:junit-platform-launcher from 1.12.2 to 1.13.3 [(#​3680)](https://redirect.github.com/mockito/mockito/pull/3680) - Bump org.codehaus.groovy:groovy from 3.0.24 to 3.0.25 [(#​3679)](https://redirect.github.com/mockito/mockito/pull/3679) - Bump org.eclipse.platform:org.eclipse.osgi from 3.23.0 to 3.23.100 [(#​3678)](https://redirect.github.com/mockito/mockito/pull/3678) - Can no longer publish snapshot releases [(#​3677)](https://redirect.github.com/mockito/mockito/issues/3677) - Update Gradle to 8.14.2 [(#​3676)](https://redirect.github.com/mockito/mockito/pull/3676) - Bump errorprone from 2.23.0 to 2.39.0 [(#​3674)](https://redirect.github.com/mockito/mockito/pull/3674) - Correct Junit docs link [(#​3672)](https://redirect.github.com/mockito/mockito/pull/3672) - Bump net.ltgt.gradle:gradle-errorprone-plugin from 4.1.0 to 4.3.0 [(#​3670)](https://redirect.github.com/mockito/mockito/pull/3670) - Bump junit-jupiter from 5.13.1 to 5.13.2 [(#​3669)](https://redirect.github.com/mockito/mockito/pull/3669) - Bump bytebuddy from 1.17.5 to 1.17.6 [(#​3668)](https://redirect.github.com/mockito/mockito/pull/3668) - Bump junit-jupiter from 5.12.2 to 5.13.1 [(#​3666)](https://redirect.github.com/mockito/mockito/pull/3666) - Bump org.jetbrains.kotlin:kotlin-stdlib from 2.0.21 to 2.2.0 [(#​3665)](https://redirect.github.com/mockito/mockito/pull/3665) - Bump org.gradle.toolchains.foojay-resolver-convention from 0.9.0 to 1.0.0 [(#​3661)](https://redirect.github.com/mockito/mockito/pull/3661) - Bump org.junit.platform:junit-platform-launcher from 1.11.4 to 1.12.2 [(#​3660)](https://redirect.github.com/mockito/mockito/pull/3660) - Add JDK21 sequenced collections for ReturnsEmptyValues [(#​3659)](https://redirect.github.com/mockito/mockito/issues/3659) - Bump com.gradle.develocity from 3.19.1 to 4.0.2 [(#​3658)](https://redirect.github.com/mockito/mockito/pull/3658) - Bump ru.vyarus:gradle-animalsniffer-plugin from 1.7.2 to 2.0.1 [(#​3657)](https://redirect.github.com/mockito/mockito/pull/3657) - Bump org.eclipse.platform:org.eclipse.osgi from 3.22.0 to 3.23.0 [(#​3656)](https://redirect.github.com/mockito/mockito/pull/3656) - Bump org.codehaus.groovy:groovy from 3.0.23 to 3.0.24 [(#​3655)](https://redirect.github.com/mockito/mockito/pull/3655) - Bump junit-jupiter from 5.11.4 to 5.12.2 [(#​3653)](https://redirect.github.com/mockito/mockito/pull/3653) - Reproducible Build: need to inject JDK distribution details to rebuild [(#​3563)](https://redirect.github.com/mockito/mockito/issues/3563) ### [`v5.18.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.18.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.18.0 - 2025-05-20 - [5 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.17.0...v5.18.0) by Eugene Platonov, Patrick Doyle, Tim van der Lippe, dependabot\[bot] - Make vararg checks Scala friendly (for mockito-scala) [(#​3651)](https://redirect.github.com/mockito/mockito/pull/3651) - For UnfinishedStubbingException, suggest the possibility of another thread [(#​3636)](https://redirect.github.com/mockito/mockito/pull/3636) - UnfinishedStubbingException ought to suggest the possibility of another thread [(#​3635)](https://redirect.github.com/mockito/mockito/issues/3635) ### [`v5.17.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.17.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.17.0 - 2025-04-04 - [7 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.16.1...v5.17.0) by Adrian Roos, Andre Kurait, Jan Ouwens, Rafael Winterhalter, Taeik Lim, Thach Le, Tim van der Lippe - Fixes [#​3631](https://redirect.github.com/mockito/mockito/issues/3631): Fix broken banner image link [(#​3632)](https://redirect.github.com/mockito/mockito/pull/3632) - Banner image is broken [(#​3631)](https://redirect.github.com/mockito/mockito/issues/3631) - Update exception message with mockito-inline [(#​3628)](https://redirect.github.com/mockito/mockito/pull/3628) - Clarify structure of commit messages [(#​3626)](https://redirect.github.com/mockito/mockito/pull/3626) - Fixes [#​3622](https://redirect.github.com/mockito/mockito/issues/3622): MockitoExtension fails cleanup when aborted before setup [(#​3623)](https://redirect.github.com/mockito/mockito/pull/3623) - MockitoExtension fails cleanup when aborted before setup [(#​3622)](https://redirect.github.com/mockito/mockito/issues/3622) - Since mockito-inline has been removed, the exception messages with `mockito-inline` should be modified. [(#​3621)](https://redirect.github.com/mockito/mockito/issues/3621) - Fixes [#​3171](https://redirect.github.com/mockito/mockito/issues/3171): Fall back to Throwable Location strategy on Android [(#​3619)](https://redirect.github.com/mockito/mockito/pull/3619) - Fixes [#​3615](https://redirect.github.com/mockito/mockito/issues/3615) : broken links to javadoc.io [(#​3616)](https://redirect.github.com/mockito/mockito/pull/3616) - Broken links to javadoc.io [(#​3615)](https://redirect.github.com/mockito/mockito/issues/3615) - Mocks are not working on particular devices after update Android SDK from 33 to 34 [(#​3171)](https://redirect.github.com/mockito/mockito/issues/3171) ### [`v5.16.1`](https://redirect.github.com/mockito/mockito/releases/tag/v5.16.1) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.16.1 - 2025-03-15 - [3 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.16.0...v5.16.1) by Adrian Roos, JΓ©rΓ΄me Prinet, Rafael Winterhalter - Remove Arrays.asList from critical stubbing path in GenericMetadataSu… [(#​3610)](https://redirect.github.com/mockito/mockito/pull/3610) - Rework of injection strategy in the context of modules [(#​3608)](https://redirect.github.com/mockito/mockito/pull/3608) - Adjust inline mocking snippet to allow task relocatability [(#​3606)](https://redirect.github.com/mockito/mockito/pull/3606) - Inline mocking configuration snippet for Gradle should allow task relocatability [(#​3605)](https://redirect.github.com/mockito/mockito/issues/3605) ### [`v5.16.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.16.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.16.0 - 2025-03-03 - [10 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.15.2...v5.16.0) by Brice Dutheil, Rafael Winterhalter, TDL, dependabot\[bot] - Add support for including module-info in Mockito. [(#​3597)](https://redirect.github.com/mockito/mockito/pull/3597) - Bump com.gradle.develocity from 3.19 to 3.19.1 [(#​3579)](https://redirect.github.com/mockito/mockito/pull/3579) - Bump org.assertj:assertj-core from 3.27.2 to 3.27.3 [(#​3577)](https://redirect.github.com/mockito/mockito/pull/3577) - Bump com.diffplug.spotless:spotless-plugin-gradle from 7.0.1 to 7.0.2 [(#​3574)](https://redirect.github.com/mockito/mockito/pull/3574) - Bump com.diffplug.spotless:spotless-plugin-gradle from 6.25.0 to 7.0.1 [(#​3571)](https://redirect.github.com/mockito/mockito/pull/3571) - Bump org.assertj:assertj-core from 3.27.1 to 3.27.2 [(#​3569)](https://redirect.github.com/mockito/mockito/pull/3569) - Tweaks documentation on mockito agent config for maven [(#​3568)](https://redirect.github.com/mockito/mockito/pull/3568) - Adds `--info` to diagnose closeAndReleaseStagingRepositories issues [(#​3567)](https://redirect.github.com/mockito/mockito/pull/3567) - Refine reflection when calling management factory [(#​3566)](https://redirect.github.com/mockito/mockito/pull/3566) - Avoid warning when dynamic attach is enabled [(#​3551)](https://redirect.github.com/mockito/mockito/pull/3551)
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index e24e2f9..fb164f4 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -53,7 +53,7 @@ dependencies { testImplementation platform('org.junit:junit-bom:5.11.4') testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.4' - testImplementation 'org.mockito:mockito-core:5.15.2' + testImplementation 'org.mockito:mockito-core:5.20.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.15.2' testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.1.1' testImplementation 'org.assertj:assertj-core:3.27.6' From ec34114c214270e0a76cbc0c0b59d3bf12b5966f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 16:21:16 +0100 Subject: [PATCH 296/376] fix(deps): Update dependency gradle to v9 (#374) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://redirect.github.com/gradle/gradle)) | major | `8.14.3` -> `9.1.0` | --- ### Release Notes
gradle/gradle (gradle) ### [`v9.1.0`](https://redirect.github.com/gradle/gradle/releases/tag/v9.1.0): 9.1.0 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v9.0.0...v9.1.0) The Gradle team is excited to announce Gradle 9.1.0. Here are the highlights of this release: - Full Java 25 support - Native task graph visualization - Enhanced console output [Read the Release Notes](https://docs.gradle.org/9.1.0/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Eng Zer Jun](https://redirect.github.com/Juneezee), [EunHyunsu](https://redirect.github.com/ehs208), [GaΓ«tan Muller](https://redirect.github.com/MGaetan89), [HeeChul Yang](https://redirect.github.com/yangchef1), [Jendrik Johannes](https://redirect.github.com/jjohannes), [Johnny Lim](https://redirect.github.com/izeye), [Junho Lee](https://redirect.github.com/junstory), [Kirill Gavrilov](https://redirect.github.com/gavvvr), [Matthew Haughton](https://redirect.github.com/3flex), [Na Minhyeok](https://redirect.github.com/NaMinhyeok), [Philip Wedemann](https://redirect.github.com/hfhbd), [Philipp Schneider](https://redirect.github.com/p-schneider), [Pradyumna C](https://redirect.github.com/pradyumnac26), [r-a-sattarov](https://redirect.github.com/r-a-sattarov), [Ryszard Perkowski](https://redirect.github.com/usultis), [Sebastian Schuberth](https://redirect.github.com/sschuberth), [SebastianHeil](https://redirect.github.com/SebastianHeil), [Staffan Al-Kadhimi](https://redirect.github.com/stafak), [winfriedgerlach](https://redirect.github.com/winfriedgerlach), [Xin Wang](https://redirect.github.com/scaventz). #### Upgrade instructions Switch your build to use Gradle 9.1.0 by updating your wrapper: ./gradlew wrapper --gradle-version=9.1.0 && ./gradlew wrapper See the Gradle [9.x upgrade guide](https://docs.gradle.org/9.1.0/userguide/upgrading_version\_9.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/9.1.0/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle). ### [`v9.0.0`](https://redirect.github.com/gradle/gradle/releases/tag/v9.0.0): 9.0.0 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v8.14.3...v9.0.0) The Gradle team is excited to announce Gradle 9.0.0. Here are the highlights of this release: - Configuration Cache is the recommended execution mode - Gradle requires JVM 17 or higher to run - Build scripts use Kotlin 2.2 and Groovy 4.0 - Improved Kotlin DSL script compilation avoidance [Read the Release Notes](https://docs.gradle.org/9.0.0/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Aaron Matthis](https://redirect.github.com/rapus95), [Adam E](https://redirect.github.com/adam-enko), [Adam S](https://redirect.github.com/aSemy), [BjΓΆrn Kautler](https://redirect.github.com/Vampire), [Daniel Lacasse](https://redirect.github.com/lacasseio), [Eng Zer Jun](https://redirect.github.com/Juneezee), [EunHyunsu](https://redirect.github.com/ehs208), [FlorianMichael](https://redirect.github.com/FlorianMichael), [Francisco Prieto](https://redirect.github.com/priettt), [GaΓ«tan Muller](https://redirect.github.com/MGaetan89), [Jake Wharton](https://redirect.github.com/JakeWharton), [Kengo TODA](https://redirect.github.com/KengoTODA), [Kent Kaseda](https://redirect.github.com/kaseken), [Madalin Valceleanu](https://redirect.github.com/vmadalin), [Marc Philipp](https://redirect.github.com/marcphilipp), [Mark S. Lewis](https://redirect.github.com/bestbeforetoday), [Matthew Haughton](https://redirect.github.com/3flex), [Mycroft Wong](https://redirect.github.com/MycroftWong), [Na Minhyeok](https://redirect.github.com/NaMinhyeok), [Nelson Osacky](https://redirect.github.com/runningcode), [Olivier "Oli" Dagenais](https://redirect.github.com/olivierdagenais), [ploober](https://redirect.github.com/ploober), [Radai Rosenblatt](https://redirect.github.com/radai-rosenblatt), [RΓ³bert Papp](https://redirect.github.com/TWiStErRob), [Sebastian Schuberth](https://redirect.github.com/sschuberth), [Victor Merkulov](https://redirect.github.com/urdak). #### Upgrade instructions Switch your build to use Gradle 9.0.0 by updating your wrapper: ./gradlew wrapper --gradle-version=9.0.0 && ./gradlew wrapper See the Gradle [9.0.0 upgrade guide](https://docs.gradle.org/9.0.0/userguide/upgrading_major_version\_9.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/9.0.0/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.jar | Bin 43764 -> 45457 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 5 +---- gradlew.bat | 3 +-- lib/build.gradle | 8 ++------ 5 files changed, 5 insertions(+), 13 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 1b33c55baabb587c669f562ae36f953de2481846..8bdaf60c75ab801e22807dde59e12a8735a34077 100644 GIT binary patch delta 37256 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 delta 35551 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d4081da..2e11132 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 23d15a9..adff685 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright Β© 2015-2021 the original authors. +# Copyright Β© 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -114,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -172,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -212,7 +210,6 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" diff --git a/gradlew.bat b/gradlew.bat index db3a6ac..c4bdd3a 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,10 @@ goto fail :execute @rem Setup the command line -set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/lib/build.gradle b/lib/build.gradle index fb164f4..c35ffc0 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -5,10 +5,6 @@ plugins { id "com.diffplug.spotless" version "7.2.1" } -ext { - javaMainClass = "io.cloudquery.MainClass" -} - group 'io.cloudquery' // x-release-please-start-version version = '0.0.44' @@ -57,7 +53,7 @@ dependencies { testImplementation 'org.mockito:mockito-junit-jupiter:5.15.2' testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.1.1' testImplementation 'org.assertj:assertj-core:3.27.6' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' runtimeOnly "org.apache.arrow:arrow-memory-netty:18.3.0" } @@ -109,10 +105,10 @@ publishing { } task runMemDBServe(type: JavaExec) { + mainClass.set("io.cloudquery.MainClass") group = "Execution" description = "Start the MemDB plugin server" classpath = sourceSets.main.runtimeClasspath - main = javaMainClass args = ["serve"] jvmArgs = ["--add-opens=java.base/java.nio=ALL-UNNAMED"] } From b099d9a867e36c1bed2eeed75decdc897422e290 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 16:25:01 +0100 Subject: [PATCH 297/376] chore(main): Release v0.0.45 (#378) :robot: I have created a release *beep* *boop* --- ## [0.0.45](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.44...v0.0.45) (2025-10-01) ### Bug Fixes * **deps:** Update dependency gradle to v9 ([#374](https://github.com/cloudquery/plugin-sdk-java/issues/374)) ([ec34114](https://github.com/cloudquery/plugin-sdk-java/commit/ec34114c214270e0a76cbc0c0b59d3bf12b5966f)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v4 ([#375](https://github.com/cloudquery/plugin-sdk-java/issues/375)) ([ff6972d](https://github.com/cloudquery/plugin-sdk-java/commit/ff6972d5691e173845c24c74a45a49cedb75daf5)) * **deps:** Update dependency org.mockito:mockito-core to v5.20.0 ([#368](https://github.com/cloudquery/plugin-sdk-java/issues/368)) ([14791e2](https://github.com/cloudquery/plugin-sdk-java/commit/14791e27b2cca4d0bae855d2beb395ce06f4b304)) * **deps:** Update plugin com.diffplug.spotless to v7 ([#376](https://github.com/cloudquery/plugin-sdk-java/issues/376)) ([d38c03e](https://github.com/cloudquery/plugin-sdk-java/commit/d38c03e16e92f26fa884b0058e26fa5d483a39e8)) * **deps:** Update plugin org.gradle.toolchains.foojay-resolver-convention to v1 ([#377](https://github.com/cloudquery/plugin-sdk-java/issues/377)) ([0c0c48c](https://github.com/cloudquery/plugin-sdk-java/commit/0c0c48cab9196fd21b5f97925fc87e6ab4d5a75a)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 11 +++++++++++ lib/build.gradle | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 23eee9e..baf0f1a 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.44" + ".": "0.0.45" } diff --git a/CHANGELOG.md b/CHANGELOG.md index ebf7349..2a6a0f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [0.0.45](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.44...v0.0.45) (2025-10-01) + + +### Bug Fixes + +* **deps:** Update dependency gradle to v9 ([#374](https://github.com/cloudquery/plugin-sdk-java/issues/374)) ([ec34114](https://github.com/cloudquery/plugin-sdk-java/commit/ec34114c214270e0a76cbc0c0b59d3bf12b5966f)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v4 ([#375](https://github.com/cloudquery/plugin-sdk-java/issues/375)) ([ff6972d](https://github.com/cloudquery/plugin-sdk-java/commit/ff6972d5691e173845c24c74a45a49cedb75daf5)) +* **deps:** Update dependency org.mockito:mockito-core to v5.20.0 ([#368](https://github.com/cloudquery/plugin-sdk-java/issues/368)) ([14791e2](https://github.com/cloudquery/plugin-sdk-java/commit/14791e27b2cca4d0bae855d2beb395ce06f4b304)) +* **deps:** Update plugin com.diffplug.spotless to v7 ([#376](https://github.com/cloudquery/plugin-sdk-java/issues/376)) ([d38c03e](https://github.com/cloudquery/plugin-sdk-java/commit/d38c03e16e92f26fa884b0058e26fa5d483a39e8)) +* **deps:** Update plugin org.gradle.toolchains.foojay-resolver-convention to v1 ([#377](https://github.com/cloudquery/plugin-sdk-java/issues/377)) ([0c0c48c](https://github.com/cloudquery/plugin-sdk-java/commit/0c0c48cab9196fd21b5f97925fc87e6ab4d5a75a)) + ## [0.0.44](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.43...v0.0.44) (2025-10-01) diff --git a/lib/build.gradle b/lib/build.gradle index c35ffc0..90cf2f7 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -7,7 +7,7 @@ plugins { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.44' +version = '0.0.45' // x-release-please-end repositories { From 0c0be66971add6c9143779d8c514ad2c85b27aca Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 16:34:42 +0100 Subject: [PATCH 298/376] fix(deps): Update junit (#379) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | [org.mockito:mockito-junit-jupiter](https://redirect.github.com/mockito/mockito) | dependencies | minor | `5.15.2` -> `5.20.0` | | | [org.junit.jupiter:junit-jupiter-api](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | minor | `5.11.4` -> `5.13.4` | `5.14.0` | | [org.junit.jupiter:junit-jupiter](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | minor | `5.11.4` -> `5.13.4` | `5.14.0` | | [org.junit:junit-bom](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | minor | `5.11.4` -> `5.13.4` | `5.14.0` | --- ### Release Notes
mockito/mockito (org.mockito:mockito-junit-jupiter) ### [`v5.20.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.20.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.20.0 - 2025-09-20 - [11 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.19.0...v5.20.0) by Adrian-Kim, Giulio Longfils, Rafael Winterhalter, dependabot\[bot] - Bump org.assertj:assertj-core from 3.27.4 to 3.27.5 [(#​3730)](https://redirect.github.com/mockito/mockito/pull/3730) - Introducing the Ability to Mock Construction of Generic Types ([#​2401](https://redirect.github.com/mockito/mockito/issues/2401)) [(#​3729)](https://redirect.github.com/mockito/mockito/pull/3729) - Bump com.gradle.develocity from 4.1.1 to 4.2 [(#​3726)](https://redirect.github.com/mockito/mockito/pull/3726) - Bump graalvm/setup-graalvm from 1.3.6 to 1.3.7 [(#​3725)](https://redirect.github.com/mockito/mockito/pull/3725) - Bump org.eclipse.platform:org.eclipse.osgi from 3.23.100 to 3.23.200 [(#​3720)](https://redirect.github.com/mockito/mockito/pull/3720) - Bump graalvm/setup-graalvm from 1.3.5 to 1.3.6 [(#​3719)](https://redirect.github.com/mockito/mockito/pull/3719) - Bump actions/setup-java from 4 to 5 [(#​3715)](https://redirect.github.com/mockito/mockito/pull/3715) - Bump com.gradle.develocity from 4.1 to 4.1.1 [(#​3713)](https://redirect.github.com/mockito/mockito/pull/3713) - Bump bytebuddy from 1.17.6 to 1.17.7 [(#​3712)](https://redirect.github.com/mockito/mockito/pull/3712) - test: Use Assume.assumeThat for SequencedCollection tests [(#​3711)](https://redirect.github.com/mockito/mockito/pull/3711) - Fix [#​3709](https://redirect.github.com/mockito/mockito/issues/3709) [(#​3710)](https://redirect.github.com/mockito/mockito/pull/3710) - feat: Add support for JDK21 Sequenced Collections. [(#​3708)](https://redirect.github.com/mockito/mockito/pull/3708) - Introducing the Ability to Mock Construction of Generic Types [(#​2401)](https://redirect.github.com/mockito/mockito/issues/2401) ### [`v5.19.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.19.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.19.0 - 2025-08-15 - [37 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.18.0...v5.19.0) by Adrian-Kim, Tim van der Lippe, Tran Ngoc Nhan, dependabot\[bot], juyeop - feat: Add support for JDK21 Sequenced Collections. [(#​3708)](https://redirect.github.com/mockito/mockito/pull/3708) - Bump actions/checkout from 4 to 5 [(#​3707)](https://redirect.github.com/mockito/mockito/pull/3707) - build: Allow overriding 'Created-By' for reproducible builds [(#​3704)](https://redirect.github.com/mockito/mockito/pull/3704) - Bump org.assertj:assertj-core from 3.27.3 to 3.27.4 [(#​3703)](https://redirect.github.com/mockito/mockito/pull/3703) - Bump androidx.test:runner from 1.6.2 to 1.7.0 [(#​3697)](https://redirect.github.com/mockito/mockito/pull/3697) - Bump org.junit.platform:junit-platform-launcher from 1.13.3 to 1.13.4 [(#​3694)](https://redirect.github.com/mockito/mockito/pull/3694) - Bump com.diffplug.spotless:spotless-plugin-gradle from 7.1.0 to 7.2.1 [(#​3693)](https://redirect.github.com/mockito/mockito/pull/3693) - Bump junit-jupiter from 5.13.3 to 5.13.4 [(#​3691)](https://redirect.github.com/mockito/mockito/pull/3691) - Bump com.gradle.develocity from 4.0.2 to 4.1 [(#​3689)](https://redirect.github.com/mockito/mockito/pull/3689) - Bump com.google.googlejavaformat:google-java-format from 1.27.0 to 1.28.0 [(#​3688)](https://redirect.github.com/mockito/mockito/pull/3688) - Bump com.google.googlejavaformat:google-java-format from 1.25.2 to 1.27.0 [(#​3686)](https://redirect.github.com/mockito/mockito/pull/3686) - Bump com.diffplug.spotless:spotless-plugin-gradle from 7.0.4 to 7.1.0 [(#​3685)](https://redirect.github.com/mockito/mockito/pull/3685) - Bump junit-jupiter from 5.13.2 to 5.13.3 [(#​3684)](https://redirect.github.com/mockito/mockito/pull/3684) - Bump org.shipkit:shipkit-auto-version from 2.1.0 to 2.1.2 [(#​3683)](https://redirect.github.com/mockito/mockito/pull/3683) - Bump com.diffplug.spotless:spotless-plugin-gradle from 7.0.2 to 7.0.4 [(#​3682)](https://redirect.github.com/mockito/mockito/pull/3682) - Only run release after both Java and Android tests have finished [(#​3681)](https://redirect.github.com/mockito/mockito/pull/3681) - Bump org.junit.platform:junit-platform-launcher from 1.12.2 to 1.13.3 [(#​3680)](https://redirect.github.com/mockito/mockito/pull/3680) - Bump org.codehaus.groovy:groovy from 3.0.24 to 3.0.25 [(#​3679)](https://redirect.github.com/mockito/mockito/pull/3679) - Bump org.eclipse.platform:org.eclipse.osgi from 3.23.0 to 3.23.100 [(#​3678)](https://redirect.github.com/mockito/mockito/pull/3678) - Can no longer publish snapshot releases [(#​3677)](https://redirect.github.com/mockito/mockito/issues/3677) - Update Gradle to 8.14.2 [(#​3676)](https://redirect.github.com/mockito/mockito/pull/3676) - Bump errorprone from 2.23.0 to 2.39.0 [(#​3674)](https://redirect.github.com/mockito/mockito/pull/3674) - Correct Junit docs link [(#​3672)](https://redirect.github.com/mockito/mockito/pull/3672) - Bump net.ltgt.gradle:gradle-errorprone-plugin from 4.1.0 to 4.3.0 [(#​3670)](https://redirect.github.com/mockito/mockito/pull/3670) - Bump junit-jupiter from 5.13.1 to 5.13.2 [(#​3669)](https://redirect.github.com/mockito/mockito/pull/3669) - Bump bytebuddy from 1.17.5 to 1.17.6 [(#​3668)](https://redirect.github.com/mockito/mockito/pull/3668) - Bump junit-jupiter from 5.12.2 to 5.13.1 [(#​3666)](https://redirect.github.com/mockito/mockito/pull/3666) - Bump org.jetbrains.kotlin:kotlin-stdlib from 2.0.21 to 2.2.0 [(#​3665)](https://redirect.github.com/mockito/mockito/pull/3665) - Bump org.gradle.toolchains.foojay-resolver-convention from 0.9.0 to 1.0.0 [(#​3661)](https://redirect.github.com/mockito/mockito/pull/3661) - Bump org.junit.platform:junit-platform-launcher from 1.11.4 to 1.12.2 [(#​3660)](https://redirect.github.com/mockito/mockito/pull/3660) - Add JDK21 sequenced collections for ReturnsEmptyValues [(#​3659)](https://redirect.github.com/mockito/mockito/issues/3659) - Bump com.gradle.develocity from 3.19.1 to 4.0.2 [(#​3658)](https://redirect.github.com/mockito/mockito/pull/3658) - Bump ru.vyarus:gradle-animalsniffer-plugin from 1.7.2 to 2.0.1 [(#​3657)](https://redirect.github.com/mockito/mockito/pull/3657) - Bump org.eclipse.platform:org.eclipse.osgi from 3.22.0 to 3.23.0 [(#​3656)](https://redirect.github.com/mockito/mockito/pull/3656) - Bump org.codehaus.groovy:groovy from 3.0.23 to 3.0.24 [(#​3655)](https://redirect.github.com/mockito/mockito/pull/3655) - Bump junit-jupiter from 5.11.4 to 5.12.2 [(#​3653)](https://redirect.github.com/mockito/mockito/pull/3653) - Reproducible Build: need to inject JDK distribution details to rebuild [(#​3563)](https://redirect.github.com/mockito/mockito/issues/3563) ### [`v5.18.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.18.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.18.0 - 2025-05-20 - [5 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.17.0...v5.18.0) by Eugene Platonov, Patrick Doyle, Tim van der Lippe, dependabot\[bot] - Make vararg checks Scala friendly (for mockito-scala) [(#​3651)](https://redirect.github.com/mockito/mockito/pull/3651) - For UnfinishedStubbingException, suggest the possibility of another thread [(#​3636)](https://redirect.github.com/mockito/mockito/pull/3636) - UnfinishedStubbingException ought to suggest the possibility of another thread [(#​3635)](https://redirect.github.com/mockito/mockito/issues/3635) ### [`v5.17.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.17.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.17.0 - 2025-04-04 - [7 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.16.1...v5.17.0) by Adrian Roos, Andre Kurait, Jan Ouwens, Rafael Winterhalter, Taeik Lim, Thach Le, Tim van der Lippe - Fixes [#​3631](https://redirect.github.com/mockito/mockito/issues/3631): Fix broken banner image link [(#​3632)](https://redirect.github.com/mockito/mockito/pull/3632) - Banner image is broken [(#​3631)](https://redirect.github.com/mockito/mockito/issues/3631) - Update exception message with mockito-inline [(#​3628)](https://redirect.github.com/mockito/mockito/pull/3628) - Clarify structure of commit messages [(#​3626)](https://redirect.github.com/mockito/mockito/pull/3626) - Fixes [#​3622](https://redirect.github.com/mockito/mockito/issues/3622): MockitoExtension fails cleanup when aborted before setup [(#​3623)](https://redirect.github.com/mockito/mockito/pull/3623) - MockitoExtension fails cleanup when aborted before setup [(#​3622)](https://redirect.github.com/mockito/mockito/issues/3622) - Since mockito-inline has been removed, the exception messages with `mockito-inline` should be modified. [(#​3621)](https://redirect.github.com/mockito/mockito/issues/3621) - Fixes [#​3171](https://redirect.github.com/mockito/mockito/issues/3171): Fall back to Throwable Location strategy on Android [(#​3619)](https://redirect.github.com/mockito/mockito/pull/3619) - Fixes [#​3615](https://redirect.github.com/mockito/mockito/issues/3615) : broken links to javadoc.io [(#​3616)](https://redirect.github.com/mockito/mockito/pull/3616) - Broken links to javadoc.io [(#​3615)](https://redirect.github.com/mockito/mockito/issues/3615) - Mocks are not working on particular devices after update Android SDK from 33 to 34 [(#​3171)](https://redirect.github.com/mockito/mockito/issues/3171) ### [`v5.16.1`](https://redirect.github.com/mockito/mockito/releases/tag/v5.16.1) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.16.1 - 2025-03-15 - [3 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.16.0...v5.16.1) by Adrian Roos, JΓ©rΓ΄me Prinet, Rafael Winterhalter - Remove Arrays.asList from critical stubbing path in GenericMetadataSu… [(#​3610)](https://redirect.github.com/mockito/mockito/pull/3610) - Rework of injection strategy in the context of modules [(#​3608)](https://redirect.github.com/mockito/mockito/pull/3608) - Adjust inline mocking snippet to allow task relocatability [(#​3606)](https://redirect.github.com/mockito/mockito/pull/3606) - Inline mocking configuration snippet for Gradle should allow task relocatability [(#​3605)](https://redirect.github.com/mockito/mockito/issues/3605) ### [`v5.16.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.16.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.16.0 - 2025-03-03 - [10 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.15.2...v5.16.0) by Brice Dutheil, Rafael Winterhalter, TDL, dependabot\[bot] - Add support for including module-info in Mockito. [(#​3597)](https://redirect.github.com/mockito/mockito/pull/3597) - Bump com.gradle.develocity from 3.19 to 3.19.1 [(#​3579)](https://redirect.github.com/mockito/mockito/pull/3579) - Bump org.assertj:assertj-core from 3.27.2 to 3.27.3 [(#​3577)](https://redirect.github.com/mockito/mockito/pull/3577) - Bump com.diffplug.spotless:spotless-plugin-gradle from 7.0.1 to 7.0.2 [(#​3574)](https://redirect.github.com/mockito/mockito/pull/3574) - Bump com.diffplug.spotless:spotless-plugin-gradle from 6.25.0 to 7.0.1 [(#​3571)](https://redirect.github.com/mockito/mockito/pull/3571) - Bump org.assertj:assertj-core from 3.27.1 to 3.27.2 [(#​3569)](https://redirect.github.com/mockito/mockito/pull/3569) - Tweaks documentation on mockito agent config for maven [(#​3568)](https://redirect.github.com/mockito/mockito/pull/3568) - Adds `--info` to diagnose closeAndReleaseStagingRepositories issues [(#​3567)](https://redirect.github.com/mockito/mockito/pull/3567) - Refine reflection when calling management factory [(#​3566)](https://redirect.github.com/mockito/mockito/pull/3566) - Avoid warning when dynamic attach is enabled [(#​3551)](https://redirect.github.com/mockito/mockito/pull/3551)
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 90cf2f7..7c2a205 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -46,11 +46,11 @@ dependencies { testImplementation 'io.grpc:grpc-testing:1.75.0' testImplementation 'io.grpc:grpc-inprocess:1.75.0' - testImplementation platform('org.junit:junit-bom:5.11.4') - testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.4' + testImplementation platform('org.junit:junit-bom:5.13.4') + testImplementation 'org.junit.jupiter:junit-jupiter:5.13.4' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.13.4' testImplementation 'org.mockito:mockito-core:5.20.0' - testImplementation 'org.mockito:mockito-junit-jupiter:5.15.2' + testImplementation 'org.mockito:mockito-junit-jupiter:5.20.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.1.1' testImplementation 'org.assertj:assertj-core:3.27.6' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From 119c9b16059f1e2bb88e6f1013e5c177f4ee695a Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 16:38:31 +0100 Subject: [PATCH 299/376] fix(deps): Update plugin com.diffplug.spotless to v8 (#381) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | com.diffplug.spotless | plugin | major | `7.2.1` -> `8.0.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 7c2a205..e2ba8a6 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -2,7 +2,7 @@ plugins { id 'java-library' id "io.freefair.lombok" version "8.14.2" id "maven-publish" - id "com.diffplug.spotless" version "7.2.1" + id "com.diffplug.spotless" version "8.0.0" } group 'io.cloudquery' From b023d4064da2d93bd142f2133bf9bd5cab8697b6 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 16:42:33 +0100 Subject: [PATCH 300/376] fix(deps): Update plugin io.freefair.lombok to v9 (#382) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.freefair.lombok | plugin | major | `8.14.2` -> `9.0.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index e2ba8a6..6245872 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java-library' - id "io.freefair.lombok" version "8.14.2" + id "io.freefair.lombok" version "9.0.0" id "maven-publish" id "com.diffplug.spotless" version "8.0.0" } From 7706ec71b6a03c7c07c269a9be548d14ea78d81f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 16:50:05 +0100 Subject: [PATCH 301/376] fix(deps): Update junit to v6 (major) (#380) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.junit.jupiter:junit-jupiter-api](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | major | `5.11.4` -> `6.0.0` | | [org.junit.jupiter:junit-jupiter](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | major | `5.11.4` -> `6.0.0` | | [org.junit:junit-bom](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | major | `5.11.4` -> `6.0.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 6245872..c81e669 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -46,9 +46,9 @@ dependencies { testImplementation 'io.grpc:grpc-testing:1.75.0' testImplementation 'io.grpc:grpc-inprocess:1.75.0' - testImplementation platform('org.junit:junit-bom:5.13.4') - testImplementation 'org.junit.jupiter:junit-jupiter:5.13.4' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.13.4' + testImplementation platform('org.junit:junit-bom:6.0.0') + testImplementation 'org.junit.jupiter:junit-jupiter:6.0.0' + testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.0' testImplementation 'org.mockito:mockito-core:5.20.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.20.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.1.1' From 6bfe54900e8f666a659fbda32ce98a68e6e2a14c Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Oct 2025 16:54:08 +0100 Subject: [PATCH 302/376] chore(main): Release v0.0.46 (#383) :robot: I have created a release *beep* *boop* --- ## [0.0.46](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.45...v0.0.46) (2025-10-01) ### Bug Fixes * **deps:** Update junit ([#379](https://github.com/cloudquery/plugin-sdk-java/issues/379)) ([0c0be66](https://github.com/cloudquery/plugin-sdk-java/commit/0c0be66971add6c9143779d8c514ad2c85b27aca)) * **deps:** Update junit to v6 (major) ([#380](https://github.com/cloudquery/plugin-sdk-java/issues/380)) ([7706ec7](https://github.com/cloudquery/plugin-sdk-java/commit/7706ec71b6a03c7c07c269a9be548d14ea78d81f)) * **deps:** Update plugin com.diffplug.spotless to v8 ([#381](https://github.com/cloudquery/plugin-sdk-java/issues/381)) ([119c9b1](https://github.com/cloudquery/plugin-sdk-java/commit/119c9b16059f1e2bb88e6f1013e5c177f4ee695a)) * **deps:** Update plugin io.freefair.lombok to v9 ([#382](https://github.com/cloudquery/plugin-sdk-java/issues/382)) ([b023d40](https://github.com/cloudquery/plugin-sdk-java/commit/b023d4064da2d93bd142f2133bf9bd5cab8697b6)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 10 ++++++++++ lib/build.gradle | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index baf0f1a..bfd9909 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.45" + ".": "0.0.46" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a6a0f1..67ba2aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.0.46](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.45...v0.0.46) (2025-10-01) + + +### Bug Fixes + +* **deps:** Update junit ([#379](https://github.com/cloudquery/plugin-sdk-java/issues/379)) ([0c0be66](https://github.com/cloudquery/plugin-sdk-java/commit/0c0be66971add6c9143779d8c514ad2c85b27aca)) +* **deps:** Update junit to v6 (major) ([#380](https://github.com/cloudquery/plugin-sdk-java/issues/380)) ([7706ec7](https://github.com/cloudquery/plugin-sdk-java/commit/7706ec71b6a03c7c07c269a9be548d14ea78d81f)) +* **deps:** Update plugin com.diffplug.spotless to v8 ([#381](https://github.com/cloudquery/plugin-sdk-java/issues/381)) ([119c9b1](https://github.com/cloudquery/plugin-sdk-java/commit/119c9b16059f1e2bb88e6f1013e5c177f4ee695a)) +* **deps:** Update plugin io.freefair.lombok to v9 ([#382](https://github.com/cloudquery/plugin-sdk-java/issues/382)) ([b023d40](https://github.com/cloudquery/plugin-sdk-java/commit/b023d4064da2d93bd142f2133bf9bd5cab8697b6)) + ## [0.0.45](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.44...v0.0.45) (2025-10-01) diff --git a/lib/build.gradle b/lib/build.gradle index c81e669..bc6c685 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -7,7 +7,7 @@ plugins { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.45' +version = '0.0.46' // x-release-please-end repositories { From ff6ce309d1a428b860552d696e3d70c69d5bead6 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 16 Oct 2025 12:39:45 +0100 Subject: [PATCH 303/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.40 (#384) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.35` -> `0.0.40` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index bc6c685..717e67b 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -33,7 +33,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.75.0' implementation 'io.grpc:grpc-stub:1.75.0' implementation 'io.grpc:grpc-services:1.75.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.35' + implementation 'io.cloudquery:plugin-pb-java:0.0.40' implementation 'org.apache.arrow:arrow-memory-core:18.3.0' implementation 'org.apache.arrow:arrow-vector:18.3.0' implementation 'commons-io:commons-io:2.20.0' From 796d312e38651d8d50dd8ca90302387238792865 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 16 Oct 2025 13:21:04 +0100 Subject: [PATCH 304/376] chore(main): Release v0.0.47 (#385) :robot: I have created a release *beep* *boop* --- ## [0.0.47](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.46...v0.0.47) (2025-10-16) ### Bug Fixes * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.40 ([#384](https://github.com/cloudquery/plugin-sdk-java/issues/384)) ([ff6ce30](https://github.com/cloudquery/plugin-sdk-java/commit/ff6ce309d1a428b860552d696e3d70c69d5bead6)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .github/workflows/ci.yml | 1 - .github/workflows/publish.yml | 11 ++++++----- .release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lib/build.gradle | 2 +- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 02d1091..732c3bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,6 @@ jobs: name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Validate Gradle wrapper - # v4.4.1 uses: gradle/actions/wrapper-validation@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 - name: Build package run: ./gradlew build diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9813335..f6fe35e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -6,6 +6,7 @@ on: permissions: contents: read + packages: write jobs: publish: @@ -19,10 +20,10 @@ jobs: java-version: "18" cache: "gradle" - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@f9c9c575b8b21b6485636a91ffecd10e558c62f6 - - name: Publish package - uses: gradle/gradle-build-action@093dfe9d598ec5a42246855d09b49dc76803c005 - with: - arguments: publish + uses: gradle/actions/wrapper-validation@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 + - name: Setup Gradle + uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 + - name: Publish Package env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: ./gradlew publish diff --git a/.release-please-manifest.json b/.release-please-manifest.json index bfd9909..7184724 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.46" + ".": "0.0.47" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 67ba2aa..d625072 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.47](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.46...v0.0.47) (2025-10-16) + + +### Bug Fixes + +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.40 ([#384](https://github.com/cloudquery/plugin-sdk-java/issues/384)) ([ff6ce30](https://github.com/cloudquery/plugin-sdk-java/commit/ff6ce309d1a428b860552d696e3d70c69d5bead6)) + ## [0.0.46](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.45...v0.0.46) (2025-10-01) diff --git a/lib/build.gradle b/lib/build.gradle index 717e67b..63fe2c6 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -7,7 +7,7 @@ plugins { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.46' +version = '0.0.47' // x-release-please-end repositories { From 5dc316419a12bf6b707eb6fb266f8cb768d40eef Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Nov 2025 02:27:10 +0000 Subject: [PATCH 305/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v4.2 (#387) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://redirect.github.com/jqno/equalsverifier)) | dependencies | minor | `4.1.1` -> `4.2` | `4.2.1` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v4.2`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#421---2025-10-29) ##### Fixed - Kotlin lazy delegates with a generic type throw `ClassCastException`. ([Issue 1132](https://redirect.github.com/jqno/equalsverifier/issues/1132)) ##### Changed - Refactorings in the internal class instantiation logic.
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 63fe2c6..ff3530c 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -51,7 +51,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.0' testImplementation 'org.mockito:mockito-core:5.20.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.20.0' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.1.1' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.2' testImplementation 'org.assertj:assertj-core:3.27.6' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From ac3df9a4e82270d54ea2b2466db20bcde2950124 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Nov 2025 02:31:45 +0000 Subject: [PATCH 306/376] chore(deps): Update gradle/actions digest to 5e26c07 (#386) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/actions | action | digest | `4d9f0ba` -> `5e26c07` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 732c3bc..f076169 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 + uses: gradle/actions/wrapper-validation@5e26c0741140516467d799e38395adf08a518755 - name: Build package run: ./gradlew build env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f6fe35e..06b297e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -20,9 +20,9 @@ jobs: java-version: "18" cache: "gradle" - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 + uses: gradle/actions/wrapper-validation@5e26c0741140516467d799e38395adf08a518755 - name: Setup Gradle - uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 + uses: gradle/actions/setup-gradle@5e26c0741140516467d799e38395adf08a518755 - name: Publish Package env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 5c0c9ce0e1cf283ca58c1100e5f4e85ecaa1c29f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sat, 1 Nov 2025 03:25:33 +0000 Subject: [PATCH 307/376] fix(deps): Update grpc-java monorepo to v1.76.0 (#389) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-inprocess](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.75.0` -> `1.76.0` | | [io.grpc:grpc-testing](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.75.0` -> `1.76.0` | | [io.grpc:grpc-services](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.75.0` -> `1.76.0` | | [io.grpc:grpc-stub](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.75.0` -> `1.76.0` | | [io.grpc:grpc-protobuf](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.75.0` -> `1.76.0` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.76.0`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.76.0) ##### Bug Fixes - **xds:** ClusterResolverLb has been converted to use XdsDepManager, which finishes the changes for [gRFC A74 xDS Config Tears](https://redirect.github.com/grpc/proposal/blob/master/A74-xds-config-tears.md). This change should resolve some unnecessary reconnections introduced in v1.75.0 when using weighted_round_robin and maybe other policies. - **netty:** Remove Netty version detection since grpc-netty-shaded can't reliably determine its Netty version when multiple copies of Netty are present (even when shaded). This fixes the resurfacing of the Netty 4.1.111 corruption fixed in 1.65.0. That version fixed grpc-netty, but v1.75.0 upgraded grpc-netty-shaded to Netty 4.1.111 and exposed the Netty version detection problem. This fixes corruption, so the error messages range wildly, but one of them is "RESOURCE_EXHAUSTED: gRPC message exceeds maximum size" - **compiler:** A fix has been implemented for the blockingV2 stub to mangle generated method names that conflict with java.lang.Object methods. - **servlet:** A race condition in AsyncServletOutputStreamWriter has been fixed to prevent threads from getting stuck. - **servlet:** An issue where AsyncContext.complete() was called multiple times, causing an IllegalStateException, has been resolved. - **binder:** The REMOTE_UID is now required to hold the exact UID passed to the SecurityPolicy. - **binder:** The server will now only accept post-setup transactions from the authorized server UID. - **util:** AdvancedTlsX509TrustManager now errors with a message to say that files don’t exist instead of the previous β€œFiles were unmodified before their initial update. Probably a bug.” - **android:** A fix has been implemented for network change handling on API levels below 24. ##### Improvements - **api:** Allocations of Attributes.Builder have been reduced. This mostly benefits attributes.toBuilder(), but that’s not expected to be visible in regular workloads. - **api:** An empty array allocation in LoadBalancer.CreateSubchannelArgs.Builder has been avoided. It is a small optimization and is not expected to have any performance impact. - **servlet:** A configurable methodNameResolver has been added to configure the mapping from servlet request paths to gRPC method name - **servlet:** Avoid a race by increasing the AsyncContext timeout by 5 seconds. The gRPC Context timeout should trigger first - **xds:** Pretty-print envoy.service.discovery.v3.Resource in debug logs - **bazel:** The java/proto rules from rules_java/rules_proto are now used instead of native rules. - **bazel:** Unnecessary direct build dependencies were removed from some targets - **netty:** Support for the BCJSSE provider has been added in GrpcSslContexts. - **netty:** Huffman coding in server response headers has been disabled; it was already disabled for client request headers - **netty:** Include allow header for HTTP response code 405 - **okhttp:** Include allow header for HTTP response code 405 - **binder:** Error descriptions for ServiceConnection callbacks have been improved - **binder:** Apps can now call SecurityPolicy.checkAuthorization() by PeerUid. ##### New Features - **stub:** Trailers are now propagated in StatusException when thrown by BlockingClientCall. - **compiler:** Support for macOS aarch64 with a universal binary has been added. - **opentelemetry:** grpc.subchannel.\* metrics as described in [gRFC A94 OTel metrics for Subchannels](https://redirect.github.com/grpc/proposal/blob/master/A94-subchannel-otel-metrics.md) have been added. grpc.disconnect_error will show as β€œunknown” until transports implement support - **binder:** A NameResolver for Android's intent: URIs has been introduced. - **binder:** A basic SocketStats with just the local and remote addresses has been added for channelz. ##### Documentation - **SECURITY.md:** The documentation now describes how to use gcompat with LD_PRELOAD for Alpine. - **examples:** The documentation now explains Bazel BCR releases and the git_override option. ##### Dependencies - Upgraded Guava version to 33.4.8. - The org.apache.tomcat:annotations-api dependency has been removed from the examples. ##### Thanks to @​[JoeCqupt](https://redirect.github.com/JoeCqupt) @​[Sangamesh1997](https://redirect.github.com/Sangamesh1997) @​[benjaminp](https://redirect.github.com/benjaminp) @​[camelcc](https://redirect.github.com/camelcc) @​[dmytroreutov](https://redirect.github.com/dmytroreutov) @​[duckladydinh](https://redirect.github.com/duckladydinh) @​[jirkafm](https://redirect.github.com/jirkafm) @​[kilink](https://redirect.github.com/kilink) @​[panchenko](https://redirect.github.com/panchenko) @​[umairk79](https://redirect.github.com/umairk79) @​[vimanikag](https://redirect.github.com/vimanikag) @​[werkt](https://redirect.github.com/werkt) @​[xuhongxu96](https://redirect.github.com/xuhongxu96) @​[zrlw](https://redirect.github.com/zrlw)
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index ff3530c..f80cf4c 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -30,9 +30,9 @@ dependencies { implementation 'com.google.guava:guava:33.5.0-jre' implementation 'info.picocli:picocli:4.7.7' implementation 'com.google.guava:guava:33.5.0-jre' - implementation 'io.grpc:grpc-protobuf:1.75.0' - implementation 'io.grpc:grpc-stub:1.75.0' - implementation 'io.grpc:grpc-services:1.75.0' + implementation 'io.grpc:grpc-protobuf:1.76.0' + implementation 'io.grpc:grpc-stub:1.76.0' + implementation 'io.grpc:grpc-services:1.76.0' implementation 'io.cloudquery:plugin-pb-java:0.0.40' implementation 'org.apache.arrow:arrow-memory-core:18.3.0' implementation 'org.apache.arrow:arrow-vector:18.3.0' @@ -44,8 +44,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.25.2' implementation 'org.apache.logging.log4j:log4j-core:2.25.2' - testImplementation 'io.grpc:grpc-testing:1.75.0' - testImplementation 'io.grpc:grpc-inprocess:1.75.0' + testImplementation 'io.grpc:grpc-testing:1.76.0' + testImplementation 'io.grpc:grpc-inprocess:1.76.0' testImplementation platform('org.junit:junit-bom:6.0.0') testImplementation 'org.junit.jupiter:junit-jupiter:6.0.0' testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.0' From e1249c138755c3b8f0c94d514cd691a151f63f1c Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Dec 2025 01:28:57 +0000 Subject: [PATCH 308/376] chore(deps): Update gradle/actions digest to 261794a (#390) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/actions | action | digest | `5e26c07` -> `261794a` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f076169..fef0c22 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@5e26c0741140516467d799e38395adf08a518755 + uses: gradle/actions/wrapper-validation@261794afacfbe7a93883fe9e989f80e083e3547f - name: Build package run: ./gradlew build env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 06b297e..91f1607 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -20,9 +20,9 @@ jobs: java-version: "18" cache: "gradle" - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@5e26c0741140516467d799e38395adf08a518755 + uses: gradle/actions/wrapper-validation@261794afacfbe7a93883fe9e989f80e083e3547f - name: Setup Gradle - uses: gradle/actions/setup-gradle@5e26c0741140516467d799e38395adf08a518755 + uses: gradle/actions/setup-gradle@261794afacfbe7a93883fe9e989f80e083e3547f - name: Publish Package env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 9fe07de8c1a445fd7c877e0d4509b457d78a6a44 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Dec 2025 01:30:27 +0000 Subject: [PATCH 309/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-core to v2.20.1 (#391) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-core](https://redirect.github.com/FasterXML/jackson-core) | dependencies | patch | `2.20.0` -> `2.20.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index f80cf4c..8625166 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation 'org.apache.arrow:arrow-vector:18.3.0' implementation 'commons-io:commons-io:2.20.0' - implementation "com.fasterxml.jackson.core:jackson-core:2.20.0" + implementation "com.fasterxml.jackson.core:jackson-core:2.20.1" implementation "com.fasterxml.jackson.core:jackson-annotations:2.20" implementation 'org.apache.logging.log4j:log4j-api:2.25.2' From 4aff709e71a95b459861b46caf0c973f57a231b7 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Dec 2025 02:32:30 +0000 Subject: [PATCH 310/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v4.2.3 (#392) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://redirect.github.com/jqno/equalsverifier)) | dependencies | patch | `4.2` -> `4.2.3` | `4.2.4` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v4.2.3`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#423---2025-11-15) ##### Fixed - When running on the modulepath, in some cases an `InaccessibleObjectException` is thrown when reporting an error. ([Issue 1142](https://redirect.github.com/jqno/equalsverifier/issues/1142)) - EqualsVerifier's version number was reported as 'null' when run on the modulepath. ### [`v4.2.2`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#422---2025-11-09) ##### Fixed - Failure with EnumSets and EnumMaps for single-value enums. ([Issue 1140](https://redirect.github.com/jqno/equalsverifier/issues/1140)) - An error message refers to `Warning.ZERO_FIELDS`, which was removed in version 4.0. ([Issue 1143](https://redirect.github.com/jqno/equalsverifier/issues/1143)) ### [`v4.2.1`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#421---2025-10-29) ##### Fixed - Kotlin lazy delegates with a generic type throw `ClassCastException`. ([Issue 1132](https://redirect.github.com/jqno/equalsverifier/issues/1132)) ##### Changed - Refactorings in the internal class instantiation logic.
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 8625166..bfa3dc6 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -51,7 +51,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.0' testImplementation 'org.mockito:mockito-core:5.20.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.20.0' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.2' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.2.3' testImplementation 'org.assertj:assertj-core:3.27.6' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From 4154089a9133d38a3d8f43dbf7b6f3cbb0f0083a Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 1 Dec 2025 02:36:08 +0000 Subject: [PATCH 311/376] fix(deps): Update eclipse-temurin Docker tag to v21.0.9_10-jre (#393) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | patch | `21.0.8_9-jre` -> `21.0.9_10-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e43690b..fc18510 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ COPY . . RUN gradle jar --no-daemon -FROM eclipse-temurin:21.0.8_9-jre +FROM eclipse-temurin:21.0.9_10-jre COPY --from=build /code/lib/build/libs/*.jar /app/app.jar From 6b5c728d2a94607dcdb5332ca05057cbc796f093 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Jan 2026 01:32:09 +0000 Subject: [PATCH 312/376] chore(deps): Update gradle/actions digest to bfd5696 (#394) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/actions | action | digest | `261794a` -> `bfd5696` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fef0c22..e231d77 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@261794afacfbe7a93883fe9e989f80e083e3547f + uses: gradle/actions/wrapper-validation@bfd569614358980afc8f89c2730eee75bb97efdf - name: Build package run: ./gradlew build env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 91f1607..7e03fd2 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -20,9 +20,9 @@ jobs: java-version: "18" cache: "gradle" - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@261794afacfbe7a93883fe9e989f80e083e3547f + uses: gradle/actions/wrapper-validation@bfd569614358980afc8f89c2730eee75bb97efdf - name: Setup Gradle - uses: gradle/actions/setup-gradle@261794afacfbe7a93883fe9e989f80e083e3547f + uses: gradle/actions/setup-gradle@bfd569614358980afc8f89c2730eee75bb97efdf - name: Publish Package env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 18f8dca46347540f3698dca7f0681512a80c16d6 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Jan 2026 01:33:24 +0000 Subject: [PATCH 313/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v4.2.5 (#395) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://redirect.github.com/jqno/equalsverifier)) | dependencies | patch | `4.2.3` -> `4.2.5` | `4.2.6` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v4.2.5`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#425---2025-12-03) ##### Changed - Improved performance: EqualsVerifier will now run slightly faster. ([Issue 1156](https://redirect.github.com/jqno/equalsverifier/issues/1156)) - Refactorings in the internal class instantiation logic. ### [`v4.2.4`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#424---2025-11-25) ##### Fixed - Mockito throws `UnnecessaryStubbingException` when `equals` is correct when running in strict mode (which is activated by using `@RunWith(MockitoExtension.class)`) ([Issue 1148](https://redirect.github.com/jqno/equalsverifier/issues/1148)) ##### Changed - Expands Javadoc for `#withIgnoredFields()` to make it more clear that even ignored fields sometimes need prefab values. See [the error message explanation](https://jqno.nl/equalsverifier/errormessages/add-prefab-values-for-one-of-the-following-types) for the reasoning. ([Issue 1141](https://redirect.github.com/jqno/equalsverifier/issues/1141))
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index bfa3dc6..dcf14c6 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -51,7 +51,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.0' testImplementation 'org.mockito:mockito-core:5.20.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.20.0' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.2.3' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.2.5' testImplementation 'org.assertj:assertj-core:3.27.6' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From 8c0b996d585580a4a1d3d4f1d59cca07c02ea88d Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Jan 2026 02:13:30 +0000 Subject: [PATCH 314/376] fix(deps): Update dependency org.jooq:joou to v0.9.5 (#396) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.jooq:joou](https://redirect.github.com/jOOQ/jOOU) | dependencies | patch | `0.9.4` -> `0.9.5` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index dcf14c6..4981f42 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -26,7 +26,7 @@ dependencies { api 'org.apache.commons:commons-math3:3.6.1' // This dependency is used internally, and not exposed to consumers on their own compile classpath. - implementation 'org.jooq:joou:0.9.4' + implementation 'org.jooq:joou:0.9.5' implementation 'com.google.guava:guava:33.5.0-jre' implementation 'info.picocli:picocli:4.7.7' implementation 'com.google.guava:guava:33.5.0-jre' From 64338a3132df1ee522c8b62b8ffc842b5b8da545 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Jan 2026 02:17:06 +0000 Subject: [PATCH 315/376] fix(deps): Update log4j2 monorepo to v2.25.3 (#397) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.apache.logging.log4j:log4j-core](https://logging.apache.org/log4j/2.x/) ([source](https://redirect.github.com/apache/logging-log4j2)) | dependencies | patch | `2.25.2` -> `2.25.3` | | [org.apache.logging.log4j:log4j-api](https://logging.apache.org/log4j/2.x/) ([source](https://redirect.github.com/apache/logging-log4j2)) | dependencies | patch | `2.25.2` -> `2.25.3` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 4981f42..da32361 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -41,8 +41,8 @@ dependencies { implementation "com.fasterxml.jackson.core:jackson-core:2.20.1" implementation "com.fasterxml.jackson.core:jackson-annotations:2.20" - implementation 'org.apache.logging.log4j:log4j-api:2.25.2' - implementation 'org.apache.logging.log4j:log4j-core:2.25.2' + implementation 'org.apache.logging.log4j:log4j-api:2.25.3' + implementation 'org.apache.logging.log4j:log4j-core:2.25.3' testImplementation 'io.grpc:grpc-testing:1.76.0' testImplementation 'io.grpc:grpc-inprocess:1.76.0' From d1ad94fb3be963b170d89faff7db9a7dce6feb79 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Jan 2026 03:32:47 +0000 Subject: [PATCH 316/376] fix(deps): Update dependency commons-io:commons-io to v2.21.0 (#398) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [commons-io:commons-io](https://commons.apache.org/proper/commons-io/) ([source](https://gitbox.apache.org/repos/asf?p=commons-io.git)) | dependencies | minor | `2.20.0` -> `2.21.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index da32361..8160539 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -36,7 +36,7 @@ dependencies { implementation 'io.cloudquery:plugin-pb-java:0.0.40' implementation 'org.apache.arrow:arrow-memory-core:18.3.0' implementation 'org.apache.arrow:arrow-vector:18.3.0' - implementation 'commons-io:commons-io:2.20.0' + implementation 'commons-io:commons-io:2.21.0' implementation "com.fasterxml.jackson.core:jackson-core:2.20.1" implementation "com.fasterxml.jackson.core:jackson-annotations:2.20" From 48ec0ce5b3ff321096218f44cb9ff6fdb5037381 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Thu, 1 Jan 2026 03:36:25 +0000 Subject: [PATCH 317/376] fix(deps): Update dependency gradle to v9.2.1 (#399) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://redirect.github.com/gradle/gradle)) | minor | `9.1.0` -> `9.2.1` | --- ### Release Notes
gradle/gradle (gradle) ### [`v9.2.1`](https://redirect.github.com/gradle/gradle/releases/tag/v9.2.1): 9.2.1 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v9.2.0...v9.2.1) The Gradle team is excited to announce Gradle 9.2.1. Here are the highlights of this release: - Windows ARM support - Improved publishing APIs - Better guidance for dependency verification failures [Read the Release Notes](https://docs.gradle.org/9.2.1/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Adam](https://redirect.github.com/aSemy), [BjΓΆrn Kautler](https://redirect.github.com/Vampire), [hasunzo](https://redirect.github.com/hasunzo), [HYEON](https://redirect.github.com/iohyeon), [Hyunjoon Park](https://redirect.github.com/academey), [HYUNJUN SON](https://redirect.github.com/guswns1659), [Jendrik Johannes](https://redirect.github.com/jjohannes), [Kirill Gavrilov](https://redirect.github.com/gavvvr), [Madalin Valceleanu](https://redirect.github.com/vmadalin), [Martin Bonnin](https://redirect.github.com/martinbonnin), [Matthew Haughton](https://redirect.github.com/3flex), [Mikhail Polivakha](https://redirect.github.com/mipo256), [Na Minhyeok](https://redirect.github.com/NaMinhyeok), [Philip Wedemann](https://redirect.github.com/hfhbd), [Philipp Schneider](https://redirect.github.com/p-schneider), [RΓ³bert Papp](https://redirect.github.com/TWiStErRob), [Simon Marquis](https://redirect.github.com/SimonMarquis), [TheGoesen](https://redirect.github.com/TheGoesen), [Vincent Potucek](https://redirect.github.com/Pankraz76), [Xin Wang](https://redirect.github.com/scaventz). #### Upgrade instructions Switch your build to use Gradle 9.2.1 by updating your wrapper: ./gradlew wrapper --gradle-version=9.2.1 && ./gradlew wrapper See the Gradle [9.x upgrade guide](https://docs.gradle.org/9.2.1/userguide/upgrading_version\_9.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/9.2.1/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle). ### [`v9.2.0`](https://redirect.github.com/gradle/gradle/releases/tag/v9.2.0): 9.2.0 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v9.1.0...v9.2.0) The Gradle team is excited to announce Gradle 9.2.0. Here are the highlights of this release: - Windows ARM support - Improved publishing APIs - Better guidance for dependency verification failures [Read the Release Notes](https://docs.gradle.org/9.2.0/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Adam](https://redirect.github.com/aSemy), [BjΓΆrn Kautler](https://redirect.github.com/Vampire), [hasunzo](https://redirect.github.com/hasunzo), [HYEON](https://redirect.github.com/iohyeon), [Hyunjoon Park](https://redirect.github.com/academey), [HYUNJUN SON](https://redirect.github.com/guswns1659), [Jendrik Johannes](https://redirect.github.com/jjohannes), [Kirill Gavrilov](https://redirect.github.com/gavvvr), [Madalin Valceleanu](https://redirect.github.com/vmadalin), [Martin Bonnin](https://redirect.github.com/martinbonnin), [Matthew Haughton](https://redirect.github.com/3flex), [Mikhail Polivakha](https://redirect.github.com/mipo256), [Na Minhyeok](https://redirect.github.com/NaMinhyeok), [Philip Wedemann](https://redirect.github.com/hfhbd), [Philipp Schneider](https://redirect.github.com/p-schneider), [RΓ³bert Papp](https://redirect.github.com/TWiStErRob), [Simon Marquis](https://redirect.github.com/SimonMarquis), [TheGoesen](https://redirect.github.com/TheGoesen), [Vincent Potucek](https://redirect.github.com/Pankraz76), [Xin Wang](https://redirect.github.com/scaventz). #### Upgrade instructions Switch your build to use Gradle 9.2.0 by updating your wrapper: ./gradlew wrapper --gradle-version=9.2.0 && ./gradlew wrapper See the Gradle [9.x upgrade guide](https://docs.gradle.org/9.2.0/userguide/upgrading_version\_9.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/9.2.0/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.jar | Bin 45457 -> 45633 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 8bdaf60c75ab801e22807dde59e12a8735a34077..f8e1ee3125fe0768e9a76ee977ac089eb657005e 100644 GIT binary patch delta 36466 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 delta 36287 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 TbTtHgKIb=}#OPPBcmMwnM9LS( diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2e11132..23449a2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 6c93ede13f72eac0b0e52d9ceb167e00d4235b0f Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 2 Jan 2026 11:46:09 +0000 Subject: [PATCH 318/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.41 (#400) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.40` -> `0.0.41` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 8160539..7b23807 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -33,7 +33,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.76.0' implementation 'io.grpc:grpc-stub:1.76.0' implementation 'io.grpc:grpc-services:1.76.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.40' + implementation 'io.cloudquery:plugin-pb-java:0.0.41' implementation 'org.apache.arrow:arrow-memory-core:18.3.0' implementation 'org.apache.arrow:arrow-vector:18.3.0' implementation 'commons-io:commons-io:2.21.0' From cf80c9e1289f4bbf5d4047608bde13e3deab92e7 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Fri, 2 Jan 2026 13:54:55 +0000 Subject: [PATCH 319/376] chore(main): Release v0.0.48 (#388) :robot: I have created a release *beep* *boop* --- ## [0.0.48](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.47...v0.0.48) (2026-01-02) ### Bug Fixes * **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.20.1 ([#391](https://github.com/cloudquery/plugin-sdk-java/issues/391)) ([9fe07de](https://github.com/cloudquery/plugin-sdk-java/commit/9fe07de8c1a445fd7c877e0d4509b457d78a6a44)) * **deps:** Update dependency commons-io:commons-io to v2.21.0 ([#398](https://github.com/cloudquery/plugin-sdk-java/issues/398)) ([d1ad94f](https://github.com/cloudquery/plugin-sdk-java/commit/d1ad94fb3be963b170d89faff7db9a7dce6feb79)) * **deps:** Update dependency gradle to v9.2.1 ([#399](https://github.com/cloudquery/plugin-sdk-java/issues/399)) ([48ec0ce](https://github.com/cloudquery/plugin-sdk-java/commit/48ec0ce5b3ff321096218f44cb9ff6fdb5037381)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.41 ([#400](https://github.com/cloudquery/plugin-sdk-java/issues/400)) ([6c93ede](https://github.com/cloudquery/plugin-sdk-java/commit/6c93ede13f72eac0b0e52d9ceb167e00d4235b0f)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v4.2 ([#387](https://github.com/cloudquery/plugin-sdk-java/issues/387)) ([5dc3164](https://github.com/cloudquery/plugin-sdk-java/commit/5dc316419a12bf6b707eb6fb266f8cb768d40eef)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v4.2.3 ([#392](https://github.com/cloudquery/plugin-sdk-java/issues/392)) ([4aff709](https://github.com/cloudquery/plugin-sdk-java/commit/4aff709e71a95b459861b46caf0c973f57a231b7)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v4.2.5 ([#395](https://github.com/cloudquery/plugin-sdk-java/issues/395)) ([18f8dca](https://github.com/cloudquery/plugin-sdk-java/commit/18f8dca46347540f3698dca7f0681512a80c16d6)) * **deps:** Update dependency org.jooq:joou to v0.9.5 ([#396](https://github.com/cloudquery/plugin-sdk-java/issues/396)) ([8c0b996](https://github.com/cloudquery/plugin-sdk-java/commit/8c0b996d585580a4a1d3d4f1d59cca07c02ea88d)) * **deps:** Update eclipse-temurin Docker tag to v21.0.9_10-jre ([#393](https://github.com/cloudquery/plugin-sdk-java/issues/393)) ([4154089](https://github.com/cloudquery/plugin-sdk-java/commit/4154089a9133d38a3d8f43dbf7b6f3cbb0f0083a)) * **deps:** Update grpc-java monorepo to v1.76.0 ([#389](https://github.com/cloudquery/plugin-sdk-java/issues/389)) ([5c0c9ce](https://github.com/cloudquery/plugin-sdk-java/commit/5c0c9ce0e1cf283ca58c1100e5f4e85ecaa1c29f)) * **deps:** Update log4j2 monorepo to v2.25.3 ([#397](https://github.com/cloudquery/plugin-sdk-java/issues/397)) ([64338a3](https://github.com/cloudquery/plugin-sdk-java/commit/64338a3132df1ee522c8b62b8ffc842b5b8da545)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 17 +++++++++++++++++ lib/build.gradle | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 7184724..22dddff 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.47" + ".": "0.0.48" } diff --git a/CHANGELOG.md b/CHANGELOG.md index d625072..05eaec0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [0.0.48](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.47...v0.0.48) (2026-01-02) + + +### Bug Fixes + +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.20.1 ([#391](https://github.com/cloudquery/plugin-sdk-java/issues/391)) ([9fe07de](https://github.com/cloudquery/plugin-sdk-java/commit/9fe07de8c1a445fd7c877e0d4509b457d78a6a44)) +* **deps:** Update dependency commons-io:commons-io to v2.21.0 ([#398](https://github.com/cloudquery/plugin-sdk-java/issues/398)) ([d1ad94f](https://github.com/cloudquery/plugin-sdk-java/commit/d1ad94fb3be963b170d89faff7db9a7dce6feb79)) +* **deps:** Update dependency gradle to v9.2.1 ([#399](https://github.com/cloudquery/plugin-sdk-java/issues/399)) ([48ec0ce](https://github.com/cloudquery/plugin-sdk-java/commit/48ec0ce5b3ff321096218f44cb9ff6fdb5037381)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.41 ([#400](https://github.com/cloudquery/plugin-sdk-java/issues/400)) ([6c93ede](https://github.com/cloudquery/plugin-sdk-java/commit/6c93ede13f72eac0b0e52d9ceb167e00d4235b0f)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v4.2 ([#387](https://github.com/cloudquery/plugin-sdk-java/issues/387)) ([5dc3164](https://github.com/cloudquery/plugin-sdk-java/commit/5dc316419a12bf6b707eb6fb266f8cb768d40eef)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v4.2.3 ([#392](https://github.com/cloudquery/plugin-sdk-java/issues/392)) ([4aff709](https://github.com/cloudquery/plugin-sdk-java/commit/4aff709e71a95b459861b46caf0c973f57a231b7)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v4.2.5 ([#395](https://github.com/cloudquery/plugin-sdk-java/issues/395)) ([18f8dca](https://github.com/cloudquery/plugin-sdk-java/commit/18f8dca46347540f3698dca7f0681512a80c16d6)) +* **deps:** Update dependency org.jooq:joou to v0.9.5 ([#396](https://github.com/cloudquery/plugin-sdk-java/issues/396)) ([8c0b996](https://github.com/cloudquery/plugin-sdk-java/commit/8c0b996d585580a4a1d3d4f1d59cca07c02ea88d)) +* **deps:** Update eclipse-temurin Docker tag to v21.0.9_10-jre ([#393](https://github.com/cloudquery/plugin-sdk-java/issues/393)) ([4154089](https://github.com/cloudquery/plugin-sdk-java/commit/4154089a9133d38a3d8f43dbf7b6f3cbb0f0083a)) +* **deps:** Update grpc-java monorepo to v1.76.0 ([#389](https://github.com/cloudquery/plugin-sdk-java/issues/389)) ([5c0c9ce](https://github.com/cloudquery/plugin-sdk-java/commit/5c0c9ce0e1cf283ca58c1100e5f4e85ecaa1c29f)) +* **deps:** Update log4j2 monorepo to v2.25.3 ([#397](https://github.com/cloudquery/plugin-sdk-java/issues/397)) ([64338a3](https://github.com/cloudquery/plugin-sdk-java/commit/64338a3132df1ee522c8b62b8ffc842b5b8da545)) + ## [0.0.47](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.46...v0.0.47) (2025-10-16) diff --git a/lib/build.gradle b/lib/build.gradle index 7b23807..dec7c81 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -7,7 +7,7 @@ plugins { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.47' +version = '0.0.48' // x-release-please-end repositories { From df74fa636e601461675d7d1cc7aa2470bbbb741b Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Feb 2026 03:36:46 +0000 Subject: [PATCH 320/376] chore(deps): Update gradle/actions digest to 49ec880 (#401) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/actions | action | digest | `bfd5696` -> `49ec880` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e231d77..83e591a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@bfd569614358980afc8f89c2730eee75bb97efdf + uses: gradle/actions/wrapper-validation@49ec880f92204d92aac59e81f28195de48b4a7fa - name: Build package run: ./gradlew build env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 7e03fd2..9b79f61 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -20,9 +20,9 @@ jobs: java-version: "18" cache: "gradle" - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@bfd569614358980afc8f89c2730eee75bb97efdf + uses: gradle/actions/wrapper-validation@49ec880f92204d92aac59e81f28195de48b4a7fa - name: Setup Gradle - uses: gradle/actions/setup-gradle@bfd569614358980afc8f89c2730eee75bb97efdf + uses: gradle/actions/setup-gradle@49ec880f92204d92aac59e81f28195de48b4a7fa - name: Publish Package env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From a616bc4a0dfa0dad426a4a6f45e54ec332ead2f8 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Feb 2026 03:58:46 +0000 Subject: [PATCH 321/376] fix(deps): Update dependency org.assertj:assertj-core to v3.27.7 (#402) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.assertj:assertj-core](https://assertj.github.io/doc/#assertj-core) ([source](https://redirect.github.com/assertj/assertj)) | dependencies | patch | `3.27.6` -> `3.27.7` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index dec7c81..5f2b02e 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -52,7 +52,7 @@ dependencies { testImplementation 'org.mockito:mockito-core:5.20.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.20.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.2.5' - testImplementation 'org.assertj:assertj-core:3.27.6' + testImplementation 'org.assertj:assertj-core:3.27.7' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' runtimeOnly "org.apache.arrow:arrow-memory-netty:18.3.0" From 1dedd948e7c3516c8b90fd481d0037316da4fd9c Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Feb 2026 04:23:44 +0000 Subject: [PATCH 322/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v4.3.1 (#404) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://redirect.github.com/jqno/equalsverifier)) | dependencies | minor | `4.2.5` -> `4.3.1` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v4.3.1`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#431---2026-01-24) ##### Changed - EqualsVerifier now respects [Kotlin's data class contract](https://kotlinlang.org/docs/data-classes.html#properties-declared-in-the-class-body): properties declared in the class body are assumed not to take part in `equals()` and `hashCode()`. ([Issue 1159](https://redirect.github.com/jqno/equalsverifier/issues/1159); thanks [Sogilis Team](https://redirect.github.com/sogilis/)!) ### [`v4.3`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#431---2026-01-24) ##### Changed - EqualsVerifier now respects [Kotlin's data class contract](https://kotlinlang.org/docs/data-classes.html#properties-declared-in-the-class-body): properties declared in the class body are assumed not to take part in `equals()` and `hashCode()`. ([Issue 1159](https://redirect.github.com/jqno/equalsverifier/issues/1159); thanks [Sogilis Team](https://redirect.github.com/sogilis/)!) ### [`v4.2.6`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#426---2025-12-30) ##### Fixed - If first permitted and non-abstract subclass of a sealed type has a recursion, EqualsVerifier throws RecursionException instead of trying the second permitted non-abstract subclass. ([Issue 1081](https://redirect.github.com/jqno/equalsverifier/issues/1081)) ##### Changed - Avoids potential parameter order bug when instantiating records. ([Issue 1160](https://redirect.github.com/jqno/equalsverifier/issues/1160); thanks lycoris106!) - More performance improvements.
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 5f2b02e..2cf2aeb 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -51,7 +51,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.0' testImplementation 'org.mockito:mockito-core:5.20.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.20.0' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.2.5' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.3.1' testImplementation 'org.assertj:assertj-core:3.27.7' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From 8996e95d65ce159f416ece647459490072a71c43 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Feb 2026 04:28:02 +0000 Subject: [PATCH 323/376] fix(deps): Update dependency gradle to v9.3.0 (#403) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | Pending | |---|---|---|---| | [gradle](https://gradle.org) ([source](https://redirect.github.com/gradle/gradle)) | minor | `9.2.1` -> `9.3.0` | `9.3.1` | --- ### Release Notes
gradle/gradle (gradle) ### [`v9.3.0`](https://redirect.github.com/gradle/gradle/releases/tag/v9.3.0): 9.3.0 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v9.2.1...v9.3.0) The Gradle team is excited to announce Gradle 9.3.0. Here are the highlights of this release: - Test reporting improvements - Error and warning improvements - Build authoring improvements [Read the Release Notes](https://docs.gradle.org/9.3.0/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [Adam](https://redirect.github.com/adam-enko), [Adam](https://redirect.github.com/aSemy), [Aharnish Solanki](https://redirect.github.com/Ahar28), [Andrzej Zabost](https://redirect.github.com/azabost), [Bjârn Kautler](https://redirect.github.com/Vampire), [Boris Petrov](https://redirect.github.com/boris-petrov), [Jendrik Johannes](https://redirect.github.com/jjohannes), [Kamil Krzywanski](https://redirect.github.com/kamilkrzywanski), [KANAKALA SAI KIRAN](https://redirect.github.com/saikirankanakala), [Megmeehey](https://redirect.github.com/Megmeehey), [NurmukhametovAlexey](https://redirect.github.com/NurmukhametovAlexey), [Philip Wedemann](https://redirect.github.com/hfhbd), [Piotr Kubowicz](https://redirect.github.com/pkubowicz), [Samay Kumar](https://redirect.github.com/samayk27), [Shin Minjun](https://redirect.github.com/minjun011026), [Stefan Oehme](https://redirect.github.com/oehme), [Vincent Potuček](https://redirect.github.com/Pankraz76), [Yongshun Ye](https://redirect.github.com/ShreckYe). #### Upgrade instructions Switch your build to use Gradle 9.3.0 by updating your wrapper: ./gradlew wrapper --gradle-version=9.3.0 && ./gradlew wrapper See the Gradle [9.x upgrade guide](https://docs.gradle.org/9.3.0/userguide/upgrading_version\_9.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/9.3.0/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.jar | Bin 45633 -> 46175 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f8e1ee3125fe0768e9a76ee977ac089eb657005e..61285a659d17295f1de7c53e24fdf13ad755c379 100644 GIT binary patch delta 37058 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 NNswbwE82Y!{{uvZmpcFe delta 36446 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 JWd7DQ`9Hc?h(rJY diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 23449a2..19a6bde 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From b43d75ce21b5cf9c655994aecaadddfbf262d758 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Feb 2026 04:32:01 +0000 Subject: [PATCH 324/376] fix(deps): Update dependency org.mockito:mockito-core to v5.21.0 (#405) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.mockito:mockito-core](https://redirect.github.com/mockito/mockito) | dependencies | minor | `5.20.0` -> `5.21.0` | --- ### Release Notes

mockito/mockito (org.mockito:mockito-core) ### [`v5.21.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.21.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.21.0 - 2025-12-09 - [17 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.20.0...v5.21.0) by Giulio Longfils, Joshua Selbo, Woongi9, Zylox, dependabot\[bot] - Bump graalvm/setup-graalvm from 1.4.3 to 1.4.4 [(#​3768)](https://redirect.github.com/mockito/mockito/pull/3768) - Bump graalvm/setup-graalvm from 1.4.2 to 1.4.3 [(#​3767)](https://redirect.github.com/mockito/mockito/pull/3767) - Bump actions/checkout from 5 to 6 [(#​3765)](https://redirect.github.com/mockito/mockito/pull/3765) - Adds output of matchers to potential mismatch; Fixes [#​2468](https://redirect.github.com/mockito/mockito/issues/2468) [(#​3760)](https://redirect.github.com/mockito/mockito/pull/3760) - Forbid mocking WeakReference with inline mock maker [(#​3759)](https://redirect.github.com/mockito/mockito/pull/3759) - StackOverflowError when mocking WeakReference [(#​3758)](https://redirect.github.com/mockito/mockito/issues/3758) - Bump actions/upload-artifact from 4 to 5 [(#​3756)](https://redirect.github.com/mockito/mockito/pull/3756) - Bump graalvm/setup-graalvm from 1.4.1 to 1.4.2 [(#​3755)](https://redirect.github.com/mockito/mockito/pull/3755) - Support primitives in GenericArrayReturnType. [(#​3753)](https://redirect.github.com/mockito/mockito/pull/3753) - ClassNotFoundException when stubbing array of primitive type on Android [(#​3752)](https://redirect.github.com/mockito/mockito/issues/3752) - Bump graalvm/setup-graalvm from 1.4.0 to 1.4.1 [(#​3744)](https://redirect.github.com/mockito/mockito/pull/3744) - Bump gradle/actions from 4 to 5 [(#​3743)](https://redirect.github.com/mockito/mockito/pull/3743) - Bump org.graalvm.buildtools.native from 0.11.0 to 0.11.1 [(#​3738)](https://redirect.github.com/mockito/mockito/pull/3738) - Bump com.diffplug.spotless:spotless-plugin-gradle from 7.2.1 to 8.0.0 [(#​3735)](https://redirect.github.com/mockito/mockito/pull/3735) - Bump graalvm/setup-graalvm from 1.3.7 to 1.4.0 [(#​3734)](https://redirect.github.com/mockito/mockito/pull/3734) - Bump org.assertj:assertj-core from 3.27.5 to 3.27.6 [(#​3733)](https://redirect.github.com/mockito/mockito/pull/3733) - Bump errorprone from 2.41.0 to 2.42.0 [(#​3732)](https://redirect.github.com/mockito/mockito/pull/3732) - Feat: automatically detect class to mock in mockStatic and mockConstruction [(#​3731)](https://redirect.github.com/mockito/mockito/pull/3731) - Return completed futures for unstubbed Future/CompletionStage in ReturnsEmptyValues [(#​3727)](https://redirect.github.com/mockito/mockito/pull/3727) - automatically detect class to mock [(#​2779)](https://redirect.github.com/mockito/mockito/pull/2779) - Incorrect "has following stubbing(s) with different arguments" message when using Argument Matchers [(#​2468)](https://redirect.github.com/mockito/mockito/issues/2468)
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 2cf2aeb..0658096 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -49,7 +49,7 @@ dependencies { testImplementation platform('org.junit:junit-bom:6.0.0') testImplementation 'org.junit.jupiter:junit-jupiter:6.0.0' testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.0' - testImplementation 'org.mockito:mockito-core:5.20.0' + testImplementation 'org.mockito:mockito-core:5.21.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.20.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.3.1' testImplementation 'org.assertj:assertj-core:3.27.7' From 7e8da5b3f21d12eae26488c05f1ad36155bd0621 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Feb 2026 05:10:40 +0000 Subject: [PATCH 325/376] fix(deps): Update plugin io.freefair.lombok to v9.2.0 (#410) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.freefair.lombok | plugin | minor | `9.0.0` -> `9.2.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 0658096..97293f2 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java-library' - id "io.freefair.lombok" version "9.0.0" + id "io.freefair.lombok" version "9.2.0" id "maven-publish" id "com.diffplug.spotless" version "8.0.0" } From 731a8f7c1dec6c2b755ff0fab65369ae90598dcc Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Feb 2026 05:14:20 +0000 Subject: [PATCH 326/376] fix(deps): Update grpc-java monorepo to v1.78.0 (#406) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-inprocess](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.76.0` -> `1.78.0` | | [io.grpc:grpc-testing](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.76.0` -> `1.78.0` | | [io.grpc:grpc-services](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.76.0` -> `1.78.0` | | [io.grpc:grpc-stub](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.76.0` -> `1.78.0` | | [io.grpc:grpc-protobuf](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.76.0` -> `1.78.0` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.78.0`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.78.0) ##### Bug Fixes - core: Fix shutdown failing accepted RPCs during channel startup ([`02e98a8`](https://redirect.github.com/grpc/grpc-java/commit/02e98a806)). This fixes a race where RPCs could fail with "UNAVAILABLE: Channel shutdown invoked" even though they were created before channel.shutdown() - okhttp: Fix race condition overwriting MAX_CONCURRENT_STREAMS ([#​12548](https://redirect.github.com/grpc/grpc-java/issues/12548)) ([`8d49dc1`](https://redirect.github.com/grpc/grpc-java/commit/8d49dc1c9)) - binder: Stop leaking `this` from BinderServerTransport's ctor ([#​12453](https://redirect.github.com/grpc/grpc-java/issues/12453)) ([`89d77e0`](https://redirect.github.com/grpc/grpc-java/commit/89d77e062)) - rls: Avoid missed config update from reentrancy ([`55ae1d0`](https://redirect.github.com/grpc/grpc-java/commit/55ae1d054)). This fixes a regression since 1.75.0 triggered by CdsLb being converted to XdsDepManager. Without this fix, a second channel to the same target may hang when starting, causing DEADLINE_EXCEEDED, and unhang when the control plane delivers an update (e.g., endpoint address update) ##### Improvements - xds: gRFC A88 - Changes to XdsClient Watcher APIs ([#​12446](https://redirect.github.com/grpc/grpc-java/issues/12446)) ([`f385add`](https://redirect.github.com/grpc/grpc-java/commit/f385add31)). We now have improved xDS error handling and this provides a clearer mechanism for the xDS server to report per-resource errors to the client, resulting in better error messages for debugging and faster detection of non-existent resources. This also improves the handling of all xDS-related data errors and the behavior of the xDS resource timer. - rls: Control plane channel monitor state and back off handling ([#​12460](https://redirect.github.com/grpc/grpc-java/issues/12460)) ([`26c1c13`](https://redirect.github.com/grpc/grpc-java/commit/26c1c1341)). Resets RLS request backoff timers when the Control plane channel state transitions to READY. Also when the backoff timer expires, instead of making a RLS request immediately, it just causes a picker update to allow making rpc again to the RLS target. - core: simplify DnsNameResolver.resolveAddresses() ([`4843256`](https://redirect.github.com/grpc/grpc-java/commit/4843256af)) - netty: Run handshakeCompleteRunnable in success cases ([`283f103`](https://redirect.github.com/grpc/grpc-java/commit/283f1031f)) - api,netty: Add custom header support for HTTP CONNECT proxy ([`bbc0aa3`](https://redirect.github.com/grpc/grpc-java/commit/bbc0aa369)) - binder: Pre-factor out the guts of the BinderClientTransport handshake. ([`9313e87`](https://redirect.github.com/grpc/grpc-java/commit/9313e87df)) - compiler: Add RISC-V 64-bit architecture support to compiler build configuration ([`725ab22`](https://redirect.github.com/grpc/grpc-java/commit/725ab22f3)) - core: Release lock before closing shared resource ([`cb73f21`](https://redirect.github.com/grpc/grpc-java/commit/cb73f217e)). Shared resources are internal to gRPC for sharing expensive objects across channels and servers, like threads. This reduces the chances of forming a deadlock, like seen with s2a in [`d50098f`](https://redirect.github.com/grpc/grpc-java/commit/d50098f) - Upgrade gson to 2.12.1 ([`6dab2ce`](https://redirect.github.com/grpc/grpc-java/commit/6dab2ceab)) - Upgrade dependencies ([`f36defa`](https://redirect.github.com/grpc/grpc-java/commit/f36defa2d)). proto-google-common-protos to 2.63.1, google-auth-library to 1.40.0, error-prone annotations to 2.44.0, guava to 33.5.0-android, opentelemetry to 1.56.0 - compiler: Update maximum supported protobuf edition to EDITION\_2024 ([`2f64092`](https://redirect.github.com/grpc/grpc-java/commit/2f64092b8)) - binder: Introduce server authorization strategy v2 ([`d971072`](https://redirect.github.com/grpc/grpc-java/commit/d9710725d)). Adds support for `android:isolatedProcess` Services and moves all security checks to the handshake, making subsequent transactions more efficient. ##### New Features - compiler: Upgrade to C++ protobuf 33.1 ([#​12534](https://redirect.github.com/grpc/grpc-java/issues/12534)) ([`58ae5f8`](https://redirect.github.com/grpc/grpc-java/commit/58ae5f808)). - util: Add gRFC A68 random subsetting LB ([`48a4288`](https://redirect.github.com/grpc/grpc-java/commit/48a42889d)). The policy uses the name `random_subsetting_experimental`. If it is working for you, tell us so we can gauge marking it stable. While the xDS portions haven’t yet landed, it is possible to use with xDS with JSON-style Structs as supported by gRFC A52 - xds: Support for System Root Certs ([#​12499](https://redirect.github.com/grpc/grpc-java/issues/12499)) ([`51611ba`](https://redirect.github.com/grpc/grpc-java/commit/51611bad1)). Most service mesh workloads use mTLS, as described in gRFC A29. However, there are cases where it is useful for applications to use normal TLS rather than using certificates for workload identity, such as when a mesh wants to move some workloads behind a reverse proxy. The xDS `CertificateValidationContext` message (see [envoyproxy/envoy#34235](https://redirect.github.com/envoyproxy/envoy/pull/34235)) has a `system_root_certs` field. In the gRPC client, if this field is present and the `ca_certificate_provider_instance` field is unset, system root certificates will be used for validation. This implements [gRFC A82](https://redirect.github.com/grpc/proposal/blob/master/A82-xds-system-root-certs.md). - xds: Support for GCP Authentication Filter ([#​12499](https://redirect.github.com/grpc/grpc-java/issues/12499)) ([`51611ba`](https://redirect.github.com/grpc/grpc-java/commit/51611bad1)). In service mesh environments, there are cases where intermediate proxies make it impossible to rely on mTLS for end-to-end authentication. These cases can be addressed instead by the use of service account identity JWT tokens. The xDS [GCP Authentication filter](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/gcp_authn_filter) provides a mechanism for attaching such JWT tokens as gRPC call credentials on GCP. gRPC already supports a framework for xDS HTTP filters, as described in [gRFC A39](https://redirect.github.com/grpc/proposal/blob/master/A39-xds-http-filters.md). This release supports the GCP Authentication filter under this framework as described in [gRFC A83](https://redirect.github.com/grpc/proposal/blob/master/A83-xds-gcp-authn-filter.md). - xds: Support for xDS-based authority rewriting ([#​12499](https://redirect.github.com/grpc/grpc-java/issues/12499)) ([`51611ba`](https://redirect.github.com/grpc/grpc-java/commit/51611bad1)). gRPC supports getting routing configuration from an xDS server, as described in gRFCs [A27](https://redirect.github.com/grpc/proposal/blob/master/A27-xds-global-load-balancing.md) and [A28](https://redirect.github.com/grpc/proposal/blob/master/A28-xds-traffic-splitting-and-routing.md). The xDS configuration can configure the client to rewrite the authority header on requests. This functionality can be useful in cases where the server is using the authority header to make decisions about how to process the request, such as when multiple hosts are handled via a reverse proxy. Note that this feature is solely about rewriting the authority header on data plane RPCs; it does not affect the authority used in the TLS handshake.\ As mentioned in [gRFC A29](https://redirect.github.com/grpc/proposal/blob/master/A29-xds-tls-security.md), there are use-cases for gRPC that prohibit trusting the xDS server to control security-centric configuration. The authority rewriting feature falls under the same umbrella as mTLS configuration. As a result, the authority rewriting feature will only be enabled when the bootstrap config for the xDS server has `trusted_xds_server` in the `server_features` field. - xds: xDS based SNI setting and SAN validation ([#​12378](https://redirect.github.com/grpc/grpc-java/issues/12378)) ([`0567531`](https://redirect.github.com/grpc/grpc-java/commit/0567531)). When using xDS credentials make SNI for the Tls handshake to be configured via xDS, rather than use the channel authority as the SNI, and make SAN validation to be able to use the SNI sent when so instructed via xDS. Implements gRFC [A101](https://redirect.github.com/grpc/proposal/blob/master/A101-SNI-setting-and-SNI-SAN-validation.md). ##### Documentation - api: Document gRFC A18 TCP_USER_TIMEOUT handling for keepalive ([`da70387`](https://redirect.github.com/grpc/grpc-java/commit/da7038782)) - core: Fix AbstractClientStream Javadoc ([`28a6130`](https://redirect.github.com/grpc/grpc-java/commit/28a6130e8)) - examples: Document how to preserve META-INF/services in uber jars ([`97695d5`](https://redirect.github.com/grpc/grpc-java/commit/97695d523)) ##### Thanks to - [@​panchenko](https://redirect.github.com/panchenko) - [@​Dayuxiaoshui](https://redirect.github.com/Dayuxiaoshui) - [@​becomeStar](https://redirect.github.com/becomeStar) - [@​kssumin](https://redirect.github.com/kssumin) - [@​marcindabrowski](https://redirect.github.com/marcindabrowski) - [@​MariusVolkhart](https://redirect.github.com/MariusVolkhart) - [@​Zgoda91](https://redirect.github.com/Zgoda91) - [@​devalkone](https://redirect.github.com/devalkone) ### [`v1.77.1`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.77.1) ##### Bug Fixes - rls: Avoid missed config update from reentrancy ([https://github.com/grpc/grpc-java/pull/12549](https://redirect.github.com/grpc/grpc-java/pull/12549)). This fixes a regression since 1.75.0 triggered by CdsLb being converted to XdsDepManager. Without this fix, a second channel to the same target may hang when starting, causing DEADLINE_EXCEEDED, and unhang when the control plane delivers an update (e.g., endpoint address update) ### [`v1.77.0`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.77.0) ##### API Changes - binder: Remove experimental `BinderChannelBuilder.bindAsUser()` method, deprecated since 1.69 ([#​12401](https://redirect.github.com/grpc/grpc-java/issues/12401)) ([`f96ce06`](https://redirect.github.com/grpc/grpc-java/commit/f96ce0670)) ##### Bug Fixes - api: Fix name resolver bridge listener handling for address resolution errors for custom name resolvers ([#​12441](https://redirect.github.com/grpc/grpc-java/issues/12441)) ([`acbbf86`](https://redirect.github.com/grpc/grpc-java/commit/acbbf869a)). This fixes regression introduced in v1.68.1 causing a β€œIllegalStateException: No value present.” exception - core: Fix NullPointerException during address update with Happy Eyeballs ([`5e8af56`](https://redirect.github.com/grpc/grpc-java/commit/5e8af564e)). This should not impact many people as the code is disabled by default, behind two experimental environment variables - okhttp: Fix bidirectional keep-alive causing spurious GOAWAY ([`6fc3fd0`](https://redirect.github.com/grpc/grpc-java/commit/6fc3fd046)). This fixes the grpc-okhttp server incorrectly closing the connection with `GOAWAY: too_many_pings` - xds: SslContext updates handling when using system root certs ([#​12340](https://redirect.github.com/grpc/grpc-java/issues/12340)) ([`63fdaac`](https://redirect.github.com/grpc/grpc-java/commit/63fdaaccc)). Since `FileWatcherCertificateProvider` isn't used when using system root trust store, the SslContext update for the handshake that depended on it wasn't happening. This fix creates a separate `CertificateProvider` for handling system root certs that doesn't rely on the `FileWatcherCertificateProvider.` - xds: Make cluster selection interceptor run before other filters ([#​12381](https://redirect.github.com/grpc/grpc-java/issues/12381)) ([`82f9b8e`](https://redirect.github.com/grpc/grpc-java/commit/82f9b8ec0)). This is needed when there is `GcpAuthenticationFilter` in the filter chain to make available the cluster resource in `CallOption`s. - xds: Handle wildcards in DNS SAN exact matching ([#​12345](https://redirect.github.com/grpc/grpc-java/issues/12345)) ([`5b876cc`](https://redirect.github.com/grpc/grpc-java/commit/5b876cc86)) - android: Fix UdsChannelBuilder with WiFi Proxy ([`349a35a`](https://redirect.github.com/grpc/grpc-java/commit/349a35a9b)) - binder: Avoid potential deadlock when canceling AsyncSecurityPolicy futures ([#​12283](https://redirect.github.com/grpc/grpc-java/issues/12283)) ([`4725ced`](https://redirect.github.com/grpc/grpc-java/commit/4725ced99)) - binder: Fix a BinderServerTransport crash in the rare shutdown-before-start case ([#​12440](https://redirect.github.com/grpc/grpc-java/issues/12440)) ([`91f3f4d`](https://redirect.github.com/grpc/grpc-java/commit/91f3f4dc1)) ##### Improvements - Improve status messages by including causal error details in config parsing errors for outlier detection and xds’s wrr locality policies ([`86e8b56`](https://redirect.github.com/grpc/grpc-java/commit/86e8b5617)) - xds: Detect negative ref count for xds client ([`21696cd`](https://redirect.github.com/grpc/grpc-java/commit/21696cd3d)). A negative reference count could cause NullPointerExceptions, so when too many unrefs are detected it produces a SEVERE warning and prevents the reference count from going negative - xds: Support deprecated xDS TLS fields for Istio compat ([#​12435](https://redirect.github.com/grpc/grpc-java/issues/12435)) ([`53cd1a2`](https://redirect.github.com/grpc/grpc-java/commit/53cd1a225)). This fixes a regression with Istio introduced in v1.73.0. This gives time for [Istio’s new xDS field support](https://redirect.github.com/istio/istio/pull/58257) to roll out - googleapis: Allow wrapping NameResolver to inject XdsClient ([#​12450](https://redirect.github.com/grpc/grpc-java/issues/12450)) ([`27d1508`](https://redirect.github.com/grpc/grpc-java/commit/27d150890)). This allows googleapis to inject an xDS bootstrap to use with its channels even if one is already specified in the environment variable or system property. When the code was originally written there was a single global XdsClient, but since gRFC A71 Xds Fallback each target string has its own XdsClient and thus can have its own bootstrap - alts: Allow overriding metadata server address with env variable ([`9ac12ef`](https://redirect.github.com/grpc/grpc-java/commit/9ac12ef89)) ([`498f717`](https://redirect.github.com/grpc/grpc-java/commit/498f717fc)) - binder: Let the server know when the client fails to authorize it. ([#​12445](https://redirect.github.com/grpc/grpc-java/issues/12445)) ([`599a0a1`](https://redirect.github.com/grpc/grpc-java/commit/599a0a146)) This avoids the server needing to wait for the handshake timeout before realizing the handshake failed ##### New Features - opentelemetry: Implement otel retry metrics from gRFC A96 ([#​12064](https://redirect.github.com/grpc/grpc-java/issues/12064)) ([`d380191`](https://redirect.github.com/grpc/grpc-java/commit/d380191be)) - opentelemetry: propagate baggage to server metrics for custom attributes ([#​12389](https://redirect.github.com/grpc/grpc-java/issues/12389)) ([`155308d`](https://redirect.github.com/grpc/grpc-java/commit/155308db2)) - xds: Allow EC Keys in SPIFFE Bundle Map parsing ([#​12399](https://redirect.github.com/grpc/grpc-java/issues/12399)) ([`559e3ba`](https://redirect.github.com/grpc/grpc-java/commit/559e3ba41)) - xds: Enable authority rewriting (gRFC A81), system root cert support (gRFC A82), GCP authentication filter (gRFC A83), and SNI (gRFC A101) ([#​12499](https://redirect.github.com/grpc/grpc-java/issues/12499)) ([`246c2b1`](https://redirect.github.com/grpc/grpc-java/commit/246c2b1ea)). Authority rewriting requires the control plane to be labeled `trusted_xds_server` in the bootstrap. System root cert support and SNI require using XdsChannelCredentials - rls: Add route lookup reason to request whether it is due to a cache miss or stale cache entry ([#​12442](https://redirect.github.com/grpc/grpc-java/issues/12442)) ([`795ce02`](https://redirect.github.com/grpc/grpc-java/commit/795ce0280)) ##### Dependencies - compiler: C++ protobuf used by codegen upgraded to 26.1 ([#​12330](https://redirect.github.com/grpc/grpc-java/issues/12330)) ([`55aefd5`](https://redirect.github.com/grpc/grpc-java/commit/55aefd5b8)) - alts: Remove dep on grpclb ([`b769f96`](https://redirect.github.com/grpc/grpc-java/commit/b769f966a)). ALTS is no longer used with grpclb, so this removes dead code - Upgrade netty to 4.1.127.Final ([`b37ee67`](https://redirect.github.com/grpc/grpc-java/commit/b37ee67cf)) ##### Thanks to [@​panchenko](https://redirect.github.com/panchenko) [@​benjaminp](https://redirect.github.com/benjaminp) [@​HyunSangHan](https://redirect.github.com/HyunSangHan) [@​becomeStar](https://redirect.github.com/becomeStar) [@​ZachChuba](https://redirect.github.com/ZachChuba) [@​oliviamariacodes](https://redirect.github.com/oliviamariacodes) [@​kssumin](https://redirect.github.com/kssumin) [@​laz-canva](https://redirect.github.com/laz-canva) ### [`v1.76.3`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.76.3) ##### Dependencies - Downgrade OpenTelemetry to 1.51.0 to make it easier for people dealing with the OkHttp 4.x β†’ 5.x upgrade of some OpenTelemetry modules ([`354d8b4`](https://redirect.github.com/grpc/grpc-java/commit/354d8b451)). gRPC is not using the impacted OpenTelemetry modules. Users are still free to upgrade to newer versions of OpenTelemetry of their choosing. ### [`v1.76.2`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.76.2) ##### Bug Fixes - rls: Avoid missed config update from reentrancy ([https://github.com/grpc/grpc-java/pull/12550](https://redirect.github.com/grpc/grpc-java/pull/12550)). This fixes a regression since 1.75.0 triggered by CdsLb being converted to XdsDepManager. Without this fix, a second channel to the same target may hang when starting, causing DEADLINE_EXCEEDED, and unhang when the control plane delivers an update (e.g., endpoint address update) ### [`v1.76.1`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.76.1) ##### Bug Fixes - core: Fix NullPointerException during address update with Happy Eyeballs ([`5e8af56`](https://redirect.github.com/grpc/grpc-java/commit/5e8af564e)). This should not impact many people as the code is disabled by default, behind two experimental environment variables
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 97293f2..7a2e936 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -30,9 +30,9 @@ dependencies { implementation 'com.google.guava:guava:33.5.0-jre' implementation 'info.picocli:picocli:4.7.7' implementation 'com.google.guava:guava:33.5.0-jre' - implementation 'io.grpc:grpc-protobuf:1.76.0' - implementation 'io.grpc:grpc-stub:1.76.0' - implementation 'io.grpc:grpc-services:1.76.0' + implementation 'io.grpc:grpc-protobuf:1.78.0' + implementation 'io.grpc:grpc-stub:1.78.0' + implementation 'io.grpc:grpc-services:1.78.0' implementation 'io.cloudquery:plugin-pb-java:0.0.41' implementation 'org.apache.arrow:arrow-memory-core:18.3.0' implementation 'org.apache.arrow:arrow-vector:18.3.0' @@ -44,8 +44,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.25.3' implementation 'org.apache.logging.log4j:log4j-core:2.25.3' - testImplementation 'io.grpc:grpc-testing:1.76.0' - testImplementation 'io.grpc:grpc-inprocess:1.76.0' + testImplementation 'io.grpc:grpc-testing:1.78.0' + testImplementation 'io.grpc:grpc-inprocess:1.78.0' testImplementation platform('org.junit:junit-bom:6.0.0') testImplementation 'org.junit.jupiter:junit-jupiter:6.0.0' testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.0' From 5ca69de1872c5540c1f2470cdff8d30ea8540160 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Feb 2026 05:17:46 +0000 Subject: [PATCH 327/376] fix(deps): Update jackson monorepo (#407) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-annotations](https://redirect.github.com/FasterXML/jackson) ([source](https://redirect.github.com/FasterXML/jackson-annotations)) | dependencies | minor | `2.20` -> `2.21` | | [com.fasterxml.jackson.core:jackson-core](https://redirect.github.com/FasterXML/jackson-core) | dependencies | minor | `2.20.1` -> `2.21.0` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 7a2e936..bb7295c 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -38,8 +38,8 @@ dependencies { implementation 'org.apache.arrow:arrow-vector:18.3.0' implementation 'commons-io:commons-io:2.21.0' - implementation "com.fasterxml.jackson.core:jackson-core:2.20.1" - implementation "com.fasterxml.jackson.core:jackson-annotations:2.20" + implementation "com.fasterxml.jackson.core:jackson-core:2.21.0" + implementation "com.fasterxml.jackson.core:jackson-annotations:2.21" implementation 'org.apache.logging.log4j:log4j-api:2.25.3' implementation 'org.apache.logging.log4j:log4j-core:2.25.3' From 061fc4b2aa5a35296bff34c66216d679a45490cb Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Feb 2026 05:21:17 +0000 Subject: [PATCH 328/376] fix(deps): Update plugin com.diffplug.spotless to v8.2.0 (#409) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | com.diffplug.spotless | plugin | minor | `8.0.0` -> `8.2.0` | `8.2.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index bb7295c..ff712c1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -2,7 +2,7 @@ plugins { id 'java-library' id "io.freefair.lombok" version "9.2.0" id "maven-publish" - id "com.diffplug.spotless" version "8.0.0" + id "com.diffplug.spotless" version "8.2.0" } group 'io.cloudquery' From 5ba92dfc18e12267206eb22d532163aa823aa10b Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Feb 2026 06:31:45 +0000 Subject: [PATCH 329/376] fix(deps): Update junit (#408) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.mockito:mockito-junit-jupiter](https://redirect.github.com/mockito/mockito) | dependencies | minor | `5.20.0` -> `5.21.0` | | [org.junit.jupiter:junit-jupiter-api](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | patch | `6.0.0` -> `6.0.2` | | [org.junit.jupiter:junit-jupiter](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | patch | `6.0.0` -> `6.0.2` | | [org.junit:junit-bom](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | patch | `6.0.0` -> `6.0.2` | --- ### Release Notes
mockito/mockito (org.mockito:mockito-junit-jupiter) ### [`v5.21.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.21.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.21.0 - 2025-12-09 - [17 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.20.0...v5.21.0) by Giulio Longfils, Joshua Selbo, Woongi9, Zylox, dependabot\[bot] - Bump graalvm/setup-graalvm from 1.4.3 to 1.4.4 [(#​3768)](https://redirect.github.com/mockito/mockito/pull/3768) - Bump graalvm/setup-graalvm from 1.4.2 to 1.4.3 [(#​3767)](https://redirect.github.com/mockito/mockito/pull/3767) - Bump actions/checkout from 5 to 6 [(#​3765)](https://redirect.github.com/mockito/mockito/pull/3765) - Adds output of matchers to potential mismatch; Fixes [#​2468](https://redirect.github.com/mockito/mockito/issues/2468) [(#​3760)](https://redirect.github.com/mockito/mockito/pull/3760) - Forbid mocking WeakReference with inline mock maker [(#​3759)](https://redirect.github.com/mockito/mockito/pull/3759) - StackOverflowError when mocking WeakReference [(#​3758)](https://redirect.github.com/mockito/mockito/issues/3758) - Bump actions/upload-artifact from 4 to 5 [(#​3756)](https://redirect.github.com/mockito/mockito/pull/3756) - Bump graalvm/setup-graalvm from 1.4.1 to 1.4.2 [(#​3755)](https://redirect.github.com/mockito/mockito/pull/3755) - Support primitives in GenericArrayReturnType. [(#​3753)](https://redirect.github.com/mockito/mockito/pull/3753) - ClassNotFoundException when stubbing array of primitive type on Android [(#​3752)](https://redirect.github.com/mockito/mockito/issues/3752) - Bump graalvm/setup-graalvm from 1.4.0 to 1.4.1 [(#​3744)](https://redirect.github.com/mockito/mockito/pull/3744) - Bump gradle/actions from 4 to 5 [(#​3743)](https://redirect.github.com/mockito/mockito/pull/3743) - Bump org.graalvm.buildtools.native from 0.11.0 to 0.11.1 [(#​3738)](https://redirect.github.com/mockito/mockito/pull/3738) - Bump com.diffplug.spotless:spotless-plugin-gradle from 7.2.1 to 8.0.0 [(#​3735)](https://redirect.github.com/mockito/mockito/pull/3735) - Bump graalvm/setup-graalvm from 1.3.7 to 1.4.0 [(#​3734)](https://redirect.github.com/mockito/mockito/pull/3734) - Bump org.assertj:assertj-core from 3.27.5 to 3.27.6 [(#​3733)](https://redirect.github.com/mockito/mockito/pull/3733) - Bump errorprone from 2.41.0 to 2.42.0 [(#​3732)](https://redirect.github.com/mockito/mockito/pull/3732) - Feat: automatically detect class to mock in mockStatic and mockConstruction [(#​3731)](https://redirect.github.com/mockito/mockito/pull/3731) - Return completed futures for unstubbed Future/CompletionStage in ReturnsEmptyValues [(#​3727)](https://redirect.github.com/mockito/mockito/pull/3727) - automatically detect class to mock [(#​2779)](https://redirect.github.com/mockito/mockito/pull/2779) - Incorrect "has following stubbing(s) with different arguments" message when using Argument Matchers [(#​2468)](https://redirect.github.com/mockito/mockito/issues/2468)
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index ff712c1..3dc9e92 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -46,11 +46,11 @@ dependencies { testImplementation 'io.grpc:grpc-testing:1.78.0' testImplementation 'io.grpc:grpc-inprocess:1.78.0' - testImplementation platform('org.junit:junit-bom:6.0.0') - testImplementation 'org.junit.jupiter:junit-jupiter:6.0.0' - testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.0' + testImplementation platform('org.junit:junit-bom:6.0.2') + testImplementation 'org.junit.jupiter:junit-jupiter:6.0.2' + testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.2' testImplementation 'org.mockito:mockito-core:5.21.0' - testImplementation 'org.mockito:mockito-junit-jupiter:5.20.0' + testImplementation 'org.mockito:mockito-junit-jupiter:5.21.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.3.1' testImplementation 'org.assertj:assertj-core:3.27.7' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From af92a67d39b9d215a060c84ac2e7ec6a6ed8e3da Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Feb 2026 12:43:49 +0000 Subject: [PATCH 330/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.42 (#413) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | io.cloudquery:plugin-pb-java | dependencies | patch | `0.0.41` -> `0.0.42` | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 3dc9e92..fb29fdc 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -33,7 +33,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.78.0' implementation 'io.grpc:grpc-stub:1.78.0' implementation 'io.grpc:grpc-services:1.78.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.41' + implementation 'io.cloudquery:plugin-pb-java:0.0.42' implementation 'org.apache.arrow:arrow-memory-core:18.3.0' implementation 'org.apache.arrow:arrow-vector:18.3.0' implementation 'commons-io:commons-io:2.21.0' From fb445473129bc0be1d48b55ae3c708cd6f477a0b Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 4 Feb 2026 13:56:35 +0000 Subject: [PATCH 331/376] chore(deps): Update mikepenz/action-junit-report action to v6 (#417) --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 83e591a..833b7c4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_ACTOR: ${{ github.actor }} - name: Publish Test Report - uses: mikepenz/action-junit-report@v5 + uses: mikepenz/action-junit-report@v6 if: success() || failure() # always run even if the previous step fails with: report_paths: "**/build/test-results/test/TEST-*.xml" From 4921bc67822d3e4d3f4c1742753a1156ab4fc8fb Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 4 Feb 2026 14:01:50 +0000 Subject: [PATCH 332/376] chore(deps): Update actions/checkout action to v6 (#411) Co-authored-by: Erez Rokah --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 833b7c4..2012aa1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 - uses: actions/setup-java@v5 with: distribution: "temurin" diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9b79f61..dd32dff 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 - uses: actions/setup-java@v5 with: distribution: "temurin" From 71bb5842bf29a0d6c4e4a1ba8b32e92470d67764 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 4 Feb 2026 14:07:08 +0000 Subject: [PATCH 333/376] fix(deps): Update dependency gradle to v9.3.1 (#414) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://redirect.github.com/gradle/gradle)) | patch | `9.3.0` -> `9.3.1` | --- ### Release Notes
gradle/gradle (gradle) ### [`v9.3.1`](https://redirect.github.com/gradle/gradle/releases/tag/v9.3.1): 9.3.1 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v9.3.0...v9.3.1) This is a patch release for 9.3.0. We recommend using 9.3.1 instead of 9.3.0. The following issues were resolved: - [Cannot find testcases from Android Screenshot Test plugin since Gradle 9.3.0](https://redirect.github.com/gradle/gradle/issues/36320) - [Excluding dependencies from included builds doesn't work in Gradle 9.3.0](https://redirect.github.com/gradle/gradle/issues/36331) - [ExternalDependency and DependencyConstraint cannot be passed to DependencyResolveDetails#useTarget](https://redirect.github.com/gradle/gradle/issues/36359) - [Gradle 9.3.0 generate JUnit test result files with wrong name](https://redirect.github.com/gradle/gradle/issues/36379) - [Build cache cannot handle outputs with non-BMP characters in the filename](https://redirect.github.com/gradle/gradle/issues/36387) - [Emojis in test names should not break build caching](https://redirect.github.com/gradle/gradle/issues/36395) - [Non utf-8 c code is no longer buildable](https://redirect.github.com/gradle/gradle/issues/36399) - [Breaking change in 9.3.0 regarding cross-project dependency manipulation](https://redirect.github.com/gradle/gradle/issues/36428) - [JUnit3 tests cannot be run with Gradle 9.3.0](https://redirect.github.com/gradle/gradle/issues/36451) - [Test.setScanForTestClasses(false) causes all junit4 tests to be skipped](https://redirect.github.com/gradle/gradle/issues/36508) [Read the Release Notes](https://docs.gradle.org/9.3.1/release-notes.html) #### Upgrade instructions Switch your build to use Gradle 9.3.1 by updating your wrapper: ./gradlew wrapper --gradle-version=9.3.1 && ./gradlew wrapper See the Gradle [9.x upgrade guide](https://docs.gradle.org/9.3.1/userguide/upgrading_version\_9.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/9.3.1/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 19a6bde..37f78a6 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 35f210a33602dc4dc97294fd6b19d607169260d5 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 4 Feb 2026 14:11:56 +0000 Subject: [PATCH 334/376] fix(deps): Update plugin com.diffplug.spotless to v8.2.1 (#415) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | com.diffplug.spotless | plugin | patch | `8.2.0` -> `8.2.1` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index fb29fdc..e1a949a 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -2,7 +2,7 @@ plugins { id 'java-library' id "io.freefair.lombok" version "9.2.0" id "maven-publish" - id "com.diffplug.spotless" version "8.2.0" + id "com.diffplug.spotless" version "8.2.1" } group 'io.cloudquery' From 34d559160bbff639eb3ed58c78a9a7c46c150eb0 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 4 Feb 2026 14:15:37 +0000 Subject: [PATCH 335/376] fix(deps): Update grpc-java monorepo to v1.79.0 (#416) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io.grpc:grpc-inprocess](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.78.0` -> `1.79.0` | | [io.grpc:grpc-testing](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.78.0` -> `1.79.0` | | [io.grpc:grpc-services](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.78.0` -> `1.79.0` | | [io.grpc:grpc-stub](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.78.0` -> `1.79.0` | | [io.grpc:grpc-protobuf](https://redirect.github.com/grpc/grpc-java) | dependencies | minor | `1.78.0` -> `1.79.0` | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.79.0`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.79.0) **API Changes** - core: Delete the never-used io.grpc.internal.ReadableBuffer.readBytes(ByteBuffer) ([#​12580](https://redirect.github.com/grpc/grpc-java/issues/12580)) ([`738782f`](https://redirect.github.com/grpc/grpc-java/commit/738782fb0)). This is deeply internal and not accessible, so shouldn’t impact anything. However, Apache Arrow Java [uses reflection to access private fields](https://redirect.github.com/apache/arrow-java/blob/96156ccc2bf933c75c852ca7c04418a61f87defd/flight/flight-core/src/main/java/org/apache/arrow/flight/grpc/GetReadableBuffer.java#L44-L45); [GH-939: Remove reflection for gRPC buffers](https://redirect.github.com/apache/arrow-java/pull/954) is swapping to gRPC’s public zero-copy APIs - opentelemetry: Add target attribute filter for metrics ([#​12587](https://redirect.github.com/grpc/grpc-java/issues/12587)). Introduce an optional Predicate targetAttributeFilter to control how grpc.target is recorded in OpenTelemetry client metrics. When a filter is provided, targets rejected by the predicate are normalized to "other" to reduce grpc.target metric cardinality, while accepted targets are recorded as-is. If no filter is set, existing behavior is preserved. This change adds a new Builder API on GrpcOpenTelemetry to allow applications to configure the filter.Β  **Behavior Changes** - core: Convert AutoConfiguredLB to an actual LB ([`4bbf8ee`](https://redirect.github.com/grpc/grpc-java/commit/4bbf8eee5)). This is an internal refactoring, but it does improve how errors are handled for broken binaries. Previously, not being able to load pick_first would result in a channel panic. Now it is handled as a regular load balancing error - okhttp: Assert no pending streams before transport READY ([#​12566](https://redirect.github.com/grpc/grpc-java/issues/12566)) ([`ed6d175`](https://redirect.github.com/grpc/grpc-java/commit/ed6d175fc)). No pending streams should exist when the transport transitions to READY. This PR adds an assertion to help verify this invariant. **Bug Fixes** - core: PickFirstLB should not return a subchannel during CONNECTING ([`228fc8e`](https://redirect.github.com/grpc/grpc-java/commit/228fc8ecd)). Pick-first in grpc-java has behaved this way since it was created, and it was of no consequence. However, now there are some load balancing policies (mainly RLS) that will do a pick() and hope the result to be reasonably accurate for metrics. **Improvements** - core: Improve DEADLINE_EXCEEDED message for CallCreds delays ([`ead532b`](https://redirect.github.com/grpc/grpc-java/commit/ead532b39)). Previously the error message contained β€œbuffered_nanos” and β€œwaiting_for_connection” for connection delays. However, we discovered the same strings were also used if waiting on CallCredentials. Now you’ll see details like β€œconnecting_and_lb_delay”, β€œcall_credentials_delay”, and β€œwas_still_waiting”. - opentelemetry: Add Android API checking ([`a9f73f4`](https://redirect.github.com/grpc/grpc-java/commit/a9f73f4c0)). Previously we assumed OpenTelemetry support would not be used on Android. It did happen to be compatible with Android, but since OpenTelemetry does have some Android support, we now have a check that it remains compatible - core: Catch Errors when calling complex config parsing code ([`a535ed7`](https://redirect.github.com/grpc/grpc-java/commit/a535ed799)). Error (and any other Throwable) is now caught and handled when parsing configuration (e.g., service config, xds). This will cause such failures to be handled gracefully instead of panicking the channel - core: Implement LoadBalancer.Helper.createOobChannel() with the internals of createResolvingOobChannel() ([`3915d02`](https://redirect.github.com/grpc/grpc-java/commit/3915d029c)). This API is only expected to be relevant to the gRPC-LB lookaside load balancer, and is not believed to have behavior changes. Out-of-band channel had been implemented with its own stripped-down Channel without load balancing. Reimplementing using the resolving oob channel makes it a full-fledged channel and reduces the burden when integrating new features and allows us to have a ManagedChannelBuilder to use with efforts like [gRFC A110: Child Channel Options](https://redirect.github.com/grpc/proposal/pull/529). - xds: Implement the proactive connection logic in RingHashLoadBalancer as outlined in gRFC A61 ([#​12596](https://redirect.github.com/grpc/grpc-java/issues/12596)). Previously, the Java implementation only initialized child balancers when a ring-chosen endpoint was in TRANSIENT_FAILURE during a picker's pickSubchannel call. This PR adds the missing logic: when a child balancer reports TRANSIENT_FAILURE, the LoadBalancer now proactively initializes the first available IDLE child if no other children are currently connecting or ready. This ensures a backup subchannel starts warming up immediately outside the RPC flow, reducing failover latency and improving overall resilience. This behavior was previously present but was inadvertently lost after [#​10610](https://redirect.github.com/grpc/grpc-java/pull/10610). - api: Add RFC 3986 support to DnsNameResolverProvider ([#​12602](https://redirect.github.com/grpc/grpc-java/issues/12602)) ([`f65127c`](https://redirect.github.com/grpc/grpc-java/commit/f65127cf7)) Experimental RFC 3986 target URI parsing mode (disabled by default) **New Features** - opentelemetry: Actual reason for the disconnects in subchannel metrics([`6b2f758`](https://redirect.github.com/grpc/grpc-java/commit/6b2f7580c)), completing the remaining work in [gRFC A96: OTel metrics for Subchannels](https://redirect.github.com/grpc/proposal/pull/485/files) **Dependencies**Β  - protobuf: Upgrade Bazel protobuf to 33.1 ([#​12553](https://redirect.github.com/grpc/grpc-java/issues/12553)) ([`b61a8f4`](https://redirect.github.com/grpc/grpc-java/commit/b61a8f49c)) and load java_proto_library from the protobuf repo ([`c7f3cdb`](https://redirect.github.com/grpc/grpc-java/commit/c7f3cdbc3)) - protobuf: Fix build with Bazel 9 by upgrading bazel_jar_jar and grpc-proto versions ([#​12569](https://redirect.github.com/grpc/grpc-java/issues/12569)) - Upgrade dependencies ([#​12588](https://redirect.github.com/grpc/grpc-java/issues/12588)) ([`6422092`](https://redirect.github.com/grpc/grpc-java/commit/6422092e3)) Netty to 4.1.130, error-prone annotations to 2.45.0, google-auth-library to 1.41.0, tomcat-embed-core9 to 9.0.113, tomcat-embed-core to 10.1.50, opentelemetry to 1.57.0, jetty-ee10-servlet to 12.1.5, jetty-http2-server to 12.1.5, google-cloud-logging to 3.23.9, google-auth to 1.41.0, proto-google-common-protos to 2.63.2. **Thanks to** - [@​benjaminp](https://redirect.github.com/benjaminp) - [@​becomeStar](https://redirect.github.com/becomeStar) - [@​meteorcloudy](https://redirect.github.com/meteorcloudy)
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index e1a949a..ab34b35 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -30,9 +30,9 @@ dependencies { implementation 'com.google.guava:guava:33.5.0-jre' implementation 'info.picocli:picocli:4.7.7' implementation 'com.google.guava:guava:33.5.0-jre' - implementation 'io.grpc:grpc-protobuf:1.78.0' - implementation 'io.grpc:grpc-stub:1.78.0' - implementation 'io.grpc:grpc-services:1.78.0' + implementation 'io.grpc:grpc-protobuf:1.79.0' + implementation 'io.grpc:grpc-stub:1.79.0' + implementation 'io.grpc:grpc-services:1.79.0' implementation 'io.cloudquery:plugin-pb-java:0.0.42' implementation 'org.apache.arrow:arrow-memory-core:18.3.0' implementation 'org.apache.arrow:arrow-vector:18.3.0' @@ -44,8 +44,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.25.3' implementation 'org.apache.logging.log4j:log4j-core:2.25.3' - testImplementation 'io.grpc:grpc-testing:1.78.0' - testImplementation 'io.grpc:grpc-inprocess:1.78.0' + testImplementation 'io.grpc:grpc-testing:1.79.0' + testImplementation 'io.grpc:grpc-inprocess:1.79.0' testImplementation platform('org.junit:junit-bom:6.0.2') testImplementation 'org.junit.jupiter:junit-jupiter:6.0.2' testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.2' From 95951507f9056c346c384ef826ba593a6fc76036 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 4 Feb 2026 14:19:41 +0000 Subject: [PATCH 336/376] chore(main): Release v0.0.49 (#412) :robot: I have created a release *beep* *boop* --- ## [0.0.49](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.48...v0.0.49) (2026-02-04) ### Bug Fixes * **deps:** Update dependency gradle to v9.3.0 ([#403](https://github.com/cloudquery/plugin-sdk-java/issues/403)) ([8996e95](https://github.com/cloudquery/plugin-sdk-java/commit/8996e95d65ce159f416ece647459490072a71c43)) * **deps:** Update dependency gradle to v9.3.1 ([#414](https://github.com/cloudquery/plugin-sdk-java/issues/414)) ([71bb584](https://github.com/cloudquery/plugin-sdk-java/commit/71bb5842bf29a0d6c4e4a1ba8b32e92470d67764)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.42 ([#413](https://github.com/cloudquery/plugin-sdk-java/issues/413)) ([af92a67](https://github.com/cloudquery/plugin-sdk-java/commit/af92a67d39b9d215a060c84ac2e7ec6a6ed8e3da)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v4.3.1 ([#404](https://github.com/cloudquery/plugin-sdk-java/issues/404)) ([1dedd94](https://github.com/cloudquery/plugin-sdk-java/commit/1dedd948e7c3516c8b90fd481d0037316da4fd9c)) * **deps:** Update dependency org.assertj:assertj-core to v3.27.7 ([#402](https://github.com/cloudquery/plugin-sdk-java/issues/402)) ([a616bc4](https://github.com/cloudquery/plugin-sdk-java/commit/a616bc4a0dfa0dad426a4a6f45e54ec332ead2f8)) * **deps:** Update dependency org.mockito:mockito-core to v5.21.0 ([#405](https://github.com/cloudquery/plugin-sdk-java/issues/405)) ([b43d75c](https://github.com/cloudquery/plugin-sdk-java/commit/b43d75ce21b5cf9c655994aecaadddfbf262d758)) * **deps:** Update grpc-java monorepo to v1.78.0 ([#406](https://github.com/cloudquery/plugin-sdk-java/issues/406)) ([731a8f7](https://github.com/cloudquery/plugin-sdk-java/commit/731a8f7c1dec6c2b755ff0fab65369ae90598dcc)) * **deps:** Update grpc-java monorepo to v1.79.0 ([#416](https://github.com/cloudquery/plugin-sdk-java/issues/416)) ([34d5591](https://github.com/cloudquery/plugin-sdk-java/commit/34d559160bbff639eb3ed58c78a9a7c46c150eb0)) * **deps:** Update jackson monorepo ([#407](https://github.com/cloudquery/plugin-sdk-java/issues/407)) ([5ca69de](https://github.com/cloudquery/plugin-sdk-java/commit/5ca69de1872c5540c1f2470cdff8d30ea8540160)) * **deps:** Update junit ([#408](https://github.com/cloudquery/plugin-sdk-java/issues/408)) ([5ba92df](https://github.com/cloudquery/plugin-sdk-java/commit/5ba92dfc18e12267206eb22d532163aa823aa10b)) * **deps:** Update plugin com.diffplug.spotless to v8.2.0 ([#409](https://github.com/cloudquery/plugin-sdk-java/issues/409)) ([061fc4b](https://github.com/cloudquery/plugin-sdk-java/commit/061fc4b2aa5a35296bff34c66216d679a45490cb)) * **deps:** Update plugin com.diffplug.spotless to v8.2.1 ([#415](https://github.com/cloudquery/plugin-sdk-java/issues/415)) ([35f210a](https://github.com/cloudquery/plugin-sdk-java/commit/35f210a33602dc4dc97294fd6b19d607169260d5)) * **deps:** Update plugin io.freefair.lombok to v9.2.0 ([#410](https://github.com/cloudquery/plugin-sdk-java/issues/410)) ([7e8da5b](https://github.com/cloudquery/plugin-sdk-java/commit/7e8da5b3f21d12eae26488c05f1ad36155bd0621)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 19 +++++++++++++++++++ lib/build.gradle | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 22dddff..8783afc 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.48" + ".": "0.0.49" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 05eaec0..91e0d77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## [0.0.49](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.48...v0.0.49) (2026-02-04) + + +### Bug Fixes + +* **deps:** Update dependency gradle to v9.3.0 ([#403](https://github.com/cloudquery/plugin-sdk-java/issues/403)) ([8996e95](https://github.com/cloudquery/plugin-sdk-java/commit/8996e95d65ce159f416ece647459490072a71c43)) +* **deps:** Update dependency gradle to v9.3.1 ([#414](https://github.com/cloudquery/plugin-sdk-java/issues/414)) ([71bb584](https://github.com/cloudquery/plugin-sdk-java/commit/71bb5842bf29a0d6c4e4a1ba8b32e92470d67764)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.42 ([#413](https://github.com/cloudquery/plugin-sdk-java/issues/413)) ([af92a67](https://github.com/cloudquery/plugin-sdk-java/commit/af92a67d39b9d215a060c84ac2e7ec6a6ed8e3da)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v4.3.1 ([#404](https://github.com/cloudquery/plugin-sdk-java/issues/404)) ([1dedd94](https://github.com/cloudquery/plugin-sdk-java/commit/1dedd948e7c3516c8b90fd481d0037316da4fd9c)) +* **deps:** Update dependency org.assertj:assertj-core to v3.27.7 ([#402](https://github.com/cloudquery/plugin-sdk-java/issues/402)) ([a616bc4](https://github.com/cloudquery/plugin-sdk-java/commit/a616bc4a0dfa0dad426a4a6f45e54ec332ead2f8)) +* **deps:** Update dependency org.mockito:mockito-core to v5.21.0 ([#405](https://github.com/cloudquery/plugin-sdk-java/issues/405)) ([b43d75c](https://github.com/cloudquery/plugin-sdk-java/commit/b43d75ce21b5cf9c655994aecaadddfbf262d758)) +* **deps:** Update grpc-java monorepo to v1.78.0 ([#406](https://github.com/cloudquery/plugin-sdk-java/issues/406)) ([731a8f7](https://github.com/cloudquery/plugin-sdk-java/commit/731a8f7c1dec6c2b755ff0fab65369ae90598dcc)) +* **deps:** Update grpc-java monorepo to v1.79.0 ([#416](https://github.com/cloudquery/plugin-sdk-java/issues/416)) ([34d5591](https://github.com/cloudquery/plugin-sdk-java/commit/34d559160bbff639eb3ed58c78a9a7c46c150eb0)) +* **deps:** Update jackson monorepo ([#407](https://github.com/cloudquery/plugin-sdk-java/issues/407)) ([5ca69de](https://github.com/cloudquery/plugin-sdk-java/commit/5ca69de1872c5540c1f2470cdff8d30ea8540160)) +* **deps:** Update junit ([#408](https://github.com/cloudquery/plugin-sdk-java/issues/408)) ([5ba92df](https://github.com/cloudquery/plugin-sdk-java/commit/5ba92dfc18e12267206eb22d532163aa823aa10b)) +* **deps:** Update plugin com.diffplug.spotless to v8.2.0 ([#409](https://github.com/cloudquery/plugin-sdk-java/issues/409)) ([061fc4b](https://github.com/cloudquery/plugin-sdk-java/commit/061fc4b2aa5a35296bff34c66216d679a45490cb)) +* **deps:** Update plugin com.diffplug.spotless to v8.2.1 ([#415](https://github.com/cloudquery/plugin-sdk-java/issues/415)) ([35f210a](https://github.com/cloudquery/plugin-sdk-java/commit/35f210a33602dc4dc97294fd6b19d607169260d5)) +* **deps:** Update plugin io.freefair.lombok to v9.2.0 ([#410](https://github.com/cloudquery/plugin-sdk-java/issues/410)) ([7e8da5b](https://github.com/cloudquery/plugin-sdk-java/commit/7e8da5b3f21d12eae26488c05f1ad36155bd0621)) + ## [0.0.48](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.47...v0.0.48) (2026-01-02) diff --git a/lib/build.gradle b/lib/build.gradle index ab34b35..be68d4f 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -7,7 +7,7 @@ plugins { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.48' +version = '0.0.49' // x-release-please-end repositories { From bad7db6b92c84eb846b504aa71f39ee1b9bf1d42 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Mar 2026 03:19:34 +0000 Subject: [PATCH 337/376] chore(deps): Update gradle/actions digest to 0723195 (#418) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/actions | action | digest | `49ec880` -> `0723195` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2012aa1..7495cf7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@49ec880f92204d92aac59e81f28195de48b4a7fa + uses: gradle/actions/wrapper-validation@0723195856401067f7a2779048b490ace7a47d7c - name: Build package run: ./gradlew build env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index dd32dff..fd969d4 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -20,9 +20,9 @@ jobs: java-version: "18" cache: "gradle" - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@49ec880f92204d92aac59e81f28195de48b4a7fa + uses: gradle/actions/wrapper-validation@0723195856401067f7a2779048b490ace7a47d7c - name: Setup Gradle - uses: gradle/actions/setup-gradle@49ec880f92204d92aac59e81f28195de48b4a7fa + uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c - name: Publish Package env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 61cbcdd0ba29cf290e6814d0d4f64aa731b20ef0 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Mar 2026 03:20:42 +0000 Subject: [PATCH 338/376] fix(deps): Update eclipse-temurin Docker tag to v21.0.10_7-jre (#419) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | patch | `21.0.9_10-jre` -> `21.0.10_7-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index fc18510..d0ac531 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ COPY . . RUN gradle jar --no-daemon -FROM eclipse-temurin:21.0.9_10-jre +FROM eclipse-temurin:21.0.10_7-jre COPY --from=build /code/lib/build/libs/*.jar /app/app.jar From 9e9cc74899035d5a8998bfbeda55f301b15e2e18 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Mar 2026 03:24:51 +0000 Subject: [PATCH 339/376] fix(deps): Update junit to v6.0.3 (#420) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [org.junit.jupiter:junit-jupiter-api](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | patch | `6.0.2` -> `6.0.3` | | [org.junit.jupiter:junit-jupiter](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | patch | `6.0.2` -> `6.0.3` | | [org.junit:junit-bom](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | patch | `6.0.2` -> `6.0.3` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index be68d4f..5ca5c57 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -46,9 +46,9 @@ dependencies { testImplementation 'io.grpc:grpc-testing:1.79.0' testImplementation 'io.grpc:grpc-inprocess:1.79.0' - testImplementation platform('org.junit:junit-bom:6.0.2') - testImplementation 'org.junit.jupiter:junit-jupiter:6.0.2' - testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.2' + testImplementation platform('org.junit:junit-bom:6.0.3') + testImplementation 'org.junit.jupiter:junit-jupiter:6.0.3' + testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.3' testImplementation 'org.mockito:mockito-core:5.21.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.21.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.3.1' From d78cb38268b76054c96fc8231c7854903d829f35 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Sun, 1 Mar 2026 03:28:46 +0000 Subject: [PATCH 340/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v4.4 (#421) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://redirect.github.com/jqno/equalsverifier)) | dependencies | minor | `4.3.1` -> `4.4` | `4.4.1` | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v4.4`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#441---2026-02-23) ##### Fixed - A regression where floats and doubles are checked (and throw an exception) that are static ([Issue 1183](https://redirect.github.com/jqno/equalsverifier/issues/1183)), transient ([Issue 1184](https://redirect.github.com/jqno/equalsverifier/issues/1184)) or ignored with `#withIgnoredFields()`.
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 5ca5c57..2b88f39 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -51,7 +51,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.3' testImplementation 'org.mockito:mockito-core:5.21.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.21.0' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.3.1' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.4' testImplementation 'org.assertj:assertj-core:3.27.7' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From 61bf31019ea0896ec15fa73d035149a5a517292d Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Mon, 2 Mar 2026 17:10:54 +0000 Subject: [PATCH 341/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.43 (#423) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | io.cloudquery:plugin-pb-java | `0.0.42` β†’ `0.0.43` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.cloudquery:plugin-pb-java/0.0.43?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.cloudquery:plugin-pb-java/0.0.42/0.0.43?slim=true) | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 2b88f39..41c285b 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -33,7 +33,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.79.0' implementation 'io.grpc:grpc-stub:1.79.0' implementation 'io.grpc:grpc-services:1.79.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.42' + implementation 'io.cloudquery:plugin-pb-java:0.0.43' implementation 'org.apache.arrow:arrow-memory-core:18.3.0' implementation 'org.apache.arrow:arrow-vector:18.3.0' implementation 'commons-io:commons-io:2.21.0' From f4a1e5ea26664072ba057bd80473bcd2eadaf3b2 Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 25 Mar 2026 14:28:10 +0000 Subject: [PATCH 342/376] chore(deps): Pin dependencies (#424) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://redirect.github.com/actions/checkout) | action | pinDigest | β†’ `de0fac2` | | [actions/setup-java](https://redirect.github.com/actions/setup-java) | action | pinDigest | β†’ `be666c2` | | [amannn/action-semantic-pull-request](https://redirect.github.com/amannn/action-semantic-pull-request) | action | pinDigest | β†’ `48f2562` | | [docker/setup-buildx-action](https://redirect.github.com/docker/setup-buildx-action) | action | pinDigest | β†’ `8d2750c` | | [googleapis/release-please-action](https://redirect.github.com/googleapis/release-please-action) | action | pinDigest | β†’ `16a9c90` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 6 +++--- .github/workflows/pr_title.yml | 2 +- .github/workflows/publish.yml | 4 ++-- .github/workflows/release_pr.yml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7495cf7..e258454 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,15 +16,15 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v6 - - uses: actions/setup-java@v5 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 with: distribution: "temurin" java-version: "18" cache: "gradle" - # Required for the package command tests to work name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3 - name: Validate Gradle wrapper uses: gradle/actions/wrapper-validation@0723195856401067f7a2779048b490ace7a47d7c - name: Build package diff --git a/.github/workflows/pr_title.yml b/.github/workflows/pr_title.yml index fb72636..57c7eed 100644 --- a/.github/workflows/pr_title.yml +++ b/.github/workflows/pr_title.yml @@ -17,7 +17,7 @@ jobs: steps: # Please look up the latest version from # https://github.com/amannn/action-semantic-pull-request/releases - - uses: amannn/action-semantic-pull-request@v6 + - uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index fd969d4..a1d38d5 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -13,8 +13,8 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v6 - - uses: actions/setup-java@v5 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 with: distribution: "temurin" java-version: "18" diff --git a/.github/workflows/release_pr.yml b/.github/workflows/release_pr.yml index 524d22a..c782fc3 100644 --- a/.github/workflows/release_pr.yml +++ b/.github/workflows/release_pr.yml @@ -11,7 +11,7 @@ jobs: release-please: runs-on: ubuntu-latest steps: - - uses: googleapis/release-please-action@v4 + - uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4 id: release with: token: ${{ secrets.GH_CQ_BOT }} From 26eb2ce06b76a6fd90fd20dd0e1a426e1816121c Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Wed, 25 Mar 2026 16:11:49 +0000 Subject: [PATCH 343/376] chore: Replace pull_request_target with pull_request in PR title validation (#425) Replace `pull_request_target` with `pull_request` to reduce attack surface. The semantic PR title action only reads the event payload, so elevated permissions are not needed. --- .github/workflows/pr_title.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_title.yml b/.github/workflows/pr_title.yml index 57c7eed..d052afd 100644 --- a/.github/workflows/pr_title.yml +++ b/.github/workflows/pr_title.yml @@ -1,7 +1,7 @@ name: "Validate PR title" on: - pull_request_target: + pull_request: types: - opened - edited From bc473c1492ded57184c9bc836e6d953b95183df6 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Fri, 27 Mar 2026 12:00:39 +0000 Subject: [PATCH 344/376] chore(ci): Replace GH_CQ_BOT PAT with GitHub App tokens (#426) Replace GH_CQ_BOT PAT with short-lived tokens from the cloudquery-ci GitHub App. --- .github/.kodiak.toml | 2 +- .github/workflows/release_pr.yml | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/.kodiak.toml b/.github/.kodiak.toml index a963117..f642dba 100644 --- a/.github/.kodiak.toml +++ b/.github/.kodiak.toml @@ -1,7 +1,7 @@ version = 1 [approve] -auto_approve_usernames = ["cq-bot"] +auto_approve_usernames = ["cloudquery-ci"] [merge.message] body = "pull_request_body" diff --git a/.github/workflows/release_pr.yml b/.github/workflows/release_pr.yml index c782fc3..7e7c172 100644 --- a/.github/workflows/release_pr.yml +++ b/.github/workflows/release_pr.yml @@ -11,7 +11,15 @@ jobs: release-please: runs-on: ubuntu-latest steps: + - name: Generate GitHub App token + id: app-token + uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3 + with: + app-id: ${{ secrets.CQ_APP_ID }} + private-key: ${{ secrets.CQ_APP_PRIVATE_KEY }} + permission-contents: write + permission-pull-requests: write - uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4 id: release with: - token: ${{ secrets.GH_CQ_BOT }} + token: ${{ steps.app-token.outputs.token }} From 348d4f2c3fccc69227f2f79ff1eabdad4f4cc758 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 01:04:53 +0000 Subject: [PATCH 345/376] fix(deps): Pin dependencies (#428) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---|---|---| | [mikepenz/action-junit-report](https://redirect.github.com/mikepenz/action-junit-report) | action | pinDigest | β†’ `bccf2e3` | | | | [org.mockito:mockito-junit-jupiter](https://redirect.github.com/mockito/mockito) | dependencies | minor | `5.21.0` β†’ `5.23.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.mockito:mockito-junit-jupiter/5.23.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.mockito:mockito-junit-jupiter/5.21.0/5.23.0?slim=true) | --- ### Release Notes
mockito/mockito (org.mockito:mockito-junit-jupiter) ### [`v5.23.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.23.0) #### NOTE: Breaking change for Android The `mockito-android` artifact has a breaking change: tests now require a device or emulator based on API 28+ (Android P). This is to enable new support for mocking Kotlin classes. See [#​3788](https://redirect.github.com/mockito/mockito/issues/3788) for more details. *** *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.23.0 - 2026-03-11 - [6 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.22.0...v5.23.0) by Brice Dutheil, Joshua Selbo, Philippe Kernevez - Replace mockito-android mock maker implementation with dexmaker-mockito-inline [(#​3792)](https://redirect.github.com/mockito/mockito/pull/3792) - Fix StackOverflowError with AbstractList after using mockSingleton [(#​3790)](https://redirect.github.com/mockito/mockito/pull/3790) - Mark parameters of `Mockito.when` `@Nullable` [(#​3503)](https://redirect.github.com/mockito/mockito/issues/3503) ### [`v5.22.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.22.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.22.0 - 2026-02-27 - [6 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.21.0...v5.22.0) by Joshua Selbo, NiMv1, Rafael Winterhalter, dependabot\[bot], eunbin son - Avoid mocking of internal static utilities [(#​3785)](https://redirect.github.com/mockito/mockito/pull/3785) - Bump graalvm/setup-graalvm from 1.4.4 to 1.4.5 [(#​3780)](https://redirect.github.com/mockito/mockito/pull/3780) - Static mocking of UUID.class corrupted under JDK 25 [(#​3778)](https://redirect.github.com/mockito/mockito/issues/3778) - Bump actions/upload-artifact from 5 to 6 [(#​3774)](https://redirect.github.com/mockito/mockito/pull/3774) - docs: clarify RETURNS\_MOCKS behavior with sealed abstract enums (Java 15+) [(#​3773)](https://redirect.github.com/mockito/mockito/pull/3773) - Add tests for Sets utility class [(#​3771)](https://redirect.github.com/mockito/mockito/pull/3771) - Add core API to enable Kotlin singleton mocking [(#​3762)](https://redirect.github.com/mockito/mockito/pull/3762) - Stubbing Kotlin `object` singletons [(#​3652)](https://redirect.github.com/mockito/mockito/issues/3652) - Incorrect documentation for RETURNS\_MOCKS [(#​3285)](https://redirect.github.com/mockito/mockito/issues/3285)
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- lib/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e258454..25775ce 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_ACTOR: ${{ github.actor }} - name: Publish Test Report - uses: mikepenz/action-junit-report@v6 + uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6 if: success() || failure() # always run even if the previous step fails with: report_paths: "**/build/test-results/test/TEST-*.xml" diff --git a/lib/build.gradle b/lib/build.gradle index 41c285b..92fbaf5 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -50,7 +50,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter:6.0.3' testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.3' testImplementation 'org.mockito:mockito-core:5.21.0' - testImplementation 'org.mockito:mockito-junit-jupiter:5.21.0' + testImplementation 'org.mockito:mockito-junit-jupiter:5.23.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.4' testImplementation 'org.assertj:assertj-core:3.27.7' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From f5c25b24766587d3379ee863ec3fbe1378aeb393 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 01:11:14 +0000 Subject: [PATCH 346/376] chore(deps): Update gradle/actions digest to 263d8fe (#429) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | gradle/actions | action | digest | `0723195` β†’ `263d8fe` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 25775ce..995a7ed 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: name: Set up Docker Buildx uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3 - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@0723195856401067f7a2779048b490ace7a47d7c + uses: gradle/actions/wrapper-validation@263d8fe18eb54ae581bcdc2e263c5a49173958a3 - name: Build package run: ./gradlew build env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a1d38d5..325a987 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -20,9 +20,9 @@ jobs: java-version: "18" cache: "gradle" - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@0723195856401067f7a2779048b490ace7a47d7c + uses: gradle/actions/wrapper-validation@263d8fe18eb54ae581bcdc2e263c5a49173958a3 - name: Setup Gradle - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c + uses: gradle/actions/setup-gradle@263d8fe18eb54ae581bcdc2e263c5a49173958a3 - name: Publish Package env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 9700fdbc18b813546c08ef4e38518c942ae98032 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 01:15:00 +0000 Subject: [PATCH 347/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-core to v2.21.2 (#430) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-core](https://redirect.github.com/FasterXML/jackson-core) | `2.21.0` β†’ `2.21.2` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.fasterxml.jackson.core:jackson-core/2.21.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.fasterxml.jackson.core:jackson-core/2.21.0/2.21.2?slim=true) | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 92fbaf5..2095272 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation 'org.apache.arrow:arrow-vector:18.3.0' implementation 'commons-io:commons-io:2.21.0' - implementation "com.fasterxml.jackson.core:jackson-core:2.21.0" + implementation "com.fasterxml.jackson.core:jackson-core:2.21.2" implementation "com.fasterxml.jackson.core:jackson-annotations:2.21" implementation 'org.apache.logging.log4j:log4j-api:2.25.3' From 55f1c17af681c5e47c7fc5ff4d06743e1b29f133 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 01:18:41 +0000 Subject: [PATCH 348/376] fix(deps): Update Gradle to v9.4.1 (#433) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://redirect.github.com/gradle/gradle)) | minor | `9.3.1` β†’ `9.4.1` | --- ### Release Notes
gradle/gradle (gradle) ### [`v9.4.1`](https://redirect.github.com/gradle/gradle/releases/tag/v9.4.1): 9.4.1 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v9.4.0...v9.4.1) The Gradle team is excited to announce Gradle 9.4.1. Here are the highlights of this release: - Java 26 support - Non-class-based JVM tests - Enhanced console progress bar [Read the Release Notes](https://docs.gradle.org/9.4.1/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [akankshaa-00](https://redirect.github.com/akankshaa-00), [Attila Kelemen](https://redirect.github.com/kelemen), [Bjârn Kautler](https://redirect.github.com/Vampire), [dblood](https://redirect.github.com/dblood), [Dennis Rieks](https://redirect.github.com/drieks), [duvvuvenkataramana](https://redirect.github.com/duvvuvenkataramana), [John Burns](https://redirect.github.com/wakingrufus), [Julian](https://redirect.github.com/Julianw03), [kevinstembridge](https://redirect.github.com/kevinstembridge), [Niels Doucet](https://redirect.github.com/NielsDoucet), [Philip Wedemann](https://redirect.github.com/hfhbd), [ploober](https://redirect.github.com/ploober), [Richard Hernandez](https://redirect.github.com/rhernandez35), [Roberto Perez Alcolea](https://redirect.github.com/rpalcolea), [Sebastian Lâvdahl](https://redirect.github.com/slovdahl), [stephan2405](https://redirect.github.com/stephan2405), [Stephane Landelle](https://redirect.github.com/slandelle), [Ujwal Suresh Vanjare](https://redirect.github.com/usv240), [Victor Merkulov](https://redirect.github.com/urdak), [Vincent Potuček](https://redirect.github.com/Pankraz76), [Vladimir Sitnikov](https://redirect.github.com/vlsi). #### Upgrade instructions Switch your build to use Gradle 9.4.1 by updating your wrapper: ``` ./gradlew wrapper --gradle-version=9.4.1 && ./gradlew wrapper ``` See the Gradle [9.x upgrade guide](https://docs.gradle.org/9.4.1/userguide/upgrading_version_9.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/9.4.1/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle). ### [`v9.4.0`](https://redirect.github.com/gradle/gradle/releases/tag/v9.4.0): 9.4.0 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v9.3.1...v9.4.0) The Gradle team is excited to announce Gradle 9.4.0. Here are the highlights of this release: - Java 26 support - Non-class-based JVM tests - Enhanced console progress bar [Read the Release Notes](https://docs.gradle.org/9.4.0/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [akankshaa-00](https://redirect.github.com/akankshaa-00), [Attila Kelemen](https://redirect.github.com/kelemen), [Bjârn Kautler](https://redirect.github.com/Vampire), [dblood](https://redirect.github.com/dblood), [Dennis Rieks](https://redirect.github.com/drieks), [duvvuvenkataramana](https://redirect.github.com/duvvuvenkataramana), [John Burns](https://redirect.github.com/wakingrufus), [Julian](https://redirect.github.com/Julianw03), [kevinstembridge](https://redirect.github.com/kevinstembridge), [Niels Doucet](https://redirect.github.com/NielsDoucet), [Philip Wedemann](https://redirect.github.com/hfhbd), [ploober](https://redirect.github.com/ploober), [Richard Hernandez](https://redirect.github.com/rhernandez35), [Roberto Perez Alcolea](https://redirect.github.com/rpalcolea), [Sebastian Lâvdahl](https://redirect.github.com/slovdahl), [stephan2405](https://redirect.github.com/stephan2405), [Stephane Landelle](https://redirect.github.com/slandelle), [Ujwal Suresh Vanjare](https://redirect.github.com/usv240), [Victor Merkulov](https://redirect.github.com/urdak), [Vincent Potuček](https://redirect.github.com/Pankraz76), [Vladimir Sitnikov](https://redirect.github.com/vlsi). #### Upgrade instructions Switch your build to use Gradle 9.4.0 by updating your wrapper: ``` ./gradlew wrapper --gradle-version=9.4.0 && ./gradlew wrapper ``` See the Gradle [9.x upgrade guide](https://docs.gradle.org/9.4.0/userguide/upgrading_version_9.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/9.4.0/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle).
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 37f78a6..c61a118 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 9a20a3e5690ef1a276d1d2c49b43615c13a60ef3 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 01:22:40 +0000 Subject: [PATCH 349/376] fix(deps): Update grpc-java monorepo to v1.80.0 (#434) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [io.grpc:grpc-inprocess](https://redirect.github.com/grpc/grpc-java) | `1.79.0` β†’ `1.80.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.grpc:grpc-inprocess/1.80.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.grpc:grpc-inprocess/1.79.0/1.80.0?slim=true) | | [io.grpc:grpc-testing](https://redirect.github.com/grpc/grpc-java) | `1.79.0` β†’ `1.80.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.grpc:grpc-testing/1.80.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.grpc:grpc-testing/1.79.0/1.80.0?slim=true) | | [io.grpc:grpc-services](https://redirect.github.com/grpc/grpc-java) | `1.79.0` β†’ `1.80.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.grpc:grpc-services/1.80.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.grpc:grpc-services/1.79.0/1.80.0?slim=true) | | [io.grpc:grpc-stub](https://redirect.github.com/grpc/grpc-java) | `1.79.0` β†’ `1.80.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.grpc:grpc-stub/1.80.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.grpc:grpc-stub/1.79.0/1.80.0?slim=true) | | [io.grpc:grpc-protobuf](https://redirect.github.com/grpc/grpc-java) | `1.79.0` β†’ `1.80.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.grpc:grpc-protobuf/1.80.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.grpc:grpc-protobuf/1.79.0/1.80.0?slim=true) | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.80.0`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.80.0) **API Changes** - core: Added PickResult.copyWithSubchannel() and PickResult.copyWithStreamTracerFactory() to simplify updating PickResult while preserving metadata. Load balancing policies should now ensure ForwardingSubchannel decorators are unwrapped before being returned in a pick result. ([#​12658](https://redirect.github.com/grpc/grpc-java/issues/12658)) ([`eae16b2`](https://redirect.github.com/grpc/grpc-java/commit/eae16b251)) **Bug Fixes** - core: Fixed the retry backoff jitter range to \[0.8, 1.2] to align with the gRPC A6 specification. Retries will now occur more consistently around the calculated backoff interval. ([#​12639](https://redirect.github.com/grpc/grpc-java/issues/12639)) ([`024fdd0`](https://redirect.github.com/grpc/grpc-java/commit/024fdd0ea)) core: Fixed a race condition in RetriableStream where inFlightSubStreams counting could become inconsistent during concurrent retry and deadline events. This ensures that client calls (such as blockingUnaryCall) do not hang indefinitely and correctly receive a close signal. ([#​12649](https://redirect.github.com/grpc/grpc-java/issues/12649)) ([`73abb48`](https://redirect.github.com/grpc/grpc-java/commit/73abb4854)) **Improvements** - api: Trigger R8's ServiceLoader optimization to reduce necessary configuration when using R8 Full Mode ([`470219f`](https://redirect.github.com/grpc/grpc-java/commit/470219f9c)). This allows gRPC to avoid reflection, and the need to specify -keeps for various class’s constructors. Upgrade to protobuf 33.4 ([#​12615](https://redirect.github.com/grpc/grpc-java/issues/12615)) ([`50c18f1`](https://redirect.github.com/grpc/grpc-java/commit/50c18f183)) - cronet: Introduced CRONET\_READ\_BUFFER\_SIZE\_KEY to allow customizing the read buffer size per-stream via CallOptions. Increasing the buffer size from the 4KB default can significantly improve performance for large messages by reducing JNI and context-switching overhead. ([`31fdb6c`](https://redirect.github.com/grpc/grpc-java/commit/31fdb6c22)) - api: Moved FlagResetRule to api/testFixtures and updated ManagedChannelRegistry to honor the GRPC\_ENABLE\_RFC3986\_URIS feature flag. This ensures that target parsing is consistent across the library when the new URI parser is enabled. ([#​12608](https://redirect.github.com/grpc/grpc-java/issues/12608)) - api: Updated NameResolverRegistry to natively support io.grpc.Uri. This is a foundational change that allows gRPC's name resolution system to handle URIs parsed with the new RFC 3986-compliant parser, ensuring more robust target handling. ([#​12609](https://redirect.github.com/grpc/grpc-java/issues/12609)) ([`9903488`](https://redirect.github.com/grpc/grpc-java/commit/990348876)) - xds: Removed the GRPC\_EXPERIMENTAL\_XDS\_SNI feature flag. SNI determination via xDS is now always enabled and follows gRFC A101, where SNI is derived from xDS configurations like auto\_host\_sni or UpstreamTlsContext.sni. This ensures that no SNI is sent if not explicitly configured, unless the legacy channel authority fallback is enabled. ([#​12625](https://redirect.github.com/grpc/grpc-java/issues/12625)) ([`ac44e96`](https://redirect.github.com/grpc/grpc-java/commit/ac44e9681)) **New Features** - core: pick\_first shuffling now a weighted shuffle and observes weights from EDS ([`34dd290`](https://redirect.github.com/grpc/grpc-java/commit/34dd29042)). This finishes the [gRFC A113 pick\_first: Weighted Random Shuffling](https://redirect.github.com/grpc/proposal/blob/master/A113-pick-first-weighted-shuffling.md) support - netty: Added RFC 3986 support to the unix: name resolver. This enables proper parsing of Unix domain socket URIs, including correct handling of query and fragment components in both hierarchical (e.g., unix:///path) and opaque (e.g., unix:/path) formats. ([#​12659](https://redirect.github.com/grpc/grpc-java/issues/12659)) **Thanks to** - [@​becomeStar](https://redirect.github.com/becomeStar) - [@​aymanm-google](https://redirect.github.com/aymanm-google) - [@​PetitBaguette](https://redirect.github.com/PetitBaguette) - [@​stagegrowth](https://redirect.github.com/stagegrowth) - [@​wcchoi](https://redirect.github.com/wcchoi) - [@​Gyuhyeok99](https://redirect.github.com/Gyuhyeok99)
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 2095272..bde82e4 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -30,9 +30,9 @@ dependencies { implementation 'com.google.guava:guava:33.5.0-jre' implementation 'info.picocli:picocli:4.7.7' implementation 'com.google.guava:guava:33.5.0-jre' - implementation 'io.grpc:grpc-protobuf:1.79.0' - implementation 'io.grpc:grpc-stub:1.79.0' - implementation 'io.grpc:grpc-services:1.79.0' + implementation 'io.grpc:grpc-protobuf:1.80.0' + implementation 'io.grpc:grpc-stub:1.80.0' + implementation 'io.grpc:grpc-services:1.80.0' implementation 'io.cloudquery:plugin-pb-java:0.0.43' implementation 'org.apache.arrow:arrow-memory-core:18.3.0' implementation 'org.apache.arrow:arrow-vector:18.3.0' @@ -44,8 +44,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.25.3' implementation 'org.apache.logging.log4j:log4j-core:2.25.3' - testImplementation 'io.grpc:grpc-testing:1.79.0' - testImplementation 'io.grpc:grpc-inprocess:1.79.0' + testImplementation 'io.grpc:grpc-testing:1.80.0' + testImplementation 'io.grpc:grpc-inprocess:1.80.0' testImplementation platform('org.junit:junit-bom:6.0.3') testImplementation 'org.junit.jupiter:junit-jupiter:6.0.3' testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.3' From cd2fc4f0d67fe6f147607dd6f1736e1714d850b9 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 01:25:59 +0000 Subject: [PATCH 350/376] fix(deps): Update plugin com.diffplug.spotless to v8.4.0 (#435) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | com.diffplug.spotless | `8.2.1` β†’ `8.4.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.diffplug.spotless:com.diffplug.spotless.gradle.plugin/8.4.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.diffplug.spotless:com.diffplug.spotless.gradle.plugin/8.2.1/8.4.0?slim=true) | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index bde82e4..1a03332 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -2,7 +2,7 @@ plugins { id 'java-library' id "io.freefair.lombok" version "9.2.0" id "maven-publish" - id "com.diffplug.spotless" version "8.2.1" + id "com.diffplug.spotless" version "8.4.0" } group 'io.cloudquery' From 591794424c8415598b932f205e7b4bc03b756ed8 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 03:30:19 +0000 Subject: [PATCH 351/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v4.4.1 (#431) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://redirect.github.com/jqno/equalsverifier)) | `4.4` β†’ `4.4.1` | ![age](https://developer.mend.io/api/mc/badges/age/maven/nl.jqno.equalsverifier:equalsverifier/4.4.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/nl.jqno.equalsverifier:equalsverifier/4.4/4.4.1?slim=true) | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v4.4.1`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#441---2026-02-23) ##### Fixed - A regression where floats and doubles are checked (and throw an exception) that are static ([Issue 1183](https://redirect.github.com/jqno/equalsverifier/issues/1183)), transient ([Issue 1184](https://redirect.github.com/jqno/equalsverifier/issues/1184)) or ignored with `#withIgnoredFields()`.
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 1a03332..c181eee 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -51,7 +51,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.3' testImplementation 'org.mockito:mockito-core:5.21.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.23.0' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.4' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.4.1' testImplementation 'org.assertj:assertj-core:3.27.7' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From 24da58803bcab2addd875b6542c60e808b3b0588 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 03:34:53 +0000 Subject: [PATCH 352/376] fix(deps): Update dependency org.mockito:mockito-core to v5.23.0 (#432) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.mockito:mockito-core](https://redirect.github.com/mockito/mockito) | `5.21.0` β†’ `5.23.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.mockito:mockito-core/5.23.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.mockito:mockito-core/5.21.0/5.23.0?slim=true) | --- ### Release Notes
mockito/mockito (org.mockito:mockito-core) ### [`v5.23.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.23.0) #### NOTE: Breaking change for Android The `mockito-android` artifact has a breaking change: tests now require a device or emulator based on API 28+ (Android P). This is to enable new support for mocking Kotlin classes. See [#​3788](https://redirect.github.com/mockito/mockito/issues/3788) for more details. *** *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.23.0 - 2026-03-11 - [6 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.22.0...v5.23.0) by Brice Dutheil, Joshua Selbo, Philippe Kernevez - Replace mockito-android mock maker implementation with dexmaker-mockito-inline [(#​3792)](https://redirect.github.com/mockito/mockito/pull/3792) - Fix StackOverflowError with AbstractList after using mockSingleton [(#​3790)](https://redirect.github.com/mockito/mockito/pull/3790) - Mark parameters of `Mockito.when` `@Nullable` [(#​3503)](https://redirect.github.com/mockito/mockito/issues/3503) ### [`v5.22.0`](https://redirect.github.com/mockito/mockito/releases/tag/v5.22.0) *Changelog generated by [Shipkit Changelog Gradle Plugin](https://redirect.github.com/shipkit/shipkit-changelog)* ##### 5.22.0 - 2026-02-27 - [6 commit(s)](https://redirect.github.com/mockito/mockito/compare/v5.21.0...v5.22.0) by Joshua Selbo, NiMv1, Rafael Winterhalter, dependabot\[bot], eunbin son - Avoid mocking of internal static utilities [(#​3785)](https://redirect.github.com/mockito/mockito/pull/3785) - Bump graalvm/setup-graalvm from 1.4.4 to 1.4.5 [(#​3780)](https://redirect.github.com/mockito/mockito/pull/3780) - Static mocking of UUID.class corrupted under JDK 25 [(#​3778)](https://redirect.github.com/mockito/mockito/issues/3778) - Bump actions/upload-artifact from 5 to 6 [(#​3774)](https://redirect.github.com/mockito/mockito/pull/3774) - docs: clarify RETURNS\_MOCKS behavior with sealed abstract enums (Java 15+) [(#​3773)](https://redirect.github.com/mockito/mockito/pull/3773) - Add tests for Sets utility class [(#​3771)](https://redirect.github.com/mockito/mockito/pull/3771) - Add core API to enable Kotlin singleton mocking [(#​3762)](https://redirect.github.com/mockito/mockito/pull/3762) - Stubbing Kotlin `object` singletons [(#​3652)](https://redirect.github.com/mockito/mockito/issues/3652) - Incorrect documentation for RETURNS\_MOCKS [(#​3285)](https://redirect.github.com/mockito/mockito/issues/3285)
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index c181eee..8332789 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -49,7 +49,7 @@ dependencies { testImplementation platform('org.junit:junit-bom:6.0.3') testImplementation 'org.junit.jupiter:junit-jupiter:6.0.3' testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.3' - testImplementation 'org.mockito:mockito-core:5.21.0' + testImplementation 'org.mockito:mockito-core:5.23.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.23.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.4.1' testImplementation 'org.assertj:assertj-core:3.27.7' From 15246c68ad36e41c5eda49e1c9c961ca24a0f44e Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 08:43:04 +0000 Subject: [PATCH 353/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.44 (#441) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | io.cloudquery:plugin-pb-java | `0.0.43` β†’ `0.0.44` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.cloudquery:plugin-pb-java/0.0.44?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.cloudquery:plugin-pb-java/0.0.43/0.0.44?slim=true) | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 8332789..c273e46 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -33,7 +33,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.80.0' implementation 'io.grpc:grpc-stub:1.80.0' implementation 'io.grpc:grpc-services:1.80.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.43' + implementation 'io.cloudquery:plugin-pb-java:0.0.44' implementation 'org.apache.arrow:arrow-memory-core:18.3.0' implementation 'org.apache.arrow:arrow-vector:18.3.0' implementation 'commons-io:commons-io:2.21.0' From ddbfd8fcf8ec24ff454658aa406c4dc41b747e24 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 14:46:34 +0100 Subject: [PATCH 354/376] chore(deps): Update docker/setup-buildx-action action to v4 (#436) Co-authored-by: cloudquery-ci[bot] <271027272+cloudquery-ci[bot]@users.noreply.github.com> Co-authored-by: Erez Rokah --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 995a7ed..7097213 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,7 +24,7 @@ jobs: cache: "gradle" - # Required for the package command tests to work name: Set up Docker Buildx - uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3 + uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4 - name: Validate Gradle wrapper uses: gradle/actions/wrapper-validation@263d8fe18eb54ae581bcdc2e263c5a49173958a3 - name: Build package From c02cbd78d72a840736216231e731f5fc7f81e3f8 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 13:51:01 +0000 Subject: [PATCH 355/376] fix(deps): Update dependency org.apache.arrow:arrow-memory-core to v19 (#437) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.apache.arrow:arrow-memory-core](https://arrow.apache.org/) ([source](https://redirect.github.com/apache/arrow-java)) | `18.3.0` β†’ `19.0.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.arrow:arrow-memory-core/19.0.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.arrow:arrow-memory-core/18.3.0/19.0.0?slim=true) | --- ### Release Notes
apache/arrow-java (org.apache.arrow:arrow-memory-core) ### [`v19.0.0`](https://redirect.github.com/apache/arrow-java/releases/tag/v19.0.0): Apache Arrow Java 19.0.0 #### What's Changed ##### Breaking Changes - [GH-774](https://redirect.github.com/apache/arrow-java/issues/774): Consoliate `BitVectorHelper.getValidityBufferSize` and `BaseValueVector.getValidityBufferSizeFromCount` by [@​rtadepalli](https://redirect.github.com/rtadepalli) in [#​775](https://redirect.github.com/apache/arrow-java/pull/775) - [GH-586](https://redirect.github.com/apache/arrow-java/issues/586): Override fixedSizeBinary method for UnionMapWriter by [@​axreldable](https://redirect.github.com/axreldable) in [#​885](https://redirect.github.com/apache/arrow-java/pull/885) - [GH-891](https://redirect.github.com/apache/arrow-java/issues/891): Add ExtensionTypeWriterFactory to TransferPair by [@​jhrotko](https://redirect.github.com/jhrotko) in [#​892](https://redirect.github.com/apache/arrow-java/pull/892) - [GH-948](https://redirect.github.com/apache/arrow-java/issues/948): Use buffer indexing for UUID vector by [@​jhrotko](https://redirect.github.com/jhrotko) in [#​949](https://redirect.github.com/apache/arrow-java/pull/949) - [GH-139](https://redirect.github.com/apache/arrow-java/issues/139): \[Flight] Stop return null from MetadataAdapter.getAll(String) and getAllByte(String) by [@​axreldable](https://redirect.github.com/axreldable) in [#​1016](https://redirect.github.com/apache/arrow-java/pull/1016) ##### New Features and Enhancements - [GH-52](https://redirect.github.com/apache/arrow-java/issues/52): Make RangeEqualsVisitor of RunEndEncodedVector more efficient by [@​ViggoC](https://redirect.github.com/ViggoC) in [#​761](https://redirect.github.com/apache/arrow-java/pull/761) - [GH-765](https://redirect.github.com/apache/arrow-java/issues/765): Do not close/free imported BaseStruct objects by [@​pepijnve](https://redirect.github.com/pepijnve) in [#​766](https://redirect.github.com/apache/arrow-java/pull/766) - [GH-79](https://redirect.github.com/apache/arrow-java/issues/79): Move `splitAndTransferValidityBuffer` to `BaseValueVector` by [@​rtadepalli](https://redirect.github.com/rtadepalli) in [#​777](https://redirect.github.com/apache/arrow-java/pull/777) - [GH-731](https://redirect.github.com/apache/arrow-java/issues/731): Avro adapter, output dictionary-encoded fields as enums by [@​martin-traverse](https://redirect.github.com/martin-traverse) in [#​779](https://redirect.github.com/apache/arrow-java/pull/779) - [GH-725](https://redirect.github.com/apache/arrow-java/issues/725): Added ExtensionReader by [@​xxlaykxx](https://redirect.github.com/xxlaykxx) in [#​726](https://redirect.github.com/apache/arrow-java/pull/726) - [GH-882](https://redirect.github.com/apache/arrow-java/issues/882): Add support for loading native library from a user specified location by [@​pepijnve](https://redirect.github.com/pepijnve) in [#​883](https://redirect.github.com/apache/arrow-java/pull/883) - [GH-109](https://redirect.github.com/apache/arrow-java/issues/109): Implement Vector Validators for StringView by [@​ViggoC](https://redirect.github.com/ViggoC) in [#​886](https://redirect.github.com/apache/arrow-java/pull/886) - [GH-900](https://redirect.github.com/apache/arrow-java/issues/900): Fix gandiva groupId in arrow-bom by [@​XN137](https://redirect.github.com/XN137) in [#​901](https://redirect.github.com/apache/arrow-java/pull/901) - [GH-762](https://redirect.github.com/apache/arrow-java/issues/762): Implement VectorAppender for RunEndEncodedVector by [@​ViggoC](https://redirect.github.com/ViggoC) in [#​884](https://redirect.github.com/apache/arrow-java/pull/884) - [GH-825](https://redirect.github.com/apache/arrow-java/issues/825): Add UUID canonical extension type by [@​jhrotko](https://redirect.github.com/jhrotko) in [#​903](https://redirect.github.com/apache/arrow-java/pull/903) - [GH-110](https://redirect.github.com/apache/arrow-java/issues/110): Flight SQL JDBC related StringView components implementation by [@​ViggoC](https://redirect.github.com/ViggoC) in [#​905](https://redirect.github.com/apache/arrow-java/pull/905) - [GH-863](https://redirect.github.com/apache/arrow-java/issues/863): \[JDBC] Suppress benign exceptions from gRPC layer on ArrowFlightSqlClientHandler#close by [@​ennuite](https://redirect.github.com/ennuite) in [#​910](https://redirect.github.com/apache/arrow-java/pull/910) - [GH-929](https://redirect.github.com/apache/arrow-java/issues/929): Add UUID support in JDBC driver by [@​xborder](https://redirect.github.com/xborder) in [#​930](https://redirect.github.com/apache/arrow-java/pull/930) - [GH-952](https://redirect.github.com/apache/arrow-java/issues/952): Add OAuth support by [@​xborder](https://redirect.github.com/xborder) in [#​953](https://redirect.github.com/apache/arrow-java/pull/953) - [GH-946](https://redirect.github.com/apache/arrow-java/issues/946): Add Variant extension type support by [@​tmater](https://redirect.github.com/tmater) in [#​947](https://redirect.github.com/apache/arrow-java/pull/947) - [GH-130](https://redirect.github.com/apache/arrow-java/issues/130): Fix AutoCloseables to work with [@​Nullable](https://redirect.github.com/Nullable) structures by [@​axreldable](https://redirect.github.com/axreldable) in [#​1017](https://redirect.github.com/apache/arrow-java/pull/1017) - [GH-1038](https://redirect.github.com/apache/arrow-java/issues/1038): Trim object memory for ArrowBuf by [@​lriggs](https://redirect.github.com/lriggs) in [#​1044](https://redirect.github.com/apache/arrow-java/pull/1044) - [GH-1061](https://redirect.github.com/apache/arrow-java/issues/1061): Add codegen classifier jar for arrow-vector. by [@​lriggs](https://redirect.github.com/lriggs) in [#​1062](https://redirect.github.com/apache/arrow-java/pull/1062) - [GH-301](https://redirect.github.com/apache/arrow-java/issues/301): \[Vector] Allow adding a vector at the end of VectorSchemaRoot by [@​axreldable](https://redirect.github.com/axreldable) in [#​1013](https://redirect.github.com/apache/arrow-java/pull/1013) - [GH-552](https://redirect.github.com/apache/arrow-java/issues/552): \[Vector] Add absent methods to the UnionFixedSizeListWriter by [@​axreldable](https://redirect.github.com/axreldable) in [#​1052](https://redirect.github.com/apache/arrow-java/pull/1052) ##### Bug Fixes - MINOR: add missing SOURCE\_DIR in dev/release/release.sh by [@​wgtmac](https://redirect.github.com/wgtmac) in [#​755](https://redirect.github.com/apache/arrow-java/pull/755) - MINOR: Empty stream double check by [@​adampolomski](https://redirect.github.com/adampolomski) in [#​742](https://redirect.github.com/apache/arrow-java/pull/742) - [GH-759](https://redirect.github.com/apache/arrow-java/issues/759): Get length of byte\[] in TryCopyLastError by [@​hnwyllmm](https://redirect.github.com/hnwyllmm) in [#​760](https://redirect.github.com/apache/arrow-java/pull/760) - [GH-899](https://redirect.github.com/apache/arrow-java/issues/899): \[Dataset] Initialize compute module by [@​lidavidm](https://redirect.github.com/lidavidm) in [#​893](https://redirect.github.com/apache/arrow-java/pull/893) - [GH-399](https://redirect.github.com/apache/arrow-java/issues/399): Check for null writers in DenseUnionWriter#setPosition by [@​Kaustav-Sarkar](https://redirect.github.com/Kaustav-Sarkar) in [#​938](https://redirect.github.com/apache/arrow-java/pull/938) - [GH-942](https://redirect.github.com/apache/arrow-java/issues/942): Fix JDBC Connection.setCatalog() by [@​eickler](https://redirect.github.com/eickler) in [#​943](https://redirect.github.com/apache/arrow-java/pull/943) - [GH-951](https://redirect.github.com/apache/arrow-java/issues/951): Fix CI completely, especially JNI on Windows 2022 and MacOS platforms by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​925](https://redirect.github.com/apache/arrow-java/pull/925) - MINOR: Add private constructor to UuidType singleton by [@​tmater](https://redirect.github.com/tmater) in [#​945](https://redirect.github.com/apache/arrow-java/pull/945) - [GH-964](https://redirect.github.com/apache/arrow-java/issues/964): Fix IndexOutOfBoundsException in Array.getResultSet() for JDBC clients by [@​xborder](https://redirect.github.com/xborder) in [#​965](https://redirect.github.com/apache/arrow-java/pull/965) - [GH-932](https://redirect.github.com/apache/arrow-java/issues/932): \[JDBC] Fix memory leak on Connection#close due to unclosed Statement(s) by [@​ennuite](https://redirect.github.com/ennuite) in [#​933](https://redirect.github.com/apache/arrow-java/pull/933) - [GH-125](https://redirect.github.com/apache/arrow-java/issues/125): Allow null timestamp holder sans timezone by [@​Kaustav-Sarkar](https://redirect.github.com/Kaustav-Sarkar) in [#​941](https://redirect.github.com/apache/arrow-java/pull/941) - [GH-343](https://redirect.github.com/apache/arrow-java/issues/343): Fix ListVector offset buffer not properly serialized for nested empty arrays by [@​Yicong-Huang](https://redirect.github.com/Yicong-Huang) in [#​967](https://redirect.github.com/apache/arrow-java/pull/967) - [GH-990](https://redirect.github.com/apache/arrow-java/issues/990): \[JDBC] Fix memory leak on Connection#close due to unclosed ResultSet(s) by [@​ennuite](https://redirect.github.com/ennuite) in [#​991](https://redirect.github.com/apache/arrow-java/pull/991) - [GH-993](https://redirect.github.com/apache/arrow-java/issues/993): Fix missing pipe in milestone assignment script by [@​tmater](https://redirect.github.com/tmater) in [#​992](https://redirect.github.com/apache/arrow-java/pull/992) - [GH-470](https://redirect.github.com/apache/arrow-java/issues/470): \[Vector] Fix ListViewVector.getElementEndIndex(index) method by [@​axreldable](https://redirect.github.com/axreldable) in [#​1019](https://redirect.github.com/apache/arrow-java/pull/1019) - [GH-1007](https://redirect.github.com/apache/arrow-java/issues/1007): fix: does not break class loading if direct buffer allocator is not available by [@​torito](https://redirect.github.com/torito) in [#​1008](https://redirect.github.com/apache/arrow-java/pull/1008) - [GH-994](https://redirect.github.com/apache/arrow-java/issues/994): Fix DatabaseMetaData NPEs when SqlInfo is unavailable by [@​ennuite](https://redirect.github.com/ennuite) in [#​995](https://redirect.github.com/apache/arrow-java/pull/995) - [GH-1004](https://redirect.github.com/apache/arrow-java/issues/1004): \[JDBC] Fix NPE in ArrowFlightJdbcDriver#connect​(final String url, final Properties info) by [@​ennuite](https://redirect.github.com/ennuite) in [#​1005](https://redirect.github.com/apache/arrow-java/pull/1005) - [GH-343](https://redirect.github.com/apache/arrow-java/issues/343): Fix BaseVariableWidthVector and BaseLargeVariableWidthVector offset buffer serialization by [@​Yicong-Huang](https://redirect.github.com/Yicong-Huang) in [#​989](https://redirect.github.com/apache/arrow-java/pull/989) ##### Other Changes - MINOR: Bump checker.framework.version from 3.49.2 to 3.49.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​752](https://redirect.github.com/apache/arrow-java/pull/752) - MINOR: Bump com.google.api.grpc:proto-google-common-protos from 2.54.1 to 2.56.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​750](https://redirect.github.com/apache/arrow-java/pull/750) - MINOR: Bump com.github.ben-manes.caffeine:caffeine from 3.1.8 to 3.2.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​747](https://redirect.github.com/apache/arrow-java/pull/747) - MINOR: Bump version to 19.0.0-SNAPSHOT by [@​wgtmac](https://redirect.github.com/wgtmac) in [#​754](https://redirect.github.com/apache/arrow-java/pull/754) - [GH-768](https://redirect.github.com/apache/arrow-java/issues/768): Use apache/arrow-js for JS in integration test by [@​kou](https://redirect.github.com/kou) in [#​769](https://redirect.github.com/apache/arrow-java/pull/769) - [GH-770](https://redirect.github.com/apache/arrow-java/issues/770): Ensure updating Homebrew Python on macos-13 by [@​kou](https://redirect.github.com/kou) in [#​771](https://redirect.github.com/apache/arrow-java/pull/771) - [GH-70](https://redirect.github.com/apache/arrow-java/issues/70): Move from `hamcrest` to `assertj` in `flight-sql` by [@​rtadepalli](https://redirect.github.com/rtadepalli) in [#​772](https://redirect.github.com/apache/arrow-java/pull/772) - MINOR: Add missing permission to milestone assignment bot by [@​lidavidm](https://redirect.github.com/lidavidm) in [#​673](https://redirect.github.com/apache/arrow-java/pull/673) - MINOR: Bump com.gradle:common-custom-user-data-maven-extension from 2.0.1 to 2.0.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​785](https://redirect.github.com/apache/arrow-java/pull/785) - MINOR: Bump io.grpc:grpc-bom from 1.71.0 to 1.73.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​781](https://redirect.github.com/apache/arrow-java/pull/781) - MINOR: Fix format by [@​lidavidm](https://redirect.github.com/lidavidm) in [#​809](https://redirect.github.com/apache/arrow-java/pull/809) - [GH-804](https://redirect.github.com/apache/arrow-java/issues/804): Prepend JDBC FlightSQL version to user agent by [@​xborder](https://redirect.github.com/xborder) in [#​806](https://redirect.github.com/apache/arrow-java/pull/806) - MINOR: \[CI] Bump actions/cache from 4.2.3 to 4.2.4 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​813](https://redirect.github.com/apache/arrow-java/pull/813) - MINOR: \[CI] Bump docker/login-action from 3.4.0 to 3.5.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​814](https://redirect.github.com/apache/arrow-java/pull/814) - MINOR: \[CI] Bump actions/download-artifact from 4.3.0 to 5.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​815](https://redirect.github.com/apache/arrow-java/pull/815) - [GH-816](https://redirect.github.com/apache/arrow-java/issues/816): Presize JsonStringArrayList vector results by [@​schlosna](https://redirect.github.com/schlosna) in [#​817](https://redirect.github.com/apache/arrow-java/pull/817) - [GH-797](https://redirect.github.com/apache/arrow-java/issues/797): \[JDBC] Fix PreparedStatement#execute for DML/DDL by [@​ennuite](https://redirect.github.com/ennuite) in [#​811](https://redirect.github.com/apache/arrow-java/pull/811) - [GH-841](https://redirect.github.com/apache/arrow-java/issues/841): Use apache/arrow-dotnet for integration test by [@​kou](https://redirect.github.com/kou) in [#​842](https://redirect.github.com/apache/arrow-java/pull/842) - MINOR: \[CI] Bump actions/setup-java from 4.6.0 to 5.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​847](https://redirect.github.com/apache/arrow-java/pull/847) - MINOR: \[CI] Bump actions/setup-python from 5 to 6 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​843](https://redirect.github.com/apache/arrow-java/pull/843) - MINOR: \[CI] Bump actions/github-script from 7.0.1 to 8.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​844](https://redirect.github.com/apache/arrow-java/pull/844) - [GH-858](https://redirect.github.com/apache/arrow-java/issues/858): Fix error handling in CompositeJdbcConsumer by [@​aiguofer](https://redirect.github.com/aiguofer) in [#​857](https://redirect.github.com/apache/arrow-java/pull/857) - [GH-859](https://redirect.github.com/apache/arrow-java/issues/859): Fix ARROW\_STRUCT\_CONFLICT\_POLICY env var by [@​wForget](https://redirect.github.com/wForget) in [#​860](https://redirect.github.com/apache/arrow-java/pull/860) - [GH-836](https://redirect.github.com/apache/arrow-java/issues/836): Added support of ExtensionType for ComplexCopier by [@​xxlaykxx](https://redirect.github.com/xxlaykxx) in [#​837](https://redirect.github.com/apache/arrow-java/pull/837) - [GH-848](https://redirect.github.com/apache/arrow-java/issues/848): TypedValue should be treated as Nullable in bind function in AvaticaParameterBinder by [@​XenoAmess](https://redirect.github.com/XenoAmess) in [#​849](https://redirect.github.com/apache/arrow-java/pull/849) - fix: issue with class names in arrow-c jni calls by [@​milenkovicm](https://redirect.github.com/milenkovicm) in [#​867](https://redirect.github.com/apache/arrow-java/pull/867) - [GH-839](https://redirect.github.com/apache/arrow-java/issues/839): Fix support for ResultSet.getObject for TIMESTAMP\_WITH\_TIMEZONE by [@​aiguofer](https://redirect.github.com/aiguofer) in [#​840](https://redirect.github.com/apache/arrow-java/pull/840) - [GH-880](https://redirect.github.com/apache/arrow-java/issues/880): \[CI] Fix syntax error in `dev_pr.yml` by [@​kou](https://redirect.github.com/kou) in [#​881](https://redirect.github.com/apache/arrow-java/pull/881) - [GH-592](https://redirect.github.com/apache/arrow-java/issues/592): \[Release] Use relative path in .sha\* by [@​kou](https://redirect.github.com/kou) in [#​879](https://redirect.github.com/apache/arrow-java/pull/879) - MINOR: \[CI] Bump docker/login-action from 3.5.0 to 3.6.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​870](https://redirect.github.com/apache/arrow-java/pull/870) - [GH-898](https://redirect.github.com/apache/arrow-java/issues/898): Upgrade to Apache POM 35 and identify fixes needed to have CI happy by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​865](https://redirect.github.com/apache/arrow-java/pull/865) - MINOR: Bump io.netty:netty-bom from 4.1.119.Final to 4.1.127.Final by [@​SirOibaf](https://redirect.github.com/SirOibaf) in [#​855](https://redirect.github.com/apache/arrow-java/pull/855) - MINOR: Bump logback.version from 1.5.18 to 1.5.20 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​897](https://redirect.github.com/apache/arrow-java/pull/897) - MINOR: Bump com.github.luben:zstd-jni from 1.5.7-2 to 1.5.7-6 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​896](https://redirect.github.com/apache/arrow-java/pull/896) - MINOR: \[CI] Bump actions/download-artifact from 5.0.0 to 6.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​895](https://redirect.github.com/apache/arrow-java/pull/895) - MINOR: Bump commons-codec:commons-codec from 1.18.0 to 1.19.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​871](https://redirect.github.com/apache/arrow-java/pull/871) - MINOR: \[CI] Bump actions/checkout from 4 to 5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​820](https://redirect.github.com/apache/arrow-java/pull/820) - MINOR: \[CI] Bump actions/upload-artifact from 4.6.2 to 5.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​894](https://redirect.github.com/apache/arrow-java/pull/894) - MINOR: Bump checker.framework.version from 3.49.3 to 3.49.5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​800](https://redirect.github.com/apache/arrow-java/pull/800) - MINOR: Bump error\_prone\_core.version from 2.37.0 to 2.42.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​749](https://redirect.github.com/apache/arrow-java/pull/749) - MINOR: Bump org.apache.orc:orc-core from 2.1.1 to 2.2.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​874](https://redirect.github.com/apache/arrow-java/pull/874) - MINOR: Bump com.google.protobuf:protobuf-bom from 4.30.2 to 4.33.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​888](https://redirect.github.com/apache/arrow-java/pull/888) - MINOR: \[CI] Bump actions/checkout from 5 to 6 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​911](https://redirect.github.com/apache/arrow-java/pull/911) - MINOR: Bump org.codehaus.mojo:versions-maven-plugin from 2.18.0 to 2.20.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​912](https://redirect.github.com/apache/arrow-java/pull/912) - MINOR: Bump org.bouncycastle:bcpkix-jdk18on from 1.80 to 1.82 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​919](https://redirect.github.com/apache/arrow-java/pull/919) - MINOR: Bump org.apache.drill.tools:drill-fmpp-maven-plugin from 1.21.2 to 1.22.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​918](https://redirect.github.com/apache/arrow-java/pull/918) - MINOR: Bump dep.hadoop.version from 3.4.1 to 3.4.2 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​915](https://redirect.github.com/apache/arrow-java/pull/915) - MINOR: \[CI] Bump actions/upload-artifact from 5.0.0 to 6.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​934](https://redirect.github.com/apache/arrow-java/pull/934) - MINOR: \[CI] Bump actions/download-artifact from 6.0.0 to 7.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​935](https://redirect.github.com/apache/arrow-java/pull/935) - MINOR: \[CI] Bump actions/cache from 4 to 5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​936](https://redirect.github.com/apache/arrow-java/pull/936) - MINOR: Update macos amd64 runner by [@​lidavidm](https://redirect.github.com/lidavidm) in [#​940](https://redirect.github.com/apache/arrow-java/pull/940) - MINOR: Bump checker.framework.version from 3.52.0 to 3.52.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​927](https://redirect.github.com/apache/arrow-java/pull/927) - MINOR: Bump org.jacoco:jacoco-maven-plugin from 0.8.13 to 0.8.14 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​924](https://redirect.github.com/apache/arrow-java/pull/924) - MINOR: Bump org.immutables:value from 2.10.1 to 2.11.7 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​922](https://redirect.github.com/apache/arrow-java/pull/922) - MINOR: Bump com.google.api.grpc:proto-google-common-protos from 2.56.0 to 2.63.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​920](https://redirect.github.com/apache/arrow-java/pull/920) - MINOR: Bump io.netty:netty-bom from 4.1.119.Final to 4.2.7.Final by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​887](https://redirect.github.com/apache/arrow-java/pull/887) - MINOR: Bump parquet.version from 1.15.2 to 1.16.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​913](https://redirect.github.com/apache/arrow-java/pull/913) - MINOR: Bump org.immutables:value-annotations from 2.10.1 to 2.11.7 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​917](https://redirect.github.com/apache/arrow-java/pull/917) - MINOR: Bump logback.version from 1.5.21 to 1.5.24 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​962](https://redirect.github.com/apache/arrow-java/pull/962) - MINOR: Bump org.codehaus.mojo:exec-maven-plugin from 3.5.0 to 3.6.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​959](https://redirect.github.com/apache/arrow-java/pull/959) - MINOR: Bump org.apache.commons:commons-text from 1.13.1 to 1.15.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​956](https://redirect.github.com/apache/arrow-java/pull/956) - MINOR: Bump io.grpc:grpc-bom from 1.73.0 to 1.78.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​958](https://redirect.github.com/apache/arrow-java/pull/958) - MINOR: Bump com.github.ben-manes.caffeine:caffeine from 3.2.0 to 3.2.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​960](https://redirect.github.com/apache/arrow-java/pull/960) - MINOR: Bump org.apache.avro:avro from 1.12.0 to 1.12.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​955](https://redirect.github.com/apache/arrow-java/pull/955) - MINOR: Bump org.bouncycastle:bcpkix-jdk18on from 1.82 to 1.83 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​969](https://redirect.github.com/apache/arrow-java/pull/969) - MINOR: Bump logback.version from 1.5.24 to 1.5.25 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​975](https://redirect.github.com/apache/arrow-java/pull/975) - MINOR: Bump com.fasterxml.jackson:jackson-bom from 2.18.3 to 2.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​973](https://redirect.github.com/apache/arrow-java/pull/973) - MINOR: Bump parquet.version from 1.16.0 to 1.17.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​968](https://redirect.github.com/apache/arrow-java/pull/968) - MINOR: Bump commons-io:commons-io from 2.19.0 to 2.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​974](https://redirect.github.com/apache/arrow-java/pull/974) - MINOR: Bump com.gradle:develocity-maven-extension from 2.0 to 2.3.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​976](https://redirect.github.com/apache/arrow-java/pull/976) - MINOR: Bump org.apache.orc:orc-core from 2.2.1 to 2.2.2 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​971](https://redirect.github.com/apache/arrow-java/pull/971) - MINOR: Bump org.apache.commons:commons-dbcp2 from 2.13.0 to 2.14.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​983](https://redirect.github.com/apache/arrow-java/pull/983) - MINOR: Bump org.apache.commons:commons-compress from 1.27.1 to 1.28.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​985](https://redirect.github.com/apache/arrow-java/pull/985) - MINOR: Bump org.assertj:assertj-core from 3.27.3 to 3.27.7 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​988](https://redirect.github.com/apache/arrow-java/pull/988) - MINOR: Bump org.apache.commons:commons-pool2 from 2.12.1 to 2.13.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​987](https://redirect.github.com/apache/arrow-java/pull/987) - MINOR: Bump logback.version from 1.5.25 to 1.5.26 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​981](https://redirect.github.com/apache/arrow-java/pull/981) - MINOR: Bump com.google.protobuf:protobuf-bom from 4.33.1 to 4.33.4 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​984](https://redirect.github.com/apache/arrow-java/pull/984) - [GH-1011](https://redirect.github.com/apache/arrow-java/issues/1011): \[Docs] Fix broken Java API reference links in documentation by [@​axreldable](https://redirect.github.com/axreldable) in [#​1012](https://redirect.github.com/apache/arrow-java/pull/1012) - [GH-141](https://redirect.github.com/apache/arrow-java/issues/141): Correct capacity behavior in BufferAllocator.buffer docstrings by [@​axreldable](https://redirect.github.com/axreldable) in [#​1010](https://redirect.github.com/apache/arrow-java/pull/1010) - [GH-1014](https://redirect.github.com/apache/arrow-java/issues/1014): \[Docs] Fix broken and obsolete links in the README.md by [@​axreldable](https://redirect.github.com/axreldable) in [#​1015](https://redirect.github.com/apache/arrow-java/pull/1015) - MINOR: \[Docs] Remove extra line in README.md (fix pre-commit) by [@​axreldable](https://redirect.github.com/axreldable) in [#​1018](https://redirect.github.com/apache/arrow-java/pull/1018) - [GH-1021](https://redirect.github.com/apache/arrow-java/issues/1021): Use released apache/arrow instead of main by [@​kou](https://redirect.github.com/kou) in [#​1022](https://redirect.github.com/apache/arrow-java/pull/1022) - MINOR: Bump org.mockito:mockito-bom from 5.17.0 to 5.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1000](https://redirect.github.com/apache/arrow-java/pull/1000) - MINOR: Bump com.gradle:develocity-maven-extension from 2.3.1 to 2.3.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1001](https://redirect.github.com/apache/arrow-java/pull/1001) - MINOR: Bump logback.version from 1.5.26 to 1.5.27 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​999](https://redirect.github.com/apache/arrow-java/pull/999) - MINOR: \[CI] Bump docker/login-action from 3.6.0 to 3.7.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​996](https://redirect.github.com/apache/arrow-java/pull/996) - MINOR: Bump commons-codec:commons-codec from 1.20.0 to 1.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​997](https://redirect.github.com/apache/arrow-java/pull/997) - MINOR: Fix minor issue with README by [@​paliwalashish](https://redirect.github.com/paliwalashish) in [#​1026](https://redirect.github.com/apache/arrow-java/pull/1026) - MINOR: Bump commons-cli:commons-cli from 1.9.0 to 1.11.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1028](https://redirect.github.com/apache/arrow-java/pull/1028) - MINOR: Bump org.codehaus.mojo:versions-maven-plugin from 2.20.0 to 2.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1029](https://redirect.github.com/apache/arrow-java/pull/1029) - MINOR: Bump com.google.api.grpc:proto-google-common-protos from 2.63.2 to 2.66.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1034](https://redirect.github.com/apache/arrow-java/pull/1034) - MINOR: \[CI] Bump actions/upload-artifact from 6.0.0 to 7.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1045](https://redirect.github.com/apache/arrow-java/pull/1045) - MINOR: Bump checker.framework.version from 3.53.0 to 3.53.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1046](https://redirect.github.com/apache/arrow-java/pull/1046) - MINOR: \[CI] Bump actions/download-artifact from 7.0.0 to 8.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1047](https://redirect.github.com/apache/arrow-java/pull/1047) - MINOR: Bump org.codehaus.mojo:build-helper-maven-plugin from 3.6.0 to 3.6.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1049](https://redirect.github.com/apache/arrow-java/pull/1049) - MINOR: Fix flaky TestBasicAuth memory leak by waiting for async buffer release by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​1058](https://redirect.github.com/apache/arrow-java/pull/1058) - MINOR: Bump org.apache.orc:orc-core from 2.2.2 to 2.3.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1056](https://redirect.github.com/apache/arrow-java/pull/1056) - MINOR: \[CI] Increase JNI macOS job timeout from 45 to 60 minutes by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​1060](https://redirect.github.com/apache/arrow-java/pull/1060) - MINOR: \[CI] Bump docker/login-action from 3.7.0 to 4.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1053](https://redirect.github.com/apache/arrow-java/pull/1053) - MINOR: Bump dep.hadoop.version from 3.4.2 to 3.4.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1055](https://redirect.github.com/apache/arrow-java/pull/1055) - MINOR: Bump io.grpc:grpc-bom from 1.78.0 to 1.79.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1048](https://redirect.github.com/apache/arrow-java/pull/1048) - MINOR: Bump com.gradle:common-custom-user-data-maven-extension from 2.0.3 to 2.1.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​998](https://redirect.github.com/apache/arrow-java/pull/998) - MINOR: Bump version to 19.0.0 by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​1066](https://redirect.github.com/apache/arrow-java/pull/1066) #### New Contributors - [@​adampolomski](https://redirect.github.com/adampolomski) made their first contribution in [#​742](https://redirect.github.com/apache/arrow-java/pull/742) - [@​rtadepalli](https://redirect.github.com/rtadepalli) made their first contribution in [#​772](https://redirect.github.com/apache/arrow-java/pull/772) - [@​xborder](https://redirect.github.com/xborder) made their first contribution in [#​806](https://redirect.github.com/apache/arrow-java/pull/806) - [@​schlosna](https://redirect.github.com/schlosna) made their first contribution in [#​817](https://redirect.github.com/apache/arrow-java/pull/817) - [@​ennuite](https://redirect.github.com/ennuite) made their first contribution in [#​811](https://redirect.github.com/apache/arrow-java/pull/811) - [@​wForget](https://redirect.github.com/wForget) made their first contribution in [#​860](https://redirect.github.com/apache/arrow-java/pull/860) - [@​XenoAmess](https://redirect.github.com/XenoAmess) made their first contribution in [#​849](https://redirect.github.com/apache/arrow-java/pull/849) - [@​milenkovicm](https://redirect.github.com/milenkovicm) made their first contribution in [#​867](https://redirect.github.com/apache/arrow-java/pull/867) - [@​XN137](https://redirect.github.com/XN137) made their first contribution in [#​901](https://redirect.github.com/apache/arrow-java/pull/901) - [@​SirOibaf](https://redirect.github.com/SirOibaf) made their first contribution in [#​855](https://redirect.github.com/apache/arrow-java/pull/855) - [@​axreldable](https://redirect.github.com/axreldable) made their first contribution in [#​885](https://redirect.github.com/apache/arrow-java/pull/885) - [@​jhrotko](https://redirect.github.com/jhrotko) made their first contribution in [#​903](https://redirect.github.com/apache/arrow-java/pull/903) - [@​Kaustav-Sarkar](https://redirect.github.com/Kaustav-Sarkar) made their first contribution in [#​938](https://redirect.github.com/apache/arrow-java/pull/938) - [@​eickler](https://redirect.github.com/eickler) made their first contribution in [#​943](https://redirect.github.com/apache/arrow-java/pull/943) - [@​tmater](https://redirect.github.com/tmater) made their first contribution in [#​945](https://redirect.github.com/apache/arrow-java/pull/945) - [@​Yicong-Huang](https://redirect.github.com/Yicong-Huang) made their first contribution in [#​967](https://redirect.github.com/apache/arrow-java/pull/967) - [@​paliwalashish](https://redirect.github.com/paliwalashish) made their first contribution in [#​1026](https://redirect.github.com/apache/arrow-java/pull/1026) - [@​torito](https://redirect.github.com/torito) made their first contribution in [#​1008](https://redirect.github.com/apache/arrow-java/pull/1008) **Full Changelog**:
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index c273e46..057a962 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -34,7 +34,7 @@ dependencies { implementation 'io.grpc:grpc-stub:1.80.0' implementation 'io.grpc:grpc-services:1.80.0' implementation 'io.cloudquery:plugin-pb-java:0.0.44' - implementation 'org.apache.arrow:arrow-memory-core:18.3.0' + implementation 'org.apache.arrow:arrow-memory-core:19.0.0' implementation 'org.apache.arrow:arrow-vector:18.3.0' implementation 'commons-io:commons-io:2.21.0' From e3f38117cbd4b60822a780e6166a78a759c0e345 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 13:58:24 +0000 Subject: [PATCH 356/376] fix(deps): Update dependency org.apache.arrow:arrow-memory-netty to v19 (#438) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.apache.arrow:arrow-memory-netty](https://arrow.apache.org/) ([source](https://redirect.github.com/apache/arrow-java)) | `18.3.0` β†’ `19.0.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.arrow:arrow-memory-netty/19.0.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.arrow:arrow-memory-netty/18.3.0/19.0.0?slim=true) | --- ### Release Notes
apache/arrow-java (org.apache.arrow:arrow-memory-netty) ### [`v19.0.0`](https://redirect.github.com/apache/arrow-java/releases/tag/v19.0.0): Apache Arrow Java 19.0.0 #### What's Changed ##### Breaking Changes - [GH-774](https://redirect.github.com/apache/arrow-java/issues/774): Consoliate `BitVectorHelper.getValidityBufferSize` and `BaseValueVector.getValidityBufferSizeFromCount` by [@​rtadepalli](https://redirect.github.com/rtadepalli) in [#​775](https://redirect.github.com/apache/arrow-java/pull/775) - [GH-586](https://redirect.github.com/apache/arrow-java/issues/586): Override fixedSizeBinary method for UnionMapWriter by [@​axreldable](https://redirect.github.com/axreldable) in [#​885](https://redirect.github.com/apache/arrow-java/pull/885) - [GH-891](https://redirect.github.com/apache/arrow-java/issues/891): Add ExtensionTypeWriterFactory to TransferPair by [@​jhrotko](https://redirect.github.com/jhrotko) in [#​892](https://redirect.github.com/apache/arrow-java/pull/892) - [GH-948](https://redirect.github.com/apache/arrow-java/issues/948): Use buffer indexing for UUID vector by [@​jhrotko](https://redirect.github.com/jhrotko) in [#​949](https://redirect.github.com/apache/arrow-java/pull/949) - [GH-139](https://redirect.github.com/apache/arrow-java/issues/139): \[Flight] Stop return null from MetadataAdapter.getAll(String) and getAllByte(String) by [@​axreldable](https://redirect.github.com/axreldable) in [#​1016](https://redirect.github.com/apache/arrow-java/pull/1016) ##### New Features and Enhancements - [GH-52](https://redirect.github.com/apache/arrow-java/issues/52): Make RangeEqualsVisitor of RunEndEncodedVector more efficient by [@​ViggoC](https://redirect.github.com/ViggoC) in [#​761](https://redirect.github.com/apache/arrow-java/pull/761) - [GH-765](https://redirect.github.com/apache/arrow-java/issues/765): Do not close/free imported BaseStruct objects by [@​pepijnve](https://redirect.github.com/pepijnve) in [#​766](https://redirect.github.com/apache/arrow-java/pull/766) - [GH-79](https://redirect.github.com/apache/arrow-java/issues/79): Move `splitAndTransferValidityBuffer` to `BaseValueVector` by [@​rtadepalli](https://redirect.github.com/rtadepalli) in [#​777](https://redirect.github.com/apache/arrow-java/pull/777) - [GH-731](https://redirect.github.com/apache/arrow-java/issues/731): Avro adapter, output dictionary-encoded fields as enums by [@​martin-traverse](https://redirect.github.com/martin-traverse) in [#​779](https://redirect.github.com/apache/arrow-java/pull/779) - [GH-725](https://redirect.github.com/apache/arrow-java/issues/725): Added ExtensionReader by [@​xxlaykxx](https://redirect.github.com/xxlaykxx) in [#​726](https://redirect.github.com/apache/arrow-java/pull/726) - [GH-882](https://redirect.github.com/apache/arrow-java/issues/882): Add support for loading native library from a user specified location by [@​pepijnve](https://redirect.github.com/pepijnve) in [#​883](https://redirect.github.com/apache/arrow-java/pull/883) - [GH-109](https://redirect.github.com/apache/arrow-java/issues/109): Implement Vector Validators for StringView by [@​ViggoC](https://redirect.github.com/ViggoC) in [#​886](https://redirect.github.com/apache/arrow-java/pull/886) - [GH-900](https://redirect.github.com/apache/arrow-java/issues/900): Fix gandiva groupId in arrow-bom by [@​XN137](https://redirect.github.com/XN137) in [#​901](https://redirect.github.com/apache/arrow-java/pull/901) - [GH-762](https://redirect.github.com/apache/arrow-java/issues/762): Implement VectorAppender for RunEndEncodedVector by [@​ViggoC](https://redirect.github.com/ViggoC) in [#​884](https://redirect.github.com/apache/arrow-java/pull/884) - [GH-825](https://redirect.github.com/apache/arrow-java/issues/825): Add UUID canonical extension type by [@​jhrotko](https://redirect.github.com/jhrotko) in [#​903](https://redirect.github.com/apache/arrow-java/pull/903) - [GH-110](https://redirect.github.com/apache/arrow-java/issues/110): Flight SQL JDBC related StringView components implementation by [@​ViggoC](https://redirect.github.com/ViggoC) in [#​905](https://redirect.github.com/apache/arrow-java/pull/905) - [GH-863](https://redirect.github.com/apache/arrow-java/issues/863): \[JDBC] Suppress benign exceptions from gRPC layer on ArrowFlightSqlClientHandler#close by [@​ennuite](https://redirect.github.com/ennuite) in [#​910](https://redirect.github.com/apache/arrow-java/pull/910) - [GH-929](https://redirect.github.com/apache/arrow-java/issues/929): Add UUID support in JDBC driver by [@​xborder](https://redirect.github.com/xborder) in [#​930](https://redirect.github.com/apache/arrow-java/pull/930) - [GH-952](https://redirect.github.com/apache/arrow-java/issues/952): Add OAuth support by [@​xborder](https://redirect.github.com/xborder) in [#​953](https://redirect.github.com/apache/arrow-java/pull/953) - [GH-946](https://redirect.github.com/apache/arrow-java/issues/946): Add Variant extension type support by [@​tmater](https://redirect.github.com/tmater) in [#​947](https://redirect.github.com/apache/arrow-java/pull/947) - [GH-130](https://redirect.github.com/apache/arrow-java/issues/130): Fix AutoCloseables to work with [@​Nullable](https://redirect.github.com/Nullable) structures by [@​axreldable](https://redirect.github.com/axreldable) in [#​1017](https://redirect.github.com/apache/arrow-java/pull/1017) - [GH-1038](https://redirect.github.com/apache/arrow-java/issues/1038): Trim object memory for ArrowBuf by [@​lriggs](https://redirect.github.com/lriggs) in [#​1044](https://redirect.github.com/apache/arrow-java/pull/1044) - [GH-1061](https://redirect.github.com/apache/arrow-java/issues/1061): Add codegen classifier jar for arrow-vector. by [@​lriggs](https://redirect.github.com/lriggs) in [#​1062](https://redirect.github.com/apache/arrow-java/pull/1062) - [GH-301](https://redirect.github.com/apache/arrow-java/issues/301): \[Vector] Allow adding a vector at the end of VectorSchemaRoot by [@​axreldable](https://redirect.github.com/axreldable) in [#​1013](https://redirect.github.com/apache/arrow-java/pull/1013) - [GH-552](https://redirect.github.com/apache/arrow-java/issues/552): \[Vector] Add absent methods to the UnionFixedSizeListWriter by [@​axreldable](https://redirect.github.com/axreldable) in [#​1052](https://redirect.github.com/apache/arrow-java/pull/1052) ##### Bug Fixes - MINOR: add missing SOURCE\_DIR in dev/release/release.sh by [@​wgtmac](https://redirect.github.com/wgtmac) in [#​755](https://redirect.github.com/apache/arrow-java/pull/755) - MINOR: Empty stream double check by [@​adampolomski](https://redirect.github.com/adampolomski) in [#​742](https://redirect.github.com/apache/arrow-java/pull/742) - [GH-759](https://redirect.github.com/apache/arrow-java/issues/759): Get length of byte\[] in TryCopyLastError by [@​hnwyllmm](https://redirect.github.com/hnwyllmm) in [#​760](https://redirect.github.com/apache/arrow-java/pull/760) - [GH-899](https://redirect.github.com/apache/arrow-java/issues/899): \[Dataset] Initialize compute module by [@​lidavidm](https://redirect.github.com/lidavidm) in [#​893](https://redirect.github.com/apache/arrow-java/pull/893) - [GH-399](https://redirect.github.com/apache/arrow-java/issues/399): Check for null writers in DenseUnionWriter#setPosition by [@​Kaustav-Sarkar](https://redirect.github.com/Kaustav-Sarkar) in [#​938](https://redirect.github.com/apache/arrow-java/pull/938) - [GH-942](https://redirect.github.com/apache/arrow-java/issues/942): Fix JDBC Connection.setCatalog() by [@​eickler](https://redirect.github.com/eickler) in [#​943](https://redirect.github.com/apache/arrow-java/pull/943) - [GH-951](https://redirect.github.com/apache/arrow-java/issues/951): Fix CI completely, especially JNI on Windows 2022 and MacOS platforms by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​925](https://redirect.github.com/apache/arrow-java/pull/925) - MINOR: Add private constructor to UuidType singleton by [@​tmater](https://redirect.github.com/tmater) in [#​945](https://redirect.github.com/apache/arrow-java/pull/945) - [GH-964](https://redirect.github.com/apache/arrow-java/issues/964): Fix IndexOutOfBoundsException in Array.getResultSet() for JDBC clients by [@​xborder](https://redirect.github.com/xborder) in [#​965](https://redirect.github.com/apache/arrow-java/pull/965) - [GH-932](https://redirect.github.com/apache/arrow-java/issues/932): \[JDBC] Fix memory leak on Connection#close due to unclosed Statement(s) by [@​ennuite](https://redirect.github.com/ennuite) in [#​933](https://redirect.github.com/apache/arrow-java/pull/933) - [GH-125](https://redirect.github.com/apache/arrow-java/issues/125): Allow null timestamp holder sans timezone by [@​Kaustav-Sarkar](https://redirect.github.com/Kaustav-Sarkar) in [#​941](https://redirect.github.com/apache/arrow-java/pull/941) - [GH-343](https://redirect.github.com/apache/arrow-java/issues/343): Fix ListVector offset buffer not properly serialized for nested empty arrays by [@​Yicong-Huang](https://redirect.github.com/Yicong-Huang) in [#​967](https://redirect.github.com/apache/arrow-java/pull/967) - [GH-990](https://redirect.github.com/apache/arrow-java/issues/990): \[JDBC] Fix memory leak on Connection#close due to unclosed ResultSet(s) by [@​ennuite](https://redirect.github.com/ennuite) in [#​991](https://redirect.github.com/apache/arrow-java/pull/991) - [GH-993](https://redirect.github.com/apache/arrow-java/issues/993): Fix missing pipe in milestone assignment script by [@​tmater](https://redirect.github.com/tmater) in [#​992](https://redirect.github.com/apache/arrow-java/pull/992) - [GH-470](https://redirect.github.com/apache/arrow-java/issues/470): \[Vector] Fix ListViewVector.getElementEndIndex(index) method by [@​axreldable](https://redirect.github.com/axreldable) in [#​1019](https://redirect.github.com/apache/arrow-java/pull/1019) - [GH-1007](https://redirect.github.com/apache/arrow-java/issues/1007): fix: does not break class loading if direct buffer allocator is not available by [@​torito](https://redirect.github.com/torito) in [#​1008](https://redirect.github.com/apache/arrow-java/pull/1008) - [GH-994](https://redirect.github.com/apache/arrow-java/issues/994): Fix DatabaseMetaData NPEs when SqlInfo is unavailable by [@​ennuite](https://redirect.github.com/ennuite) in [#​995](https://redirect.github.com/apache/arrow-java/pull/995) - [GH-1004](https://redirect.github.com/apache/arrow-java/issues/1004): \[JDBC] Fix NPE in ArrowFlightJdbcDriver#connect​(final String url, final Properties info) by [@​ennuite](https://redirect.github.com/ennuite) in [#​1005](https://redirect.github.com/apache/arrow-java/pull/1005) - [GH-343](https://redirect.github.com/apache/arrow-java/issues/343): Fix BaseVariableWidthVector and BaseLargeVariableWidthVector offset buffer serialization by [@​Yicong-Huang](https://redirect.github.com/Yicong-Huang) in [#​989](https://redirect.github.com/apache/arrow-java/pull/989) ##### Other Changes - MINOR: Bump checker.framework.version from 3.49.2 to 3.49.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​752](https://redirect.github.com/apache/arrow-java/pull/752) - MINOR: Bump com.google.api.grpc:proto-google-common-protos from 2.54.1 to 2.56.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​750](https://redirect.github.com/apache/arrow-java/pull/750) - MINOR: Bump com.github.ben-manes.caffeine:caffeine from 3.1.8 to 3.2.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​747](https://redirect.github.com/apache/arrow-java/pull/747) - MINOR: Bump version to 19.0.0-SNAPSHOT by [@​wgtmac](https://redirect.github.com/wgtmac) in [#​754](https://redirect.github.com/apache/arrow-java/pull/754) - [GH-768](https://redirect.github.com/apache/arrow-java/issues/768): Use apache/arrow-js for JS in integration test by [@​kou](https://redirect.github.com/kou) in [#​769](https://redirect.github.com/apache/arrow-java/pull/769) - [GH-770](https://redirect.github.com/apache/arrow-java/issues/770): Ensure updating Homebrew Python on macos-13 by [@​kou](https://redirect.github.com/kou) in [#​771](https://redirect.github.com/apache/arrow-java/pull/771) - [GH-70](https://redirect.github.com/apache/arrow-java/issues/70): Move from `hamcrest` to `assertj` in `flight-sql` by [@​rtadepalli](https://redirect.github.com/rtadepalli) in [#​772](https://redirect.github.com/apache/arrow-java/pull/772) - MINOR: Add missing permission to milestone assignment bot by [@​lidavidm](https://redirect.github.com/lidavidm) in [#​673](https://redirect.github.com/apache/arrow-java/pull/673) - MINOR: Bump com.gradle:common-custom-user-data-maven-extension from 2.0.1 to 2.0.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​785](https://redirect.github.com/apache/arrow-java/pull/785) - MINOR: Bump io.grpc:grpc-bom from 1.71.0 to 1.73.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​781](https://redirect.github.com/apache/arrow-java/pull/781) - MINOR: Fix format by [@​lidavidm](https://redirect.github.com/lidavidm) in [#​809](https://redirect.github.com/apache/arrow-java/pull/809) - [GH-804](https://redirect.github.com/apache/arrow-java/issues/804): Prepend JDBC FlightSQL version to user agent by [@​xborder](https://redirect.github.com/xborder) in [#​806](https://redirect.github.com/apache/arrow-java/pull/806) - MINOR: \[CI] Bump actions/cache from 4.2.3 to 4.2.4 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​813](https://redirect.github.com/apache/arrow-java/pull/813) - MINOR: \[CI] Bump docker/login-action from 3.4.0 to 3.5.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​814](https://redirect.github.com/apache/arrow-java/pull/814) - MINOR: \[CI] Bump actions/download-artifact from 4.3.0 to 5.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​815](https://redirect.github.com/apache/arrow-java/pull/815) - [GH-816](https://redirect.github.com/apache/arrow-java/issues/816): Presize JsonStringArrayList vector results by [@​schlosna](https://redirect.github.com/schlosna) in [#​817](https://redirect.github.com/apache/arrow-java/pull/817) - [GH-797](https://redirect.github.com/apache/arrow-java/issues/797): \[JDBC] Fix PreparedStatement#execute for DML/DDL by [@​ennuite](https://redirect.github.com/ennuite) in [#​811](https://redirect.github.com/apache/arrow-java/pull/811) - [GH-841](https://redirect.github.com/apache/arrow-java/issues/841): Use apache/arrow-dotnet for integration test by [@​kou](https://redirect.github.com/kou) in [#​842](https://redirect.github.com/apache/arrow-java/pull/842) - MINOR: \[CI] Bump actions/setup-java from 4.6.0 to 5.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​847](https://redirect.github.com/apache/arrow-java/pull/847) - MINOR: \[CI] Bump actions/setup-python from 5 to 6 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​843](https://redirect.github.com/apache/arrow-java/pull/843) - MINOR: \[CI] Bump actions/github-script from 7.0.1 to 8.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​844](https://redirect.github.com/apache/arrow-java/pull/844) - [GH-858](https://redirect.github.com/apache/arrow-java/issues/858): Fix error handling in CompositeJdbcConsumer by [@​aiguofer](https://redirect.github.com/aiguofer) in [#​857](https://redirect.github.com/apache/arrow-java/pull/857) - [GH-859](https://redirect.github.com/apache/arrow-java/issues/859): Fix ARROW\_STRUCT\_CONFLICT\_POLICY env var by [@​wForget](https://redirect.github.com/wForget) in [#​860](https://redirect.github.com/apache/arrow-java/pull/860) - [GH-836](https://redirect.github.com/apache/arrow-java/issues/836): Added support of ExtensionType for ComplexCopier by [@​xxlaykxx](https://redirect.github.com/xxlaykxx) in [#​837](https://redirect.github.com/apache/arrow-java/pull/837) - [GH-848](https://redirect.github.com/apache/arrow-java/issues/848): TypedValue should be treated as Nullable in bind function in AvaticaParameterBinder by [@​XenoAmess](https://redirect.github.com/XenoAmess) in [#​849](https://redirect.github.com/apache/arrow-java/pull/849) - fix: issue with class names in arrow-c jni calls by [@​milenkovicm](https://redirect.github.com/milenkovicm) in [#​867](https://redirect.github.com/apache/arrow-java/pull/867) - [GH-839](https://redirect.github.com/apache/arrow-java/issues/839): Fix support for ResultSet.getObject for TIMESTAMP\_WITH\_TIMEZONE by [@​aiguofer](https://redirect.github.com/aiguofer) in [#​840](https://redirect.github.com/apache/arrow-java/pull/840) - [GH-880](https://redirect.github.com/apache/arrow-java/issues/880): \[CI] Fix syntax error in `dev_pr.yml` by [@​kou](https://redirect.github.com/kou) in [#​881](https://redirect.github.com/apache/arrow-java/pull/881) - [GH-592](https://redirect.github.com/apache/arrow-java/issues/592): \[Release] Use relative path in .sha\* by [@​kou](https://redirect.github.com/kou) in [#​879](https://redirect.github.com/apache/arrow-java/pull/879) - MINOR: \[CI] Bump docker/login-action from 3.5.0 to 3.6.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​870](https://redirect.github.com/apache/arrow-java/pull/870) - [GH-898](https://redirect.github.com/apache/arrow-java/issues/898): Upgrade to Apache POM 35 and identify fixes needed to have CI happy by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​865](https://redirect.github.com/apache/arrow-java/pull/865) - MINOR: Bump io.netty:netty-bom from 4.1.119.Final to 4.1.127.Final by [@​SirOibaf](https://redirect.github.com/SirOibaf) in [#​855](https://redirect.github.com/apache/arrow-java/pull/855) - MINOR: Bump logback.version from 1.5.18 to 1.5.20 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​897](https://redirect.github.com/apache/arrow-java/pull/897) - MINOR: Bump com.github.luben:zstd-jni from 1.5.7-2 to 1.5.7-6 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​896](https://redirect.github.com/apache/arrow-java/pull/896) - MINOR: \[CI] Bump actions/download-artifact from 5.0.0 to 6.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​895](https://redirect.github.com/apache/arrow-java/pull/895) - MINOR: Bump commons-codec:commons-codec from 1.18.0 to 1.19.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​871](https://redirect.github.com/apache/arrow-java/pull/871) - MINOR: \[CI] Bump actions/checkout from 4 to 5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​820](https://redirect.github.com/apache/arrow-java/pull/820) - MINOR: \[CI] Bump actions/upload-artifact from 4.6.2 to 5.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​894](https://redirect.github.com/apache/arrow-java/pull/894) - MINOR: Bump checker.framework.version from 3.49.3 to 3.49.5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​800](https://redirect.github.com/apache/arrow-java/pull/800) - MINOR: Bump error\_prone\_core.version from 2.37.0 to 2.42.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​749](https://redirect.github.com/apache/arrow-java/pull/749) - MINOR: Bump org.apache.orc:orc-core from 2.1.1 to 2.2.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​874](https://redirect.github.com/apache/arrow-java/pull/874) - MINOR: Bump com.google.protobuf:protobuf-bom from 4.30.2 to 4.33.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​888](https://redirect.github.com/apache/arrow-java/pull/888) - MINOR: \[CI] Bump actions/checkout from 5 to 6 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​911](https://redirect.github.com/apache/arrow-java/pull/911) - MINOR: Bump org.codehaus.mojo:versions-maven-plugin from 2.18.0 to 2.20.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​912](https://redirect.github.com/apache/arrow-java/pull/912) - MINOR: Bump org.bouncycastle:bcpkix-jdk18on from 1.80 to 1.82 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​919](https://redirect.github.com/apache/arrow-java/pull/919) - MINOR: Bump org.apache.drill.tools:drill-fmpp-maven-plugin from 1.21.2 to 1.22.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​918](https://redirect.github.com/apache/arrow-java/pull/918) - MINOR: Bump dep.hadoop.version from 3.4.1 to 3.4.2 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​915](https://redirect.github.com/apache/arrow-java/pull/915) - MINOR: \[CI] Bump actions/upload-artifact from 5.0.0 to 6.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​934](https://redirect.github.com/apache/arrow-java/pull/934) - MINOR: \[CI] Bump actions/download-artifact from 6.0.0 to 7.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​935](https://redirect.github.com/apache/arrow-java/pull/935) - MINOR: \[CI] Bump actions/cache from 4 to 5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​936](https://redirect.github.com/apache/arrow-java/pull/936) - MINOR: Update macos amd64 runner by [@​lidavidm](https://redirect.github.com/lidavidm) in [#​940](https://redirect.github.com/apache/arrow-java/pull/940) - MINOR: Bump checker.framework.version from 3.52.0 to 3.52.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​927](https://redirect.github.com/apache/arrow-java/pull/927) - MINOR: Bump org.jacoco:jacoco-maven-plugin from 0.8.13 to 0.8.14 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​924](https://redirect.github.com/apache/arrow-java/pull/924) - MINOR: Bump org.immutables:value from 2.10.1 to 2.11.7 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​922](https://redirect.github.com/apache/arrow-java/pull/922) - MINOR: Bump com.google.api.grpc:proto-google-common-protos from 2.56.0 to 2.63.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​920](https://redirect.github.com/apache/arrow-java/pull/920) - MINOR: Bump io.netty:netty-bom from 4.1.119.Final to 4.2.7.Final by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​887](https://redirect.github.com/apache/arrow-java/pull/887) - MINOR: Bump parquet.version from 1.15.2 to 1.16.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​913](https://redirect.github.com/apache/arrow-java/pull/913) - MINOR: Bump org.immutables:value-annotations from 2.10.1 to 2.11.7 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​917](https://redirect.github.com/apache/arrow-java/pull/917) - MINOR: Bump logback.version from 1.5.21 to 1.5.24 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​962](https://redirect.github.com/apache/arrow-java/pull/962) - MINOR: Bump org.codehaus.mojo:exec-maven-plugin from 3.5.0 to 3.6.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​959](https://redirect.github.com/apache/arrow-java/pull/959) - MINOR: Bump org.apache.commons:commons-text from 1.13.1 to 1.15.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​956](https://redirect.github.com/apache/arrow-java/pull/956) - MINOR: Bump io.grpc:grpc-bom from 1.73.0 to 1.78.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​958](https://redirect.github.com/apache/arrow-java/pull/958) - MINOR: Bump com.github.ben-manes.caffeine:caffeine from 3.2.0 to 3.2.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​960](https://redirect.github.com/apache/arrow-java/pull/960) - MINOR: Bump org.apache.avro:avro from 1.12.0 to 1.12.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​955](https://redirect.github.com/apache/arrow-java/pull/955) - MINOR: Bump org.bouncycastle:bcpkix-jdk18on from 1.82 to 1.83 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​969](https://redirect.github.com/apache/arrow-java/pull/969) - MINOR: Bump logback.version from 1.5.24 to 1.5.25 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​975](https://redirect.github.com/apache/arrow-java/pull/975) - MINOR: Bump com.fasterxml.jackson:jackson-bom from 2.18.3 to 2.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​973](https://redirect.github.com/apache/arrow-java/pull/973) - MINOR: Bump parquet.version from 1.16.0 to 1.17.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​968](https://redirect.github.com/apache/arrow-java/pull/968) - MINOR: Bump commons-io:commons-io from 2.19.0 to 2.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​974](https://redirect.github.com/apache/arrow-java/pull/974) - MINOR: Bump com.gradle:develocity-maven-extension from 2.0 to 2.3.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​976](https://redirect.github.com/apache/arrow-java/pull/976) - MINOR: Bump org.apache.orc:orc-core from 2.2.1 to 2.2.2 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​971](https://redirect.github.com/apache/arrow-java/pull/971) - MINOR: Bump org.apache.commons:commons-dbcp2 from 2.13.0 to 2.14.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​983](https://redirect.github.com/apache/arrow-java/pull/983) - MINOR: Bump org.apache.commons:commons-compress from 1.27.1 to 1.28.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​985](https://redirect.github.com/apache/arrow-java/pull/985) - MINOR: Bump org.assertj:assertj-core from 3.27.3 to 3.27.7 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​988](https://redirect.github.com/apache/arrow-java/pull/988) - MINOR: Bump org.apache.commons:commons-pool2 from 2.12.1 to 2.13.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​987](https://redirect.github.com/apache/arrow-java/pull/987) - MINOR: Bump logback.version from 1.5.25 to 1.5.26 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​981](https://redirect.github.com/apache/arrow-java/pull/981) - MINOR: Bump com.google.protobuf:protobuf-bom from 4.33.1 to 4.33.4 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​984](https://redirect.github.com/apache/arrow-java/pull/984) - [GH-1011](https://redirect.github.com/apache/arrow-java/issues/1011): \[Docs] Fix broken Java API reference links in documentation by [@​axreldable](https://redirect.github.com/axreldable) in [#​1012](https://redirect.github.com/apache/arrow-java/pull/1012) - [GH-141](https://redirect.github.com/apache/arrow-java/issues/141): Correct capacity behavior in BufferAllocator.buffer docstrings by [@​axreldable](https://redirect.github.com/axreldable) in [#​1010](https://redirect.github.com/apache/arrow-java/pull/1010) - [GH-1014](https://redirect.github.com/apache/arrow-java/issues/1014): \[Docs] Fix broken and obsolete links in the README.md by [@​axreldable](https://redirect.github.com/axreldable) in [#​1015](https://redirect.github.com/apache/arrow-java/pull/1015) - MINOR: \[Docs] Remove extra line in README.md (fix pre-commit) by [@​axreldable](https://redirect.github.com/axreldable) in [#​1018](https://redirect.github.com/apache/arrow-java/pull/1018) - [GH-1021](https://redirect.github.com/apache/arrow-java/issues/1021): Use released apache/arrow instead of main by [@​kou](https://redirect.github.com/kou) in [#​1022](https://redirect.github.com/apache/arrow-java/pull/1022) - MINOR: Bump org.mockito:mockito-bom from 5.17.0 to 5.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1000](https://redirect.github.com/apache/arrow-java/pull/1000) - MINOR: Bump com.gradle:develocity-maven-extension from 2.3.1 to 2.3.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1001](https://redirect.github.com/apache/arrow-java/pull/1001) - MINOR: Bump logback.version from 1.5.26 to 1.5.27 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​999](https://redirect.github.com/apache/arrow-java/pull/999) - MINOR: \[CI] Bump docker/login-action from 3.6.0 to 3.7.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​996](https://redirect.github.com/apache/arrow-java/pull/996) - MINOR: Bump commons-codec:commons-codec from 1.20.0 to 1.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​997](https://redirect.github.com/apache/arrow-java/pull/997) - MINOR: Fix minor issue with README by [@​paliwalashish](https://redirect.github.com/paliwalashish) in [#​1026](https://redirect.github.com/apache/arrow-java/pull/1026) - MINOR: Bump commons-cli:commons-cli from 1.9.0 to 1.11.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1028](https://redirect.github.com/apache/arrow-java/pull/1028) - MINOR: Bump org.codehaus.mojo:versions-maven-plugin from 2.20.0 to 2.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1029](https://redirect.github.com/apache/arrow-java/pull/1029) - MINOR: Bump com.google.api.grpc:proto-google-common-protos from 2.63.2 to 2.66.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1034](https://redirect.github.com/apache/arrow-java/pull/1034) - MINOR: \[CI] Bump actions/upload-artifact from 6.0.0 to 7.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1045](https://redirect.github.com/apache/arrow-java/pull/1045) - MINOR: Bump checker.framework.version from 3.53.0 to 3.53.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1046](https://redirect.github.com/apache/arrow-java/pull/1046) - MINOR: \[CI] Bump actions/download-artifact from 7.0.0 to 8.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1047](https://redirect.github.com/apache/arrow-java/pull/1047) - MINOR: Bump org.codehaus.mojo:build-helper-maven-plugin from 3.6.0 to 3.6.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1049](https://redirect.github.com/apache/arrow-java/pull/1049) - MINOR: Fix flaky TestBasicAuth memory leak by waiting for async buffer release by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​1058](https://redirect.github.com/apache/arrow-java/pull/1058) - MINOR: Bump org.apache.orc:orc-core from 2.2.2 to 2.3.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1056](https://redirect.github.com/apache/arrow-java/pull/1056) - MINOR: \[CI] Increase JNI macOS job timeout from 45 to 60 minutes by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​1060](https://redirect.github.com/apache/arrow-java/pull/1060) - MINOR: \[CI] Bump docker/login-action from 3.7.0 to 4.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1053](https://redirect.github.com/apache/arrow-java/pull/1053) - MINOR: Bump dep.hadoop.version from 3.4.2 to 3.4.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1055](https://redirect.github.com/apache/arrow-java/pull/1055) - MINOR: Bump io.grpc:grpc-bom from 1.78.0 to 1.79.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1048](https://redirect.github.com/apache/arrow-java/pull/1048) - MINOR: Bump com.gradle:common-custom-user-data-maven-extension from 2.0.3 to 2.1.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​998](https://redirect.github.com/apache/arrow-java/pull/998) - MINOR: Bump version to 19.0.0 by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​1066](https://redirect.github.com/apache/arrow-java/pull/1066) #### New Contributors - [@​adampolomski](https://redirect.github.com/adampolomski) made their first contribution in [#​742](https://redirect.github.com/apache/arrow-java/pull/742) - [@​rtadepalli](https://redirect.github.com/rtadepalli) made their first contribution in [#​772](https://redirect.github.com/apache/arrow-java/pull/772) - [@​xborder](https://redirect.github.com/xborder) made their first contribution in [#​806](https://redirect.github.com/apache/arrow-java/pull/806) - [@​schlosna](https://redirect.github.com/schlosna) made their first contribution in [#​817](https://redirect.github.com/apache/arrow-java/pull/817) - [@​ennuite](https://redirect.github.com/ennuite) made their first contribution in [#​811](https://redirect.github.com/apache/arrow-java/pull/811) - [@​wForget](https://redirect.github.com/wForget) made their first contribution in [#​860](https://redirect.github.com/apache/arrow-java/pull/860) - [@​XenoAmess](https://redirect.github.com/XenoAmess) made their first contribution in [#​849](https://redirect.github.com/apache/arrow-java/pull/849) - [@​milenkovicm](https://redirect.github.com/milenkovicm) made their first contribution in [#​867](https://redirect.github.com/apache/arrow-java/pull/867) - [@​XN137](https://redirect.github.com/XN137) made their first contribution in [#​901](https://redirect.github.com/apache/arrow-java/pull/901) - [@​SirOibaf](https://redirect.github.com/SirOibaf) made their first contribution in [#​855](https://redirect.github.com/apache/arrow-java/pull/855) - [@​axreldable](https://redirect.github.com/axreldable) made their first contribution in [#​885](https://redirect.github.com/apache/arrow-java/pull/885) - [@​jhrotko](https://redirect.github.com/jhrotko) made their first contribution in [#​903](https://redirect.github.com/apache/arrow-java/pull/903) - [@​Kaustav-Sarkar](https://redirect.github.com/Kaustav-Sarkar) made their first contribution in [#​938](https://redirect.github.com/apache/arrow-java/pull/938) - [@​eickler](https://redirect.github.com/eickler) made their first contribution in [#​943](https://redirect.github.com/apache/arrow-java/pull/943) - [@​tmater](https://redirect.github.com/tmater) made their first contribution in [#​945](https://redirect.github.com/apache/arrow-java/pull/945) - [@​Yicong-Huang](https://redirect.github.com/Yicong-Huang) made their first contribution in [#​967](https://redirect.github.com/apache/arrow-java/pull/967) - [@​paliwalashish](https://redirect.github.com/paliwalashish) made their first contribution in [#​1026](https://redirect.github.com/apache/arrow-java/pull/1026) - [@​torito](https://redirect.github.com/torito) made their first contribution in [#​1008](https://redirect.github.com/apache/arrow-java/pull/1008) **Full Changelog**:
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 057a962..3aa5640 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -55,7 +55,7 @@ dependencies { testImplementation 'org.assertj:assertj-core:3.27.7' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' - runtimeOnly "org.apache.arrow:arrow-memory-netty:18.3.0" + runtimeOnly "org.apache.arrow:arrow-memory-netty:19.0.0" } test { From 1e16f273b6a9f63ac4d45ee83279f705e8eb2e16 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 14:02:50 +0000 Subject: [PATCH 357/376] fix(deps): Update eclipse-temurin Docker tag to v25 (#440) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | major | `21.0.10_7-jre` β†’ `25.0.2_10-jre` | --- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d0ac531..823c746 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ COPY . . RUN gradle jar --no-daemon -FROM eclipse-temurin:21.0.10_7-jre +FROM eclipse-temurin:25.0.2_10-jre COPY --from=build /code/lib/build/libs/*.jar /app/app.jar From 284a6ff1a331eeafeb838fcf4790dc00e4927f61 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 14:18:08 +0000 Subject: [PATCH 358/376] fix(deps): Update dependency org.apache.arrow:arrow-vector to v19 (#439) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.apache.arrow:arrow-vector](https://arrow.apache.org/) ([source](https://redirect.github.com/apache/arrow-java)) | `18.3.0` β†’ `19.0.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.arrow:arrow-vector/19.0.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.arrow:arrow-vector/18.3.0/19.0.0?slim=true) | --- ### Release Notes
apache/arrow-java (org.apache.arrow:arrow-vector) ### [`v19.0.0`](https://redirect.github.com/apache/arrow-java/releases/tag/v19.0.0): Apache Arrow Java 19.0.0 #### What's Changed ##### Breaking Changes - [GH-774](https://redirect.github.com/apache/arrow-java/issues/774): Consoliate `BitVectorHelper.getValidityBufferSize` and `BaseValueVector.getValidityBufferSizeFromCount` by [@​rtadepalli](https://redirect.github.com/rtadepalli) in [#​775](https://redirect.github.com/apache/arrow-java/pull/775) - [GH-586](https://redirect.github.com/apache/arrow-java/issues/586): Override fixedSizeBinary method for UnionMapWriter by [@​axreldable](https://redirect.github.com/axreldable) in [#​885](https://redirect.github.com/apache/arrow-java/pull/885) - [GH-891](https://redirect.github.com/apache/arrow-java/issues/891): Add ExtensionTypeWriterFactory to TransferPair by [@​jhrotko](https://redirect.github.com/jhrotko) in [#​892](https://redirect.github.com/apache/arrow-java/pull/892) - [GH-948](https://redirect.github.com/apache/arrow-java/issues/948): Use buffer indexing for UUID vector by [@​jhrotko](https://redirect.github.com/jhrotko) in [#​949](https://redirect.github.com/apache/arrow-java/pull/949) - [GH-139](https://redirect.github.com/apache/arrow-java/issues/139): \[Flight] Stop return null from MetadataAdapter.getAll(String) and getAllByte(String) by [@​axreldable](https://redirect.github.com/axreldable) in [#​1016](https://redirect.github.com/apache/arrow-java/pull/1016) ##### New Features and Enhancements - [GH-52](https://redirect.github.com/apache/arrow-java/issues/52): Make RangeEqualsVisitor of RunEndEncodedVector more efficient by [@​ViggoC](https://redirect.github.com/ViggoC) in [#​761](https://redirect.github.com/apache/arrow-java/pull/761) - [GH-765](https://redirect.github.com/apache/arrow-java/issues/765): Do not close/free imported BaseStruct objects by [@​pepijnve](https://redirect.github.com/pepijnve) in [#​766](https://redirect.github.com/apache/arrow-java/pull/766) - [GH-79](https://redirect.github.com/apache/arrow-java/issues/79): Move `splitAndTransferValidityBuffer` to `BaseValueVector` by [@​rtadepalli](https://redirect.github.com/rtadepalli) in [#​777](https://redirect.github.com/apache/arrow-java/pull/777) - [GH-731](https://redirect.github.com/apache/arrow-java/issues/731): Avro adapter, output dictionary-encoded fields as enums by [@​martin-traverse](https://redirect.github.com/martin-traverse) in [#​779](https://redirect.github.com/apache/arrow-java/pull/779) - [GH-725](https://redirect.github.com/apache/arrow-java/issues/725): Added ExtensionReader by [@​xxlaykxx](https://redirect.github.com/xxlaykxx) in [#​726](https://redirect.github.com/apache/arrow-java/pull/726) - [GH-882](https://redirect.github.com/apache/arrow-java/issues/882): Add support for loading native library from a user specified location by [@​pepijnve](https://redirect.github.com/pepijnve) in [#​883](https://redirect.github.com/apache/arrow-java/pull/883) - [GH-109](https://redirect.github.com/apache/arrow-java/issues/109): Implement Vector Validators for StringView by [@​ViggoC](https://redirect.github.com/ViggoC) in [#​886](https://redirect.github.com/apache/arrow-java/pull/886) - [GH-900](https://redirect.github.com/apache/arrow-java/issues/900): Fix gandiva groupId in arrow-bom by [@​XN137](https://redirect.github.com/XN137) in [#​901](https://redirect.github.com/apache/arrow-java/pull/901) - [GH-762](https://redirect.github.com/apache/arrow-java/issues/762): Implement VectorAppender for RunEndEncodedVector by [@​ViggoC](https://redirect.github.com/ViggoC) in [#​884](https://redirect.github.com/apache/arrow-java/pull/884) - [GH-825](https://redirect.github.com/apache/arrow-java/issues/825): Add UUID canonical extension type by [@​jhrotko](https://redirect.github.com/jhrotko) in [#​903](https://redirect.github.com/apache/arrow-java/pull/903) - [GH-110](https://redirect.github.com/apache/arrow-java/issues/110): Flight SQL JDBC related StringView components implementation by [@​ViggoC](https://redirect.github.com/ViggoC) in [#​905](https://redirect.github.com/apache/arrow-java/pull/905) - [GH-863](https://redirect.github.com/apache/arrow-java/issues/863): \[JDBC] Suppress benign exceptions from gRPC layer on ArrowFlightSqlClientHandler#close by [@​ennuite](https://redirect.github.com/ennuite) in [#​910](https://redirect.github.com/apache/arrow-java/pull/910) - [GH-929](https://redirect.github.com/apache/arrow-java/issues/929): Add UUID support in JDBC driver by [@​xborder](https://redirect.github.com/xborder) in [#​930](https://redirect.github.com/apache/arrow-java/pull/930) - [GH-952](https://redirect.github.com/apache/arrow-java/issues/952): Add OAuth support by [@​xborder](https://redirect.github.com/xborder) in [#​953](https://redirect.github.com/apache/arrow-java/pull/953) - [GH-946](https://redirect.github.com/apache/arrow-java/issues/946): Add Variant extension type support by [@​tmater](https://redirect.github.com/tmater) in [#​947](https://redirect.github.com/apache/arrow-java/pull/947) - [GH-130](https://redirect.github.com/apache/arrow-java/issues/130): Fix AutoCloseables to work with [@​Nullable](https://redirect.github.com/Nullable) structures by [@​axreldable](https://redirect.github.com/axreldable) in [#​1017](https://redirect.github.com/apache/arrow-java/pull/1017) - [GH-1038](https://redirect.github.com/apache/arrow-java/issues/1038): Trim object memory for ArrowBuf by [@​lriggs](https://redirect.github.com/lriggs) in [#​1044](https://redirect.github.com/apache/arrow-java/pull/1044) - [GH-1061](https://redirect.github.com/apache/arrow-java/issues/1061): Add codegen classifier jar for arrow-vector. by [@​lriggs](https://redirect.github.com/lriggs) in [#​1062](https://redirect.github.com/apache/arrow-java/pull/1062) - [GH-301](https://redirect.github.com/apache/arrow-java/issues/301): \[Vector] Allow adding a vector at the end of VectorSchemaRoot by [@​axreldable](https://redirect.github.com/axreldable) in [#​1013](https://redirect.github.com/apache/arrow-java/pull/1013) - [GH-552](https://redirect.github.com/apache/arrow-java/issues/552): \[Vector] Add absent methods to the UnionFixedSizeListWriter by [@​axreldable](https://redirect.github.com/axreldable) in [#​1052](https://redirect.github.com/apache/arrow-java/pull/1052) ##### Bug Fixes - MINOR: add missing SOURCE\_DIR in dev/release/release.sh by [@​wgtmac](https://redirect.github.com/wgtmac) in [#​755](https://redirect.github.com/apache/arrow-java/pull/755) - MINOR: Empty stream double check by [@​adampolomski](https://redirect.github.com/adampolomski) in [#​742](https://redirect.github.com/apache/arrow-java/pull/742) - [GH-759](https://redirect.github.com/apache/arrow-java/issues/759): Get length of byte\[] in TryCopyLastError by [@​hnwyllmm](https://redirect.github.com/hnwyllmm) in [#​760](https://redirect.github.com/apache/arrow-java/pull/760) - [GH-899](https://redirect.github.com/apache/arrow-java/issues/899): \[Dataset] Initialize compute module by [@​lidavidm](https://redirect.github.com/lidavidm) in [#​893](https://redirect.github.com/apache/arrow-java/pull/893) - [GH-399](https://redirect.github.com/apache/arrow-java/issues/399): Check for null writers in DenseUnionWriter#setPosition by [@​Kaustav-Sarkar](https://redirect.github.com/Kaustav-Sarkar) in [#​938](https://redirect.github.com/apache/arrow-java/pull/938) - [GH-942](https://redirect.github.com/apache/arrow-java/issues/942): Fix JDBC Connection.setCatalog() by [@​eickler](https://redirect.github.com/eickler) in [#​943](https://redirect.github.com/apache/arrow-java/pull/943) - [GH-951](https://redirect.github.com/apache/arrow-java/issues/951): Fix CI completely, especially JNI on Windows 2022 and MacOS platforms by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​925](https://redirect.github.com/apache/arrow-java/pull/925) - MINOR: Add private constructor to UuidType singleton by [@​tmater](https://redirect.github.com/tmater) in [#​945](https://redirect.github.com/apache/arrow-java/pull/945) - [GH-964](https://redirect.github.com/apache/arrow-java/issues/964): Fix IndexOutOfBoundsException in Array.getResultSet() for JDBC clients by [@​xborder](https://redirect.github.com/xborder) in [#​965](https://redirect.github.com/apache/arrow-java/pull/965) - [GH-932](https://redirect.github.com/apache/arrow-java/issues/932): \[JDBC] Fix memory leak on Connection#close due to unclosed Statement(s) by [@​ennuite](https://redirect.github.com/ennuite) in [#​933](https://redirect.github.com/apache/arrow-java/pull/933) - [GH-125](https://redirect.github.com/apache/arrow-java/issues/125): Allow null timestamp holder sans timezone by [@​Kaustav-Sarkar](https://redirect.github.com/Kaustav-Sarkar) in [#​941](https://redirect.github.com/apache/arrow-java/pull/941) - [GH-343](https://redirect.github.com/apache/arrow-java/issues/343): Fix ListVector offset buffer not properly serialized for nested empty arrays by [@​Yicong-Huang](https://redirect.github.com/Yicong-Huang) in [#​967](https://redirect.github.com/apache/arrow-java/pull/967) - [GH-990](https://redirect.github.com/apache/arrow-java/issues/990): \[JDBC] Fix memory leak on Connection#close due to unclosed ResultSet(s) by [@​ennuite](https://redirect.github.com/ennuite) in [#​991](https://redirect.github.com/apache/arrow-java/pull/991) - [GH-993](https://redirect.github.com/apache/arrow-java/issues/993): Fix missing pipe in milestone assignment script by [@​tmater](https://redirect.github.com/tmater) in [#​992](https://redirect.github.com/apache/arrow-java/pull/992) - [GH-470](https://redirect.github.com/apache/arrow-java/issues/470): \[Vector] Fix ListViewVector.getElementEndIndex(index) method by [@​axreldable](https://redirect.github.com/axreldable) in [#​1019](https://redirect.github.com/apache/arrow-java/pull/1019) - [GH-1007](https://redirect.github.com/apache/arrow-java/issues/1007): fix: does not break class loading if direct buffer allocator is not available by [@​torito](https://redirect.github.com/torito) in [#​1008](https://redirect.github.com/apache/arrow-java/pull/1008) - [GH-994](https://redirect.github.com/apache/arrow-java/issues/994): Fix DatabaseMetaData NPEs when SqlInfo is unavailable by [@​ennuite](https://redirect.github.com/ennuite) in [#​995](https://redirect.github.com/apache/arrow-java/pull/995) - [GH-1004](https://redirect.github.com/apache/arrow-java/issues/1004): \[JDBC] Fix NPE in ArrowFlightJdbcDriver#connect​(final String url, final Properties info) by [@​ennuite](https://redirect.github.com/ennuite) in [#​1005](https://redirect.github.com/apache/arrow-java/pull/1005) - [GH-343](https://redirect.github.com/apache/arrow-java/issues/343): Fix BaseVariableWidthVector and BaseLargeVariableWidthVector offset buffer serialization by [@​Yicong-Huang](https://redirect.github.com/Yicong-Huang) in [#​989](https://redirect.github.com/apache/arrow-java/pull/989) ##### Other Changes - MINOR: Bump checker.framework.version from 3.49.2 to 3.49.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​752](https://redirect.github.com/apache/arrow-java/pull/752) - MINOR: Bump com.google.api.grpc:proto-google-common-protos from 2.54.1 to 2.56.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​750](https://redirect.github.com/apache/arrow-java/pull/750) - MINOR: Bump com.github.ben-manes.caffeine:caffeine from 3.1.8 to 3.2.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​747](https://redirect.github.com/apache/arrow-java/pull/747) - MINOR: Bump version to 19.0.0-SNAPSHOT by [@​wgtmac](https://redirect.github.com/wgtmac) in [#​754](https://redirect.github.com/apache/arrow-java/pull/754) - [GH-768](https://redirect.github.com/apache/arrow-java/issues/768): Use apache/arrow-js for JS in integration test by [@​kou](https://redirect.github.com/kou) in [#​769](https://redirect.github.com/apache/arrow-java/pull/769) - [GH-770](https://redirect.github.com/apache/arrow-java/issues/770): Ensure updating Homebrew Python on macos-13 by [@​kou](https://redirect.github.com/kou) in [#​771](https://redirect.github.com/apache/arrow-java/pull/771) - [GH-70](https://redirect.github.com/apache/arrow-java/issues/70): Move from `hamcrest` to `assertj` in `flight-sql` by [@​rtadepalli](https://redirect.github.com/rtadepalli) in [#​772](https://redirect.github.com/apache/arrow-java/pull/772) - MINOR: Add missing permission to milestone assignment bot by [@​lidavidm](https://redirect.github.com/lidavidm) in [#​673](https://redirect.github.com/apache/arrow-java/pull/673) - MINOR: Bump com.gradle:common-custom-user-data-maven-extension from 2.0.1 to 2.0.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​785](https://redirect.github.com/apache/arrow-java/pull/785) - MINOR: Bump io.grpc:grpc-bom from 1.71.0 to 1.73.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​781](https://redirect.github.com/apache/arrow-java/pull/781) - MINOR: Fix format by [@​lidavidm](https://redirect.github.com/lidavidm) in [#​809](https://redirect.github.com/apache/arrow-java/pull/809) - [GH-804](https://redirect.github.com/apache/arrow-java/issues/804): Prepend JDBC FlightSQL version to user agent by [@​xborder](https://redirect.github.com/xborder) in [#​806](https://redirect.github.com/apache/arrow-java/pull/806) - MINOR: \[CI] Bump actions/cache from 4.2.3 to 4.2.4 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​813](https://redirect.github.com/apache/arrow-java/pull/813) - MINOR: \[CI] Bump docker/login-action from 3.4.0 to 3.5.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​814](https://redirect.github.com/apache/arrow-java/pull/814) - MINOR: \[CI] Bump actions/download-artifact from 4.3.0 to 5.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​815](https://redirect.github.com/apache/arrow-java/pull/815) - [GH-816](https://redirect.github.com/apache/arrow-java/issues/816): Presize JsonStringArrayList vector results by [@​schlosna](https://redirect.github.com/schlosna) in [#​817](https://redirect.github.com/apache/arrow-java/pull/817) - [GH-797](https://redirect.github.com/apache/arrow-java/issues/797): \[JDBC] Fix PreparedStatement#execute for DML/DDL by [@​ennuite](https://redirect.github.com/ennuite) in [#​811](https://redirect.github.com/apache/arrow-java/pull/811) - [GH-841](https://redirect.github.com/apache/arrow-java/issues/841): Use apache/arrow-dotnet for integration test by [@​kou](https://redirect.github.com/kou) in [#​842](https://redirect.github.com/apache/arrow-java/pull/842) - MINOR: \[CI] Bump actions/setup-java from 4.6.0 to 5.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​847](https://redirect.github.com/apache/arrow-java/pull/847) - MINOR: \[CI] Bump actions/setup-python from 5 to 6 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​843](https://redirect.github.com/apache/arrow-java/pull/843) - MINOR: \[CI] Bump actions/github-script from 7.0.1 to 8.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​844](https://redirect.github.com/apache/arrow-java/pull/844) - [GH-858](https://redirect.github.com/apache/arrow-java/issues/858): Fix error handling in CompositeJdbcConsumer by [@​aiguofer](https://redirect.github.com/aiguofer) in [#​857](https://redirect.github.com/apache/arrow-java/pull/857) - [GH-859](https://redirect.github.com/apache/arrow-java/issues/859): Fix ARROW\_STRUCT\_CONFLICT\_POLICY env var by [@​wForget](https://redirect.github.com/wForget) in [#​860](https://redirect.github.com/apache/arrow-java/pull/860) - [GH-836](https://redirect.github.com/apache/arrow-java/issues/836): Added support of ExtensionType for ComplexCopier by [@​xxlaykxx](https://redirect.github.com/xxlaykxx) in [#​837](https://redirect.github.com/apache/arrow-java/pull/837) - [GH-848](https://redirect.github.com/apache/arrow-java/issues/848): TypedValue should be treated as Nullable in bind function in AvaticaParameterBinder by [@​XenoAmess](https://redirect.github.com/XenoAmess) in [#​849](https://redirect.github.com/apache/arrow-java/pull/849) - fix: issue with class names in arrow-c jni calls by [@​milenkovicm](https://redirect.github.com/milenkovicm) in [#​867](https://redirect.github.com/apache/arrow-java/pull/867) - [GH-839](https://redirect.github.com/apache/arrow-java/issues/839): Fix support for ResultSet.getObject for TIMESTAMP\_WITH\_TIMEZONE by [@​aiguofer](https://redirect.github.com/aiguofer) in [#​840](https://redirect.github.com/apache/arrow-java/pull/840) - [GH-880](https://redirect.github.com/apache/arrow-java/issues/880): \[CI] Fix syntax error in `dev_pr.yml` by [@​kou](https://redirect.github.com/kou) in [#​881](https://redirect.github.com/apache/arrow-java/pull/881) - [GH-592](https://redirect.github.com/apache/arrow-java/issues/592): \[Release] Use relative path in .sha\* by [@​kou](https://redirect.github.com/kou) in [#​879](https://redirect.github.com/apache/arrow-java/pull/879) - MINOR: \[CI] Bump docker/login-action from 3.5.0 to 3.6.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​870](https://redirect.github.com/apache/arrow-java/pull/870) - [GH-898](https://redirect.github.com/apache/arrow-java/issues/898): Upgrade to Apache POM 35 and identify fixes needed to have CI happy by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​865](https://redirect.github.com/apache/arrow-java/pull/865) - MINOR: Bump io.netty:netty-bom from 4.1.119.Final to 4.1.127.Final by [@​SirOibaf](https://redirect.github.com/SirOibaf) in [#​855](https://redirect.github.com/apache/arrow-java/pull/855) - MINOR: Bump logback.version from 1.5.18 to 1.5.20 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​897](https://redirect.github.com/apache/arrow-java/pull/897) - MINOR: Bump com.github.luben:zstd-jni from 1.5.7-2 to 1.5.7-6 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​896](https://redirect.github.com/apache/arrow-java/pull/896) - MINOR: \[CI] Bump actions/download-artifact from 5.0.0 to 6.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​895](https://redirect.github.com/apache/arrow-java/pull/895) - MINOR: Bump commons-codec:commons-codec from 1.18.0 to 1.19.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​871](https://redirect.github.com/apache/arrow-java/pull/871) - MINOR: \[CI] Bump actions/checkout from 4 to 5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​820](https://redirect.github.com/apache/arrow-java/pull/820) - MINOR: \[CI] Bump actions/upload-artifact from 4.6.2 to 5.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​894](https://redirect.github.com/apache/arrow-java/pull/894) - MINOR: Bump checker.framework.version from 3.49.3 to 3.49.5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​800](https://redirect.github.com/apache/arrow-java/pull/800) - MINOR: Bump error\_prone\_core.version from 2.37.0 to 2.42.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​749](https://redirect.github.com/apache/arrow-java/pull/749) - MINOR: Bump org.apache.orc:orc-core from 2.1.1 to 2.2.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​874](https://redirect.github.com/apache/arrow-java/pull/874) - MINOR: Bump com.google.protobuf:protobuf-bom from 4.30.2 to 4.33.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​888](https://redirect.github.com/apache/arrow-java/pull/888) - MINOR: \[CI] Bump actions/checkout from 5 to 6 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​911](https://redirect.github.com/apache/arrow-java/pull/911) - MINOR: Bump org.codehaus.mojo:versions-maven-plugin from 2.18.0 to 2.20.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​912](https://redirect.github.com/apache/arrow-java/pull/912) - MINOR: Bump org.bouncycastle:bcpkix-jdk18on from 1.80 to 1.82 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​919](https://redirect.github.com/apache/arrow-java/pull/919) - MINOR: Bump org.apache.drill.tools:drill-fmpp-maven-plugin from 1.21.2 to 1.22.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​918](https://redirect.github.com/apache/arrow-java/pull/918) - MINOR: Bump dep.hadoop.version from 3.4.1 to 3.4.2 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​915](https://redirect.github.com/apache/arrow-java/pull/915) - MINOR: \[CI] Bump actions/upload-artifact from 5.0.0 to 6.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​934](https://redirect.github.com/apache/arrow-java/pull/934) - MINOR: \[CI] Bump actions/download-artifact from 6.0.0 to 7.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​935](https://redirect.github.com/apache/arrow-java/pull/935) - MINOR: \[CI] Bump actions/cache from 4 to 5 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​936](https://redirect.github.com/apache/arrow-java/pull/936) - MINOR: Update macos amd64 runner by [@​lidavidm](https://redirect.github.com/lidavidm) in [#​940](https://redirect.github.com/apache/arrow-java/pull/940) - MINOR: Bump checker.framework.version from 3.52.0 to 3.52.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​927](https://redirect.github.com/apache/arrow-java/pull/927) - MINOR: Bump org.jacoco:jacoco-maven-plugin from 0.8.13 to 0.8.14 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​924](https://redirect.github.com/apache/arrow-java/pull/924) - MINOR: Bump org.immutables:value from 2.10.1 to 2.11.7 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​922](https://redirect.github.com/apache/arrow-java/pull/922) - MINOR: Bump com.google.api.grpc:proto-google-common-protos from 2.56.0 to 2.63.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​920](https://redirect.github.com/apache/arrow-java/pull/920) - MINOR: Bump io.netty:netty-bom from 4.1.119.Final to 4.2.7.Final by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​887](https://redirect.github.com/apache/arrow-java/pull/887) - MINOR: Bump parquet.version from 1.15.2 to 1.16.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​913](https://redirect.github.com/apache/arrow-java/pull/913) - MINOR: Bump org.immutables:value-annotations from 2.10.1 to 2.11.7 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​917](https://redirect.github.com/apache/arrow-java/pull/917) - MINOR: Bump logback.version from 1.5.21 to 1.5.24 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​962](https://redirect.github.com/apache/arrow-java/pull/962) - MINOR: Bump org.codehaus.mojo:exec-maven-plugin from 3.5.0 to 3.6.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​959](https://redirect.github.com/apache/arrow-java/pull/959) - MINOR: Bump org.apache.commons:commons-text from 1.13.1 to 1.15.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​956](https://redirect.github.com/apache/arrow-java/pull/956) - MINOR: Bump io.grpc:grpc-bom from 1.73.0 to 1.78.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​958](https://redirect.github.com/apache/arrow-java/pull/958) - MINOR: Bump com.github.ben-manes.caffeine:caffeine from 3.2.0 to 3.2.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​960](https://redirect.github.com/apache/arrow-java/pull/960) - MINOR: Bump org.apache.avro:avro from 1.12.0 to 1.12.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​955](https://redirect.github.com/apache/arrow-java/pull/955) - MINOR: Bump org.bouncycastle:bcpkix-jdk18on from 1.82 to 1.83 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​969](https://redirect.github.com/apache/arrow-java/pull/969) - MINOR: Bump logback.version from 1.5.24 to 1.5.25 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​975](https://redirect.github.com/apache/arrow-java/pull/975) - MINOR: Bump com.fasterxml.jackson:jackson-bom from 2.18.3 to 2.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​973](https://redirect.github.com/apache/arrow-java/pull/973) - MINOR: Bump parquet.version from 1.16.0 to 1.17.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​968](https://redirect.github.com/apache/arrow-java/pull/968) - MINOR: Bump commons-io:commons-io from 2.19.0 to 2.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​974](https://redirect.github.com/apache/arrow-java/pull/974) - MINOR: Bump com.gradle:develocity-maven-extension from 2.0 to 2.3.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​976](https://redirect.github.com/apache/arrow-java/pull/976) - MINOR: Bump org.apache.orc:orc-core from 2.2.1 to 2.2.2 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​971](https://redirect.github.com/apache/arrow-java/pull/971) - MINOR: Bump org.apache.commons:commons-dbcp2 from 2.13.0 to 2.14.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​983](https://redirect.github.com/apache/arrow-java/pull/983) - MINOR: Bump org.apache.commons:commons-compress from 1.27.1 to 1.28.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​985](https://redirect.github.com/apache/arrow-java/pull/985) - MINOR: Bump org.assertj:assertj-core from 3.27.3 to 3.27.7 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​988](https://redirect.github.com/apache/arrow-java/pull/988) - MINOR: Bump org.apache.commons:commons-pool2 from 2.12.1 to 2.13.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​987](https://redirect.github.com/apache/arrow-java/pull/987) - MINOR: Bump logback.version from 1.5.25 to 1.5.26 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​981](https://redirect.github.com/apache/arrow-java/pull/981) - MINOR: Bump com.google.protobuf:protobuf-bom from 4.33.1 to 4.33.4 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​984](https://redirect.github.com/apache/arrow-java/pull/984) - [GH-1011](https://redirect.github.com/apache/arrow-java/issues/1011): \[Docs] Fix broken Java API reference links in documentation by [@​axreldable](https://redirect.github.com/axreldable) in [#​1012](https://redirect.github.com/apache/arrow-java/pull/1012) - [GH-141](https://redirect.github.com/apache/arrow-java/issues/141): Correct capacity behavior in BufferAllocator.buffer docstrings by [@​axreldable](https://redirect.github.com/axreldable) in [#​1010](https://redirect.github.com/apache/arrow-java/pull/1010) - [GH-1014](https://redirect.github.com/apache/arrow-java/issues/1014): \[Docs] Fix broken and obsolete links in the README.md by [@​axreldable](https://redirect.github.com/axreldable) in [#​1015](https://redirect.github.com/apache/arrow-java/pull/1015) - MINOR: \[Docs] Remove extra line in README.md (fix pre-commit) by [@​axreldable](https://redirect.github.com/axreldable) in [#​1018](https://redirect.github.com/apache/arrow-java/pull/1018) - [GH-1021](https://redirect.github.com/apache/arrow-java/issues/1021): Use released apache/arrow instead of main by [@​kou](https://redirect.github.com/kou) in [#​1022](https://redirect.github.com/apache/arrow-java/pull/1022) - MINOR: Bump org.mockito:mockito-bom from 5.17.0 to 5.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1000](https://redirect.github.com/apache/arrow-java/pull/1000) - MINOR: Bump com.gradle:develocity-maven-extension from 2.3.1 to 2.3.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1001](https://redirect.github.com/apache/arrow-java/pull/1001) - MINOR: Bump logback.version from 1.5.26 to 1.5.27 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​999](https://redirect.github.com/apache/arrow-java/pull/999) - MINOR: \[CI] Bump docker/login-action from 3.6.0 to 3.7.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​996](https://redirect.github.com/apache/arrow-java/pull/996) - MINOR: Bump commons-codec:commons-codec from 1.20.0 to 1.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​997](https://redirect.github.com/apache/arrow-java/pull/997) - MINOR: Fix minor issue with README by [@​paliwalashish](https://redirect.github.com/paliwalashish) in [#​1026](https://redirect.github.com/apache/arrow-java/pull/1026) - MINOR: Bump commons-cli:commons-cli from 1.9.0 to 1.11.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1028](https://redirect.github.com/apache/arrow-java/pull/1028) - MINOR: Bump org.codehaus.mojo:versions-maven-plugin from 2.20.0 to 2.21.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1029](https://redirect.github.com/apache/arrow-java/pull/1029) - MINOR: Bump com.google.api.grpc:proto-google-common-protos from 2.63.2 to 2.66.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1034](https://redirect.github.com/apache/arrow-java/pull/1034) - MINOR: \[CI] Bump actions/upload-artifact from 6.0.0 to 7.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1045](https://redirect.github.com/apache/arrow-java/pull/1045) - MINOR: Bump checker.framework.version from 3.53.0 to 3.53.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1046](https://redirect.github.com/apache/arrow-java/pull/1046) - MINOR: \[CI] Bump actions/download-artifact from 7.0.0 to 8.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1047](https://redirect.github.com/apache/arrow-java/pull/1047) - MINOR: Bump org.codehaus.mojo:build-helper-maven-plugin from 3.6.0 to 3.6.1 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1049](https://redirect.github.com/apache/arrow-java/pull/1049) - MINOR: Fix flaky TestBasicAuth memory leak by waiting for async buffer release by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​1058](https://redirect.github.com/apache/arrow-java/pull/1058) - MINOR: Bump org.apache.orc:orc-core from 2.2.2 to 2.3.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1056](https://redirect.github.com/apache/arrow-java/pull/1056) - MINOR: \[CI] Increase JNI macOS job timeout from 45 to 60 minutes by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​1060](https://redirect.github.com/apache/arrow-java/pull/1060) - MINOR: \[CI] Bump docker/login-action from 3.7.0 to 4.0.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1053](https://redirect.github.com/apache/arrow-java/pull/1053) - MINOR: Bump dep.hadoop.version from 3.4.2 to 3.4.3 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1055](https://redirect.github.com/apache/arrow-java/pull/1055) - MINOR: Bump io.grpc:grpc-bom from 1.78.0 to 1.79.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​1048](https://redirect.github.com/apache/arrow-java/pull/1048) - MINOR: Bump com.gradle:common-custom-user-data-maven-extension from 2.0.3 to 2.1.0 by [@​dependabot](https://redirect.github.com/dependabot)\[bot] in [#​998](https://redirect.github.com/apache/arrow-java/pull/998) - MINOR: Bump version to 19.0.0 by [@​jbonofre](https://redirect.github.com/jbonofre) in [#​1066](https://redirect.github.com/apache/arrow-java/pull/1066) #### New Contributors - [@​adampolomski](https://redirect.github.com/adampolomski) made their first contribution in [#​742](https://redirect.github.com/apache/arrow-java/pull/742) - [@​rtadepalli](https://redirect.github.com/rtadepalli) made their first contribution in [#​772](https://redirect.github.com/apache/arrow-java/pull/772) - [@​xborder](https://redirect.github.com/xborder) made their first contribution in [#​806](https://redirect.github.com/apache/arrow-java/pull/806) - [@​schlosna](https://redirect.github.com/schlosna) made their first contribution in [#​817](https://redirect.github.com/apache/arrow-java/pull/817) - [@​ennuite](https://redirect.github.com/ennuite) made their first contribution in [#​811](https://redirect.github.com/apache/arrow-java/pull/811) - [@​wForget](https://redirect.github.com/wForget) made their first contribution in [#​860](https://redirect.github.com/apache/arrow-java/pull/860) - [@​XenoAmess](https://redirect.github.com/XenoAmess) made their first contribution in [#​849](https://redirect.github.com/apache/arrow-java/pull/849) - [@​milenkovicm](https://redirect.github.com/milenkovicm) made their first contribution in [#​867](https://redirect.github.com/apache/arrow-java/pull/867) - [@​XN137](https://redirect.github.com/XN137) made their first contribution in [#​901](https://redirect.github.com/apache/arrow-java/pull/901) - [@​SirOibaf](https://redirect.github.com/SirOibaf) made their first contribution in [#​855](https://redirect.github.com/apache/arrow-java/pull/855) - [@​axreldable](https://redirect.github.com/axreldable) made their first contribution in [#​885](https://redirect.github.com/apache/arrow-java/pull/885) - [@​jhrotko](https://redirect.github.com/jhrotko) made their first contribution in [#​903](https://redirect.github.com/apache/arrow-java/pull/903) - [@​Kaustav-Sarkar](https://redirect.github.com/Kaustav-Sarkar) made their first contribution in [#​938](https://redirect.github.com/apache/arrow-java/pull/938) - [@​eickler](https://redirect.github.com/eickler) made their first contribution in [#​943](https://redirect.github.com/apache/arrow-java/pull/943) - [@​tmater](https://redirect.github.com/tmater) made their first contribution in [#​945](https://redirect.github.com/apache/arrow-java/pull/945) - [@​Yicong-Huang](https://redirect.github.com/Yicong-Huang) made their first contribution in [#​967](https://redirect.github.com/apache/arrow-java/pull/967) - [@​paliwalashish](https://redirect.github.com/paliwalashish) made their first contribution in [#​1026](https://redirect.github.com/apache/arrow-java/pull/1026) - [@​torito](https://redirect.github.com/torito) made their first contribution in [#​1008](https://redirect.github.com/apache/arrow-java/pull/1008) **Full Changelog**:
--- ### Configuration πŸ“… **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [x] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 3aa5640..a7e2b90 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -35,7 +35,7 @@ dependencies { implementation 'io.grpc:grpc-services:1.80.0' implementation 'io.cloudquery:plugin-pb-java:0.0.44' implementation 'org.apache.arrow:arrow-memory-core:19.0.0' - implementation 'org.apache.arrow:arrow-vector:18.3.0' + implementation 'org.apache.arrow:arrow-vector:19.0.0' implementation 'commons-io:commons-io:2.21.0' implementation "com.fasterxml.jackson.core:jackson-core:2.21.2" From e0e403a7d68acbd91ea60f5f35b9017d8cb15a52 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 15:05:32 +0000 Subject: [PATCH 359/376] fix(deps): Update dependency io.cloudquery:plugin-pb-java to v0.0.45 (#442) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | io.cloudquery:plugin-pb-java | `0.0.44` β†’ `0.0.45` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.cloudquery:plugin-pb-java/0.0.45?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.cloudquery:plugin-pb-java/0.0.44/0.0.45?slim=true) | --- ### Configuration πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index a7e2b90..aec7ced 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -33,7 +33,7 @@ dependencies { implementation 'io.grpc:grpc-protobuf:1.80.0' implementation 'io.grpc:grpc-stub:1.80.0' implementation 'io.grpc:grpc-services:1.80.0' - implementation 'io.cloudquery:plugin-pb-java:0.0.44' + implementation 'io.cloudquery:plugin-pb-java:0.0.45' implementation 'org.apache.arrow:arrow-memory-core:19.0.0' implementation 'org.apache.arrow:arrow-vector:19.0.0' implementation 'commons-io:commons-io:2.21.0' From d1738c0c6fc25524c7a144a170dbbaac9d53dc0a Mon Sep 17 00:00:00 2001 From: CloudQuery Bot <102256036+cq-bot@users.noreply.github.com> Date: Wed, 1 Apr 2026 17:49:51 +0100 Subject: [PATCH 360/376] chore(main): Release v0.0.50 (#422) :robot: I have created a release *beep* *boop* --- ## [0.0.50](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.49...v0.0.50) (2026-04-01) ### Bug Fixes * **deps:** Pin dependencies ([#428](https://github.com/cloudquery/plugin-sdk-java/issues/428)) ([348d4f2](https://github.com/cloudquery/plugin-sdk-java/commit/348d4f2c3fccc69227f2f79ff1eabdad4f4cc758)) * **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.21.2 ([#430](https://github.com/cloudquery/plugin-sdk-java/issues/430)) ([9700fdb](https://github.com/cloudquery/plugin-sdk-java/commit/9700fdbc18b813546c08ef4e38518c942ae98032)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.43 ([#423](https://github.com/cloudquery/plugin-sdk-java/issues/423)) ([61bf310](https://github.com/cloudquery/plugin-sdk-java/commit/61bf31019ea0896ec15fa73d035149a5a517292d)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.44 ([#441](https://github.com/cloudquery/plugin-sdk-java/issues/441)) ([15246c6](https://github.com/cloudquery/plugin-sdk-java/commit/15246c68ad36e41c5eda49e1c9c961ca24a0f44e)) * **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.45 ([#442](https://github.com/cloudquery/plugin-sdk-java/issues/442)) ([e0e403a](https://github.com/cloudquery/plugin-sdk-java/commit/e0e403a7d68acbd91ea60f5f35b9017d8cb15a52)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v4.4 ([#421](https://github.com/cloudquery/plugin-sdk-java/issues/421)) ([d78cb38](https://github.com/cloudquery/plugin-sdk-java/commit/d78cb38268b76054c96fc8231c7854903d829f35)) * **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v4.4.1 ([#431](https://github.com/cloudquery/plugin-sdk-java/issues/431)) ([5917944](https://github.com/cloudquery/plugin-sdk-java/commit/591794424c8415598b932f205e7b4bc03b756ed8)) * **deps:** Update dependency org.apache.arrow:arrow-memory-core to v19 ([#437](https://github.com/cloudquery/plugin-sdk-java/issues/437)) ([c02cbd7](https://github.com/cloudquery/plugin-sdk-java/commit/c02cbd78d72a840736216231e731f5fc7f81e3f8)) * **deps:** Update dependency org.apache.arrow:arrow-memory-netty to v19 ([#438](https://github.com/cloudquery/plugin-sdk-java/issues/438)) ([e3f3811](https://github.com/cloudquery/plugin-sdk-java/commit/e3f38117cbd4b60822a780e6166a78a759c0e345)) * **deps:** Update dependency org.apache.arrow:arrow-vector to v19 ([#439](https://github.com/cloudquery/plugin-sdk-java/issues/439)) ([284a6ff](https://github.com/cloudquery/plugin-sdk-java/commit/284a6ff1a331eeafeb838fcf4790dc00e4927f61)) * **deps:** Update dependency org.mockito:mockito-core to v5.23.0 ([#432](https://github.com/cloudquery/plugin-sdk-java/issues/432)) ([24da588](https://github.com/cloudquery/plugin-sdk-java/commit/24da58803bcab2addd875b6542c60e808b3b0588)) * **deps:** Update eclipse-temurin Docker tag to v21.0.10_7-jre ([#419](https://github.com/cloudquery/plugin-sdk-java/issues/419)) ([61cbcdd](https://github.com/cloudquery/plugin-sdk-java/commit/61cbcdd0ba29cf290e6814d0d4f64aa731b20ef0)) * **deps:** Update eclipse-temurin Docker tag to v25 ([#440](https://github.com/cloudquery/plugin-sdk-java/issues/440)) ([1e16f27](https://github.com/cloudquery/plugin-sdk-java/commit/1e16f273b6a9f63ac4d45ee83279f705e8eb2e16)) * **deps:** Update Gradle to v9.4.1 ([#433](https://github.com/cloudquery/plugin-sdk-java/issues/433)) ([55f1c17](https://github.com/cloudquery/plugin-sdk-java/commit/55f1c17af681c5e47c7fc5ff4d06743e1b29f133)) * **deps:** Update grpc-java monorepo to v1.80.0 ([#434](https://github.com/cloudquery/plugin-sdk-java/issues/434)) ([9a20a3e](https://github.com/cloudquery/plugin-sdk-java/commit/9a20a3e5690ef1a276d1d2c49b43615c13a60ef3)) * **deps:** Update junit to v6.0.3 ([#420](https://github.com/cloudquery/plugin-sdk-java/issues/420)) ([9e9cc74](https://github.com/cloudquery/plugin-sdk-java/commit/9e9cc74899035d5a8998bfbeda55f301b15e2e18)) * **deps:** Update plugin com.diffplug.spotless to v8.4.0 ([#435](https://github.com/cloudquery/plugin-sdk-java/issues/435)) ([cd2fc4f](https://github.com/cloudquery/plugin-sdk-java/commit/cd2fc4f0d67fe6f147607dd6f1736e1714d850b9)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .release-please-manifest.json | 2 +- CHANGELOG.md | 23 +++++++++++++++++++++++ lib/build.gradle | 2 +- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 8783afc..c0ab9f1 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.49" + ".": "0.0.50" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 91e0d77..7889b63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## [0.0.50](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.49...v0.0.50) (2026-04-01) + + +### Bug Fixes + +* **deps:** Pin dependencies ([#428](https://github.com/cloudquery/plugin-sdk-java/issues/428)) ([348d4f2](https://github.com/cloudquery/plugin-sdk-java/commit/348d4f2c3fccc69227f2f79ff1eabdad4f4cc758)) +* **deps:** Update dependency com.fasterxml.jackson.core:jackson-core to v2.21.2 ([#430](https://github.com/cloudquery/plugin-sdk-java/issues/430)) ([9700fdb](https://github.com/cloudquery/plugin-sdk-java/commit/9700fdbc18b813546c08ef4e38518c942ae98032)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.43 ([#423](https://github.com/cloudquery/plugin-sdk-java/issues/423)) ([61bf310](https://github.com/cloudquery/plugin-sdk-java/commit/61bf31019ea0896ec15fa73d035149a5a517292d)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.44 ([#441](https://github.com/cloudquery/plugin-sdk-java/issues/441)) ([15246c6](https://github.com/cloudquery/plugin-sdk-java/commit/15246c68ad36e41c5eda49e1c9c961ca24a0f44e)) +* **deps:** Update dependency io.cloudquery:plugin-pb-java to v0.0.45 ([#442](https://github.com/cloudquery/plugin-sdk-java/issues/442)) ([e0e403a](https://github.com/cloudquery/plugin-sdk-java/commit/e0e403a7d68acbd91ea60f5f35b9017d8cb15a52)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v4.4 ([#421](https://github.com/cloudquery/plugin-sdk-java/issues/421)) ([d78cb38](https://github.com/cloudquery/plugin-sdk-java/commit/d78cb38268b76054c96fc8231c7854903d829f35)) +* **deps:** Update dependency nl.jqno.equalsverifier:equalsverifier to v4.4.1 ([#431](https://github.com/cloudquery/plugin-sdk-java/issues/431)) ([5917944](https://github.com/cloudquery/plugin-sdk-java/commit/591794424c8415598b932f205e7b4bc03b756ed8)) +* **deps:** Update dependency org.apache.arrow:arrow-memory-core to v19 ([#437](https://github.com/cloudquery/plugin-sdk-java/issues/437)) ([c02cbd7](https://github.com/cloudquery/plugin-sdk-java/commit/c02cbd78d72a840736216231e731f5fc7f81e3f8)) +* **deps:** Update dependency org.apache.arrow:arrow-memory-netty to v19 ([#438](https://github.com/cloudquery/plugin-sdk-java/issues/438)) ([e3f3811](https://github.com/cloudquery/plugin-sdk-java/commit/e3f38117cbd4b60822a780e6166a78a759c0e345)) +* **deps:** Update dependency org.apache.arrow:arrow-vector to v19 ([#439](https://github.com/cloudquery/plugin-sdk-java/issues/439)) ([284a6ff](https://github.com/cloudquery/plugin-sdk-java/commit/284a6ff1a331eeafeb838fcf4790dc00e4927f61)) +* **deps:** Update dependency org.mockito:mockito-core to v5.23.0 ([#432](https://github.com/cloudquery/plugin-sdk-java/issues/432)) ([24da588](https://github.com/cloudquery/plugin-sdk-java/commit/24da58803bcab2addd875b6542c60e808b3b0588)) +* **deps:** Update eclipse-temurin Docker tag to v21.0.10_7-jre ([#419](https://github.com/cloudquery/plugin-sdk-java/issues/419)) ([61cbcdd](https://github.com/cloudquery/plugin-sdk-java/commit/61cbcdd0ba29cf290e6814d0d4f64aa731b20ef0)) +* **deps:** Update eclipse-temurin Docker tag to v25 ([#440](https://github.com/cloudquery/plugin-sdk-java/issues/440)) ([1e16f27](https://github.com/cloudquery/plugin-sdk-java/commit/1e16f273b6a9f63ac4d45ee83279f705e8eb2e16)) +* **deps:** Update Gradle to v9.4.1 ([#433](https://github.com/cloudquery/plugin-sdk-java/issues/433)) ([55f1c17](https://github.com/cloudquery/plugin-sdk-java/commit/55f1c17af681c5e47c7fc5ff4d06743e1b29f133)) +* **deps:** Update grpc-java monorepo to v1.80.0 ([#434](https://github.com/cloudquery/plugin-sdk-java/issues/434)) ([9a20a3e](https://github.com/cloudquery/plugin-sdk-java/commit/9a20a3e5690ef1a276d1d2c49b43615c13a60ef3)) +* **deps:** Update junit to v6.0.3 ([#420](https://github.com/cloudquery/plugin-sdk-java/issues/420)) ([9e9cc74](https://github.com/cloudquery/plugin-sdk-java/commit/9e9cc74899035d5a8998bfbeda55f301b15e2e18)) +* **deps:** Update plugin com.diffplug.spotless to v8.4.0 ([#435](https://github.com/cloudquery/plugin-sdk-java/issues/435)) ([cd2fc4f](https://github.com/cloudquery/plugin-sdk-java/commit/cd2fc4f0d67fe6f147607dd6f1736e1714d850b9)) + ## [0.0.49](https://github.com/cloudquery/plugin-sdk-java/compare/v0.0.48...v0.0.49) (2026-02-04) diff --git a/lib/build.gradle b/lib/build.gradle index aec7ced..b356dc7 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -7,7 +7,7 @@ plugins { group 'io.cloudquery' // x-release-please-start-version -version = '0.0.49' +version = '0.0.50' // x-release-please-end repositories { From 9f0e9dc4153b0da23c2755e3aa38767f627b950d Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 01:29:15 +0000 Subject: [PATCH 361/376] chore(deps): Update github-actions (#443) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/create-github-app-token](https://redirect.github.com/actions/create-github-app-token) ([changelog](https://redirect.github.com/actions/create-github-app-token/compare/f8d387b68d61c58ab83c6c016672934102569859..1b10c78c7865c340bc4f6099eb2f838309f1e8c3)) | action | digest | `f8d387b` β†’ `1b10c78` | | [googleapis/release-please-action](https://redirect.github.com/googleapis/release-please-action) ([changelog](https://redirect.github.com/googleapis/release-please-action/compare/16a9c90856f42705d54a6fda1823352bdc62cf38..5c625bfb5d1ff62eadeeb3772007f7f66fdcf071)) | action | digest | `16a9c90` β†’ `5c625bf` | | gradle/actions | action | digest | `263d8fe` β†’ `11d4d83` | --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/publish.yml | 4 ++-- .github/workflows/release_pr.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7097213..0284d5c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: name: Set up Docker Buildx uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4 - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@263d8fe18eb54ae581bcdc2e263c5a49173958a3 + uses: gradle/actions/wrapper-validation@11d4d83c63a6ce61b32d8a9c4faddbdb04fe9917 - name: Build package run: ./gradlew build env: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 325a987..6294f61 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -20,9 +20,9 @@ jobs: java-version: "18" cache: "gradle" - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@263d8fe18eb54ae581bcdc2e263c5a49173958a3 + uses: gradle/actions/wrapper-validation@11d4d83c63a6ce61b32d8a9c4faddbdb04fe9917 - name: Setup Gradle - uses: gradle/actions/setup-gradle@263d8fe18eb54ae581bcdc2e263c5a49173958a3 + uses: gradle/actions/setup-gradle@11d4d83c63a6ce61b32d8a9c4faddbdb04fe9917 - name: Publish Package env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release_pr.yml b/.github/workflows/release_pr.yml index 7e7c172..9dfada3 100644 --- a/.github/workflows/release_pr.yml +++ b/.github/workflows/release_pr.yml @@ -13,13 +13,13 @@ jobs: steps: - name: Generate GitHub App token id: app-token - uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3 + uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3 with: app-id: ${{ secrets.CQ_APP_ID }} private-key: ${{ secrets.CQ_APP_PRIVATE_KEY }} permission-contents: write permission-pull-requests: write - - uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4 + - uses: googleapis/release-please-action@5c625bfb5d1ff62eadeeb3772007f7f66fdcf071 # v4 id: release with: token: ${{ steps.app-token.outputs.token }} From 38114ea7a34d604b4ed126e925c84d1739c32037 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 01:39:44 +0000 Subject: [PATCH 362/376] fix(deps): Update log4j2 monorepo to v2.25.4 (#444) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.apache.logging.log4j:log4j-core](https://logging.apache.org/log4j/2.x/) ([source](https://redirect.github.com/apache/logging-log4j2)) | `2.25.3` β†’ `2.25.4` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.logging.log4j:log4j-core/2.25.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.logging.log4j:log4j-core/2.25.3/2.25.4?slim=true) | | [org.apache.logging.log4j:log4j-api](https://logging.apache.org/log4j/2.x/) ([source](https://redirect.github.com/apache/logging-log4j2)) | `2.25.3` β†’ `2.25.4` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.logging.log4j:log4j-api/2.25.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.logging.log4j:log4j-api/2.25.3/2.25.4?slim=true) | --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index b356dc7..6e6d3b5 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -41,8 +41,8 @@ dependencies { implementation "com.fasterxml.jackson.core:jackson-core:2.21.2" implementation "com.fasterxml.jackson.core:jackson-annotations:2.21" - implementation 'org.apache.logging.log4j:log4j-api:2.25.3' - implementation 'org.apache.logging.log4j:log4j-core:2.25.3' + implementation 'org.apache.logging.log4j:log4j-api:2.25.4' + implementation 'org.apache.logging.log4j:log4j-core:2.25.4' testImplementation 'io.grpc:grpc-testing:1.80.0' testImplementation 'io.grpc:grpc-inprocess:1.80.0' From 80d5a8009e9d134a78c0bebcc409d791e78cf3c1 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 01:43:54 +0000 Subject: [PATCH 363/376] fix(deps): Update dependency com.google.guava:guava to v33.6.0-jre (#445) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [com.google.guava:guava](https://redirect.github.com/google/guava) | `33.5.0-jre` β†’ `33.6.0-jre` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.guava:guava/33.6.0-jre?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.guava:guava/33.5.0-jre/33.6.0-jre?slim=true) | --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 6e6d3b5..65b0b3a 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -27,9 +27,9 @@ dependencies { // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'org.jooq:joou:0.9.5' - implementation 'com.google.guava:guava:33.5.0-jre' + implementation 'com.google.guava:guava:33.6.0-jre' implementation 'info.picocli:picocli:4.7.7' - implementation 'com.google.guava:guava:33.5.0-jre' + implementation 'com.google.guava:guava:33.6.0-jre' implementation 'io.grpc:grpc-protobuf:1.80.0' implementation 'io.grpc:grpc-stub:1.80.0' implementation 'io.grpc:grpc-services:1.80.0' From 8cd5be778b106afc87b8537222add4665f11b3f9 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 01:48:53 +0000 Subject: [PATCH 364/376] fix(deps): Update dependency commons-io:commons-io to v2.22.0 (#446) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [commons-io:commons-io](https://commons.apache.org/proper/commons-io/) ([source](https://redirect.github.com/apache/maven-apache-parent)) | `2.21.0` β†’ `2.22.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/commons-io:commons-io/2.22.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/commons-io:commons-io/2.21.0/2.22.0?slim=true) | --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 65b0b3a..a731a70 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -36,7 +36,7 @@ dependencies { implementation 'io.cloudquery:plugin-pb-java:0.0.45' implementation 'org.apache.arrow:arrow-memory-core:19.0.0' implementation 'org.apache.arrow:arrow-vector:19.0.0' - implementation 'commons-io:commons-io:2.21.0' + implementation 'commons-io:commons-io:2.22.0' implementation "com.fasterxml.jackson.core:jackson-core:2.21.2" implementation "com.fasterxml.jackson.core:jackson-annotations:2.21" From 7095add77b7f03bfd24fbbe71d46aec7b5c2cfbe Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 01:52:38 +0000 Subject: [PATCH 365/376] fix(deps): Update dependency nl.jqno.equalsverifier:equalsverifier to v4.5 (#447) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [nl.jqno.equalsverifier:equalsverifier](https://www.jqno.nl/equalsverifier) ([source](https://redirect.github.com/jqno/equalsverifier)) | `4.4.1` β†’ `4.5` | ![age](https://developer.mend.io/api/mc/badges/age/maven/nl.jqno.equalsverifier:equalsverifier/4.5?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/nl.jqno.equalsverifier:equalsverifier/4.4.1/4.5?slim=true) | --- ### Release Notes
jqno/equalsverifier (nl.jqno.equalsverifier:equalsverifier) ### [`v4.5`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#45---2026-04-17) ##### Added - EqualsVerifier now detects when `java.net.URL` fields are used in `equals` or `hashCode`, since `URL.equals()` and `URL.hashCode()` perform DNS resolution, making them network-dependent and non-deterministic. Consider using `URI.create(url.toString())` instead. This check can be suppressed with `Warning.URL_EQUALITY`. (Issue [#​1203](https://redirect.github.com/jqno/equalsverifier/issues/1203)) ### [`v4.4.2`](https://redirect.github.com/jqno/equalsverifier/blob/HEAD/CHANGELOG.md#442---2026-04-07) ##### Changed - Multi-line error messages now align better. ##### Fixed - Fixes a bug where a `NoSuchElementException` was thrown when verifying a Kotlin class that inherits a `private val` lazy property from a parent class ([Issue 1170](https://redirect.github.com/jqno/equalsverifier/issues/1170)). - Fixes a bug where static fields of certain types (e.g., `BigDecimal` and boxed `Float`) were not restored to their original value after EqualsVerifier threw a `NullPointerException` while null-checking them. - Fixes a bug where an `Enum` field resolved to `Enum>` (because Enum has a self-referential type bound).
--- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index a731a70..d1f6f82 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -51,7 +51,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.3' testImplementation 'org.mockito:mockito-core:5.23.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.23.0' - testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.4.1' + testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.5' testImplementation 'org.assertj:assertj-core:3.27.7' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From e416550f15243c239c02c1b939fec07f662880ad Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 01:56:29 +0000 Subject: [PATCH 366/376] fix(deps): Update plugin io.freefair.lombok to v9.4.0 (#448) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | io.freefair.lombok | `9.2.0` β†’ `9.4.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.freefair.lombok:io.freefair.lombok.gradle.plugin/9.4.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.freefair.lombok:io.freefair.lombok.gradle.plugin/9.2.0/9.4.0?slim=true) | --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index d1f6f82..cd12e06 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java-library' - id "io.freefair.lombok" version "9.2.0" + id "io.freefair.lombok" version "9.4.0" id "maven-publish" id "com.diffplug.spotless" version "8.4.0" } From aebb22e39f9c5b1226ef14028239e5dcc569cf29 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 16:28:21 +0100 Subject: [PATCH 367/376] chore(deps): Update googleapis/release-please-action action to v5 (#449) Co-authored-by: cloudquery-ci[bot] <271027272+cloudquery-ci[bot]@users.noreply.github.com> --- .github/workflows/release_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release_pr.yml b/.github/workflows/release_pr.yml index 9dfada3..17134c9 100644 --- a/.github/workflows/release_pr.yml +++ b/.github/workflows/release_pr.yml @@ -19,7 +19,7 @@ jobs: private-key: ${{ secrets.CQ_APP_PRIVATE_KEY }} permission-contents: write permission-pull-requests: write - - uses: googleapis/release-please-action@5c625bfb5d1ff62eadeeb3772007f7f66fdcf071 # v4 + - uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 # v5 id: release with: token: ${{ steps.app-token.outputs.token }} From 82234ade3391451dae1bec0a957673fae708ac5a Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2026 01:29:16 +0000 Subject: [PATCH 368/376] chore(deps): Update github-actions (#451) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/create-github-app-token](https://redirect.github.com/actions/create-github-app-token) ([changelog](https://redirect.github.com/actions/create-github-app-token/compare/1b10c78c7865c340bc4f6099eb2f838309f1e8c3..bcd2ba49218906704ab6c1aa796996da409d3eb1)) | action | digest | `1b10c78` β†’ `bcd2ba4` | | [docker/setup-buildx-action](https://redirect.github.com/docker/setup-buildx-action) ([changelog](https://redirect.github.com/docker/setup-buildx-action/compare/4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd..d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5)) | action | digest | `4d04d5d` β†’ `d7f5e7f` | --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- .github/workflows/release_pr.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0284d5c..569d744 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,7 +24,7 @@ jobs: cache: "gradle" - # Required for the package command tests to work name: Set up Docker Buildx - uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4 + uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4 - name: Validate Gradle wrapper uses: gradle/actions/wrapper-validation@11d4d83c63a6ce61b32d8a9c4faddbdb04fe9917 - name: Build package diff --git a/.github/workflows/release_pr.yml b/.github/workflows/release_pr.yml index 17134c9..f49d2bb 100644 --- a/.github/workflows/release_pr.yml +++ b/.github/workflows/release_pr.yml @@ -13,7 +13,7 @@ jobs: steps: - name: Generate GitHub App token id: app-token - uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3 + uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3 with: app-id: ${{ secrets.CQ_APP_ID }} private-key: ${{ secrets.CQ_APP_PRIVATE_KEY }} From 74703b8b8d4d76daa22a834dd3d9ec17344270e3 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2026 01:38:33 +0000 Subject: [PATCH 369/376] chore(deps): Update junit (#452) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---|---|---| | [mikepenz/action-junit-report](https://redirect.github.com/mikepenz/action-junit-report) ([changelog](https://redirect.github.com/mikepenz/action-junit-report/compare/bccf2e31636835cf0874589931c4116687171386..3a81627bfac62268172037048872e8ebd4207e6d)) | action | digest | `bccf2e3` β†’ `3a81627` | | | | [org.junit.jupiter:junit-jupiter-api](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | minor | `6.0.3` β†’ `6.1.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.junit.jupiter:junit-jupiter-api/6.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.junit.jupiter:junit-jupiter-api/6.0.3/6.1.0?slim=true) | | [org.junit.jupiter:junit-jupiter](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | minor | `6.0.3` β†’ `6.1.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.junit.jupiter:junit-jupiter/6.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.junit.jupiter:junit-jupiter/6.0.3/6.1.0?slim=true) | | [org.junit:junit-bom](https://junit.org/) ([source](https://redirect.github.com/junit-team/junit-framework)) | dependencies | minor | `6.0.3` β†’ `6.1.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.junit:junit-bom/6.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.junit:junit-bom/6.0.3/6.1.0?slim=true) | --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). --- .github/workflows/ci.yml | 2 +- lib/build.gradle | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 569d744..5433845 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_ACTOR: ${{ github.actor }} - name: Publish Test Report - uses: mikepenz/action-junit-report@bccf2e31636835cf0874589931c4116687171386 # v6 + uses: mikepenz/action-junit-report@3a81627bfac62268172037048872e8ebd4207e6d # v6 if: success() || failure() # always run even if the previous step fails with: report_paths: "**/build/test-results/test/TEST-*.xml" diff --git a/lib/build.gradle b/lib/build.gradle index cd12e06..c0b0158 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -46,9 +46,9 @@ dependencies { testImplementation 'io.grpc:grpc-testing:1.80.0' testImplementation 'io.grpc:grpc-inprocess:1.80.0' - testImplementation platform('org.junit:junit-bom:6.0.3') - testImplementation 'org.junit.jupiter:junit-jupiter:6.0.3' - testImplementation 'org.junit.jupiter:junit-jupiter-api:6.0.3' + testImplementation platform('org.junit:junit-bom:6.1.0') + testImplementation 'org.junit.jupiter:junit-jupiter:6.1.0' + testImplementation 'org.junit.jupiter:junit-jupiter-api:6.1.0' testImplementation 'org.mockito:mockito-core:5.23.0' testImplementation 'org.mockito:mockito-junit-jupiter:5.23.0' testImplementation 'nl.jqno.equalsverifier:equalsverifier:4.5' From 9ab333d565e36c7b6c55e13112cdca3d087e8d72 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2026 01:42:28 +0000 Subject: [PATCH 370/376] fix(deps): Update dependency com.fasterxml.jackson.core:jackson-core to v2.21.3 (#453) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [com.fasterxml.jackson.core:jackson-core](https://redirect.github.com/FasterXML/jackson-core) | `2.21.2` β†’ `2.21.3` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.fasterxml.jackson.core:jackson-core/2.21.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.fasterxml.jackson.core:jackson-core/2.21.2/2.21.3?slim=true) | --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index c0b0158..f0a34fc 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation 'org.apache.arrow:arrow-vector:19.0.0' implementation 'commons-io:commons-io:2.22.0' - implementation "com.fasterxml.jackson.core:jackson-core:2.21.2" + implementation "com.fasterxml.jackson.core:jackson-core:2.21.3" implementation "com.fasterxml.jackson.core:jackson-annotations:2.21" implementation 'org.apache.logging.log4j:log4j-api:2.25.4' From 6f47856c71ebe71f15468f8e8d241e2306fa4f7a Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2026 01:46:36 +0000 Subject: [PATCH 371/376] fix(deps): Update eclipse-temurin Docker tag to v25.0.3_9-jre (#454) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | eclipse-temurin | final | patch | `25.0.2_10-jre` β†’ `25.0.3_9-jre` | --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 823c746..5e08392 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ COPY . . RUN gradle jar --no-daemon -FROM eclipse-temurin:25.0.2_10-jre +FROM eclipse-temurin:25.0.3_9-jre COPY --from=build /code/lib/build/libs/*.jar /app/app.jar From 8412b562585e70734e7f5ddb86b175fe4111f698 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2026 01:50:42 +0000 Subject: [PATCH 372/376] fix(deps): Update Gradle to v9.5.1 (#455) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Update | Change | |---|---|---| | [gradle](https://gradle.org) ([source](https://redirect.github.com/gradle/gradle)) | minor | `9.4.1` β†’ `9.5.1` | --- ### Release Notes
gradle/gradle (gradle) ### [`v9.5.1`](https://redirect.github.com/gradle/gradle/releases/tag/v9.5.1): 9.5.1 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v9.5.0...v9.5.1) The Gradle team is excited to announce Gradle 9.5.1. Here are the highlights of this release: - Task provenance in reports and failure messages - Type-safe accessors for precompiled Kotlin Settings plugins [Read the Release Notes](https://docs.gradle.org/9.5.1/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [atm1020](https://redirect.github.com/atm1020), [mataha](https://redirect.github.com/mataha), [Adam](https://redirect.github.com/aSemy), [Attila Kelemen](https://redirect.github.com/kelemen), [Benedikt Ritter](https://redirect.github.com/britter), [BjΓΆrn Kautler](https://redirect.github.com/Vampire), [Caro Silva Rode](https://redirect.github.com/budindepunk), [CHANHAN](https://redirect.github.com/chanani), [Dmitry Nezavitin](https://redirect.github.com/DmitryNez), [Eng Zer Jun](https://redirect.github.com/Juneezee), [KugelLibelle](https://redirect.github.com/KugelLibelle), [Madalin Valceleanu](https://redirect.github.com/vmadalin), [Markus Gaisbauer](https://redirect.github.com/quijote), [Oliver Kopp](https://redirect.github.com/koppor), [Philip Wedemann](https://redirect.github.com/hfhbd), [ploober](https://redirect.github.com/ploober), [Roberto Perez Alcolea](https://redirect.github.com/rpalcolea), [Rohit Anand](https://redirect.github.com/R0h1tAnand), [Suvrat Acharya](https://redirect.github.com/Suvrat1629), [Ujwal Suresh Vanjare](https://redirect.github.com/usv240), [Victor Merkulov](https://redirect.github.com/urdak) #### Upgrade instructions Switch your build to use Gradle 9.5.1 by updating your wrapper: ``` ./gradlew wrapper --gradle-version=9.5.1 && ./gradlew wrapper ``` See the Gradle [9.x upgrade guide](https://docs.gradle.org/9.5.1/userguide/upgrading_version_9.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/9.5.1/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle). ### [`v9.5.0`](https://redirect.github.com/gradle/gradle/releases/tag/v9.5.0): 9.5.0 [Compare Source](https://redirect.github.com/gradle/gradle/compare/v9.4.1...v9.5.0) The Gradle team is excited to announce Gradle 9.5.0. Here are the highlights of this release: - Task provenance in reports and failure messages - Type-safe accessors for precompiled Kotlin Settings plugins [Read the Release Notes](https://docs.gradle.org/9.5.0/release-notes.html) We would like to thank the following community members for their contributions to this release of Gradle: [atm1020](https://redirect.github.com/atm1020), [mataha](https://redirect.github.com/mataha), [Adam](https://redirect.github.com/aSemy), [Attila Kelemen](https://redirect.github.com/kelemen), [Benedikt Ritter](https://redirect.github.com/britter), [BjΓΆrn Kautler](https://redirect.github.com/Vampire), [Caro Silva Rode](https://redirect.github.com/budindepunk), [CHANHAN](https://redirect.github.com/chanani), [Dmitry Nezavitin](https://redirect.github.com/DmitryNez), [Eng Zer Jun](https://redirect.github.com/Juneezee), [KugelLibelle](https://redirect.github.com/KugelLibelle), [Madalin Valceleanu](https://redirect.github.com/vmadalin), [Markus Gaisbauer](https://redirect.github.com/quijote), [Oliver Kopp](https://redirect.github.com/koppor), [Philip Wedemann](https://redirect.github.com/hfhbd), [ploober](https://redirect.github.com/ploober), [Roberto Perez Alcolea](https://redirect.github.com/rpalcolea), [Rohit Anand](https://redirect.github.com/R0h1tAnand), [Suvrat Acharya](https://redirect.github.com/Suvrat1629), [Ujwal Suresh Vanjare](https://redirect.github.com/usv240), [Victor Merkulov](https://redirect.github.com/urdak) #### Upgrade instructions Switch your build to use Gradle 9.5.0 by updating your wrapper: ``` ./gradlew wrapper --gradle-version=9.5.0 && ./gradlew wrapper ``` See the Gradle [9.x upgrade guide](https://docs.gradle.org/9.5.0/userguide/upgrading_version_9.html) to learn about deprecations, breaking changes and other considerations when upgrading. For Java, Groovy, Kotlin and Android compatibility, see the [full compatibility notes](https://docs.gradle.org/9.5.0/userguide/compatibility.html). #### Reporting problems If you find a problem with this release, please file a bug on [GitHub Issues](https://redirect.github.com/gradle/gradle/issues) adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the [forum](https://discuss.gradle.org/c/help-discuss). We hope you will build happiness with Gradle, and we look forward to your feedback via [Twitter](https://twitter.com/gradle) or on [GitHub](https://redirect.github.com/gradle).
--- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c61a118..5dd3c01 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 281e6df578d834f050617bfe50b96027b399271a Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2026 02:03:47 +0000 Subject: [PATCH 373/376] fix(deps): Update log4j2 monorepo to v2.26.0 (#457) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.apache.logging.log4j:log4j-core](https://logging.apache.org/log4j/2.x/) ([source](https://redirect.github.com/apache/logging-log4j2)) | `2.25.4` β†’ `2.26.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.logging.log4j:log4j-core/2.26.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.logging.log4j:log4j-core/2.25.4/2.26.0?slim=true) | | [org.apache.logging.log4j:log4j-api](https://logging.apache.org/log4j/2.x/) ([source](https://redirect.github.com/apache/logging-log4j2)) | `2.25.4` β†’ `2.26.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.logging.log4j:log4j-api/2.26.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.logging.log4j:log4j-api/2.25.4/2.26.0?slim=true) | --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index f0a34fc..be9dee1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -41,8 +41,8 @@ dependencies { implementation "com.fasterxml.jackson.core:jackson-core:2.21.3" implementation "com.fasterxml.jackson.core:jackson-annotations:2.21" - implementation 'org.apache.logging.log4j:log4j-api:2.25.4' - implementation 'org.apache.logging.log4j:log4j-core:2.25.4' + implementation 'org.apache.logging.log4j:log4j-api:2.26.0' + implementation 'org.apache.logging.log4j:log4j-core:2.26.0' testImplementation 'io.grpc:grpc-testing:1.80.0' testImplementation 'io.grpc:grpc-inprocess:1.80.0' From bd5f7b7f45e4b23c2038fff266dd9f5fb84c2ba0 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2026 02:07:49 +0000 Subject: [PATCH 374/376] fix(deps): Update plugin com.diffplug.spotless to v8.5.1 (#458) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | com.diffplug.spotless | `8.4.0` β†’ `8.5.1` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.diffplug.spotless:com.diffplug.spotless.gradle.plugin/8.5.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.diffplug.spotless:com.diffplug.spotless.gradle.plugin/8.4.0/8.5.1?slim=true) | --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index be9dee1..6b1278e 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -2,7 +2,7 @@ plugins { id 'java-library' id "io.freefair.lombok" version "9.4.0" id "maven-publish" - id "com.diffplug.spotless" version "8.4.0" + id "com.diffplug.spotless" version "8.5.1" } group 'io.cloudquery' From cb08da1d2e4a7bad5629893e4ecab2335c6710a8 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2026 02:11:47 +0000 Subject: [PATCH 375/376] fix(deps): Update plugin io.freefair.lombok to v9.5.0 (#459) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | io.freefair.lombok | `9.4.0` β†’ `9.5.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.freefair.lombok:io.freefair.lombok.gradle.plugin/9.5.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.freefair.lombok:io.freefair.lombok.gradle.plugin/9.4.0/9.5.0?slim=true) | --- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index 6b1278e..3ac49d9 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java-library' - id "io.freefair.lombok" version "9.4.0" + id "io.freefair.lombok" version "9.5.0" id "maven-publish" id "com.diffplug.spotless" version "8.5.1" } From 41b63926b16fb72a1a5d353bf13853a0d3271a13 Mon Sep 17 00:00:00 2001 From: "cloudquery-ci[bot]" <271027272+cloudquery-ci[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2026 03:32:57 +0000 Subject: [PATCH 376/376] fix(deps): Update grpc-java monorepo to v1.81.0 (#456) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [io.grpc:grpc-inprocess](https://redirect.github.com/grpc/grpc-java) | `1.80.0` β†’ `1.81.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.grpc:grpc-inprocess/1.81.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.grpc:grpc-inprocess/1.80.0/1.81.0?slim=true) | | [io.grpc:grpc-testing](https://redirect.github.com/grpc/grpc-java) | `1.80.0` β†’ `1.81.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.grpc:grpc-testing/1.81.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.grpc:grpc-testing/1.80.0/1.81.0?slim=true) | | [io.grpc:grpc-services](https://redirect.github.com/grpc/grpc-java) | `1.80.0` β†’ `1.81.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.grpc:grpc-services/1.81.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.grpc:grpc-services/1.80.0/1.81.0?slim=true) | | [io.grpc:grpc-stub](https://redirect.github.com/grpc/grpc-java) | `1.80.0` β†’ `1.81.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.grpc:grpc-stub/1.81.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.grpc:grpc-stub/1.80.0/1.81.0?slim=true) | | [io.grpc:grpc-protobuf](https://redirect.github.com/grpc/grpc-java) | `1.80.0` β†’ `1.81.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.grpc:grpc-protobuf/1.81.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.grpc:grpc-protobuf/1.80.0/1.81.0?slim=true) | --- ### Release Notes
grpc/grpc-java (io.grpc:grpc-inprocess) ### [`v1.81.0`](https://redirect.github.com/grpc/grpc-java/releases/tag/v1.81.0) In this release we drop support for Android API level 22 or lower (Lollipop or earlier), following Google Play Service’s [discontinued updates for Lollipop (API levels 21 & 22)](https://developers.google.com/android/guides/setup) and now requires a minimum of API level 23 (Android 6.0 Marshmallow). **API Changes** - api: Deprecate LoadBalancer.handleResolvedAddresses(). Developers maintaining custom LoadBalancer implementations should transition to using LoadBalancer.acceptResolvedAddresses(). Unlike the deprecated method, acceptResolvedAddresses() returns a Status object, allowing the load balancer to explicitly report success or reject the update if the provided addresses or configuration are invalid. ([#​11623](https://redirect.github.com/grpc/grpc-java/issues/11623)) **Behavior Changes** - core: Enable dns "caching" on Android for 30 seconds to reduce CPU impact of a refresh loop with an LB policy ([`0675f70`](https://redirect.github.com/grpc/grpc-java/commit/0675f70af)). DnsNameResolver ignores re-resolution requests on OpenJDK-like platforms if it has been too soon since the last DNS query because InetAddress.getAllByName() has a cache with a fixed entry lifetime, but this logic was disabled for Android which does not have that style of cache. Android’s cache uses the result TTL, which will rarely be less than 30 seconds. This change would probably be most noticeable when 1) changing to a different network (e.g., from wifi to mobile), 2) the server has different addresses for different networks, and 3) the app is not using AndroidChannelBuilder with an `android.context.Context`. For reference, it seems Chrome caches for 1 minute **Bug Fixes** - opentelemetry: Fix baggage propagation, the baggage propagation for opentelemetry introduced in [#​12389](https://redirect.github.com/grpc/grpc-java/pull/12389) was broken. The context is decided once and used for all recording for the call, thus guaranteeing all record()s have consistent information. - core: Address a race condition where `ManagedChannelOrphanWrapper` could incorrectly log a "not shutdown properly" warning during garbage collection when using directExecutor(). ([#​12705](https://redirect.github.com/grpc/grpc-java/issues/12705)) ([`d459338`](https://redirect.github.com/grpc/grpc-java/commit/d459338d9)) - xds: Fix xDS HTTP CONNECT's transport socket name bug which is now corrected to use `typeUrl`. ([#​12740](https://redirect.github.com/grpc/grpc-java/issues/12740)) ([`eac9fe9`](https://redirect.github.com/grpc/grpc-java/commit/eac9fe961)) - xds: Fix an issue where subchannel metrics were dropping their association with the `backend_service`. This ensures xDS load balancing metrics are reported accurately. ([#​12735](https://redirect.github.com/grpc/grpc-java/issues/12735)) **New Features** - netty: Add tcp metrics, by implementing a few of the metrics defined in [A80](https://redirect.github.com/grpc/proposal/pull/519). - api: Add a CallOption for a custom label on per-RPC metrics ([`0e39b29`](https://redirect.github.com/grpc/grpc-java/commit/0e39b2967)). This CallOption is copied by grpc-opentelemetry to the `grpc.client.call.custom` label as defined by [gRFC A108](https://redirect.github.com/grpc/proposal/blob/master/A108-otel-custom-per-call-label.md). See also the [gRPC OpenTelemetry Metrics guide](https://grpc.io/docs/guides/opentelemetry-metrics/) (update [in-progress](https://redirect.github.com/grpc/grpc.io/pull/1505)) - xds: Add support for Weighted Round Robin (WRR) load balancing driven by custom backend metrics, implementing the behavior defined in gRFC A114. ([#​12645](https://redirect.github.com/grpc/grpc-java/issues/12645)) - utils: Update `AdvancedTlsX509KeyManager` so that developers can now preserve and use key aliases when dynamically reloading TLS certificates. ([#​12686](https://redirect.github.com/grpc/grpc-java/issues/12686)) **Documentation** - Update the "Outgoing Flow Control" section in the Manual Flow Control example to say onNext() does not block, but rather queues the messages in memory and advises developers to use CallStreamObserver.isReady() to prevent this memory exhaustion ([#​12700](https://redirect.github.com/grpc/grpc-java/issues/12700)) ([`a3a9ffc`](https://redirect.github.com/grpc/grpc-java/commit/a3a9ffcbe)) ([#​12726](https://redirect.github.com/grpc/grpc-java/issues/12726)) ([`65ae2ef`](https://redirect.github.com/grpc/grpc-java/commit/65ae2efda)) - examples: Clean up Health example, and document need for grpc-services ([`3ed732f`](https://redirect.github.com/grpc/grpc-java/commit/3ed732fc0)) **Dependencies** - Upgrade Dependencies ([#​12719](https://redirect.github.com/grpc/grpc-java/issues/12719)) ([`16e17ab`](https://redirect.github.com/grpc/grpc-java/commit/16e17abba)). Google-auth-library: 1.42.1, animal-sniffer: 1.27, assertj-core:3.27.7, error\_prone\_annotations:2.48.0, proto-google-common-protos:2.64.1, google-cloud-logging:3.23.10, jetty-http2-server:12.1.7, jetty-ee10-servlet:12.1.7, lincheck:3.4, opentelemetry-api:1.60.1, opentelemetry-exporter-prometheus:1.60.1-alpha, opentelemetry-gcp-resources:1.54.0-alpha, opentelemetry-sdk-extension-autoconfigure:1.60.1, opentelemetry-sdk-testing:1.60.1, robolectric:4.16.1, tomcat-embed-core:10.1.52, tomcat-embed-core9: 9.0.115, - Upgrade Netty to 4.1.132 and netty-tcnative to 2.0.75 ([`1528f80`](https://redirect.github.com/grpc/grpc-java/commit/1528f809c)) **Thanks to** - [@​becomeStar](https://redirect.github.com/becomeStar) - [@​benjaminp](https://redirect.github.com/benjaminp) - [@​JoeCqupt](https://redirect.github.com/JoeCqupt) - [@​Kainsin](https://redirect.github.com/Kainsin) - [@​merlimat](https://redirect.github.com/merlimat) - [@​SreeramdasLavanya](https://redirect.github.com/SreeramdasLavanya) - [@​themechbro](https://redirect.github.com/themechbro) - [@​zhangweikop](https://redirect.github.com/zhangweikop)
--- ### Configuration πŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month (`* 0-3 1 * *`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 3ac49d9..2c661bd 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -30,9 +30,9 @@ dependencies { implementation 'com.google.guava:guava:33.6.0-jre' implementation 'info.picocli:picocli:4.7.7' implementation 'com.google.guava:guava:33.6.0-jre' - implementation 'io.grpc:grpc-protobuf:1.80.0' - implementation 'io.grpc:grpc-stub:1.80.0' - implementation 'io.grpc:grpc-services:1.80.0' + implementation 'io.grpc:grpc-protobuf:1.81.0' + implementation 'io.grpc:grpc-stub:1.81.0' + implementation 'io.grpc:grpc-services:1.81.0' implementation 'io.cloudquery:plugin-pb-java:0.0.45' implementation 'org.apache.arrow:arrow-memory-core:19.0.0' implementation 'org.apache.arrow:arrow-vector:19.0.0' @@ -44,8 +44,8 @@ dependencies { implementation 'org.apache.logging.log4j:log4j-api:2.26.0' implementation 'org.apache.logging.log4j:log4j-core:2.26.0' - testImplementation 'io.grpc:grpc-testing:1.80.0' - testImplementation 'io.grpc:grpc-inprocess:1.80.0' + testImplementation 'io.grpc:grpc-testing:1.81.0' + testImplementation 'io.grpc:grpc-inprocess:1.81.0' testImplementation platform('org.junit:junit-bom:6.1.0') testImplementation 'org.junit.jupiter:junit-jupiter:6.1.0' testImplementation 'org.junit.jupiter:junit-jupiter-api:6.1.0'