You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2015/01/19 14:25:30 UTC

svn commit: r1652995 [1/3] - in /lucene/dev/trunk/solr: ./ contrib/clustering/src/test-files/clustering/solr/ contrib/dataimporthandler/src/test-files/dih/solr/ contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/ contrib/morphlines-c...

Author: romseygeek
Date: Mon Jan 19 13:25:29 2015
New Revision: 1652995

URL: http://svn.apache.org/r1652995
Log:
SOLR-6840: Remove support for old-style solr.xml

Added:
    lucene/dev/trunk/solr/core/src/test-files/solr/configsets/bad-mergepolicy/
    lucene/dev/trunk/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/
    lucene/dev/trunk/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/schema.xml   (with props)
    lucene/dev/trunk/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/solrconfig.xml   (with props)
    lucene/dev/trunk/solr/example/example-DIH/solr/db/core.properties   (with props)
    lucene/dev/trunk/solr/example/example-DIH/solr/mail/core.properties   (with props)
    lucene/dev/trunk/solr/example/example-DIH/solr/rss/core.properties   (with props)
    lucene/dev/trunk/solr/example/example-DIH/solr/solr/core.properties   (with props)
    lucene/dev/trunk/solr/example/example-DIH/solr/tika/core.properties   (with props)
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/configsets/shared/
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/configsets/shared/conf/
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/configsets/shared/conf/schema.xml   (with props)
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/configsets/shared/conf/solrconfig.xml   (with props)
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/configsets/shared/conf/stopwords-en.txt   (with props)
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/configsets/shared/conf/stopwords-fr.txt   (with props)
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/shared/collection1/
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/shared/collection1/core.properties   (with props)
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/shared/core0/
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/shared/core0/core.properties   (with props)
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/shared/core1/
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/shared/core1/core.properties   (with props)
    lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/util/ReadOnlyCoresLocator.java   (with props)
Removed:
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolrXmlOld.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrXMLCoresLocator.java
    lucene/dev/trunk/solr/core/src/test-files/solr/solr-no-core-old-style.xml
    lucene/dev/trunk/solr/core/src/test-files/solr/solr-shardhandler-old.xml
    lucene/dev/trunk/solr/core/src/test-files/solr/solr-stress-old.xml
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/CoreContainerCoreInitFailuresTest.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersistence.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersistor.java
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/shared/conf/
Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/contrib/clustering/src/test-files/clustering/solr/solr.xml
    lucene/dev/trunk/solr/contrib/dataimporthandler/src/test-files/dih/solr/solr.xml
    lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java
    lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java
    lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/solr.xml
    lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineTestBase.java
    lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java
    lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineTest.java
    lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAliasTest.java
    lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAvroTest.java
    lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkTest.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/CloudDescriptor.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ZkController.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolr.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolrXml.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/CoreContainer.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
    lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave.xml
    lucene/dev/trunk/solr/core/src/test-files/solr/solr-no-core.xml
    lucene/dev/trunk/solr/core/src/test-files/solr/solr.xml
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestTolerantSearch.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/AliasIntegrationTest.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/CollectionsAPIDistributedZkTest.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/OpenCloseCoreStressTest.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/SolrCoreTest.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestConfigSets.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestCoreContainer.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestCoreDiscovery.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestImplicitCoreProperties.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestLazyCores.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestShardHandlerFactory.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXml.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandlerBackup.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/component/DistributedDebugComponentTest.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/rest/SolrRestletTestBase.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/rest/schema/TestManagedSchemaDynamicFieldResource.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/rest/schema/TestManagedSchemaFieldResource.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/schema/TestBinaryField.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/SolrCmdDistributorTest.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/util/MockConfigSolr.java
    lucene/dev/trunk/solr/example/example-DIH/solr/solr.xml
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/multicore/solr.xml
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/shared/solr.xml
    lucene/dev/trunk/solr/solrj/src/test-files/solrj/solr/solr.xml
    lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java
    lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java
    lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestCoreAdmin.java
    lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java
    lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java
    lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
    lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
    lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java
    lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/util/RestTestBase.java
    lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/util/RestTestHarness.java
    lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Mon Jan 19 13:25:29 2015
@@ -183,6 +183,10 @@ Upgrading from Solr 4.x
 * Due to changes in the underlying commons-codec package, users of the BeiderMorseFilterFactory 
   will need to rebuild their indexes after upgrading.  See LUCENE-6058 for more details.
 
+* The 'old-style' solr.xml format is no longer supported, and cores must be
+  defined using core.properties files.  See
+  https://cwiki.apache.org/confluence/display/solr/Format+of+solr.xml
+
 Detailed Change List
 ----------------------
 
@@ -738,6 +742,8 @@ Other Changes
 * SOLR-6981: Add a delete action to the bin/solr script to allow deleting of cores /
   collections (with delete collection config directory from ZK) (Timothy Potter)
 
+* SOLR-6840: Remove support for old-style solr.xml (Erick Erickson, Alan Woodward)
+
 ==================  4.10.3 ==================
 
 Bug Fixes

Modified: lucene/dev/trunk/solr/contrib/clustering/src/test-files/clustering/solr/solr.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/clustering/src/test-files/clustering/solr/solr.xml?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/clustering/src/test-files/clustering/solr/solr.xml (original)
+++ lucene/dev/trunk/solr/contrib/clustering/src/test-files/clustering/solr/solr.xml Mon Jan 19 13:25:29 2015
@@ -20,14 +20,10 @@
  solr.xml mimicking the old default solr.xml
 -->
 
-<solr persistent="false">
-  <cores adminPath="/admin/cores" defaultCoreName="collection1"
-         host="${host:}" hostPort="${hostPort:}" hostContext="${hostContext:}"
-         zkClientTimeout="${zkClientTimeout:15000}">
-    <core name="collection1" shard="${shard:}" collection="${collection:collection1}" instanceDir="collection1"/>
-    
+<solr>
+
     <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
      <str name="urlScheme">${urlScheme:}</str>
      </shardHandlerFactory>
-  </cores>
+
 </solr>

Modified: lucene/dev/trunk/solr/contrib/dataimporthandler/src/test-files/dih/solr/solr.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/dataimporthandler/src/test-files/dih/solr/solr.xml?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/dataimporthandler/src/test-files/dih/solr/solr.xml (original)
+++ lucene/dev/trunk/solr/contrib/dataimporthandler/src/test-files/dih/solr/solr.xml Mon Jan 19 13:25:29 2015
@@ -20,13 +20,8 @@
  solr.xml mimicking the old default solr.xml
 -->
 
-<solr persistent="false">
-  <cores adminPath="/admin/cores" defaultCoreName="collection1"
-         host="${host:}" hostPort="${hostPort:}" hostContext="${hostContext:}"
-         zkClientTimeout="${zkClientTimeout:15000}">
-    <core name="collection1" shard="${shard:}" collection="${collection:collection1}" instanceDir="collection1"/>
+<solr>
     <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
       <str name="urlScheme">${urlScheme:}</str>
     </shardHandlerFactory>
-  </cores>
 </solr>
\ No newline at end of file

Modified: lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java (original)
+++ lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java Mon Jan 19 13:25:29 2015
@@ -16,9 +16,6 @@
  */
 package org.apache.solr.handler.dataimport;
 
-import java.io.File;
-import java.util.List;
-
 import org.apache.commons.io.FileUtils;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
