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/28 17:08:30 UTC

svn commit: r1462183 - in /jackrabbit/oak/trunk/oak-solr-core/src: main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/ test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/

Author: tommaso
Date: Thu Mar 28 16:08:30 2013
New Revision: 1462183

URL: http://svn.apache.org/r1462183
Log:
OAK-720 - UpToDate NSC should not return defaults if the NS doesn't exist at the specified path

Modified:
    jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultOakSolrProvider.java
    jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/OakSolrNodeStateConfiguration.java
    jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/UpToDateNodeStateConfigurationTest.java

Modified: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultOakSolrProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultOakSolrProvider.java?rev=1462183&r1=1462182&r2=1462183&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultOakSolrProvider.java (original)
+++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultOakSolrProvider.java Thu Mar 28 16:08:30 2013
@@ -57,20 +57,25 @@ public class DefaultOakSolrProvider impl
         String coreName = oakSolrConfiguration.getCoreName();
         String solrConfigPath = oakSolrConfiguration.getSolrConfigPath();
 
-        checkSolrConfiguration(solrHomePath, solrConfigPath, coreName);
+        if (solrConfigPath != null && solrHomePath != null && coreName != null) {
 
-        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-        Thread.currentThread().setContextClassLoader(CoreContainer.class.getClassLoader());
+            checkSolrConfiguration(solrHomePath, solrConfigPath, coreName);
 
-        CoreContainer coreContainer = new CoreContainer(solrHomePath);
-        try {
-            coreContainer.load(solrHomePath, new File(solrConfigPath));
-        } finally {
-            Thread.currentThread().setContextClassLoader(classLoader);
-        }
+            ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+            Thread.currentThread().setContextClassLoader(CoreContainer.class.getClassLoader());
 
+            CoreContainer coreContainer = new CoreContainer(solrHomePath);
+            try {
+                coreContainer.load(solrHomePath, new File(solrConfigPath));
+            } finally {
+                Thread.currentThread().setContextClassLoader(classLoader);
+            }
 
-        return new EmbeddedSolrServer(coreContainer, coreName);
+            return new EmbeddedSolrServer(coreContainer, coreName);
+        }
+        else {
+            throw new Exception("SolrServer configuration proprties not set");
+        }
     }
 
     private void checkSolrConfiguration(String solrHomePath, String solrConfigPath, String coreName) throws IOException {
@@ -84,7 +89,7 @@ public class DefaultOakSolrProvider impl
                 // copy all the needed files to the just created directory
                 copy("/solr/solr.xml", solrHomePath);
                 copy("/solr/zoo.cfg", solrHomePath);
-                if (!new File(solrHomePath + "/" + "oak").mkdir() || !new File(solrHomePath + "/" + "oak/conf/").mkdir()) {
+                if (!new File(solrHomePath + "/oak/conf").mkdirs()) {
                     throw new IOException("could not create nested core directory in solrHomePath");
                 }
                 String coreDir = solrHomePath + "/oak/conf/";

Modified: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/OakSolrNodeStateConfiguration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/OakSolrNodeStateConfiguration.java?rev=1462183&r1=1462182&r2=1462183&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/OakSolrNodeStateConfiguration.java (original)
+++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/OakSolrNodeStateConfiguration.java Thu Mar 28 16:08:30 2013
@@ -38,7 +38,8 @@ public abstract class OakSolrNodeStateCo
      * get the {@link NodeState} which contains the properties for the Oak -
      * Solr configuration.
      *
-     * @return a {@link NodeState} for the Solr configuration.
+     * @return a {@link NodeState} for the Solr configuration or <code>null</code>
+     *         if such a {@link NodeState} doesn't exist.
      */
     protected abstract NodeState getConfigurationNodeState();
 
@@ -112,9 +113,9 @@ public abstract class OakSolrNodeStateCo
             if (property != null) {
                 value = property.getValue(Type.STRING);
             }
-        }
-        if (value == null || value.length() == 0) {
-            value = defaultValue;
+            if (value == null || value.length() == 0) {
+                value = defaultValue;
+            }
         }
         return value;
     }

Modified: jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/UpToDateNodeStateConfigurationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/UpToDateNodeStateConfigurationTest.java?rev=1462183&r1=1462182&r2=1462183&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/UpToDateNodeStateConfigurationTest.java (original)
+++ jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/UpToDateNodeStateConfigurationTest.java Thu Mar 28 16:08:30 2013
@@ -10,6 +10,7 @@ import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 
 /**
  * Testcase for {@link UpToDateNodeStateConfiguration}
@@ -28,17 +29,24 @@ public class UpToDateNodeStateConfigurat
     }
 
     @Test
-    public void testPath() throws Exception {
+    public void testExistingPath() throws Exception {
         String path = "oak:index/solrIdx";
         UpToDateNodeStateConfiguration upToDateNodeStateConfiguration = new UpToDateNodeStateConfiguration(store, path);
-        assertEquals("cn", upToDateNodeStateConfiguration.getCoreName());
+        assertEquals("cn", upToDateNodeStateConfiguration.getCoreName()); // property defined in the node state
+        assertEquals("path_exact", upToDateNodeStateConfiguration.getPathField()); // using default as this property not defined in the node state
     }
 
     @Test
     public void testNonExistingPath() throws Exception {
         String path = "some/path/to/oak:index/solrIdx";
         UpToDateNodeStateConfiguration upToDateNodeStateConfiguration = new UpToDateNodeStateConfiguration(store, path);
-        assertNotNull(upToDateNodeStateConfiguration.getSolrConfigPath());
-        assertEquals("./solr.xml", upToDateNodeStateConfiguration.getSolrConfigPath());
+        assertNull(upToDateNodeStateConfiguration.getSolrConfigPath());
+    }
+
+    @Test
+    public void testNodeStateNotFound() throws Exception {
+        String path = "some/path/to/somewhere/unknown";
+        UpToDateNodeStateConfiguration upToDateNodeStateConfiguration = new UpToDateNodeStateConfiguration(store, path);
+        assertNull(upToDateNodeStateConfiguration.getConfigurationNodeState());
     }
 }