Author: shalin
Date: Fri Feb  6 09:24:51 2009
New Revision: 741490

URL: http://svn.apache.org/viewvc?rev=741490&view=rev
Log:
SOLR-943 -- Make it possible to specify dataDir in solr.xml and accept the 
dataDir as a request parameter for the CoreAdmin create command.

Modified:
    lucene/solr/trunk/CHANGES.txt
    
lucene/solr/trunk/src/common/org/apache/solr/common/params/CoreAdminParams.java
    lucene/solr/trunk/src/java/org/apache/solr/core/CoreContainer.java
    lucene/solr/trunk/src/java/org/apache/solr/core/CoreDescriptor.java
    lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java
    
lucene/solr/trunk/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java

Modified: lucene/solr/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=741490&r1=741489&r2=741490&view=diff
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Fri Feb  6 09:24:51 2009
@@ -147,6 +147,9 @@
 
 33. SOLR-820: Support replication on startup of master with new index. (Noble 
Paul, Akshay Ukey via shalin)
 
+34. SOLR-943: Make it possible to specify dataDir in solr.xml and accept the 
dataDir as a request parameter for
+    the CoreAdmin create command. (Noble Paul via shalin)
+
 
 Optimizations
 ----------------------

Modified: 
lucene/solr/trunk/src/common/org/apache/solr/common/params/CoreAdminParams.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/common/org/apache/solr/common/params/CoreAdminParams.java?rev=741490&r1=741489&r2=741490&view=diff
==============================================================================
--- 
lucene/solr/trunk/src/common/org/apache/solr/common/params/CoreAdminParams.java 
(original)
+++ 
lucene/solr/trunk/src/common/org/apache/solr/common/params/CoreAdminParams.java 
Fri Feb  6 09:24:51 2009
@@ -32,6 +32,9 @@
   /** If you rename something, what is the new name **/
   public final static String NAME = "name";
 
+  /** If you rename something, what is the new name **/
+  public final static String DATA_DIR = "dataDir";
+
   /** Name of the other core in actions involving 2 cores **/
   public final static String OTHER = "other";
 
@@ -72,4 +75,4 @@
       return null; 
     }
   }
-}
\ No newline at end of file
+}

Modified: lucene/solr/trunk/src/java/org/apache/solr/core/CoreContainer.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/CoreContainer.java?rev=741490&r1=741489&r2=741490&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/core/CoreContainer.java 
(original)
+++ lucene/solr/trunk/src/java/org/apache/solr/core/CoreContainer.java Fri Feb  
6 09:24:51 2009
@@ -35,6 +35,7 @@
 import javax.xml.xpath.XPathExpressionException;
 
 import org.apache.solr.common.SolrException;
+import org.apache.solr.common.params.CoreAdminParams;
 import org.apache.solr.common.util.DOMUtil;
 import org.apache.solr.common.util.XML;
 import org.apache.solr.common.util.StrUtils;
@@ -212,6 +213,10 @@
           if (opt != null) {
             p.setSchemaName(opt);
           }
+          opt = DOMUtil.getAttr(node, CoreAdminParams.DATA_DIR, null);
+          if (opt != null) {
+            p.setDataDir(opt);
+          }
 
           p.setCoreProperties(readProperties(cfg, node));
 

Modified: lucene/solr/trunk/src/java/org/apache/solr/core/CoreDescriptor.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/CoreDescriptor.java?rev=741490&r1=741489&r2=741490&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/core/CoreDescriptor.java 
(original)
+++ lucene/solr/trunk/src/java/org/apache/solr/core/CoreDescriptor.java Fri Feb 
 6 09:24:51 2009
@@ -18,6 +18,7 @@
 package org.apache.solr.core;
 
 import java.util.Properties;
+import java.io.File;
 
 /**
  * A Solr core descriptor
@@ -27,6 +28,7 @@
 public class CoreDescriptor implements Cloneable {
   protected String name;
   protected String instanceDir;
+  protected String dataDir;
   protected String configName;
   protected String schemaName;
   private final CoreContainer coreContainer;
@@ -52,6 +54,7 @@
     this.configName = descr.configName;
     this.schemaName = descr.schemaName;
     this.name = descr.name;
+    this.dataDir = descr.dataDir;
     coreContainer = descr.coreContainer;
   }
 
@@ -59,6 +62,7 @@
     Properties implicitProperties = new 
Properties(coreContainer.getContainerProperties());
     implicitProperties.setProperty("solr.core.name", name);
     implicitProperties.setProperty("solr.core.instanceDir", instanceDir);
+    implicitProperties.setProperty("solr.core.dataDir", getDataDir());
     implicitProperties.setProperty("solr.core.configName", configName);
     implicitProperties.setProperty("solr.core.schemaName", schemaName);
     return implicitProperties;
@@ -76,9 +80,22 @@
   
   /*...@return the default data directory. */
   public String getDefaultDataDir() {
-    return this.instanceDir + "data/";
+    return this.instanceDir + "data"+File.separator;
   }
- 
+
+  public String getDataDir() {
+    if (dataDir == null) return getDefaultDataDir();
+    String absolutePath = new File(dataDir).getAbsolutePath();
+    if (absolutePath.equals(dataDir) || (absolutePath + 
File.separator).equals(dataDir)) return dataDir;
+    return dataDir.endsWith(File.separator) ?
+            instanceDir + dataDir :
+            instanceDir + dataDir + File.separator;
+  }
+
+  public void setDataDir(String s) {
+    dataDir = s;
+  }
+
   /*...@return the core instance directory. */
   public String getInstanceDir() {
     return instanceDir;

Modified: lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java?rev=741490&r1=741489&r2=741490&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java Fri Feb  6 
09:24:51 2009
@@ -491,7 +491,7 @@
       this.setName( name );
       SolrResourceLoader loader = config.getResourceLoader();
       if (dataDir == null)
-        dataDir = config.get("dataDir",loader.getInstanceDir()+"data/");
+        dataDir = config.get("dataDir",cd.getDataDir());
 
       dataDir = SolrResourceLoader.normalizeDir(dataDir);
 

Modified: 
lucene/solr/trunk/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java?rev=741490&r1=741489&r2=741490&view=diff
==============================================================================
--- 
lucene/solr/trunk/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java 
(original)
+++ 
lucene/solr/trunk/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java 
Fri Feb  6 09:24:51 2009
@@ -103,7 +103,9 @@
         if (opts != null)
           dcore.setSchemaName(opts);
 
-        dcore.setCoreProperties(null);
+        opts = params.get(CoreAdminParams.DATA_DIR);
+        if (opts != null)
+          dcore.setDataDir(opts);
 
         SolrCore core = cores.create(dcore);
         cores.register(name, core,false);


Reply via email to