From a34c76c07af5bade3a38ea508b46eb1e3898325b Mon Sep 17 00:00:00 2001 From: Giuseppe Villani Date: Thu, 12 Dec 2024 09:54:47 +0100 Subject: [PATCH] Fixes #4245: Add integration test to check that apache.commons.collections is not present anymore (#4279) (#4302) * Fixes #4245: Add integration test to check that apache.commons.collections is not present anymore (#4279) * Fixes #4245: Add integration test to check that apache.commons.collections is not present anymore * fix tests * fix CI error * removed import org.apache.commons.collections --- .../test/java/apoc/util/WeaviateTestUtil.java | 71 +++++++++++ .../apoc/vectordb/WeaviateEnterpriseTest.java | 118 ++++++++++++++++++ .../test/java/apoc/vectordb/WeaviateTest.java | 92 +++++--------- extended/src/main/java/apoc/ml/OpenAI.java | 4 +- .../main/java/apoc/util/ExtendedMapUtils.java | 4 + .../main/java/apoc/vectordb/VectorDbUtil.java | 4 +- .../java/apoc/vectordb/VectorDbTestUtil.java | 2 +- 7 files changed, 232 insertions(+), 63 deletions(-) create mode 100644 extended-it/src/test/java/apoc/util/WeaviateTestUtil.java create mode 100644 extended-it/src/test/java/apoc/vectordb/WeaviateEnterpriseTest.java diff --git a/extended-it/src/test/java/apoc/util/WeaviateTestUtil.java b/extended-it/src/test/java/apoc/util/WeaviateTestUtil.java new file mode 100644 index 0000000000..f02d757130 --- /dev/null +++ b/extended-it/src/test/java/apoc/util/WeaviateTestUtil.java @@ -0,0 +1,71 @@ +package apoc.util; + +import org.testcontainers.weaviate.WeaviateContainer; + +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import static apoc.ml.RestAPIConfig.HEADERS_KEY; +import static apoc.util.Util.map; +import static apoc.vectordb.VectorDbTestUtil.EntityType.FALSE; +import static apoc.vectordb.VectorDbTestUtil.assertBerlinResult; +import static apoc.vectordb.VectorDbTestUtil.assertLondonResult; +import static apoc.vectordb.VectorDbTestUtil.getAuthHeader; +import static org.junit.Assert.assertNotNull; + +public class WeaviateTestUtil { + public static final List FIELDS = List.of("city", "foo"); + public static final String ADMIN_KEY = "jane-secret-key"; + public static final String READONLY_KEY = "ian-secret-key"; + public static final String COLLECTION_NAME = "TestCollection"; + + public static final WeaviateContainer WEAVIATE_CONTAINER = new WeaviateContainer("semitechnologies/weaviate:1.24.5") + .withEnv("AUTHENTICATION_APIKEY_ENABLED", "true") + .withEnv("AUTHENTICATION_APIKEY_ALLOWED_KEYS", ADMIN_KEY + "," + READONLY_KEY) + .withEnv("AUTHENTICATION_APIKEY_USERS", "jane@doe.com,ian-smith") + .withEnv("AUTHORIZATION_ADMINLIST_ENABLED", "true") + .withEnv("AUTHORIZATION_ADMINLIST_USERS", "jane@doe.com,john@doe.com") + .withEnv("AUTHORIZATION_ADMINLIST_READONLY_USERS", "ian-smith,roberta@doe.com"); + + public static final Map ADMIN_AUTHORIZATION = getAuthHeader(ADMIN_KEY); + public static final Map READONLY_AUTHORIZATION = getAuthHeader(READONLY_KEY); + public static final Map ADMIN_HEADER_CONF = map(HEADERS_KEY, ADMIN_AUTHORIZATION); + + public static final String ID_1 = "8ef2b3a7-1e56-4ddd-b8c3-2ca8901ce308"; + public static final String ID_2 = "9ef2b3a7-1e56-4ddd-b8c3-2ca8901ce308"; + + public static String HOST; + public static final int WEAVIATE_PORT = 8080; + + public static final String WEAVIATE_CREATE_COLLECTION_APOC = "CALL apoc.vectordb.weaviate.createCollection($host, 'TestCollection', 'cosine', 4, $conf)"; + + public static final String WEAVIATE_DELETE_COLLECTION_APOC = "CALL apoc.vectordb.weaviate.deleteCollection($host, $collectionName, $conf)"; + + public static final String WEAVIATE_QUERY_APOC = "CALL apoc.vectordb.weaviate.query($host, 'TestCollection', [0.2, 0.1, 0.9, 0.7], null, 5, $conf) YIELD score, vector, id, metadata RETURN * ORDER BY id"; + + public static final String WEAVIATE_DELETE_VECTOR_APOC = "CALL apoc.vectordb.weaviate.delete($host, 'TestCollection', ['7ef2b3a7-1e56-4ddd-b8c3-2ca8901ce308', '7ef2b3a7-1e56-4ddd-b8c3-2ca8901ce309'], $conf)"; + + public static final String WEAVIATE_UPSERT_QUERY = """ + CALL apoc.vectordb.weaviate.upsert($host, 'TestCollection', + [ + {id: $id1, vector: [0.05, 0.61, 0.76, 0.74], metadata: {city: "Berlin", foo: "one"}}, + {id: $id2, vector: [0.19, 0.81, 0.75, 0.11], metadata: {city: "London", foo: "two"}}, + {id: '7ef2b3a7-1e56-4ddd-b8c3-2ca8901ce308', vector: [0.19, 0.81, 0.75, 0.11], metadata: {foo: "baz"}}, + {id: '7ef2b3a7-1e56-4ddd-b8c3-2ca8901ce309', vector: [0.19, 0.81, 0.75, 0.11], metadata: {foo: "baz"}} + ], + $conf) + """; + + public static void queryVectorsAssertions(Iterator> r) { + Map row = r.next(); + assertBerlinResult(row, ID_1, FALSE); + assertNotNull(row.get("score")); + assertNotNull(row.get("vector")); + + row = r.next(); + assertLondonResult(row, ID_2, FALSE); + assertNotNull(row.get("score")); + assertNotNull(row.get("vector")); + } +} diff --git a/extended-it/src/test/java/apoc/vectordb/WeaviateEnterpriseTest.java b/extended-it/src/test/java/apoc/vectordb/WeaviateEnterpriseTest.java new file mode 100644 index 0000000000..c28f61f892 --- /dev/null +++ b/extended-it/src/test/java/apoc/vectordb/WeaviateEnterpriseTest.java @@ -0,0 +1,118 @@ +package apoc.vectordb; + +import apoc.util.MapUtil; +import apoc.util.Neo4jContainerExtension; +import apoc.util.TestContainerUtil; +import apoc.util.WeaviateTestUtil; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.ClassRule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import org.neo4j.driver.Session; +import org.testcontainers.containers.Network; + +import java.util.List; +import java.util.Map; + +import static apoc.ml.RestAPIConfig.HEADERS_KEY; +import static apoc.util.TestContainerUtil.createEnterpriseDB; +import static apoc.util.TestContainerUtil.testCall; +import static apoc.util.TestContainerUtil.testCallEmpty; +import static apoc.util.TestContainerUtil.testResult; +import static apoc.util.Util.map; +import static apoc.util.WeaviateTestUtil.ADMIN_AUTHORIZATION; +import static apoc.util.WeaviateTestUtil.ADMIN_HEADER_CONF; +import static apoc.util.WeaviateTestUtil.COLLECTION_NAME; +import static apoc.util.WeaviateTestUtil.FIELDS; +import static apoc.util.WeaviateTestUtil.HOST; +import static apoc.util.WeaviateTestUtil.ID_1; +import static apoc.util.WeaviateTestUtil.ID_2; +import static apoc.util.WeaviateTestUtil.WEAVIATE_CONTAINER; +import static apoc.util.WeaviateTestUtil.WEAVIATE_CREATE_COLLECTION_APOC; +import static apoc.util.WeaviateTestUtil.WEAVIATE_DELETE_COLLECTION_APOC; +import static apoc.util.WeaviateTestUtil.WEAVIATE_DELETE_VECTOR_APOC; +import static apoc.util.WeaviateTestUtil.WEAVIATE_PORT; +import static apoc.util.WeaviateTestUtil.WEAVIATE_QUERY_APOC; +import static apoc.util.WeaviateTestUtil.WEAVIATE_UPSERT_QUERY; +import static apoc.vectordb.VectorEmbeddingConfig.ALL_RESULTS_KEY; +import static apoc.vectordb.VectorEmbeddingConfig.FIELDS_KEY; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + + +public class WeaviateEnterpriseTest { + + @ClassRule + public static TemporaryFolder storeDir = new TemporaryFolder(); + private static Neo4jContainerExtension neo4jContainer; + private static Session session; + + @BeforeClass + public static void setUp() throws Exception { + Network network = Network.newNetwork(); + + // We build the project, the artifact will be placed into ./build/libs + neo4jContainer = createEnterpriseDB(List.of(TestContainerUtil.ApocPackage.EXTENDED), true) + .withNetwork(network) + .withNetworkAliases("neo4j"); + neo4jContainer.start(); + session = neo4jContainer.getSession(); + + String weaviateAlias = "weaviate"; + WEAVIATE_CONTAINER.withNetwork(network) + .withNetworkAliases(weaviateAlias) + .withExposedPorts(WEAVIATE_PORT); + WEAVIATE_CONTAINER.start(); + + HOST = weaviateAlias + ":" + WEAVIATE_PORT; + + testCall(session, WEAVIATE_CREATE_COLLECTION_APOC, + map("host", HOST, "conf", ADMIN_HEADER_CONF), + r -> { + Map value = (Map) r.get("value"); + assertEquals("TestCollection", value.get("class")); + }); + + testResult(session, WEAVIATE_UPSERT_QUERY, + map("host", HOST, "id1", ID_1, "id2", ID_2, "conf", ADMIN_HEADER_CONF), + r -> { + Map row = r.next(); + Map value = (Map) row.get("value"); + + assertEquals(COLLECTION_NAME, value.get("class")); + + while (r.hasNext()) { + row = r.next(); + value = (Map) row.get("value"); + assertEquals(COLLECTION_NAME, value.get("class")); + } + assertFalse(r.hasNext()); + }); + + // -- delete vector + testCall(session, WEAVIATE_DELETE_VECTOR_APOC, + map("host", HOST, "conf", ADMIN_HEADER_CONF), + r -> { + List value = (List) r.get("value"); + assertEquals(List.of("7ef2b3a7-1e56-4ddd-b8c3-2ca8901ce308", "7ef2b3a7-1e56-4ddd-b8c3-2ca8901ce309"), value); + }); + } + + @AfterClass + public static void tearDown() throws Exception { + testCallEmpty(session, WEAVIATE_DELETE_COLLECTION_APOC, + MapUtil.map("host", HOST, "collectionName", COLLECTION_NAME, "conf", ADMIN_HEADER_CONF) + ); + session.close(); + neo4jContainer.close(); + WEAVIATE_CONTAINER.stop(); + } + + @Test + public void queryVectors() { + testResult(session, WEAVIATE_QUERY_APOC, + map("host", HOST, "conf", map(ALL_RESULTS_KEY, true, FIELDS_KEY, FIELDS, HEADERS_KEY, ADMIN_AUTHORIZATION)), + WeaviateTestUtil::queryVectorsAssertions); + } +} diff --git a/extended-it/src/test/java/apoc/vectordb/WeaviateTest.java b/extended-it/src/test/java/apoc/vectordb/WeaviateTest.java index 75c43e2b88..66671e26de 100644 --- a/extended-it/src/test/java/apoc/vectordb/WeaviateTest.java +++ b/extended-it/src/test/java/apoc/vectordb/WeaviateTest.java @@ -1,9 +1,9 @@ package apoc.vectordb; import apoc.ml.Prompt; -import apoc.util.ExtendedTestUtil; import apoc.util.MapUtil; import apoc.util.TestUtil; +import apoc.util.WeaviateTestUtil; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; @@ -15,7 +15,6 @@ import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.ResourceIterator; import org.neo4j.test.TestDatabaseManagementServiceBuilder; -import org.testcontainers.weaviate.WeaviateContainer; import java.util.List; import java.util.Map; @@ -27,6 +26,21 @@ import static apoc.util.TestUtil.testCallEmpty; import static apoc.util.TestUtil.testResult; import static apoc.util.Util.map; +import static apoc.util.WeaviateTestUtil.ADMIN_AUTHORIZATION; +import static apoc.util.WeaviateTestUtil.ADMIN_HEADER_CONF; +import static apoc.util.WeaviateTestUtil.ADMIN_KEY; +import static apoc.util.WeaviateTestUtil.COLLECTION_NAME; +import static apoc.util.WeaviateTestUtil.FIELDS; +import static apoc.util.WeaviateTestUtil.HOST; +import static apoc.util.WeaviateTestUtil.ID_1; +import static apoc.util.WeaviateTestUtil.ID_2; +import static apoc.util.WeaviateTestUtil.READONLY_AUTHORIZATION; +import static apoc.util.WeaviateTestUtil.WEAVIATE_CONTAINER; +import static apoc.util.WeaviateTestUtil.WEAVIATE_CREATE_COLLECTION_APOC; +import static apoc.util.WeaviateTestUtil.WEAVIATE_DELETE_COLLECTION_APOC; +import static apoc.util.WeaviateTestUtil.WEAVIATE_DELETE_VECTOR_APOC; +import static apoc.util.WeaviateTestUtil.WEAVIATE_QUERY_APOC; +import static apoc.util.WeaviateTestUtil.WEAVIATE_UPSERT_QUERY; import static apoc.vectordb.VectorDbHandler.Type.WEAVIATE; import static apoc.vectordb.VectorDbTestUtil.EntityType.FALSE; import static apoc.vectordb.VectorDbTestUtil.EntityType.NODE; @@ -37,12 +51,18 @@ import static apoc.vectordb.VectorDbTestUtil.assertReadOnlyProcWithMappingResults; import static apoc.vectordb.VectorDbTestUtil.assertRelsCreated; import static apoc.vectordb.VectorDbTestUtil.dropAndDeleteAll; -import static apoc.vectordb.VectorDbTestUtil.getAuthHeader; import static apoc.vectordb.VectorDbTestUtil.ragSetup; import static apoc.vectordb.VectorEmbeddingConfig.ALL_RESULTS_KEY; import static apoc.vectordb.VectorEmbeddingConfig.FIELDS_KEY; import static apoc.vectordb.VectorEmbeddingConfig.MAPPING_KEY; -import static apoc.vectordb.VectorMappingConfig.*; +import static apoc.vectordb.VectorMappingConfig.EMBEDDING_KEY; +import static apoc.vectordb.VectorMappingConfig.ENTITY_KEY; +import static apoc.vectordb.VectorMappingConfig.METADATA_KEY; +import static apoc.vectordb.VectorMappingConfig.MODE_KEY; +import static apoc.vectordb.VectorMappingConfig.MappingMode; +import static apoc.vectordb.VectorMappingConfig.NODE_LABEL; +import static apoc.vectordb.VectorMappingConfig.NO_FIELDS_ERROR_MSG; +import static apoc.vectordb.VectorMappingConfig.REL_TYPE; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -54,29 +74,7 @@ public class WeaviateTest { - private static final List FIELDS = List.of("city", "foo"); - private static final String ADMIN_KEY = "jane-secret-key"; - private static final String READONLY_KEY = "ian-secret-key"; - private static final String COLLECTION_NAME = "TestCollection"; - - private static final WeaviateContainer WEAVIATE_CONTAINER = new WeaviateContainer("semitechnologies/weaviate:1.24.5") - .withEnv("AUTHENTICATION_APIKEY_ENABLED", "true") - .withEnv("AUTHENTICATION_APIKEY_ALLOWED_KEYS", ADMIN_KEY + "," + READONLY_KEY) - .withEnv("AUTHENTICATION_APIKEY_USERS", "jane@doe.com,ian-smith") - - .withEnv("AUTHORIZATION_ADMINLIST_ENABLED", "true") - .withEnv("AUTHORIZATION_ADMINLIST_USERS", "jane@doe.com,john@doe.com") - .withEnv("AUTHORIZATION_ADMINLIST_READONLY_USERS", "ian-smith,roberta@doe.com"); - - private static final Map ADMIN_AUTHORIZATION = getAuthHeader(ADMIN_KEY); - private static final Map READONLY_AUTHORIZATION = getAuthHeader(READONLY_KEY); - private static final Map ADMIN_HEADER_CONF = map(HEADERS_KEY, ADMIN_AUTHORIZATION); - - private static final String ID_1 = "8ef2b3a7-1e56-4ddd-b8c3-2ca8901ce308"; - private static final String ID_2 = "9ef2b3a7-1e56-4ddd-b8c3-2ca8901ce308"; - - private static String HOST; - + @ClassRule public static TemporaryFolder storeDir = new TemporaryFolder(); @@ -96,23 +94,14 @@ public static void setUp() throws Exception { TestUtil.registerProcedure(db, Weaviate.class, VectorDb.class, Prompt.class); - testCall(db, "CALL apoc.vectordb.weaviate.createCollection($host, 'TestCollection', 'cosine', 4, $conf)", + testCall(db, WEAVIATE_CREATE_COLLECTION_APOC, MapUtil.map("host", HOST, "conf", ADMIN_HEADER_CONF), r -> { Map value = (Map) r.get("value"); assertEquals("TestCollection", value.get("class")); }); - testResult(db, """ - CALL apoc.vectordb.weaviate.upsert($host, 'TestCollection', - [ - {id: $id1, vector: [0.05, 0.61, 0.76, 0.74], metadata: {city: "Berlin", foo: "one"}}, - {id: $id2, vector: [0.19, 0.81, 0.75, 0.11], metadata: {city: "London", foo: "two"}}, - {id: '7ef2b3a7-1e56-4ddd-b8c3-2ca8901ce308', vector: [0.19, 0.81, 0.75, 0.11], metadata: {foo: "baz"}}, - {id: '7ef2b3a7-1e56-4ddd-b8c3-2ca8901ce309', vector: [0.19, 0.81, 0.75, 0.11], metadata: {foo: "baz"}} - ], - $conf) - """, + testResult(db, WEAVIATE_UPSERT_QUERY, MapUtil.map("host", HOST, "id1", ID_1, "id2", ID_2, "conf", ADMIN_HEADER_CONF), r -> { ResourceIterator values = r.columnAs("value"); @@ -124,9 +113,7 @@ public static void setUp() throws Exception { }); // -- delete vector - testCall(db, "CALL apoc.vectordb.weaviate.delete($host, 'TestCollection', " + - "['7ef2b3a7-1e56-4ddd-b8c3-2ca8901ce308', '7ef2b3a7-1e56-4ddd-b8c3-2ca8901ce309']" + - ", $conf) ", + testCall(db, WEAVIATE_DELETE_VECTOR_APOC, map("host", HOST, "conf", ADMIN_HEADER_CONF), r -> { List value = (List) r.get("value"); @@ -136,7 +123,7 @@ public static void setUp() throws Exception { @AfterClass public static void tearDown() throws Exception { - testCallEmpty(db, "CALL apoc.vectordb.weaviate.deleteCollection($host, $collectionName, $conf)", + testCallEmpty(db, WEAVIATE_DELETE_COLLECTION_APOC, MapUtil.map("host", HOST, "collectionName", COLLECTION_NAME, "conf", ADMIN_HEADER_CONF) ); @@ -209,20 +196,9 @@ public void getVectorsWithoutVectorResult() { @Test public void queryVectors() { - testResult(db, "CALL apoc.vectordb.weaviate.query($host, 'TestCollection', [0.2, 0.1, 0.9, 0.7], null, 5, $conf) " + - " YIELD score, vector, id, metadata RETURN * ORDER BY id", + testResult(db, WEAVIATE_QUERY_APOC, map("host", HOST, "conf", map(ALL_RESULTS_KEY, true, FIELDS_KEY, FIELDS, HEADERS_KEY, ADMIN_AUTHORIZATION)), - r -> { - Map row = r.next(); - assertBerlinResult(row, ID_1, FALSE); - assertNotNull(row.get("score")); - assertNotNull(row.get("vector")); - - row = r.next(); - assertLondonResult(row, ID_2, FALSE); - assertNotNull(row.get("score")); - assertNotNull(row.get("vector")); - }); + WeaviateTestUtil::queryVectorsAssertions); } @Test @@ -585,7 +561,7 @@ private static void assertQueryVectorsWithSystemDbStorage(String keyConfig, Stri db, query, params, - "Caused by: java.io.FileNotFoundException: http://127.0.0.1:" + HOST.split(":")[1] + "/v3/graphql" + "Caused by: java.io.FileNotFoundException: http://127.0.0.1:" + HOST.split(":")[1] + "/v3/graphql" ); return; } @@ -634,7 +610,7 @@ MAPPING_KEY, map(EMBEDDING_KEY, "vect", HEADERS_KEY, ADMIN_AUTHORIZATION)); String query = "CALL apoc.vectordb.weaviate.query($host, 'TestCollection', [0.2, 0.1, 0.9, 0.7], null, 5, $conf) " + " YIELD score, vector, id, metadata RETURN * ORDER BY id"; - ExtendedTestUtil.assertFails(db, query, params, NO_FIELDS_ERROR_MSG); + assertFails(db, query, params, NO_FIELDS_ERROR_MSG); } @Test @@ -662,6 +638,6 @@ MAPPING_KEY, map(EMBEDDING_KEY, "vect", NODE_LABEL, "Test", ENTITY_KEY, "myId"))); String query = "CALL apoc.vectordb.weaviate.queryAndUpdate($host, 'TestCollection', [0.2, 0.1, 0.9, 0.7], null, 5, $conf) YIELD score, vector, id, metadata, node RETURN * ORDER BY id"; - ExtendedTestUtil.assertFails(db, query, params, NO_FIELDS_ERROR_MSG); + assertFails(db, query, params, NO_FIELDS_ERROR_MSG); } } diff --git a/extended/src/main/java/apoc/ml/OpenAI.java b/extended/src/main/java/apoc/ml/OpenAI.java index 4bc4814b33..1a659f21ef 100644 --- a/extended/src/main/java/apoc/ml/OpenAI.java +++ b/extended/src/main/java/apoc/ml/OpenAI.java @@ -3,11 +3,11 @@ import apoc.ApocConfig; import apoc.Extended; import apoc.result.MapResult; +import apoc.util.ExtendedMapUtils; import apoc.util.ExtendedUtil; import apoc.util.JsonUtil; import apoc.util.Util; import com.fasterxml.jackson.core.JsonProcessingException; -import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.neo4j.graphdb.security.URLAccessChecker; import org.neo4j.procedure.Context; @@ -225,7 +225,7 @@ public Stream completion(@Name("prompt") String prompt, @Name("api_ke public Stream chatCompletion(@Name("messages") List> messages, @Name("api_key") String apiKey, @Name(value = "configuration", defaultValue = "{}") Map configuration) throws Exception { boolean failOnError = isFailOnError(configuration); if (checkNullInput(messages, failOnError)) return Stream.empty(); - messages = messages.stream().filter(MapUtils::isNotEmpty).toList(); + messages = messages.stream().filter(ExtendedMapUtils::isNotEmpty).toList(); if (checkEmptyInput(messages, failOnError)) return Stream.empty(); configuration.putIfAbsent("model", GPT_4O_MODEL); return executeRequest(apiKey, configuration, "chat/completions", (String) configuration.get("model"), "messages", messages, "$", apocConfig, urlAccessChecker) diff --git a/extended/src/main/java/apoc/util/ExtendedMapUtils.java b/extended/src/main/java/apoc/util/ExtendedMapUtils.java index c6b388b07d..a8a4ef2eec 100644 --- a/extended/src/main/java/apoc/util/ExtendedMapUtils.java +++ b/extended/src/main/java/apoc/util/ExtendedMapUtils.java @@ -11,4 +11,8 @@ public static int size(final Map map) { public static boolean isEmpty(final Map map) { return map == null || map.isEmpty(); } + + public static boolean isNotEmpty(final Map map) { + return !isEmpty(map); + } } diff --git a/extended/src/main/java/apoc/vectordb/VectorDbUtil.java b/extended/src/main/java/apoc/vectordb/VectorDbUtil.java index e292237a9c..24368311d6 100644 --- a/extended/src/main/java/apoc/vectordb/VectorDbUtil.java +++ b/extended/src/main/java/apoc/vectordb/VectorDbUtil.java @@ -4,8 +4,8 @@ import apoc.ExtendedSystemPropertyKeys; import apoc.SystemPropertyKeys; import apoc.util.CollectionUtils; +import apoc.util.ExtendedMapUtils; import apoc.util.Util; -import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.neo4j.graphdb.Label; import org.neo4j.graphdb.Node; @@ -95,7 +95,7 @@ private static Map getSystemDbProps(String hostOrKey, VectorDbHa */ private static void getMapping(Map config, Map props) { Map mappingConfVal = (Map) config.get(MAPPING_KEY); - if ( MapUtils.isEmpty(mappingConfVal) ) { + if ( ExtendedMapUtils.isEmpty(mappingConfVal) ) { String mappingStoreVal = (String) props.get(MAPPING_KEY); if (mappingStoreVal != null) { config.put( MAPPING_KEY, Util.fromJson(mappingStoreVal, Map.class) ); diff --git a/extended/src/test/java/apoc/vectordb/VectorDbTestUtil.java b/extended/src/test/java/apoc/vectordb/VectorDbTestUtil.java index 640bd98e61..f6c1eaea03 100644 --- a/extended/src/test/java/apoc/vectordb/VectorDbTestUtil.java +++ b/extended/src/test/java/apoc/vectordb/VectorDbTestUtil.java @@ -19,7 +19,7 @@ public class VectorDbTestUtil { - enum EntityType { NODE, REL, FALSE } + public enum EntityType { NODE, REL, FALSE } public static void dropAndDeleteAll(GraphDatabaseService db) { db.executeTransactionally("MATCH (n) DETACH DELETE n");