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/03/01 11:33:39 UTC

svn commit: r1451558 - in /jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr: OakSolrUtils.java index/SolrIndexHookProvider.java query/SolrQueryIndex.java query/SolrQueryIndexProvider.java

Author: tommaso
Date: Fri Mar  1 10:33:38 2013
New Revision: 1451558

URL: http://svn.apache.org/r1451558
Log:
OAK-651 - added null checks, added OSU adaption methods for SSP and OSC, set incorrect info logging to debug

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/SolrQueryIndex.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=1451558&r1=1451557&r2=1451558&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 Fri Mar  1 10:33:38 2013
@@ -52,11 +52,19 @@ public class OakSolrUtils {
      * @return a {@link SolrIndexHookProvider}
      */
     public static IndexHookProvider adaptOsgiIndexHookProvider() {
-        BundleContext ctx = BundleReference.class.cast(SolrIndexHookProvider.class
-                .getClassLoader()).getBundle().getBundleContext();
+        IndexHookProvider indexHookProvider = null;
+        try {
+            BundleContext ctx = BundleReference.class.cast(SolrIndexHookProvider.class
+                    .getClassLoader()).getBundle().getBundleContext();
 
-        ServiceReference serviceReference = ctx.getServiceReference(SolrIndexHookProvider.class.getName());
-        return SolrIndexHookProvider.class.cast(ctx.getService(serviceReference));
+            ServiceReference serviceReference = ctx.getServiceReference(IndexHookProvider.class.getName());
+            if (serviceReference != null) {
+                indexHookProvider = IndexHookProvider.class.cast(ctx.getService(serviceReference));
+            }
+        } catch (Throwable e) {
+            // do nothing
+        }
+        return indexHookProvider;
     }
 
     /**
@@ -65,11 +73,91 @@ public class OakSolrUtils {
      * @return a {@link SolrQueryIndexProvider}
      */
     public static QueryIndexProvider adaptOsgiQueryIndexProvider() {
-        BundleContext ctx = BundleReference.class.cast(SolrQueryIndexProvider.class
-                .getClassLoader()).getBundle().getBundleContext();
+        QueryIndexProvider queryIndexProvider = null;
+        try {
+            BundleContext ctx = BundleReference.class.cast(SolrQueryIndexProvider.class
+                    .getClassLoader()).getBundle().getBundleContext();
+
+            ServiceReference serviceReference = ctx.getServiceReference(QueryIndexProvider.class.getName());
+            if (serviceReference != null) {
+                queryIndexProvider = QueryIndexProvider.class.cast(ctx.getService(serviceReference));
+            }
+        } catch (Throwable e) {
+            // do nothing
+        }
+        return queryIndexProvider;
+    }
+
+    /**
+     * adapt the OSGi Solr {@link SolrServerProvider} service of a given extending class
+     * and tries to instantiate it if non existing.
+     *
+     * @param providerClass the {@link Class} extending {@link SolrServerProvider}
+     *                      to adapt or instantiate
+     * @param <T>           the {@link SolrServerProvider} extension
+     * @return a {@link SolrServerProvider} adapted from the OSGi service, or a
+     *         directly instantiated one or <code>null</code> if both failed
+     */
+    public static <T extends SolrServerProvider> SolrServerProvider adaptOsgiSolrServerProvider(Class<T> providerClass) {
+        SolrServerProvider solrServerProvider = null;
+        try {
+            BundleContext ctx = BundleReference.class.cast(providerClass
+                    .getClassLoader()).getBundle().getBundleContext();
+            ServiceReference serviceReference = ctx.getServiceReference(SolrServerProvider.class.getName());
+            if (serviceReference != null) {
+                solrServerProvider = SolrServerProvider.class.cast(ctx.getService(serviceReference));
+            }
+        } catch (Exception e) {
+            // do nothing
+        }
+
+        if (solrServerProvider == null && providerClass != null) {
+            try {
+                solrServerProvider = providerClass.newInstance();
+            } catch (InstantiationException e) {
+                // do nothing
+            } catch (IllegalAccessException e) {
+                // do nothing
+            }
+        }
+
+        return solrServerProvider;
+    }
+
+    /**
+     * adapt the OSGi Solr {@link OakSolrConfigurationProvider} service of a given
+     * extending class and tries to instantiate it if non existing.
+     *
+     * @param providerClass the {@link Class} extending {@link OakSolrConfigurationProvider}
+     *                      to adapt or instantiate
+     * @param <T>           the {@link OakSolrConfigurationProvider} extension
+     * @return a {@link OakSolrConfigurationProvider} adapted from the OSGi service, or a
+     *         directly instantiated one or <code>null</code> if both failed
+     */
+    public static <T extends OakSolrConfigurationProvider> OakSolrConfigurationProvider adaptOsgiOakSolrConfigurationProvider(Class<T> providerClass) {
+        OakSolrConfigurationProvider oakSolrConfigurationProvider = null;
+        try {
+            BundleContext ctx = BundleReference.class.cast(providerClass
+                    .getClassLoader()).getBundle().getBundleContext();
+            ServiceReference serviceReference = ctx.getServiceReference(OakSolrConfigurationProvider.class.getName());
+            if (serviceReference != null) {
+                oakSolrConfigurationProvider = OakSolrConfigurationProvider.class.cast(ctx.getService(serviceReference));
+            }
+        } catch (Exception e) {
+            // do nothing
+        }
+
+        if (oakSolrConfigurationProvider == null && providerClass != null) {
+            try {
+                oakSolrConfigurationProvider = providerClass.newInstance();
+            } catch (InstantiationException e) {
+                // do nothing
+            } catch (IllegalAccessException e) {
+                // do nothing
+            }
+        }
 
-        ServiceReference serviceReference = ctx.getServiceReference(SolrQueryIndexProvider.class.getName());
-        return SolrQueryIndexProvider.class.cast(ctx.getService(serviceReference));
+        return oakSolrConfigurationProvider;
     }
 
     /**

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=1451558&r1=1451557&r2=1451558&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 Fri Mar  1 10:33:38 2013
@@ -63,11 +63,12 @@ public class SolrIndexHookProvider imple
     @Override
     @Nonnull
     public List<? extends IndexHook> getIndexHooks(String type, NodeBuilder builder) {
-        if (SolrQueryIndex.TYPE.equals(type)) {
-            if (log.isInfoEnabled()) {
-                log.info("Creating a Solr index hook");
-            }
+
+        if (SolrQueryIndex.TYPE.equals(type) && solrServerProvider != null && oakSolrConfigurationProvider != null) {
             try {
+                if (log.isDebugEnabled()) {
+                    log.debug("Creating a Solr index hook");
+                }
                 IndexHook indexHook = new SolrIndexDiff(builder, solrServerProvider.getSolrServer(), oakSolrConfigurationProvider.getConfiguration());
                 return ImmutableList.of(indexHook);
             } catch (Exception e) {

Modified: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java?rev=1451558&r1=1451557&r2=1451558&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java (original)
+++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java Fri Mar  1 10:33:38 2013
@@ -150,8 +150,8 @@ public class SolrQueryIndex implements Q
         String escapedQuery = queryBuilder.toString();
         solrQuery.setQuery(escapedQuery);
 
-        if (log.isInfoEnabled()) {
-            log.info(new StringBuilder("JCR query: \n" + filter.getQueryStatement() + " \nhas been converted to Solr query: \n").
+        if (log.isDebugEnabled()) {
+            log.debug(new StringBuilder("JCR query: \n" + filter.getQueryStatement() + " \nhas been converted to Solr query: \n").
                     append(solrQuery.toString()).toString());
         }
 

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=1451558&r1=1451557&r2=1451558&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 Fri Mar  1 10:33:38 2013
@@ -65,11 +65,13 @@ public class SolrQueryIndexProvider impl
         List<QueryIndex> tempIndexes = new ArrayList<QueryIndex>();
         for (IndexDefinition child : buildIndexDefinitions(nodeState, "/",
                 SolrQueryIndex.TYPE)) {
-            if (log.isInfoEnabled()) {
-                log.info("found a Solr index definition {}", child);
+            if (log.isDebugEnabled()) {
+                log.debug("found a Solr index definition {}", child);
             }
             try {
-                tempIndexes.add(new SolrQueryIndex(child, solrServerProvider.getSolrServer(), oakSolrConfigurationProvider.getConfiguration()));
+                if (solrServerProvider != null && oakSolrConfigurationProvider != null) {
+                    tempIndexes.add(new SolrQueryIndex(child, solrServerProvider.getSolrServer(), oakSolrConfigurationProvider.getConfiguration()));
+                }
             } catch (Exception e) {
                 log.error("unable to create Solr query index at {} due to {}", new Object[]{child.getPath(), e});
             }