@@ -32,6 +29,10 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import java.io.File;
+import java.nio.file.Files;
+import java.util.List;
+
 /**
  * Test for ContentStreamDataSource
  *
@@ -67,7 +68,7 @@ public class TestContentStreamDataSource
     params.set("command", "full-import");
     params.set("clean", "false");
     req.setParams(params);
-    HttpSolrClient solrClient = new HttpSolrClient(buildUrl(jetty.getLocalPort(), "/solr"));
+    HttpSolrClient solrClient = new HttpSolrClient(buildUrl(jetty.getLocalPort(), "/solr/collection1"));
     try {
       solrClient.request(req);
       ModifiableSolrParams qparams = new ModifiableSolrParams();
@@ -90,7 +91,7 @@ public class TestContentStreamDataSource
         "clean", "false", UpdateParams.COMMIT, "false", 
         UpdateParams.COMMIT_WITHIN, "1000");
     req.setParams(params);
-    HttpSolrClient solrServer = new HttpSolrClient(buildUrl(jetty.getLocalPort(), "/solr"));
+    HttpSolrClient solrServer = new HttpSolrClient(buildUrl(jetty.getLocalPort(), "/solr/collection1"));
     solrServer.request(req);
     Thread.sleep(100);
     ModifiableSolrParams queryAll = params("q", "*");
@@ -168,6 +169,8 @@ public class TestContentStreamDataSource
       FileUtils.copyFile(getFile(getSchemaFile()), f);
       f = new File(confDir, "data-config.xml");
       FileUtils.copyFile(getFile(CONF_DIR + "dataconfig-contentstream.xml"), f);
+
+      Files.createFile(homeDir.toPath().resolve("collection1/core.properties"));
     }
 
   }

Modified: lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java (original)
+++ lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java Mon Jan 19 13:25:29 2015
@@ -17,14 +17,6 @@ package org.apache.solr.handler.dataimpo
  * limitations under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
 import org.apache.commons.io.FileUtils;
 import org.apache.lucene.util.IOUtils;
 import org.apache.solr.client.solrj.SolrServerException;
@@ -38,6 +30,15 @@ import org.junit.BeforeClass;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
 /**
  * End-to-end test of SolrEntityProcessor. "Real" test using embedded Solr
  */
@@ -94,7 +95,7 @@ public class TestSolrEntityProcessorEndT
   }
   
   private String getSourceUrl() {
-    return buildUrl(jetty.getLocalPort(), "/solr");
+    return buildUrl(jetty.getLocalPort(), "/solr/collection1");
   }
   
   //TODO: fix this test to close its directories
@@ -332,6 +333,8 @@ public class TestSolrEntityProcessorEndT
       FileUtils.copyFile(getFile(getSchemaFile()), f);
       f = new File(confDir, "data-config.xml");
       FileUtils.copyFile(getFile(SOURCE_CONF_DIR + "dataconfig-contentstream.xml"), f);
