This is an automated email from the ASF dual-hosted git repository.

baedke pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git


The following commit(s) were added to refs/heads/trunk by this push:
     new dc6dc4e15f OAK-10768: query-spi: deprecate use of slf4j.event.Level in 
QueryInde… (#1426)
dc6dc4e15f is described below

commit dc6dc4e15fea721e277f0700d8730e61c4cc2b48
Author: mbaedke <manfred.bae...@gmail.com>
AuthorDate: Fri May 10 14:36:30 2024 +0200

    OAK-10768: query-spi: deprecate use of slf4j.event.Level in QueryInde… 
(#1426)
    
    done
---
 .../org/apache/jackrabbit/oak/query/QueryImpl.java | 16 +++----
 .../jackrabbit/oak/spi/query/QueryIndex.java       | 55 ++++++++++++++++++++--
 .../jackrabbit/oak/spi/query/package-info.java     |  2 +-
 .../search/spi/query/FulltextIndexPlanner.java     |  5 +-
 4 files changed, 61 insertions(+), 17 deletions(-)

diff --git 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
index 028c0dceab..b314eb1a33 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
@@ -555,25 +555,25 @@ public class QueryImpl implements Query {
         for (SelectorImpl s : selectors) {
             if (s.getExecutionPlan() != null &&
                     s.getExecutionPlan().getIndexPlan() != null) {
-                
s.getExecutionPlan().getIndexPlan().getAdditionalMessages().forEach((level, 
list) -> {
+                
s.getExecutionPlan().getIndexPlan().getAdditionalLogMessages().forEach((level, 
list) -> {
                     switch (level) {
-                        case TRACE: for (String msg : list) {
+                        case "TRACE": for (String msg : list) {
                             LOG.trace(msg);
                         }
                         break;
-                        case DEBUG: for (String msg : list) {
+                        case "DEBUG": for (String msg : list) {
                             LOG.debug(msg);
                         }
-                            break;
-                        case INFO: for (String msg : list) {
+                        break;
+                        case "INFO": for (String msg : list) {
                             LOG.info(msg);
                         }
-                            break;
-                        case WARN: for (String msg : list) {
+                        break;
+                        case "WARN": for (String msg : list) {
                             LOG.warn(msg);
                         }
                         break;
-                        case ERROR: for (String msg : list) {
+                        case "ERROR": for (String msg : list) {
                             LOG.error(msg);
                         }
                         break;
diff --git 
a/oak-query-spi/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java
 
b/oak-query-spi/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java
index 34f9adff06..6c10a98ffb 100644
--- 
a/oak-query-spi/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java
+++ 
b/oak-query-spi/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndex.java
@@ -32,8 +32,11 @@ import org.osgi.annotation.versioning.ProviderType;
 import org.apache.jackrabbit.guava.common.collect.Maps;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.slf4j.event.Level;
 
+import static java.util.stream.Collectors.toMap;
 import static org.apache.jackrabbit.oak.spi.query.Filter.PropertyRestriction;
 
 /**
@@ -221,6 +224,8 @@ public interface QueryIndex {
     @ProviderType
     interface IndexPlan extends Cloneable{
 
+        Logger LOG = LoggerFactory.getLogger(QueryIndex.IndexPlan.class);
+        
         /**
          * The cost to execute the query once. The returned value should
          * approximately match the number of disk read operations plus the
@@ -361,17 +366,32 @@ public interface QueryIndex {
          * This method can be used for communicating any messages which should 
be logged if this plan is selected for execution.
          * The messages are returned as a map whose key indicates log level 
and value is a list of messages against that
          * log level.
+
+         * @deprecated use {@link #getAdditionalLogMessages()}  instead
          * @return map containing log messages.
          */
+        @Deprecated(forRemoval = true)
         default Map<Level, List<String>> getAdditionalMessages() {
-            return Collections.emptyMap();
+            LOG.warn("use of deprecated API - this method is going to be 
removed in future Oak releases - see OAK-10768 for details");
+            return 
getAdditionalLogMessages().entrySet().stream().collect(toMap(entry -> 
Level.valueOf(entry.getKey()), Map.Entry::getValue));
         }
 
+        /**
+         * This method can be used for communicating any messages which should 
be logged if this plan is selected for execution.
+         * The messages are returned as a map whose key indicates log level 
and value is a list of messages against that
+         * log level.
+
+         * @return map containing log messages.
+         */
+        default Map<String, List<String>> getAdditionalLogMessages() { return 
Collections.emptyMap(); }
+
         /**
          * A builder for index plans.
          */
         class Builder {
 
+            private static Logger LOG = 
LoggerFactory.getLogger(QueryIndex.IndexPlan.Builder.class);
+
             protected double costPerExecution = 1.0;
             protected double costPerEntry = 1.0;
             protected long estimatedEntryCount = 1000000;
@@ -388,7 +408,7 @@ public interface QueryIndex {
             protected String planName;
             protected boolean deprecated;
             protected boolean logWarningForPathFilterMismatch;
-            protected final Map<Level, List<String>> additionalMessages = new 
HashMap<>();
+            protected final Map<String, List<String>> additionalMessages = new 
HashMap<>();
 
             public Builder setCostPerExecution(double costPerExecution) {
                 this.costPerExecution = costPerExecution;
@@ -415,7 +435,33 @@ public interface QueryIndex {
                 return this;
             }
 
+            /**
+             * @deprecated use {@link #addAdditionalMessage(String level, 
String s)} instead
+             * */
+            @Deprecated(forRemoval = true)
             public Builder addAdditionalMessage(Level level, String s) {
+                LOG.warn("use of deprecated API - this method is going to be 
removed in future Oak releases - see OAK-10768 for details");
+                this.additionalMessages.compute(level.name(), (k,v) -> {
+                    if (v == null) {
+                        v = new ArrayList<>();
+                    }
+                    v.add(s);
+                    return v;
+                });
+                return this;
+            }
+
+            public Builder addAdditionalMessage(String level, String s) {
+                switch (level) {
+                    case "TRACE":
+                    case "DEBUG":
+                    case "INFO":
+                    case "WARN":
+                    case "ERROR":
+                        break;
+                    default:
+                        throw new IllegalArgumentException("unsupported log 
level: " + level);
+                }
                 this.additionalMessages.compute(level, (k,v) -> {
                     if (v == null) {
                         v = new ArrayList<>();
@@ -517,7 +563,7 @@ public interface QueryIndex {
                     private final boolean deprecated =
                             Builder.this.deprecated;
                     private final boolean logWarningForPathFilterMismatch = 
Builder.this.logWarningForPathFilterMismatch;
-                    private final Map<Level, List<String>> additionalMessages 
= Builder.this.additionalMessages;
+                    private final Map<String, List<String>> additionalMessages 
= Builder.this.additionalMessages;
 
                     private String getAdditionalMessageString() {
                         return additionalMessages.entrySet().stream()
@@ -661,10 +707,9 @@ public interface QueryIndex {
                     }
 
                     @Override
-                    public Map<Level, List<String>> getAdditionalMessages() {
+                    public Map<String, List<String>> 
getAdditionalLogMessages() {
                         return additionalMessages;
                     }
-
                 };
             }
 
diff --git 
a/oak-query-spi/src/main/java/org/apache/jackrabbit/oak/spi/query/package-info.java
 
b/oak-query-spi/src/main/java/org/apache/jackrabbit/oak/spi/query/package-info.java
index 1287024c94..074a74a43e 100644
--- 
a/oak-query-spi/src/main/java/org/apache/jackrabbit/oak/spi/query/package-info.java
+++ 
b/oak-query-spi/src/main/java/org/apache/jackrabbit/oak/spi/query/package-info.java
@@ -18,7 +18,7 @@
 /**
  * This package contains oak query index related classes.
  */
-@Version("1.8.0")
+@Version("2.0.0")
 package org.apache.jackrabbit.oak.spi.query;
 
 import org.osgi.annotation.versioning.Version;
diff --git 
a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/query/FulltextIndexPlanner.java
 
b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/query/FulltextIndexPlanner.java
index 855d87c668..4b914c9c76 100644
--- 
a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/query/FulltextIndexPlanner.java
+++ 
b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/query/FulltextIndexPlanner.java
@@ -58,7 +58,6 @@ import 
org.apache.jackrabbit.oak.spi.query.fulltext.FullTextVisitor;
 import org.jetbrains.annotations.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.slf4j.event.Level;
 
 import static org.apache.jackrabbit.guava.common.collect.Lists.newArrayList;
 import static 
org.apache.jackrabbit.guava.common.collect.Lists.newArrayListWithCapacity;
@@ -307,13 +306,13 @@ public class FulltextIndexPlanner {
 
             if (queryFilterPattern != null) {
                 if (ft != null && 
!queryFilterPattern.matcher(ft.toString()).find()) {
-                    plan.addAdditionalMessage(Level.WARN, "Potentially 
improper use of index " + definition.getIndexPath() + " with queryFilterRegex "
+                    plan.addAdditionalMessage("WARN", "Potentially improper 
use of index " + definition.getIndexPath() + " with queryFilterRegex "
                             + queryFilterPattern + " to search for value '" + 
ft + "'");
                 }
                  for (PropertyRestriction pr : 
filter.getPropertyRestrictions()) {
                        // Ignore properties beginning with ";" like :indexTag 
/ :indexName etx
                     if (!pr.propertyName.startsWith(":") && 
!queryFilterPattern.matcher(pr.toString()).find()) {
-                        plan.addAdditionalMessage(Level.WARN, "Potentially 
improper use of index " + definition.getIndexPath() + " with queryFilterRegex "
+                        plan.addAdditionalMessage("WARN", "Potentially 
improper use of index " + definition.getIndexPath() + " with queryFilterRegex "
                                 + queryFilterPattern + " to search for value 
'" + pr + "'");
                     }
                 }

Reply via email to