Author: tommaso
Date: Mon Mar 17 09:50:20 2014
New Revision: 1578281

URL: http://svn.apache.org/r1578281
Log:
OAK-1547 - Simplified configuration management in SolrServerProviderService

Removed:
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/OakSolrUtils.java
Modified:
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/EmbeddedSolrServerConfiguration.java
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfiguration.java
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/package-info.java
    
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/osgi/SolrServerProviderService.java
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexProvider.java
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultSolrServerProvider.java
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/package-info.java
    
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/EmbeddedSolrServerConfiguration.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/EmbeddedSolrServerConfiguration.java?rev=1578281&r1=1578280&r2=1578281&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/EmbeddedSolrServerConfiguration.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/EmbeddedSolrServerConfiguration.java
 Mon Mar 17 09:50:20 2014
@@ -80,8 +80,8 @@ public class EmbeddedSolrServerConfigura
     }
 
     public class HttpConfiguration {
-        private String context;
-        private Integer httpPort;
+        private final String context;
+        private final Integer httpPort;
 
         HttpConfiguration(String context, Integer httpPort) {
             this.context = context;

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfiguration.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfiguration.java?rev=1578281&r1=1578280&r2=1578281&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfiguration.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfiguration.java
 Mon Mar 17 09:50:20 2014
@@ -42,7 +42,7 @@ public abstract class SolrServerConfigur
         return this.type;
     }
 
-    public S newInstance()
+    public S getProvider()
             throws NoSuchMethodException, IllegalAccessException,
             InvocationTargetException, InstantiationException {
         if (constructor == null) {

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/package-info.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/package-info.java?rev=1578281&r1=1578280&r2=1578281&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/package-info.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/package-info.java
 Mon Mar 17 09:50:20 2014
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("0.17")
+@Version("0.18")
 @Export(optional = "provide:=true")
 package org.apache.jackrabbit.oak.plugins.index.solr.configuration;
 

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=1578281&r1=1578280&r2=1578281&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
 Mon Mar 17 09:50:20 2014
@@ -38,9 +38,9 @@ public class SolrIndexEditorProvider imp
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
-    private SolrServerProvider solrServerProvider;
+    private final SolrServerProvider solrServerProvider;
 
-    private OakSolrConfigurationProvider oakSolrConfigurationProvider;
+    private final OakSolrConfigurationProvider oakSolrConfigurationProvider;
 
     public SolrIndexEditorProvider(
             SolrServerProvider solrServerProvider,

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrServerProviderService.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrServerProviderService.java?rev=1578281&r1=1578280&r2=1578281&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrServerProviderService.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrServerProviderService.java
 Mon Mar 17 09:50:20 2014
@@ -59,8 +59,6 @@ public class SolrServerProviderService i
 
     private SolrServer cachedSolrServer;
 
-    private SolrServerConfiguration cachedSolrServerConfiguration;
-
     @Activate
     protected void activate(ComponentContext context) throws Exception {
         serverType = String.valueOf(context.getProperties().get(SERVER_TYPE));
@@ -69,6 +67,10 @@ public class SolrServerProviderService i
     @Deactivate
     protected void deactivate() throws Exception {
         solrServerConfigurationProviders.clear();
+        shutdownSolrServer();
+    }
+
+    private void shutdownSolrServer() {
         if (cachedSolrServer != null) {
             try {
                 cachedSolrServer.shutdown();
@@ -84,6 +86,7 @@ public class SolrServerProviderService i
         synchronized (solrServerConfigurationProviders) {
             String name = String.valueOf(properties.get("name"));
             solrServerConfigurationProviders.put(name, 
solrServerConfigurationProvider);
+            shutdownSolrServer();
         }
     }
 
@@ -91,6 +94,7 @@ public class SolrServerProviderService i
         synchronized (solrServerConfigurationProviders) {
             String name = String.valueOf(properties.get("name"));
             solrServerConfigurationProviders.remove(name);
+            shutdownSolrServer();
         }
     }
 
@@ -98,35 +102,27 @@ public class SolrServerProviderService i
         synchronized (solrServerConfigurationProviders) {
             String name = String.valueOf(properties.get("name"));
             solrServerConfigurationProviders.put(name, 
solrServerConfigurationProvider);
+            shutdownSolrServer();
         }
     }
 
     @Override
     public SolrServer getSolrServer() throws Exception {
-        SolrServer solrServer = null;
         synchronized (solrServerConfigurationProviders) {
-            if (serverType != null && !"none".equals(serverType)) {
-                SolrServerConfigurationProvider 
solrServerConfigurationProvider = 
solrServerConfigurationProviders.get(serverType);
-                try {
-                    if (solrServerConfigurationProvider != null) {
+            if (cachedSolrServer == null) {
+                if (serverType != null && !"none".equals(serverType)) {
+                    SolrServerConfigurationProvider 
solrServerConfigurationProvider = 
solrServerConfigurationProviders.get(serverType);
+                    try {
                         SolrServerConfiguration solrServerConfiguration = 
solrServerConfigurationProvider.getSolrServerConfiguration();
-                        if (solrServerConfiguration != 
cachedSolrServerConfiguration) {
-                            SolrServerProvider solrServerProvider = 
solrServerConfiguration.newInstance();
-                            cachedSolrServerConfiguration = 
solrServerConfiguration;
-                            if (cachedSolrServer != null) {
-                                cachedSolrServer.shutdown();
-                            }
-                            cachedSolrServer = 
solrServerProvider.getSolrServer();
-                        } else {
-                            solrServer = cachedSolrServer;
-                        }
+                        SolrServerProvider solrServerProvider = 
solrServerConfiguration.getProvider();
+                        cachedSolrServer = solrServerProvider.getSolrServer();
+                    } catch (Exception e) {
+                        log.error("could not get a SolrServerProvider of type 
{}, {}", serverType, e);
                     }
-                } catch (Exception e) {
-                    log.error("could not get a SolrServerProvider of type {}, 
{}", serverType, e);
                 }
             }
+            return cachedSolrServer;
         }
-        return solrServer;
     }
 
 }

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=1578281&r1=1578280&r2=1578281&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 Mar 17 09:50:20 2014
@@ -41,9 +41,9 @@ public class SolrQueryIndexProvider impl
 
     private final Logger log = 
LoggerFactory.getLogger(SolrQueryIndexProvider.class);
 
-    private SolrServerProvider solrServerProvider;
+    private final SolrServerProvider solrServerProvider;
 
-    private OakSolrConfigurationProvider oakSolrConfigurationProvider;
+    private final OakSolrConfigurationProvider oakSolrConfigurationProvider;
 
     public SolrQueryIndexProvider(SolrServerProvider solrServerProvider, 
OakSolrConfigurationProvider oakSolrConfigurationProvider) {
         this.oakSolrConfigurationProvider = oakSolrConfigurationProvider;

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultSolrServerProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultSolrServerProvider.java?rev=1578281&r1=1578280&r2=1578281&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultSolrServerProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultSolrServerProvider.java
 Mon Mar 17 09:50:20 2014
@@ -27,10 +27,9 @@ public class DefaultSolrServerProvider i
     @Override
     public SolrServer getSolrServer() throws Exception {
         if (solrServer == null) {
-            String url = new 
StringBuilder(SolrServerConfigurationDefaults.LOCAL_BASE_URL)
-                            
.append(':').append(SolrServerConfigurationDefaults.HTTP_PORT)
-                            
.append(SolrServerConfigurationDefaults.CONTEXT).append('/')
-                            
.append(SolrServerConfigurationDefaults.CORE_NAME).toString();
+            String url = SolrServerConfigurationDefaults.LOCAL_BASE_URL + ':' +
+                    SolrServerConfigurationDefaults.HTTP_PORT + 
SolrServerConfigurationDefaults.CONTEXT +
+                    '/' + SolrServerConfigurationDefaults.CORE_NAME;
             solrServer = new HttpSolrServer(url);
         }
         return solrServer;

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java?rev=1578281&r1=1578280&r2=1578281&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java
 Mon Mar 17 09:50:20 2014
@@ -99,12 +99,11 @@ public class EmbeddedSolrServerProvider 
                 if (log.isInfoEnabled()) {
                     log.info("starting HTTP Solr server");
                 }
-                HttpSolrServer httpSolrServer = new HttpSolrServer(new 
StringBuilder(
+                return new HttpSolrServer(new StringBuilder(
                         
SolrServerConfigurationDefaults.LOCAL_BASE_URL).append(':')
                         .append(httpPort).append(context)
                         .append('/').append(coreName)
                         .toString());
-                return httpSolrServer;
             } else {
                 ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();
                 
Thread.currentThread().setContextClassLoader(CoreContainer.class.getClassLoader());

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/package-info.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/package-info.java?rev=1578281&r1=1578280&r2=1578281&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/package-info.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/package-info.java
 Mon Mar 17 09:50:20 2014
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("0.17")
+@Version("0.18")
 @Export(optional = "provide:=true")
 package org.apache.jackrabbit.oak.plugins.index.solr.util;
 

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java?rev=1578281&r1=1578280&r2=1578281&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java
 Mon Mar 17 09:50:20 2014
@@ -30,14 +30,14 @@ public class SolrServerConfigurationTest
     @Test
     public void testCreateRemoteServerFromConfig() throws Exception {
         SolrServerConfiguration<RemoteSolrServerProvider> 
remoteSolrServerProviderSolrServerConfiguration = new 
RemoteSolrServerConfiguration(null, null, 1, 1, null);
-        RemoteSolrServerProvider remoteSolrServerProvider = 
remoteSolrServerProviderSolrServerConfiguration.newInstance();
+        RemoteSolrServerProvider remoteSolrServerProvider = 
remoteSolrServerProviderSolrServerConfiguration.getProvider();
         assertNotNull(remoteSolrServerProvider);
     }
 
     @Test
     public void testCreteEmbeddedServerFromConfig() throws Exception {
         SolrServerConfiguration<EmbeddedSolrServerProvider> 
embeddedSolrServerSolrServerConfiguration = new 
EmbeddedSolrServerConfiguration(null, null, null);
-        EmbeddedSolrServerProvider embeddedSolrServerProvider = 
embeddedSolrServerSolrServerConfiguration.newInstance();
+        EmbeddedSolrServerProvider embeddedSolrServerProvider = 
embeddedSolrServerSolrServerConfiguration.getProvider();
         assertNotNull(embeddedSolrServerProvider);
     }
 }


Reply via email to