[ 
https://issues.apache.org/jira/browse/OAK-7410?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16497929#comment-16497929
 ] 

Thomas Mueller commented on OAK-7410:
-------------------------------------

The Aggregate class: here is a second attempt. Instead of using generics 
partially, it doesn't use them, but checks the class explicitly. The advantage 
is simpler code, and I don't think the old code would have prevented errors 
anyway.

{noformat}
Index: 
src/main/java/org/apache/jackrabbit/oak/plugins/index/search/Aggregate.java
===================================================================
--- src/main/java/org/apache/jackrabbit/oak/plugins/index/search/Aggregate.java 
(revision 1832658)
+++ src/main/java/org/apache/jackrabbit/oak/plugins/index/search/Aggregate.java 
(working copy)
@@ -222,7 +222,7 @@
 
     //~-----------------------------------------------------< Includes >
 
-    public static abstract class Include<T> {
+    public static abstract class Include {
         protected final String[] elements;
 
         public Include(String pattern) {
@@ -243,7 +243,7 @@
             return elements.length;
         }
 
-        public void collectResults(T rootInclude, String rootIncludePath,
+        public void collectResults(Include rootInclude, String rootIncludePath,
                                    String nodePath, NodeState nodeState,  
ResultCollector results) {
             collectResults(nodePath, nodeState, results);
         }
@@ -272,7 +272,7 @@
         }
     }
 
-    public static class NodeInclude extends Include<NodeInclude> {
+    public static class NodeInclude extends Include {
         final String primaryType;
         final boolean relativeNode;
         private final String pattern;
@@ -303,9 +303,13 @@
         }
 
         @Override
-        public void collectResults(NodeInclude rootInclude, String 
rootIncludePath, String nodePath,
+        public void collectResults(Include include, String rootIncludePath, 
String nodePath,
                                    NodeState nodeState, ResultCollector 
results) {
             //For supporting jcr:contains(jcr:content, 'foo')
+            if (!(include instanceof NodeInclude)) {
+                throw new IllegalArgumentException("" + include);
+            }
+            NodeInclude rootInclude = (NodeInclude) include;
             if (rootInclude.relativeNode){
                 results.onResult(new NodeIncludeResult(nodePath, 
rootIncludePath, nodeState));
             }
@@ -365,7 +369,7 @@
         }
     }
 
-    public static class PropertyInclude extends Include<PropertyInclude> {
+    public static class PropertyInclude extends Include {
         private final PropertyDefinition propertyDefinition;
         private final String propertyName;
         private final Pattern pattern;
{noformat}

> Define SPIs for Oak Search module
> ---------------------------------
>
>                 Key: OAK-7410
>                 URL: https://issues.apache.org/jira/browse/OAK-7410
>             Project: Jackrabbit Oak
>          Issue Type: Technical task
>            Reporter: Tommaso Teofili
>            Assignee: Tommaso Teofili
>            Priority: Major
>             Fix For: 1.10
>
>         Attachments: AggregateGenerics.patch
>
>
> Abstract IndexEditor and QueryIndex implementations and SPIs should be 
> created for Oak Search module.
> Those classes should be then reused / extended by implementors in and outside 
> Oak .



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to