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/10/10 10:51:32 UTC

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

Author: tommaso
Date: Thu Oct 10 08:51:31 2013
New Revision: 1530879

URL: http://svn.apache.org/r1530879
Log:
OAK-1079 - created separate osgi services for SolrQueryIndexProvider and SolrIndexEditorProvider

Added:
    jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/
    jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrIndexEditorProviderService.java   (with props)
    jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrQueryIndexProviderService.java   (with props)
Modified:
    jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorProvider.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/index/SolrIndexEditorProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorProvider.java?rev=1530879&r1=1530878&r2=1530879&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorProvider.java (original)
+++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorProvider.java Thu Oct 10 08:51:31 2013
@@ -16,37 +16,29 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.solr.index;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
-import org.apache.jackrabbit.oak.plugins.index.IndexEditor;
 import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
-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.configuration.OakSolrConfigurationProvider;
 import org.apache.jackrabbit.oak.plugins.index.solr.query.SolrQueryIndex;
+import org.apache.jackrabbit.oak.plugins.index.solr.server.SolrServerProvider;
 import org.apache.jackrabbit.oak.spi.commit.Editor;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
-
-import static org.apache.felix.scr.annotations.ReferencePolicy.STATIC;
-import static org.apache.felix.scr.annotations.ReferencePolicyOption.GREEDY;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
- * Service that provides Lucene based {@link IndexEditor}s
- * 
+ * Solr based {@link IndexEditorProvider}
+ *
  * @see SolrIndexEditor
- * @see IndexEditorProvider
- * 
+ *
  */
-@Component
-@Service(IndexEditorProvider.class)
 public class SolrIndexEditorProvider implements IndexEditorProvider {
 
-    @Reference(policyOption = GREEDY, policy = STATIC)
+    private final Logger log = LoggerFactory.getLogger(getClass());
+
     private SolrServerProvider solrServerProvider;
 
-    @Reference(policyOption = GREEDY, policy = STATIC)
     private OakSolrConfigurationProvider oakSolrConfigurationProvider;
 
     public SolrIndexEditorProvider(
@@ -56,27 +48,29 @@ public class SolrIndexEditorProvider imp
         this.oakSolrConfigurationProvider = oakSolrConfigurationProvider;
     }
 
-    public SolrIndexEditorProvider() {
-    }
-
     @Override
     public Editor getIndexEditor(
             String type, NodeBuilder definition, NodeState root)
             throws CommitFailedException {
+
         if (SolrQueryIndex.TYPE.equals(type)
-                && solrServerProvider != null
-                && oakSolrConfigurationProvider != null) {
+                && isConfigurationOk()) {
             try {
                 return new SolrIndexEditor(
                         definition,
                         solrServerProvider.getSolrServer(),
                         oakSolrConfigurationProvider.getConfiguration());
             } catch (Exception e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
+                if (log.isErrorEnabled()) {
+                    log.error("unable to create SolrIndexEditor", e);
+                }
             }
         }
         return null;
     }
 
+    private boolean isConfigurationOk() {
+        return solrServerProvider != null && oakSolrConfigurationProvider != null;
+    }
+
 }

Added: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrIndexEditorProviderService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrIndexEditorProviderService.java?rev=1530879&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrIndexEditorProviderService.java (added)
+++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrIndexEditorProviderService.java Thu Oct 10 08:51:31 2013
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.jackrabbit.oak.plugins.index.solr.osgi;
+
+import static org.apache.felix.scr.annotations.ReferencePolicy.STATIC;
+import static org.apache.felix.scr.annotations.ReferencePolicyOption.GREEDY;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.jackrabbit.oak.api.CommitFailedException;
+import org.apache.jackrabbit.oak.plugins.index.IndexEditor;
+import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.configuration.OakSolrConfigurationProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.index.SolrIndexEditorProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.server.SolrServerProvider;
+import org.apache.jackrabbit.oak.spi.commit.Editor;
+import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
+
+/**
+ * Osgi Service that provides Solr based {@link org.apache.jackrabbit.oak.plugins.index.IndexEditor}s
+ * 
+ * @see org.apache.jackrabbit.oak.plugins.index.solr.index.SolrIndexEditorProvider
+ * @see org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider
+ */
+@Component(metatype = false, immediate = true)
+@Service(value = IndexEditorProvider.class)
+public class SolrIndexEditorProviderService implements IndexEditorProvider {
+    
+    @Reference(policyOption = GREEDY, policy = STATIC)
+    private SolrServerProvider solrServerProvider;
+
+    @Reference(policyOption = GREEDY, policy = STATIC)
+    private OakSolrConfigurationProvider oakSolrConfigurationProvider;
+
+    private SolrIndexEditorProvider solrIndexEditorProvider;
+
+    @Override
+    @CheckForNull
+    public Editor getIndexEditor(@Nonnull String type, @Nonnull NodeBuilder definition, 
+                    @Nonnull NodeState root) throws CommitFailedException {
+        Editor indexEditor = null;
+        if (solrServerProvider != null && oakSolrConfigurationProvider != null && solrIndexEditorProvider == null) {
+            solrIndexEditorProvider = new SolrIndexEditorProvider(solrServerProvider, oakSolrConfigurationProvider);
+            indexEditor = solrIndexEditorProvider.getIndexEditor(type, definition, root);
+        }
+        return indexEditor;
+    }
+
+}