+
+      Files.createFile(confDir.toPath().resolve("../core.properties"));
     }
 
     public void tearDown() throws Exception {

Modified: lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/solr.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/solr.xml?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/solr.xml (original)
+++ lucene/dev/trunk/solr/contrib/morphlines-core/src/test-files/solr/solr.xml Mon Jan 19 13:25:29 2015
@@ -16,18 +16,25 @@
  limitations under the License.
 -->
 
-<!--
- All (relative) paths are relative to the installation path
-  
-  persistent: Save changes made via the API to this file
-  sharedLib: path to a lib directory that will be shared across all cores
--->
-<solr persistent="${solr.xml.persist:false}">
+<solr>
+
+  <solrcloud>
+    <int name="hostPort">${hostPort:8983}</int>
+    <str name="hostContext">${hostContext:solr}</str>
+    <int name="zkClientTimeout">${solr.zkclienttimeout:30000}</int>
+    <str name="host">127.0.0.1</str>
+  </solrcloud>
+
+  <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
+    <str name="urlScheme">${urlScheme:}</str>
+    <int name="socketTimeout">${socketTimeout:120000}</int>
+    <int name="connTimeout">${connTimeout:15000}</int>
+  </shardHandlerFactory>
 
   <!--
   adminPath: RequestHandler path to manage cores.  
     If 'null' (or absent), cores will not be manageable via request handler
-  -->
+
   <cores adminPath="/admin/cores" defaultCoreName="collection1" host="127.0.0.1" hostPort="${hostPort:8983}" 
          hostContext="${hostContext:solr}" zkClientTimeout="${solr.zkclienttimeout:30000}" numShards="${numShards:3}" shareSchema="${shareSchema:false}" 
          genericCoreNodeNames="${genericCoreNodeNames:true}" leaderVoteWait="0"
@@ -40,5 +47,6 @@
       <int name="connTimeout">${connTimeout:15000}</int>
     </shardHandlerFactory>
   </cores>
+  -->
   
 </solr>

Modified: lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineTestBase.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineTestBase.java (original)
+++ lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineTestBase.java Mon Jan 19 13:25:29 2015
@@ -16,25 +16,14 @@
  */
 package org.apache.solr.morphlines.solr;
 
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.TimeZone;
-import java.util.concurrent.atomic.AtomicInteger;
-
+import com.codahale.metrics.MetricRegistry;
+import com.google.common.base.Joiner;
+import com.google.common.io.Files;
+import com.typesafe.config.Config;
 import org.apache.commons.io.FileUtils;
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.impl.XMLResponseParser;
@@ -56,10 +45,20 @@ import org.kitesdk.morphline.stdlib.Pipe
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.codahale.metrics.MetricRegistry;
-import com.google.common.base.Joiner;
-import com.google.common.io.Files;
-import com.typesafe.config.Config;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.TimeZone;
+import java.util.concurrent.atomic.AtomicInteger;
 
 public class AbstractSolrMorphlineTestBase extends SolrTestCaseJ4 {
   private static Locale savedLocale;
@@ -123,7 +122,7 @@ public class AbstractSolrMorphlineTestBa
       ((HttpSolrClient) solrClient).setParser(new XMLResponseParser());
     } else {
       if (TEST_WITH_EMBEDDED_SOLR_SERVER) {
-        solrClient = new EmbeddedTestSolrServer(h.getCoreContainer(), "");
+        solrClient = new EmbeddedTestSolrServer(h.getCoreContainer(), DEFAULT_TEST_CORENAME);
       } else {
         throw new RuntimeException("Not yet implemented");
         //solrServer = new TestSolrServer(getSolrClient());

Modified: lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java (original)
+++ lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java Mon Jan 19 13:25:29 2015
@@ -17,11 +17,9 @@
 
 package org.apache.solr.morphlines.solr;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.Locale;
-
+import com.codahale.metrics.MetricRegistry;
+import com.google.common.collect.ListMultimap;
+import com.typesafe.config.Config;
 import org.apache.commons.io.FileUtils;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
@@ -42,9 +40,10 @@ import org.kitesdk.morphline.base.FaultT
 import org.kitesdk.morphline.base.Notifications;
 import org.kitesdk.morphline.stdlib.PipeBuilder;
 
-import com.codahale.metrics.MetricRegistry;
-import com.google.common.collect.ListMultimap;
-import com.typesafe.config.Config;
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Locale;
 
 public abstract class AbstractSolrMorphlineZkTestBase extends AbstractFullDistribZkTestBase {
   private static File solrHomeDirectory;
@@ -155,7 +154,8 @@ public abstract class AbstractSolrMorphl
   public JettySolrRunner createJetty(File solrHome, String dataDir,
       String shardList, String solrConfigOverride, String schemaOverride)
       throws Exception {
-    
+
+    writeCoreProperties(solrHome.toPath(), DEFAULT_TEST_CORENAME);
     JettySolrRunner jetty = new JettySolrRunner(solrHome.getAbsolutePath(),
         context, 0, solrConfigOverride, schemaOverride, true, null, sslConfig);
 

Modified: lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineTest.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineTest.java (original)
+++ lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineTest.java Mon Jan 19 13:25:29 2015
@@ -16,17 +16,15 @@
  */
 package org.apache.solr.morphlines.solr;
 
-import java.io.File;
-import java.util.Arrays;
-
-import org.apache.lucene.util.Constants;
 import org.junit.BeforeClass;
 import org.junit.Test;
-
 import org.kitesdk.morphline.api.Record;
 import org.kitesdk.morphline.base.Fields;
 import org.kitesdk.morphline.base.Notifications;
 
+import java.io.File;
+import java.util.Arrays;
+
 public class SolrMorphlineTest extends AbstractSolrMorphlineTestBase {
 
   @Test

Modified: lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAliasTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAliasTest.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAliasTest.java (original)
+++ lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAliasTest.java Mon Jan 19 13:25:29 2015
@@ -16,11 +16,13 @@
  */
 package org.apache.solr.morphlines.solr;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.Iterator;
-
-import org.apache.lucene.util.Constants;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction.Action;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope.Scope;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies.Consequence;
 import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrServerException;
@@ -35,13 +37,9 @@ import org.kitesdk.morphline.api.Record;
 import org.kitesdk.morphline.base.Fields;
 import org.kitesdk.morphline.base.Notifications;
 
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction.Action;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope.Scope;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies.Consequence;
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
 
 @ThreadLeakAction({Action.WARN})
 @ThreadLeakLingering(linger = 0)

Modified: lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAvroTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAvroTest.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAvroTest.java (original)
+++ lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAvroTest.java Mon Jan 19 13:25:29 2015
@@ -16,19 +16,21 @@
  */
 package org.apache.solr.morphlines.solr;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction.Action;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope.Scope;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies.Consequence;
+import com.google.common.base.Joiner;
+import com.google.common.base.Preconditions;
+import com.google.common.io.Files;
 import org.apache.avro.Schema.Field;
 import org.apache.avro.file.DataFileReader;
 import org.apache.avro.file.FileReader;
 import org.apache.avro.generic.GenericData;
 import org.apache.avro.generic.GenericDatumReader;
-import org.apache.lucene.util.Constants;
 import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.response.QueryResponse;
@@ -38,16 +40,12 @@ import org.kitesdk.morphline.api.Record;
 import org.kitesdk.morphline.base.Fields;
 import org.kitesdk.morphline.base.Notifications;
 
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction.Action;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope.Scope;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies.Consequence;
-import com.google.common.base.Joiner;
-import com.google.common.base.Preconditions;
-import com.google.common.io.Files;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
 
 @ThreadLeakAction({Action.WARN})
 @ThreadLeakLingering(linger = 0)

Modified: lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkTest.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkTest.java (original)
+++ lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkTest.java Mon Jan 19 13:25:29 2015
@@ -16,10 +16,13 @@
  */
 package org.apache.solr.morphlines.solr;
 
-import java.io.File;
-import java.util.Iterator;
-
-import org.apache.lucene.util.Constants;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction.Action;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope.Scope;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies.Consequence;
 import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.response.QueryResponse;
@@ -29,13 +32,8 @@ import org.kitesdk.morphline.api.Record;
 import org.kitesdk.morphline.base.Fields;
 import org.kitesdk.morphline.base.Notifications;
 
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction.Action;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope.Scope;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies.Consequence;
+import java.io.File;
+import java.util.Iterator;
 
 @ThreadLeakAction({Action.WARN})
 @ThreadLeakLingering(linger = 0)

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java Mon Jan 19 13:25:29 2015
@@ -129,10 +129,8 @@ public class EmbeddedSolrServer extends
         }
       }
       // Perhaps the path is to manage the cores
-      if( handler == null &&
-          coreContainer != null &&
-          path.equals( coreContainer.getAdminPath() ) ) {
-        handler = coreContainer.getMultiCoreHandler();
+      if (handler == null) {
+        handler = coreContainer.getRequestHandler(path);
       }
     }
     if( handler == null ) {

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java Mon Jan 19 13:25:29 2015
@@ -31,7 +31,6 @@ import org.eclipse.jetty.servlet.FilterH
 import org.eclipse.jetty.servlet.ServletContextHandler;
 import org.eclipse.jetty.servlet.ServletHolder;
 import org.eclipse.jetty.servlets.GzipFilter;
-import org.eclipse.jetty.servlets.gzip.GzipHandler;
 import org.eclipse.jetty.util.component.LifeCycle;
 import org.eclipse.jetty.util.log.Logger;
 import org.eclipse.jetty.util.ssl.SslContextFactory;
@@ -64,6 +63,9 @@ import java.util.concurrent.atomic.Atomi
  * @since solr 1.3
  */
 public class JettySolrRunner {
+
+  private static final AtomicLong JETTY_ID_COUNTER = new AtomicLong();
+
   Server server;
 
   FilterHolder dispatchFilter;
@@ -73,6 +75,7 @@ public class JettySolrRunner {
 
   private String solrConfigFilename;
   private String schemaFilename;
+  private final String coreRootDirectory;
 
   private boolean waitOnSolr = false;
 
@@ -91,6 +94,8 @@ public class JettySolrRunner {
 
   private String coreNodeName;
 
+  private final String name;
+
   /** Maps servlet holders (i.e. factories: class + init params) to path specs */
   private SortedMap<ServletHolder,String> extraServlets = new TreeMap<>();
   private SortedMap<Class,String> extraRequestFilters;
@@ -149,12 +154,16 @@ public class JettySolrRunner {
 
   public JettySolrRunner(String solrHome, String context, int port) {
     this.init(solrHome, context, port, true);
+    this.name = "jetty-" + JETTY_ID_COUNTER.incrementAndGet();
+    this.coreRootDirectory = System.getProperty("coreRootDirectory", null);
   }
 
   public JettySolrRunner(String solrHome, String context, int port, String solrConfigFilename, String schemaFileName) {
     this.init(solrHome, context, port, true);
     this.solrConfigFilename = solrConfigFilename;
     this.schemaFilename = schemaFileName;
+    this.name = "jetty-" + JETTY_ID_COUNTER.incrementAndGet();
+    this.coreRootDirectory = System.getProperty("coreRootDirectory", null);
   }
   
   public JettySolrRunner(String solrHome, String context, int port,
@@ -162,6 +171,8 @@ public class JettySolrRunner {
     this.init(solrHome, context, port, stopAtShutdown);
     this.solrConfigFilename = solrConfigFilename;
     this.schemaFilename = schemaFileName;
+    this.name = "jetty-" + JETTY_ID_COUNTER.incrementAndGet();
+    this.coreRootDirectory = System.getProperty("coreRootDirectory", null);
   }
 
   /**
@@ -199,6 +210,9 @@ public class JettySolrRunner {
     this.schemaFilename = schemaFileName;
     this.sslConfig = sslConfig;
 
+    this.name = "jetty-" + JETTY_ID_COUNTER.incrementAndGet();
+    this.coreRootDirectory = System.getProperty("coreRootDirectory", null);
+
     this.init(solrHome, context, port, stopAtShutdown);
   }
   
@@ -207,6 +221,7 @@ public class JettySolrRunner {
 
     this.solrHome = solrHome;
     this.stopAtShutdown = stopAtShutdown;
+
     System.setProperty("solr.solr.home", solrHome);
     if (System.getProperty("jetty.testMode") != null) {
       // if this property is true, then jetty will be configured to use SSL
@@ -298,6 +313,8 @@ public class JettySolrRunner {
             solrConfigFilename);
         if (schemaFilename != null) System.setProperty("schema", 
             schemaFilename);
+        if (coreRootDirectory != null)
+          System.setProperty("coreRootDirectory", coreRootDirectory);
 //        SolrDispatchFilter filter = new SolrDispatchFilter();
 //        FilterHolder fh = new FilterHolder(filter);
         debugFilter = root.addFilter(DebugFilter.class, "*", EnumSet.of(DispatcherType.REQUEST) );

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/CloudDescriptor.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/CloudDescriptor.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/CloudDescriptor.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/CloudDescriptor.java Mon Jan 19 13:25:29 2015
@@ -17,6 +17,7 @@ package org.apache.solr.cloud;
  * limitations under the License.
  */
 
+import com.google.common.base.Strings;
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.params.SolrParams;
@@ -49,10 +50,14 @@ public class CloudDescriptor {
   public CloudDescriptor(String coreName, Properties props, CoreDescriptor cd) {
     this.cd = cd;
     this.shardId = props.getProperty(CoreDescriptor.CORE_SHARD, null);
+    if (Strings.isNullOrEmpty(shardId))
+      this.shardId = null;
     // If no collection name is specified, we default to the core name
     this.collectionName = props.getProperty(CoreDescriptor.CORE_COLLECTION, coreName);
     this.roles = props.getProperty(CoreDescriptor.CORE_ROLES, null);
     this.nodeName = props.getProperty(CoreDescriptor.CORE_NODE_NAME);
+    if (Strings.isNullOrEmpty(nodeName))
+      this.nodeName = null;
     this.numShards = PropertiesUtil.toInteger(props.getProperty(CloudDescriptor.NUM_SHARDS), null);
   }
   

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ZkController.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ZkController.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ZkController.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ZkController.java Mon Jan 19 13:25:29 2015
@@ -614,15 +614,13 @@ public final class ZkController {
 
       ShardHandler shardHandler;
       UpdateShardHandler updateShardHandler;
-      String adminPath;
       shardHandler = cc.getShardHandlerFactory().getShardHandler();
       updateShardHandler = cc.getUpdateShardHandler();
-      adminPath = cc.getAdminPath();
       
       if (!zkRunOnly) {
         overseerElector = new LeaderElector(zkClient);
         this.overseer = new Overseer(shardHandler, updateShardHandler,
-            adminPath, zkStateReader, this, cc.getConfig());
+            CoreContainer.CORES_HANDLER_PATH, zkStateReader, this, cc.getConfig());
         ElectionContext context = new OverseerElectionContext(zkClient,
             overseer, getNodeName());
         overseerElector.setup(context);

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolr.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolr.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolr.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolr.java Mon Jan 19 13:25:29 2015
@@ -22,25 +22,15 @@ import org.apache.solr.cloud.CloudConfig
 import org.apache.solr.cloud.ZkController;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.logging.LogWatcherConfig;
-import org.apache.solr.util.DOMUtil;
-import org.apache.solr.util.PropertiesUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 import org.xml.sax.InputSource;
 
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpressionException;
-
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.Properties;
 
 
@@ -74,10 +64,9 @@ public abstract class ConfigSolr {
   public static ConfigSolr fromInputStream(SolrResourceLoader loader, InputStream is) {
     try {
       byte[] buf = IOUtils.toByteArray(is);
-      String originalXml = new String(buf, StandardCharsets.UTF_8);
       try (ByteArrayInputStream dup = new ByteArrayInputStream(buf)) {
         Config config = new Config(loader, null, new InputSource(dup), null, false);
-        return fromConfig(config, originalXml);
+        return new ConfigSolrXml(config);
       }
     } catch (SolrException exc) {
       throw exc;
@@ -89,12 +78,6 @@ public abstract class ConfigSolr {
   public static ConfigSolr fromSolrHome(SolrResourceLoader loader, String solrHome) {
     return fromFile(loader, new File(solrHome, SOLR_XML_FILE));
   }
-
-  public static ConfigSolr fromConfig(Config config, String originalXml) {
-    boolean oldStyle = (config.getNode("solr/cores", false) != null);
-    return oldStyle ? new ConfigSolrXmlOld(config, originalXml)
-                    : new ConfigSolrXml(config);
-  }
   
   public abstract CoresLocator getCoresLocator();
 
@@ -106,32 +89,26 @@ public abstract class ConfigSolr {
    * @return core root directory
    */
   public String getCoreRootDirectory() {
-    SolrResourceLoader loader = config.getResourceLoader();
-    String relativeDir = get(CfgProp.SOLR_COREROOTDIRECTORY, null);
+    String relativeDir = getString(CfgProp.SOLR_COREROOTDIRECTORY, null);
     if (relativeDir != null)
       return loader.resolve(relativeDir);
     return loader.getInstanceDir();
   }
 
-  public PluginInfo getShardHandlerFactoryPluginInfo() {
-    Node node = config.getNode(getShardHandlerFactoryConfigPath(), false);
-    return (node == null) ? null : new PluginInfo(node, "shardHandlerFactory", false, true);
-  }
-
-  protected abstract String getShardHandlerFactoryConfigPath();
+  public abstract PluginInfo getShardHandlerFactoryPluginInfo();
 
   public String getZkHost() {
     String sysZkHost = System.getProperty("zkHost");
     if (sysZkHost != null)
       return sysZkHost;
-    return get(CfgProp.SOLR_ZKHOST, null);
+    return getString(CfgProp.SOLR_ZKHOST, null);
   }
 
   public int getZkClientTimeout() {
     String sysProp = System.getProperty("zkClientTimeout");
     if (sysProp != null)
       return Integer.parseInt(sysProp);
-    return get(CfgProp.SOLR_ZKCLIENTTIMEOUT, DEFAULT_ZK_CLIENT_TIMEOUT);
+    return getInt(CfgProp.SOLR_ZKCLIENTTIMEOUT, DEFAULT_ZK_CLIENT_TIMEOUT);
   }
 
   private static final int DEFAULT_ZK_CLIENT_TIMEOUT = 15000;
@@ -150,120 +127,110 @@ public abstract class ConfigSolr {
   protected static final String DEFAULT_CORE_ADMIN_PATH = "/admin/cores";
 
   public String getSolrHostPort() {
-    return get(CfgProp.SOLR_HOSTPORT, null);
+    return getString(CfgProp.SOLR_HOSTPORT, null);
   }
 
   public String getZkHostContext() {
-    return get(CfgProp.SOLR_HOSTCONTEXT, null);
+    return getString(CfgProp.SOLR_HOSTCONTEXT, null);
   }
 
   public String getHost() {
-    return get(CfgProp.SOLR_HOST, null);
+    return getString(CfgProp.SOLR_HOST, null);
   }
 
   public int getLeaderVoteWait() {
-    return get(CfgProp.SOLR_LEADERVOTEWAIT, DEFAULT_LEADER_VOTE_WAIT);
+    return getInt(CfgProp.SOLR_LEADERVOTEWAIT, DEFAULT_LEADER_VOTE_WAIT);
   }
   
   public int getLeaderConflictResolveWait() {
-    return get(CfgProp.SOLR_LEADERCONFLICTRESOLVEWAIT, DEFAULT_LEADER_CONFLICT_RESOLVE_WAIT);
+    return getInt(CfgProp.SOLR_LEADERCONFLICTRESOLVEWAIT, DEFAULT_LEADER_CONFLICT_RESOLVE_WAIT);
   }
   
   public int getAutoReplicaFailoverWaitAfterExpiration() {
-    return get(CfgProp.SOLR_AUTOREPLICAFAILOVERWAITAFTEREXPIRATION, DEFAULT_AUTO_REPLICA_FAILOVER_WAIT_AFTER_EXPIRATION);
+    return getInt(CfgProp.SOLR_AUTOREPLICAFAILOVERWAITAFTEREXPIRATION, DEFAULT_AUTO_REPLICA_FAILOVER_WAIT_AFTER_EXPIRATION);
   }
   
   public int getAutoReplicaFailoverWorkLoopDelay() {
-    return get(CfgProp.SOLR_AUTOREPLICAFAILOVERWORKLOOPDELAY, DEFAULT_AUTO_REPLICA_FAILOVER_WORKLOOP_DELAY);
+    return getInt(CfgProp.SOLR_AUTOREPLICAFAILOVERWORKLOOPDELAY, DEFAULT_AUTO_REPLICA_FAILOVER_WORKLOOP_DELAY);
   }
   
   public int getAutoReplicaFailoverBadNodeExpiration() {
-    return get(CfgProp.SOLR_AUTOREPLICAFAILOVERBADNODEEXPIRATION, DEFAULT_AUTO_REPLICA_FAILOVER_BAD_NODE_EXPIRATION);
+    return getInt(CfgProp.SOLR_AUTOREPLICAFAILOVERBADNODEEXPIRATION, DEFAULT_AUTO_REPLICA_FAILOVER_BAD_NODE_EXPIRATION);
   }
 
   public boolean getGenericCoreNodeNames() {
-    return get(CfgProp.SOLR_GENERICCORENODENAMES, false);
+    return getBoolean(CfgProp.SOLR_GENERICCORENODENAMES, false);
   }
 
   public int getDistributedConnectionTimeout() {
-    return get(CfgProp.SOLR_DISTRIBUPDATECONNTIMEOUT, DEFAULT_DISTRIBUPDATECONNTIMEOUT);
+    return getInt(CfgProp.SOLR_DISTRIBUPDATECONNTIMEOUT, DEFAULT_DISTRIBUPDATECONNTIMEOUT);
   }
 
   public int getDistributedSocketTimeout() {
-    return get(CfgProp.SOLR_DISTRIBUPDATESOTIMEOUT, DEFAULT_DISTRIBUPDATESOTIMEOUT);
+    return getInt(CfgProp.SOLR_DISTRIBUPDATESOTIMEOUT, DEFAULT_DISTRIBUPDATESOTIMEOUT);
   }
   
   public int getMaxUpdateConnections() {
-    return get(CfgProp.SOLR_MAXUPDATECONNECTIONS, 10000);
+    return getInt(CfgProp.SOLR_MAXUPDATECONNECTIONS, 10000);
   }
 
   public int getMaxUpdateConnectionsPerHost() {
-    return get(CfgProp.SOLR_MAXUPDATECONNECTIONSPERHOST, 100);
+    return getInt(CfgProp.SOLR_MAXUPDATECONNECTIONSPERHOST, 100);
   }
 
   public int getCoreLoadThreadCount() {
-    return get(ConfigSolr.CfgProp.SOLR_CORELOADTHREADS, DEFAULT_CORE_LOAD_THREADS);
+    return getInt(ConfigSolr.CfgProp.SOLR_CORELOADTHREADS, DEFAULT_CORE_LOAD_THREADS);
   }
 
   public String getSharedLibDirectory() {
-    return get(ConfigSolr.CfgProp.SOLR_SHAREDLIB , null);
-  }
-
-  public String getDefaultCoreName() {
-    return get(CfgProp.SOLR_CORES_DEFAULT_CORE_NAME, null);
-  }
-
-  public abstract boolean isPersistent();
-
-  public String getAdminPath() {
-    return get(CfgProp.SOLR_ADMINPATH, DEFAULT_CORE_ADMIN_PATH);
+    return getString(ConfigSolr.CfgProp.SOLR_SHAREDLIB, null);
   }
 
   public String getCoreAdminHandlerClass() {
-    return get(CfgProp.SOLR_ADMINHANDLER, "org.apache.solr.handler.admin.CoreAdminHandler");
+    return getString(CfgProp.SOLR_ADMINHANDLER, "org.apache.solr.handler.admin.CoreAdminHandler");
   }
   
   public String getZkCredentialsProviderClass() {
-    return get(CfgProp.SOLR_ZKCREDENTIALSPROVIDER, null);
+    return getString(CfgProp.SOLR_ZKCREDENTIALSPROVIDER, null);
   }
 
   public String getZkACLProviderClass() {
-    return get(CfgProp.SOLR_ZKACLPROVIDER, null);
+    return getString(CfgProp.SOLR_ZKACLPROVIDER, null);
   }
   
   public String getCollectionsHandlerClass() {
-    return get(CfgProp.SOLR_COLLECTIONSHANDLER, "org.apache.solr.handler.admin.CollectionsHandler");
+    return getString(CfgProp.SOLR_COLLECTIONSHANDLER, "org.apache.solr.handler.admin.CollectionsHandler");
   }
 
   public String getInfoHandlerClass() {
-    return get(CfgProp.SOLR_INFOHANDLER, "org.apache.solr.handler.admin.InfoHandler");
+    return getString(CfgProp.SOLR_INFOHANDLER, "org.apache.solr.handler.admin.InfoHandler");
   }
 
   public boolean hasSchemaCache() {
-    return get(ConfigSolr.CfgProp.SOLR_SHARESCHEMA, false);
+    return getBoolean(ConfigSolr.CfgProp.SOLR_SHARESCHEMA, false);
   }
 
   public String getManagementPath() {
-    return get(CfgProp.SOLR_MANAGEMENTPATH, null);
+    return getString(CfgProp.SOLR_MANAGEMENTPATH, null);
   }
 
   public String getConfigSetBaseDirectory() {
-    return get(CfgProp.SOLR_CONFIGSETBASEDIR, "configsets");
+    return getString(CfgProp.SOLR_CONFIGSETBASEDIR, "configsets");
   }
 
   public LogWatcherConfig getLogWatcherConfig() {
-    String loggingClass = get(CfgProp.SOLR_LOGGING_CLASS, null);
-    String loggingWatcherThreshold = get(CfgProp.SOLR_LOGGING_WATCHER_THRESHOLD, null);
+    String loggingClass = getString(CfgProp.SOLR_LOGGING_CLASS, null);
+    String loggingWatcherThreshold = getString(CfgProp.SOLR_LOGGING_WATCHER_THRESHOLD, null);
     return new LogWatcherConfig(
-        get(CfgProp.SOLR_LOGGING_ENABLED, true),
+        getBoolean(CfgProp.SOLR_LOGGING_ENABLED, true),
         loggingClass,
         loggingWatcherThreshold,
-        get(CfgProp.SOLR_LOGGING_WATCHER_SIZE, 50)
+        getInt(CfgProp.SOLR_LOGGING_WATCHER_SIZE, 50)
     );
   }
 
   public int getTransientCacheSize() {
-    return get(CfgProp.SOLR_TRANSIENTCACHESIZE, Integer.MAX_VALUE);
+    return getInt(CfgProp.SOLR_TRANSIENTCACHESIZE, Integer.MAX_VALUE);
   }
 
   public ConfigSetService createCoreConfigService(SolrResourceLoader loader, ZkController zkController) {
@@ -275,7 +242,7 @@ public abstract class ConfigSolr {
   }
 
   // Ugly for now, but we'll at least be able to centralize all of the differences between 4x and 5x.
-  protected static enum CfgProp {
+  public static enum CfgProp {
     SOLR_ADMINHANDLER,
     SOLR_COLLECTIONSHANDLER,
     SOLR_CORELOADTHREADS,
@@ -309,59 +276,44 @@ public abstract class ConfigSolr {
     
     SOLR_ZKCREDENTIALSPROVIDER,
     SOLR_ZKACLPROVIDER,
-    
-    //TODO: Remove all of these elements for 5.0
-    SOLR_PERSISTENT,
-    SOLR_CORES_DEFAULT_CORE_NAME,
-    SOLR_ADMINPATH
+
   }
 
-  protected Config config;
-  protected Map<CfgProp, Object> propMap = new HashMap<>();
+  protected final SolrResourceLoader loader;
+  protected final Properties solrProperties;
 
-  public ConfigSolr(Config config) {
-    this.config = config;
-    config.substituteProperties();
+  public ConfigSolr(SolrResourceLoader loader, Properties solrProperties) {
+    this.loader = loader;
+    this.solrProperties = solrProperties;
   }
 
-  // for extension & testing.
-  protected ConfigSolr() {
-
+  public ConfigSolr(SolrResourceLoader loader) {
+    this(loader, new Properties());
   }
-  
-  public Config getConfig() {
-    return config;
+
+  protected abstract String getProperty(CfgProp key);
+
+  private String getString(CfgProp key, String defaultValue) {
+    String v = getProperty(key);
+    return v == null ? defaultValue : v;
   }
 
-  @SuppressWarnings("unchecked")
-  public <T> T get(CfgProp key, T defaultValue) {
-    if (propMap.containsKey(key) && propMap.get(key) != null) {
-      return (T) propMap.get(key);
-    }
-    return defaultValue;
+  private int getInt(CfgProp key, int defaultValue) {
+    String v = getProperty(key);
+    return v == null ? defaultValue : Integer.parseInt(v);
   }
 
-  public Properties getSolrProperties(String path) {
-    try {
-      return readProperties(((NodeList) config.evaluate(
-          path, XPathConstants.NODESET)).item(0));
-    } catch (Exception e) {
-      SolrException.log(log, null, e);
-    }
-    return null;
+  private boolean getBoolean(CfgProp key, boolean defaultValue) {
+    String v = getProperty(key);
+    return v == null ? defaultValue : Boolean.parseBoolean(v);
+  }
 
+  public Properties getSolrProperties() {
+    return solrProperties;
   }
-  
-  protected Properties readProperties(Node node) throws XPathExpressionException {
-    XPath xpath = config.getXPath();
-    NodeList props = (NodeList) xpath.evaluate("property", node, XPathConstants.NODESET);
-    Properties properties = new Properties();
-    for (int i = 0; i < props.getLength(); i++) {
-      Node prop = props.item(i);
-      properties.setProperty(DOMUtil.getAttr(prop, "name"),
-          PropertiesUtil.substituteProperty(DOMUtil.getAttr(prop, "value"), null));
-    }
-    return properties;
+
+  public SolrResourceLoader getSolrResourceLoader() {
+    return loader;
   }
 
 }

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolrXml.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolrXml.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolrXml.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/ConfigSolrXml.java Mon Jan 19 13:25:29 2015
@@ -17,24 +17,26 @@ package org.apache.solr.core;
  * limitations under the License.
  */
 
+import com.google.common.base.Function;
+import com.google.common.base.Functions;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.util.DOMUtil;
-
-import com.google.common.base.Function;
-import com.google.common.base.Functions;
-
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
+import org.apache.solr.util.PropertiesUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
-import java.io.IOException;
-import java.util.List;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
 import java.util.ArrayList;
-import java.util.Map;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Locale;
+import java.util.Map;
+import java.util.Properties;
 
 
 /**
@@ -45,51 +47,28 @@ public class ConfigSolrXml extends Confi
   protected static Logger log = LoggerFactory.getLogger(ConfigSolrXml.class);
 
   private final CoresLocator coresLocator;
+  private final Config config;
+  private final Map<CfgProp, Object> propMap = new HashMap<>();
 
   public ConfigSolrXml(Config config) {
-    super(config);
-    try {
-      checkForIllegalConfig();
-      fillPropMap();
-      coresLocator = new CorePropertiesLocator(getCoreRootDirectory());
-    } catch (IOException e) {
-      throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
-    }
+    super(config.getResourceLoader(), loadProperties(config));
+    this.config = config;
+    this.config.substituteProperties();
+    checkForIllegalConfig();
+    fillPropMap();
+    coresLocator = new CorePropertiesLocator(getCoreRootDirectory());
   }
 
-  private void checkForIllegalConfig() throws IOException {
+  private void checkForIllegalConfig() {
 
-    // Do sanity checks - we don't want to find old style config
     failIfFound("solr/@coreLoadThreads");
     failIfFound("solr/@persistent");
     failIfFound("solr/@sharedLib");
     failIfFound("solr/@zkHost");
 
-    failIfFound("solr/logging/@class");
-    failIfFound("solr/logging/@enabled");
-    failIfFound("solr/logging/watcher/@size");
-    failIfFound("solr/logging/watcher/@threshold");
-
-    failIfFound("solr/cores/@adminHandler");
-    failIfFound("solr/cores/@distribUpdateConnTimeout");
-    failIfFound("solr/cores/@distribUpdateSoTimeout");
-    failIfFound("solr/cores/@host");
-    failIfFound("solr/cores/@hostContext");
-    failIfFound("solr/cores/@hostPort");
-    failIfFound("solr/cores/@leaderVoteWait");
-    failIfFound("solr/cores/@leaderConflictResolveWait");
-    failIfFound("solr/cores/@genericCoreNodeNames");
-    failIfFound("solr/cores/@managementPath");
-    failIfFound("solr/cores/@shareSchema");
-    failIfFound("solr/cores/@transientCacheSize");
-    failIfFound("solr/cores/@zkClientTimeout");
-
-    // These have no counterpart in 5.0, asking for any of these in Solr 5.0
-    // will result in an error being
-    // thrown.
-    failIfFound("solr/cores/@defaultCoreName");
+    failIfFound("solr/cores");
+
     failIfFound("solr/@persistent");
-    failIfFound("solr/cores/@adminPath");
 
   }
 
@@ -97,7 +76,32 @@ public class ConfigSolrXml extends Confi
 
     if (config.getVal(xPath, false) != null) {
       throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Should not have found " + xPath +
-          " solr.xml may be a mix of old and new style formats.");
+          "\n. Please upgrade your solr.xml: https://cwiki.apache.org/confluence/display/solr/Format+of+solr.xml");
+    }
+  }
+
+  protected String getProperty(CfgProp key) {
+    if (!propMap.containsKey(key) || propMap.get(key) == null)
+      return null;
+    return propMap.get(key).toString();
+  }
+
+  private static Properties loadProperties(Config config) {
+    try {
+      Node node = ((NodeList) config.evaluate("solr", XPathConstants.NODESET)).item(0);
+      XPath xpath = config.getXPath();
+      NodeList props = (NodeList) xpath.evaluate("property", node, XPathConstants.NODESET);
+      Properties properties = new Properties();
+      for (int i = 0; i < props.getLength(); i++) {
+        Node prop = props.item(i);
+        properties.setProperty(DOMUtil.getAttr(prop, "name"),
+            PropertiesUtil.substituteProperty(DOMUtil.getAttr(prop, "value"), null));
+      }
+      return properties;
+    }
+    catch (XPathExpressionException e) {
+      log.warn("Error parsing solr.xml: " + e.getMessage());
+      return null;
     }
   }
 
@@ -247,24 +251,9 @@ public class ConfigSolrXml extends Confi
     }
   }
 
-  @Override
-  public String getDefaultCoreName() {
-    return "collection1";
-  }
-
-  @Override
-  public boolean isPersistent() {
-    return true;
-  }
-
-  @Override
-  protected String getShardHandlerFactoryConfigPath() {
-    return "solr/shardHandlerFactory";
-  }
-
-  @Override
-  public String getAdminPath() {
-    return DEFAULT_CORE_ADMIN_PATH;
+  public PluginInfo getShardHandlerFactoryPluginInfo() {
+    Node node = config.getNode("solr/shardHandlerFactory", false);
+    return (node == null) ? null : new PluginInfo(node, "shardHandlerFactory", false, true);
   }
 
   @Override

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/CoreContainer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/CoreContainer.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/CoreContainer.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/CoreContainer.java Mon Jan 19 13:25:29 2015
@@ -17,21 +17,8 @@
 
 package org.apache.solr.core;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
 import org.apache.solr.cloud.ZkController;
 import org.apache.solr.cloud.ZkSolrResourceLoader;
 import org.apache.solr.common.SolrException;
@@ -51,8 +38,20 @@ import org.apache.zookeeper.KeeperExcept
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import static com.google.common.base.Preconditions.checkNotNull;
 
 
 /**
@@ -102,9 +101,14 @@ public class CoreContainer {
   protected final CoresLocator coresLocator;
   
   private String hostName;
+
   private final JarRepository jarRepository = new JarRepository(this);
-  
-  private Map<String ,SolrRequestHandler> containerHandlers = new HashMap<>();
+
+  public static final String CORES_HANDLER_PATH = "/admin/cores";
+  public static final String COLLECTIONS_HANDLER_PATH = "/admin/collections";
+  public static final String INFO_HANDLER_PATH = "/admin/info";
+
+  private Map<String, SolrRequestHandler> containerHandlers = new HashMap<>();
 
   public SolrRequestHandler getRequestHandler(String path) {
     return RequestHandlerBase.getRequestHandler(path, containerHandlers);
@@ -112,7 +116,6 @@ public class CoreContainer {
 
   public Map<String, SolrRequestHandler> getRequestHandlers(){
     return this.containerHandlers;
-
   }
 
  // private ClientConnectionManager clientConnectionManager = new PoolingClientConnectionManager();
@@ -137,7 +140,7 @@ public class CoreContainer {
    * @see #load()
    */
   public CoreContainer(SolrResourceLoader loader) {
-    this(loader, ConfigSolr.fromSolrHome(loader, loader.getInstanceDir()));
+    this(ConfigSolr.fromSolrHome(loader, loader.getInstanceDir()));
   }
 
   /**
@@ -154,19 +157,15 @@ public class CoreContainer {
    * Create a new CoreContainer using the given SolrResourceLoader,
    * configuration and CoresLocator.  The container's cores are
    * not loaded.
-   * @param loader the SolrResourceLoader
    * @param config a ConfigSolr representation of this container's configuration
    * @see #load()
    */
-  public CoreContainer(SolrResourceLoader loader, ConfigSolr config) {
-    this.loader = checkNotNull(loader);
-    this.solrHome = loader.getInstanceDir();
-    this.cfg = checkNotNull(config);
-    this.coresLocator = config.getCoresLocator();
+  public CoreContainer(ConfigSolr config) {
+    this(config, config.getCoresLocator());
   }
 
-  public CoreContainer(SolrResourceLoader loader, ConfigSolr config, CoresLocator locator) {
-    this.loader = checkNotNull(loader);
+  public CoreContainer(ConfigSolr config, CoresLocator locator) {
+    this.loader = config.getSolrResourceLoader();
     this.solrHome = loader.getInstanceDir();
     this.cfg = checkNotNull(config);
     this.coresLocator = locator;
@@ -194,7 +193,7 @@ public class CoreContainer {
    */
   public static CoreContainer createAndLoad(String solrHome, File configFile) {
     SolrResourceLoader loader = new SolrResourceLoader(solrHome);
-    CoreContainer cc = new CoreContainer(loader, ConfigSolr.fromFile(loader, configFile));
+    CoreContainer cc = new CoreContainer(ConfigSolr.fromFile(loader, configFile));
     try {
       cc.load();
     } catch (Exception e) {
@@ -243,15 +242,15 @@ public class CoreContainer {
     zkSys.initZooKeeper(this, solrHome, cfg);
 
     collectionsHandler = createHandler(cfg.getCollectionsHandlerClass(), CollectionsHandler.class);
-    containerHandlers.put("/admin/collections" , collectionsHandler);
+    containerHandlers.put(COLLECTIONS_HANDLER_PATH, collectionsHandler);
     infoHandler        = createHandler(cfg.getInfoHandlerClass(), InfoHandler.class);
-    containerHandlers.put("/admin/info" , infoHandler);
+    containerHandlers.put(INFO_HANDLER_PATH, infoHandler);
     coreAdminHandler   = createHandler(cfg.getCoreAdminHandlerClass(), CoreAdminHandler.class);
-    containerHandlers.put(cfg.getAdminPath() , coreAdminHandler);
+    containerHandlers.put(CORES_HANDLER_PATH, coreAdminHandler);
 
     coreConfigService = cfg.createCoreConfigService(loader, zkSys.getZkController());
 
-    containerProperties = cfg.getSolrProperties("solr");
+    containerProperties = cfg.getSolrProperties();
 
     // setup executor to load cores in parallel
     // do not limit the size of the executor in zk mode since cores may try and wait for each other.
@@ -599,8 +598,6 @@ public class CoreContainer {
    */
   public void reload(String name) {
 
-    name = checkDefault(name);
-
     SolrCore core = solrCores.getCoreFromAnyList(name, false);
     if (core == null)
       throw new SolrException( SolrException.ErrorCode.BAD_REQUEST, "No such core: " + name );
@@ -623,11 +620,6 @@ public class CoreContainer {
 
   }
 
-  //5.0 remove all checkDefaults?
-  private String checkDefault(String name) {
-    return (null == name || name.isEmpty()) ? getDefaultCoreName() : name;
-  } 
-
   /**
    * Swaps two SolrCore descriptors.
    */
@@ -635,8 +627,6 @@ public class CoreContainer {
     if( n0 == null || n1 == null ) {
       throw new SolrException( SolrException.ErrorCode.BAD_REQUEST, "Can not swap unnamed cores." );
     }
-    n0 = checkDefault(n0);
-    n1 = checkDefault(n1);
     solrCores.swap(n0, n1);
 
     coresLocator.swap(this, solrCores.getCoreDescriptor(n0), solrCores.getCoreDescriptor(n1));
@@ -662,8 +652,6 @@ public class CoreContainer {
    */
   public void unload(String name, boolean deleteIndexDir, boolean deleteDataDir, boolean deleteInstanceDir) {
 
-    name = checkDefault(name);
-
     // check for core-init errors first
     CoreLoadFailure loadFailure = coreInitFailures.remove(name);
     if (loadFailure != null) {
@@ -715,7 +703,6 @@ public class CoreContainer {
     try (SolrCore core = getCore(name)) {
       if (core != null) {
         registerCore(toName, core, true);
-        name = checkDefault(name);
         SolrCore old = solrCores.remove(name);
         coresLocator.rename(this, old.getCoreDescriptor(), core.getCoreDescriptor());
       }
@@ -753,8 +740,6 @@ public class CoreContainer {
    */
   public SolrCore getCore(String name) {
 
-    name = checkDefault(name);
-
     // Do this in two phases since we don't want to lock access to the cores over a load.
     SolrCore core = solrCores.getCoreFromAnyList(name, true);
 
@@ -821,26 +806,6 @@ public class CoreContainer {
     return infoHandler;
   }
 
-  // ---------------- Multicore self related methods ---------------
-
-  /**
-   * the default core name, or null if there is no default core name
-   */
-  public String getDefaultCoreName() {
-    return cfg.getDefaultCoreName();
-  }
-
-  // all of the following properties aren't synchronized
-  // but this should be OK since they normally won't be changed rapidly
-  @Deprecated
-  public boolean isPersistent() {
-    return cfg.isPersistent();
-  }
-  
-  public String getAdminPath() {
-    return cfg.getAdminPath();
-  }
-  
   public String getHostName() {
     return this.hostName;
   }

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java Mon Jan 19 13:25:29 2015
@@ -17,25 +17,8 @@
 
 package org.apache.solr.handler.admin;
 
-import static org.apache.solr.common.cloud.DocCollection.DOC_ROUTER;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
 import org.apache.commons.lang.StringUtils;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.search.MatchAllDocsQuery;
@@ -67,7 +50,6 @@ import org.apache.solr.core.CoreDescript
 import org.apache.solr.core.DirectoryFactory;
 import org.apache.solr.core.DirectoryFactory.DirContext;
 import org.apache.solr.core.SolrCore;
-import org.apache.solr.core.SolrXMLCoresLocator;
 import org.apache.solr.handler.RequestHandlerBase;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
@@ -86,8 +68,24 @@ import org.apache.zookeeper.KeeperExcept
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+import static org.apache.solr.common.cloud.DocCollection.DOC_ROUTER;
 
 /**
  *
@@ -586,12 +584,7 @@ public class CoreAdminHandler extends Re
       
       // only write out the descriptor if the core is successfully created
       coreContainer.getCoresLocator().create(coreContainer, dcore);
-      
-      if (coreContainer.getCoresLocator() instanceof SolrXMLCoresLocator) {
-        // hack - in this case we persist once more because a core create race might
-        // have dropped entries.
-        coreContainer.getCoresLocator().create(coreContainer);
-      }
+
       rsp.add("core", core.getName());
     }
     catch (Exception ex) {
@@ -694,7 +687,6 @@ public class CoreAdminHandler extends Re
     }
     try {
       if (cname == null) {
-        rsp.add("defaultCoreName", coreContainer.getDefaultCoreName());
         for (String name : coreContainer.getAllCoreNames()) {
           status.add(name, getCoreStatus(coreContainer, name, isIndexInfoNeeded));
         }
@@ -1111,7 +1103,6 @@ public class CoreAdminHandler extends Re
       CoreDescriptor desc = cores.getUnloadedCoreDescriptor(cname);
       if (desc != null) {
         info.add("name", desc.getName());
-        info.add("isDefaultCore", desc.getName().equals(cores.getDefaultCoreName()));
         info.add("instanceDir", desc.getInstanceDir());
         // None of the following are guaranteed to be present in a not-yet-loaded core.
         String tmp = desc.getDataDir();
@@ -1126,7 +1117,6 @@ public class CoreAdminHandler extends Re
       try (SolrCore core = cores.getCore(cname)) {
         if (core != null) {
           info.add("name", core.getName());
-          info.add("isDefaultCore", core.getName().equals(cores.getDefaultCoreName()));
           info.add("instanceDir", normalizePath(core.getResourceLoader().getInstanceDir()));
           info.add("dataDir", normalizePath(core.getDataDir()));
           info.add("config", core.getConfigResource());

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java Mon Jan 19 13:25:29 2015
@@ -17,21 +17,20 @@
 
 package org.apache.solr.servlet;
 
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.nio.charset.StandardCharsets;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrCore;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.nio.charset.StandardCharsets;
+
 /**
  * A simple servlet to load the Solr Admin UI
  * 
@@ -63,7 +62,7 @@ public final class LoadAdminUiServlet ex
         };
         String[] replace = new String[] {
             StringEscapeUtils.escapeJavaScript(request.getContextPath()),
-            StringEscapeUtils.escapeJavaScript(cores.getAdminPath()),
+            StringEscapeUtils.escapeJavaScript(CoreContainer.CORES_HANDLER_PATH),
             StringEscapeUtils.escapeJavaScript(pack.getSpecificationVersion())
         };
         

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java Mon Jan 19 13:25:29 2015
@@ -178,7 +178,7 @@ public class SolrDispatchFilter extends
   protected CoreContainer createCoreContainer() {
     SolrResourceLoader loader = new SolrResourceLoader(SolrResourceLoader.locateSolrHome());
     ConfigSolr config = loadConfigSolr(loader);
-    CoreContainer cores = new CoreContainer(loader, config);
+    CoreContainer cores = new CoreContainer(config);
     cores.load();
     return cores;
   }
@@ -250,22 +250,18 @@ public class SolrDispatchFilter extends
           path = path.substring( 0, idx );
         }
 
-        // Check for the core admin page
-        if( path.equals( cores.getAdminPath() ) ) {
-          handler = cores.getMultiCoreHandler();
-          solrReq =  SolrRequestParsers.DEFAULT.parse(null,path, req);
-          handleAdminRequest(req, response, handler, solrReq);
-          return;
-        }
+
         boolean usingAliases = false;
         List<String> collectionsList = null;
-        // Check for the core admin collections url
+
+        // Check for container handlers
         handler = cores.getRequestHandler(path);
-        if( handler!= null ) {
-          solrReq =  SolrRequestParsers.DEFAULT.parse(null,path, req);
+        if (handler != null) {
+          solrReq = SolrRequestParsers.DEFAULT.parse(null, path, req);
           handleAdminRequest(req, response, handler, solrReq);
           return;
-        } else {
+        }
+        else {
           //otherwise, we should find a core from the path
           idx = path.indexOf( "/", 1 );
           if( idx > 1 ) {

Modified: lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave.xml?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave.xml (original)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave.xml Mon Jan 19 13:25:29 2015
@@ -42,7 +42,7 @@
 
   <requestHandler name="/replication" class="solr.ReplicationHandler">
 	<lst name="slave">
-		<str name="masterUrl">http://127.0.0.1:TEST_PORT/solr</str>
+		<str name="masterUrl">http://127.0.0.1:TEST_PORT/solr/collection1</str>
 		<str name="pollInterval">00:00:01</str>
         <str name="compression">COMPRESSION</str>
      </lst>

Added: lucene/dev/trunk/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/schema.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/schema.xml?rev=1652995&view=auto
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/schema.xml (added)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/schema.xml Mon Jan 19 13:25:29 2015
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ 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.
+-->
+<schema name="minimal" version="1.1">
+ <types>
+  <fieldType name="string" class="solr.StrField"/>
+ </types>
+ <fields>
+   <dynamicField name="*" type="string" indexed="true" stored="true" />
+ </fields>
+</schema>

Added: lucene/dev/trunk/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/solrconfig.xml?rev=1652995&view=auto
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/solrconfig.xml (added)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/configsets/bad-mergepolicy/conf/solrconfig.xml Mon Jan 19 13:25:29 2015
@@ -0,0 +1,34 @@
+<?xml version="1.0" ?>
+
+<!--
+ 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.
+-->
+
+<config>
+
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
+
+  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
+
+  <indexConfig>
+    <mergePolicy class="org.apache.solr.update.DummyMergePolicy"/>
+    <mergeFactor>8</mergeFactor>
+  </indexConfig>
+
+  <updateHandler class="solr.DirectUpdateHandler2"/>
+  <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+
+</config>

Modified: lucene/dev/trunk/solr/core/src/test-files/solr/solr-no-core.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/solr-no-core.xml?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/solr-no-core.xml (original)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/solr-no-core.xml Mon Jan 19 13:25:29 2015
@@ -19,6 +19,8 @@
 <solr>
 
   <str name="shareSchema">${shareSchema:false}</str>
+  <str name="configSetBaseDir">${configSetBaseDir:configsets}</str>
+  <str name="coreRootDirectory">${coreRootDirectory:.}</str>
 
   <solrcloud>
     <str name="host">127.0.0.1</str>

Modified: lucene/dev/trunk/solr/core/src/test-files/solr/solr.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/solr.xml?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/solr.xml (original)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/solr.xml Mon Jan 19 13:25:29 2015
@@ -18,27 +18,28 @@
 
 <!--
  All (relative) paths are relative to the installation path
-  
-  persistent: Save changes made via the API to this file
-  sharedLib: path to a lib directory that will be shared across all cores
 -->
-<solr persistent="${solr.xml.persist:false}">
+<solr>
+
+  <str name="shareSchema">${shareSchema:false}</str>
+  <str name="configSetBaseDir">${configSetBaseDir:configsets}</str>
+  <str name="coreRootDirectory">${coreRootDirectory:.}</str>
+
+  <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
+    <str name="urlScheme">${urlScheme:}</str>
+    <int name="socketTimeout">${socketTimeout:90000}</int>
+    <int name="connTimeout">${connTimeout:15000}</int>
+  </shardHandlerFactory>
 
-  <!--
-  adminPath: RequestHandler path to manage cores.  
-    If 'null' (or absent), cores will not be manageable via request handler
-  -->
-  <cores adminPath="/admin/cores" defaultCoreName="collection1" host="127.0.0.1" hostPort="${hostPort:8983}" 
-         hostContext="${hostContext:solr}" zkClientTimeout="${solr.zkclienttimeout:30000}" shareSchema="${shareSchema:false}" 
-         genericCoreNodeNames="${genericCoreNodeNames:true}" leaderVoteWait="0"
-         distribUpdateConnTimeout="${distribUpdateConnTimeout:45000}" distribUpdateSoTimeout="${distribUpdateSoTimeout:340000}">
-    <core name="collection1" instanceDir="collection1" shard="${shard:}" collection="${collection:collection1}" config="${solrconfig:solrconfig.xml}" schema="${schema:schema.xml}"
-          coreNodeName="${coreNodeName:}"/>
-    <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
-      <str name="urlScheme">${urlScheme:}</str>
-      <int name="socketTimeout">${socketTimeout:90000}</int>
-      <int name="connTimeout">${connTimeout:15000}</int>
-    </shardHandlerFactory>
-  </cores>
+  <solrcloud>
+    <str name="host">127.0.0.1</str>
+    <int name="hostPort">${hostPort:8983}</int>
+    <str name="hostContext">${hostContext:solr}</str>
+    <int name="zkClientTimeout">${solr.zkclienttimeout:30000}</int>
+    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
+    <int name="leaderVoteWait">0</int>
+    <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:45000}</int>
+    <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:340000}</int>
+  </solrcloud>
   
 </solr>

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java?rev=1652995&r1=1652994&r2=1652995&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java Mon Jan 19 13:25:29 2015
@@ -16,20 +16,21 @@
  */
 package org.apache.solr;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.util.Properties;
-
 import org.apache.commons.io.FileUtils;
 import org.apache.lucene.util.IOUtils;
+import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.junit.BeforeClass;
 
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
 import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.Properties;
 
 /**
  * <p> Test for Loading core properties from a properties file </p>
@@ -39,6 +40,8 @@ import java.nio.charset.StandardCharsets
  */
 public class TestSolrCoreProperties extends SolrJettyTestBase {
 
+  // TODO these properties files don't work with configsets
+
   @BeforeClass
   public static void beforeTest() throws Exception {
     File homeDir = createTempDir().toFile();
@@ -68,7 +71,19 @@ public class TestSolrCoreProperties exte
     p.store(fos, null);
     IOUtils.close(fos);
 
-    createJetty(homeDir.getAbsolutePath(), null, null);
+    Files.createFile(collDir.toPath().resolve("core.properties"));
+
+    jetty = new JettySolrRunner(homeDir.getAbsolutePath(), "/solr", 0, null, null, true, null, sslConfig);
+
+    // this sets the property for jetty starting SolrDispatchFilter
+    if (System.getProperty("solr.data.dir") == null && System.getProperty("solr.hdfs.home") == null) {
+      jetty.setDataDir(createTempDir().toFile().getCanonicalPath());
+    }
+
+    jetty.start();
+    port = jetty.getLocalPort();
+
+    //createJetty(homeDir.getAbsolutePath(), null, null);
   }
 
   public void testSimple() throws Exception {