You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by to...@apache.org on 2013/02/25 14:02:12 UTC

svn commit: r1449691 - in /jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr: ./ index/ query/

Author: tommaso
Date: Mon Feb 25 13:02:12 2013
New Revision: 1449691

URL: http://svn.apache.org/r1449691
Log:
OAK-651 - added OakSolrUtils method to adapt existing service providers from bundle context, removed HookFactory, added constructor to providers to be eventually instantiated directly

Removed:
    jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/DefaultSolrHookFactory.java
    jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrHookFactory.java
Modified:
    jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/OakSolrUtils.java
    jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexHookProvider.java
    jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexProvider.java

Modified: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/OakSolrUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/OakSolrUtils.java?rev=1449691&r1=1449690&r2=1449691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/OakSolrUtils.java (original)
+++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/OakSolrUtils.java Mon Feb 25 13:02:12 2013
@@ -19,8 +19,15 @@ package org.apache.jackrabbit.oak.plugin
 import java.io.IOException;
 import javax.annotation.Nonnull;
 
+import org.apache.jackrabbit.oak.plugins.index.IndexHookProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.index.SolrIndexHookProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.query.SolrQueryIndexProvider;
+import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.solr.client.solrj.SolrServer;
 import org.apache.solr.client.solrj.SolrServerException;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleReference;
+import org.osgi.framework.ServiceReference;
 
 /**
  * Utilities for Oak Solr integration.
@@ -38,4 +45,30 @@ public class OakSolrUtils {
     public static boolean checkServerAlive(@Nonnull SolrServer solrServer) throws IOException, SolrServerException {
         return solrServer.ping().getStatus() == 0;
     }
+
+    /**
+     * adapts the OSGi Solr {@link IndexHookProvider} service
+     *
+     * @return a {@link SolrIndexHookProvider}
+     */
+    public static IndexHookProvider adaptOsgiIndexHookProvider() {
+        BundleContext ctx = BundleReference.class.cast(SolrIndexHookProvider.class
+                .getClassLoader()).getBundle().getBundleContext();
+
+        ServiceReference serviceReference = ctx.getServiceReference(SolrIndexHookProvider.class.getName());
+        return SolrIndexHookProvider.class.cast(ctx.getService(serviceReference));
+    }
+
+    /**
+     * adapts the OSGi Solr {@link QueryIndexProvider} service
+     *
+     * @return a {@link SolrQueryIndexProvider}
+     */
+    public static QueryIndexProvider adaptOsgiQueryIndexProvider() {
+        BundleContext ctx = BundleReference.class.cast(SolrQueryIndexProvider.class
+                .getClassLoader()).getBundle().getBundleContext();
+
+        ServiceReference serviceReference = ctx.getServiceReference(SolrQueryIndexProvider.class.getName());
+        return SolrQueryIndexProvider.class.cast(ctx.getService(serviceReference));
+    }
 }

Modified: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexHookProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexHookProvider.java?rev=1449691&r1=1449690&r2=1449691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexHookProvider.java (original)
+++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexHookProvider.java Mon Feb 25 13:02:12 2013
@@ -21,9 +21,13 @@ import javax.annotation.Nonnull;
 
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferencePolicy;
+import org.apache.felix.scr.annotations.ReferencePolicyOption;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.plugins.index.IndexHook;
 import org.apache.jackrabbit.oak.plugins.index.IndexHookProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.OakSolrConfigurationProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.SolrServerProvider;
 import org.apache.jackrabbit.oak.plugins.index.solr.query.SolrQueryIndex;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.slf4j.Logger;
@@ -40,11 +44,22 @@ import com.google.common.collect.Immutab
 @Service(IndexHookProvider.class)
 public class SolrIndexHookProvider implements IndexHookProvider {
 
-    @Reference
-    private SolrHookFactory hookFactory;
-
     private final Logger log = LoggerFactory.getLogger(SolrIndexHookProvider.class);
 
+    @Reference(policyOption = ReferencePolicyOption.GREEDY, policy = ReferencePolicy.STATIC)
+    private SolrServerProvider solrServerProvider;
+
+    @Reference(policyOption = ReferencePolicyOption.GREEDY, policy = ReferencePolicy.STATIC)
+    private OakSolrConfigurationProvider oakSolrConfigurationProvider;
+
+    public SolrIndexHookProvider() {
+    }
+
+    public SolrIndexHookProvider(SolrServerProvider solrServerProvider, OakSolrConfigurationProvider oakSolrConfigurationProvider) {
+        this.solrServerProvider = solrServerProvider;
+        this.oakSolrConfigurationProvider = oakSolrConfigurationProvider;
+    }
+
     @Override
     @Nonnull
     public List<? extends IndexHook> getIndexHooks(String type, NodeBuilder builder) {
@@ -53,7 +68,7 @@ public class SolrIndexHookProvider imple
                 log.info("Creating a Solr index hook");
             }
             try {
-                IndexHook indexHook = hookFactory.createIndexHook("/", builder);
+                IndexHook indexHook = new SolrIndexDiff(builder, solrServerProvider.getSolrServer(), oakSolrConfigurationProvider.getConfiguration());
                 return ImmutableList.of(indexHook);
             } catch (Exception e) {
                 log.error("unable to create Solr IndexHook ", e);

Modified: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexProvider.java?rev=1449691&r1=1449690&r2=1449691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexProvider.java (original)
+++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexProvider.java Mon Feb 25 13:02:12 2013
@@ -22,6 +22,8 @@ import javax.annotation.Nonnull;
 
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferencePolicy;
+import org.apache.felix.scr.annotations.ReferencePolicyOption;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.plugins.index.IndexDefinition;
 import org.apache.jackrabbit.oak.plugins.index.solr.OakSolrConfigurationProvider;
@@ -41,14 +43,22 @@ import static org.apache.jackrabbit.oak.
 @Service(QueryIndexProvider.class)
 public class SolrQueryIndexProvider implements QueryIndexProvider {
 
-    private Logger log = LoggerFactory.getLogger(SolrQueryIndexProvider.class);
+    private final Logger log = LoggerFactory.getLogger(SolrQueryIndexProvider.class);
 
-    @Reference
+    @Reference(policyOption = ReferencePolicyOption.GREEDY, policy = ReferencePolicy.STATIC)
     private SolrServerProvider solrServerProvider;
 
-    @Reference
+    @Reference(policyOption = ReferencePolicyOption.GREEDY, policy = ReferencePolicy.STATIC)
     private OakSolrConfigurationProvider oakSolrConfigurationProvider;
 
+    public SolrQueryIndexProvider() {
+    }
+
+    public SolrQueryIndexProvider(OakSolrConfigurationProvider oakSolrConfigurationProvider, SolrServerProvider solrServerProvider) {
+        this.oakSolrConfigurationProvider = oakSolrConfigurationProvider;
+        this.solrServerProvider = solrServerProvider;
+    }
+
     @Nonnull
     @Override
     public List<? extends QueryIndex> getQueryIndexes(NodeState nodeState) {