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: u...@thetaphi.de
> 
> 
>> -----Original Message-----
>> From: romseyg...@apache.org [mailto:romseyg...@apache.org]
>> Sent: Friday, July 12, 2013 10:26 AM
>> To: comm...@lucene.apache.org
>> 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: dev-unsubscr...@lucene.apache.org
> For additional commands, e-mail: dev-h...@lucene.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to