diff --git a/driver/src/main/java/org/neo4j/driver/NotificationCategory.java b/driver/src/main/java/org/neo4j/driver/NotificationCategory.java
index f648c939a0..369afcb1a6 100644
--- a/driver/src/main/java/org/neo4j/driver/NotificationCategory.java
+++ b/driver/src/main/java/org/neo4j/driver/NotificationCategory.java
@@ -90,4 +90,15 @@ public sealed interface NotificationCategory extends Serializable permits Notifi
* For instance, notifications that are not part of a more specific class.
*/
NotificationCategory GENERIC = NotificationClassification.GENERIC;
+
+ /**
+ * A schema category.
+ *
+ * For instance, notifications about indexes and constraints.
+ *
+ * Please note that this category was added to a later server version. Therefore, a compatible server version is
+ * required to use it.
+ * @since 5.24.0
+ */
+ NotificationCategory SCHEMA = NotificationClassification.SCHEMA;
}
diff --git a/driver/src/main/java/org/neo4j/driver/NotificationClassification.java b/driver/src/main/java/org/neo4j/driver/NotificationClassification.java
index ad3c794b73..bf517bfe5c 100644
--- a/driver/src/main/java/org/neo4j/driver/NotificationClassification.java
+++ b/driver/src/main/java/org/neo4j/driver/NotificationClassification.java
@@ -86,5 +86,15 @@ public enum NotificationClassification implements NotificationCategory {
*
* For instance, notifications that are not part of a more specific class.
*/
- GENERIC
+ GENERIC,
+ /**
+ * A schema category.
+ *
+ * For instance, notifications about indexes and constraints.
+ *
+ * Please note that this category was added to a later server version. Therefore, a compatible server version is
+ * required to use it.
+ * @since 5.24.0
+ */
+ SCHEMA
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/summary/InternalNotification.java b/driver/src/main/java/org/neo4j/driver/internal/summary/InternalNotification.java
index b48f93cb83..faaa45f1de 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/summary/InternalNotification.java
+++ b/driver/src/main/java/org/neo4j/driver/internal/summary/InternalNotification.java
@@ -41,6 +41,7 @@ public static Optional valueOf(String value) {
case SECURITY -> NotificationCategory.SECURITY;
case TOPOLOGY -> NotificationCategory.TOPOLOGY;
case GENERIC -> NotificationCategory.GENERIC;
+ case SCHEMA -> NotificationCategory.SCHEMA;
});
}
diff --git a/driver/src/test/java/org/neo4j/driver/internal/summary/InternalNotificationTest.java b/driver/src/test/java/org/neo4j/driver/internal/summary/InternalNotificationTest.java
new file mode 100644
index 0000000000..cfd711d060
--- /dev/null
+++ b/driver/src/test/java/org/neo4j/driver/internal/summary/InternalNotificationTest.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) "Neo4j"
+ * Neo4j Sweden AB [https://neo4j.com]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.neo4j.driver.internal.summary;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.Arrays;
+import java.util.stream.Stream;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+import org.neo4j.driver.NotificationCategory;
+import org.neo4j.driver.NotificationClassification;
+
+class InternalNotificationTest {
+ @ParameterizedTest
+ @MethodSource("shouldMapArgs")
+ void shouldMap(String value, NotificationCategory expectedNotificationCategory) {
+ var notificationCategory = InternalNotification.valueOf(value).orElse(null);
+
+ assertEquals(expectedNotificationCategory, notificationCategory);
+ }
+
+ static Stream shouldMapArgs() {
+ return Arrays.stream(NotificationClassification.values())
+ .map(notificationClassification -> switch (notificationClassification) {
+ case HINT -> Arguments.of(notificationClassification.toString(), NotificationCategory.HINT);
+ case UNRECOGNIZED -> Arguments.of(
+ notificationClassification.toString(), NotificationCategory.UNRECOGNIZED);
+ case UNSUPPORTED -> Arguments.of(
+ notificationClassification.toString(), NotificationCategory.UNSUPPORTED);
+ case PERFORMANCE -> Arguments.of(
+ notificationClassification.toString(), NotificationCategory.PERFORMANCE);
+ case DEPRECATION -> Arguments.of(
+ notificationClassification.toString(), NotificationCategory.DEPRECATION);
+ case SECURITY -> Arguments.of(notificationClassification.toString(), NotificationCategory.SECURITY);
+ case TOPOLOGY -> Arguments.of(notificationClassification.toString(), NotificationCategory.TOPOLOGY);
+ case GENERIC -> Arguments.of(notificationClassification.toString(), NotificationCategory.GENERIC);
+ case SCHEMA -> Arguments.of(notificationClassification.toString(), NotificationCategory.SCHEMA);
+ });
+ }
+}