Does this fix it?
@@ -79,9 +76,7 @@ public class CorePropertiesLocator implements CoresLocator {
OutputStream os = null;
try {
os = new FileOutputStream(propfile);
- Writer writer = new OutputStreamWriter(os, Charsets.UTF_8);
- p.store(writer, "Written by CorePropertiesLocator on " + new Date());
- writer.close();
+ p.store(os, "Written by CorePropertiesLocator on " + new Date());
}
catch (IOException e) {
Alan Woodward
www.flax.co.uk
On 12 Jul 2013, at 09:35, Uwe Schindler wrote:
> Hi,
>
> you have tob e careful: If you store properties with a writer but load it
> with InputStream, the code is different. Properties files have a defined
> charset of ISO-8859-1:
>
> "The load(Reader) / store(Writer, String) methods load and store properties
> from and to a character based stream in a simple line-oriented format
> specified below. The load(InputStream) / store(OutputStream, String) methods
> work the same way as the load(Reader)/store(Writer, String) pair, except the
> input/output stream is encoded in ISO 8859-1 character encoding. Characters
> that cannot be directly represented in this encoding can be written using
> Unicode escapes as defined in section 3.3 of The Java™ Language
> Specification; only a single 'u' character is allowed in an escape sequence.
> The native2ascii tool can be used to convert property files to and from other
> character encodings."
>
> So be sure to be consistent when loading/saving! If we previously (in older
> Solr version) used the InputStream methods to load/store core props, we
> should use ISO-8859-1 to load/store to be compatible with older versions!
>
> Uwe
>
> -----
> Uwe Schindler
> H.-H.-Meier-Allee 63, D-28213 Bremen
> http://www.thetaphi.de
> eMail: [email protected]
>
>
>> -----Original Message-----
>> From: [email protected] [mailto:[email protected]]
>> Sent: Friday, July 12, 2013 10:26 AM
>> To: [email protected]
>> Subject: svn commit: r1502468 - in /lucene/dev/trunk/solr/core/src:
>> java/org/apache/solr/core/CorePropertiesLocator.java
>> test/org/apache/solr/core/TestSolrXmlPersistor.java
>>
>> Author: romseygeek
>> Date: Fri Jul 12 08:25:36 2013
>> New Revision: 1502468
>>
>> URL: http://svn.apache.org/r1502468
>> Log:
>> SOLR-4914: Close OutputStreamWriter properly, use
>> System.getProperty("line.separator") instead of \n
>>
>> Fixes Windows test failures.
>>
>> Modified:
>>
>> lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/CorePropertiesL
>> ocator.java
>>
>> lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersi
>> stor.java
>>
>> Modified:
>> lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/CorePropertiesL
>> ocator.java
>> URL:
>> http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apa
>> che/solr/core/CorePropertiesLocator.java?rev=1502468&r1=1502467&r2=150
>> 2468&view=diff
>> ==========================================================
>> ====================
>> ---
>> lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/CorePropertiesL
>> ocator.java (original)
>> +++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/CorePropert
>> +++ iesLocator.java Fri Jul 12 08:25:36 2013
>> @@ -20,6 +20,7 @@ package org.apache.solr.core; import
>> com.google.common.base.Charsets; import
>> com.google.common.collect.Lists; import
>> org.apache.solr.common.SolrException;
>> +import org.apache.solr.util.IOUtils;
>> import org.slf4j.Logger;
>> import org.slf4j.LoggerFactory;
>>
>> @@ -27,6 +28,7 @@ import java.io.File;
>> import java.io.FileInputStream;
>> import java.io.FileOutputStream;
>> import java.io.IOException;
>> +import java.io.OutputStream;
>> import java.io.OutputStreamWriter;
>> import java.io.Writer;
>> import java.util.Date;
>> @@ -56,14 +58,7 @@ public class CorePropertiesLocator imple
>> throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
>> "Could not create a new core in " +
>> cd.getInstanceDir()
>> + "as another core is already defined there");
>> - try {
>> - Properties p = buildCoreProperties(cd);
>> - Writer writer = new OutputStreamWriter(new
>> FileOutputStream(propFile), Charsets.UTF_8);
>> - p.store(writer, "Written by CorePropertiesLocator on " + new
>> Date());
>> - }
>> - catch (IOException e) {
>> - logger.error("Couldn't persist core properties to {}: {}",
>> propFile.getAbsolutePath(), e);
>> - }
>> + writePropertiesFile(cd, propFile);
>> }
>> }
>>
>> @@ -75,14 +70,25 @@ public class CorePropertiesLocator imple
>> public void persist(CoreContainer cc, CoreDescriptor... coreDescriptors) {
>> for (CoreDescriptor cd : coreDescriptors) {
>> File propFile = new File(new File(cd.getInstanceDir()),
>> PROPERTIES_FILENAME);
>> - try {
>> - Properties p = buildCoreProperties(cd);
>> - Writer writer = new OutputStreamWriter(new
>> FileOutputStream(propFile), Charsets.UTF_8);
>> - p.store(writer, "Written by CorePropertiesLocator on " + new
>> Date());
>> - }
>> - catch (IOException e) {
>> - logger.error("Couldn't persist core properties to {}: {}",
>> propFile.getAbsolutePath(), e);
>> - }
>> + writePropertiesFile(cd, propFile);
>> + }
>> + }
>> +
>> + private void writePropertiesFile(CoreDescriptor cd, File propfile) {
>> + Properties p = buildCoreProperties(cd);
>> + OutputStream os = null;
>> + try {
>> + os = new FileOutputStream(propfile);
>> + Writer writer = new OutputStreamWriter(os, Charsets.UTF_8);
>> + p.store(writer, "Written by CorePropertiesLocator on " + new Date());
>> + writer.close();
>> + }
>> + catch (IOException e) {
>> + logger.error("Couldn't persist core properties to {}: {}",
>> propfile.getAbsolutePath(), e);
>> + }
>> + finally {
>> + if (os != null)
>> + IOUtils.closeQuietly(os);
>> }
>> }
>>
>>
>> Modified:
>> lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersi
>> stor.java
>> URL:
>> http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apa
>> che/solr/core/TestSolrXmlPersistor.java?rev=1502468&r1=1502467&r2=1502
>> 468&view=diff
>> ==========================================================
>> ====================
>> ---
>> lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXmlPersi
>> stor.java (original)
>> +++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestSolrXml
>> +++ Persistor.java Fri Jul 12 08:25:36 2013
>> @@ -70,8 +70,8 @@ public class TestSolrXmlPersistor {
>>
>> SolrXMLCoresLocator persistor = new SolrXMLCoresLocator(new
>> File("testfile.xml"), solrxml, null);
>> assertEquals(persistor.buildSolrXML(cds),
>> - "<solr><cores>\n"
>> - + " <core name=\"testcore\" instanceDir=\"instance/dir/\"/>\n"
>> + "<solr><cores>" + SolrXMLCoresLocator.NEWLINE
>> + + " <core name=\"testcore\" instanceDir=\"instance/dir/\"/>" +
>> SolrXMLCoresLocator.NEWLINE
>> + "</cores></solr>");
>> }
>>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]