Propchange: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrIndexEditorProviderService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrQueryIndexProviderService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrQueryIndexProviderService.java?rev=1530879&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrQueryIndexProviderService.java (added)
+++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrQueryIndexProviderService.java Thu Oct 10 08:51:31 2013
@@ -0,0 +1,51 @@
+package org.apache.jackrabbit.oak.plugins.index.solr.osgi;
+
+import java.util.ArrayList;
+import java.util.List;
+
+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.solr.configuration.OakSolrConfigurationProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.query.SolrQueryIndexProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.server.SolrServerProvider;
+import org.apache.jackrabbit.oak.spi.query.QueryIndex;
+import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
+
+/**
+ * Osgi Service that provides Solr based {@link org.apache.jackrabbit.oak.spi.query.QueryIndex}es
+ * 
+ * @see org.apache.jackrabbit.oak.plugins.index.solr.query.SolrQueryIndexProvider
+ * @see QueryIndexProviderr
+ */
+@Component(metatype = false, immediate = true)
+@Service(value = QueryIndexProvider.class)
+public class SolrQueryIndexProviderService implements QueryIndexProvider {
+
+    @Reference(policyOption = ReferencePolicyOption.GREEDY, policy = ReferencePolicy.STATIC)
+    private SolrServerProvider solrServerProvider;
+
+    @Reference(policyOption = ReferencePolicyOption.GREEDY, policy = ReferencePolicy.STATIC)
+    private OakSolrConfigurationProvider oakSolrConfigurationProvider;
+
+    private SolrQueryIndexProvider solrQueryIndexProvider;
+
+    @Override
+    @Nonnull
+    public List<? extends QueryIndex> getQueryIndexes(NodeState nodeState) {
+        List<? extends QueryIndex> queryIndexes = new ArrayList<QueryIndex>();
+        if (solrServerProvider != null && oakSolrConfigurationProvider != null
+                        && solrQueryIndexProvider == null) {
+            solrQueryIndexProvider = new SolrQueryIndexProvider(solrServerProvider,
+                            oakSolrConfigurationProvider);
+            queryIndexes = solrQueryIndexProvider.getQueryIndexes(nodeState);
+        }
+        return queryIndexes;
+    }
+
+}

Propchange: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrQueryIndexProviderService.java
------------------------------------------------------------------------------
    svn:eol-style = native

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=1530879&r1=1530878&r2=1530879&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 Thu Oct 10 08:51:31 2013
@@ -21,17 +21,13 @@ import static org.apache.jackrabbit.oak.
 
 import java.util.ArrayList;
 import java.util.List;
+
 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.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Type;
-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.configuration.OakSolrConfigurationProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.server.SolrServerProvider;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
@@ -42,21 +38,14 @@ import org.slf4j.LoggerFactory;
 /**
  * {@link QueryIndexProvider} for {@link SolrQueryIndex}
  */
-@Component
-@Service(QueryIndexProvider.class)
 public class SolrQueryIndexProvider implements QueryIndexProvider {
 
     private final Logger log = LoggerFactory.getLogger(SolrQueryIndexProvider.class);
 
-    @Reference(policyOption = ReferencePolicyOption.GREEDY, policy = ReferencePolicy.STATIC)
     private SolrServerProvider solrServerProvider;
 
-    @Reference(policyOption = ReferencePolicyOption.GREEDY, policy = ReferencePolicy.STATIC)
     private OakSolrConfigurationProvider oakSolrConfigurationProvider;
 
-    public SolrQueryIndexProvider() {
-    }
-
     public SolrQueryIndexProvider(SolrServerProvider solrServerProvider, OakSolrConfigurationProvider oakSolrConfigurationProvider) {
         this.oakSolrConfigurationProvider = oakSolrConfigurationProvider;
         this.solrServerProvider = solrServerProvider;
@@ -65,6 +54,7 @@ public class SolrQueryIndexProvider impl
     @Nonnull
     @Override
     public List<? extends QueryIndex> getQueryIndexes(NodeState nodeState) {
+
         List<QueryIndex> tempIndexes = new ArrayList<QueryIndex>();
         if (solrServerProvider == null || oakSolrConfigurationProvider == null) {
             return tempIndexes;
@@ -75,7 +65,9 @@ public class SolrQueryIndexProvider impl
             PropertyState type = definition.getProperty(TYPE_PROPERTY_NAME);
             if (type != null
                     && SolrQueryIndex.TYPE.equals(type.getValue(Type.STRING))) {
-                log.debug("found a Solr index definition {}", entry.getName());
+                if (log.isDebugEnabled()) {
+                    log.debug("found a Solr index definition {}", entry.getName());
+                }
             }
             try {
                 tempIndexes.add(new SolrQueryIndex(
@@ -83,10 +75,13 @@ public class SolrQueryIndexProvider impl
                         solrServerProvider.getSolrServer(),
                         oakSolrConfigurationProvider.getConfiguration()));
             } catch (Exception e) {
-                log.error("unable to create Solr query index at " + entry.getName(), e);
+                if (log.isErrorEnabled()) {
+                    log.error("unable to create Solr query index at " + entry.getName(), e);
+                }
             }
-            
+
         }
         return tempIndexes;
     }
+
 }