diff --git a/lucene/core/src/java/org/apache/lucene/util/IOUtils.java b/lucene/core/src/java/org/apache/lucene/util/IOUtils.java index 45688ab18b4..e722ec37634 100644 --- a/lucene/core/src/java/org/apache/lucene/util/IOUtils.java +++ b/lucene/core/src/java/org/apache/lucene/util/IOUtils.java @@ -21,6 +21,7 @@ import java.io.BufferedReader; import java.io.Closeable; import java.io.File; import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -331,5 +332,24 @@ public final class IOUtils { } } - + /** + * Copy one file's contents to another file. The target will be overwritten + * if it exists. The source must exist. + */ + public static void copy(File source, File target) throws IOException { + FileInputStream fis = null; + FileOutputStream fos = null; + try { + fis = new FileInputStream(source); + fos = new FileOutputStream(target); + + final byte [] buffer = new byte [1024 * 8]; + int len; + while ((len = fis.read(buffer)) > 0) { + fos.write(buffer, 0, len); + } + } finally { + close(fis, fos); + } + } } diff --git a/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java b/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java index c69c99f8e16..fed32408c70 100644 --- a/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java +++ b/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java @@ -26,6 +26,7 @@ import java.util.Set; import org.apache.noggit.JSONParser; import org.apache.lucene.analysis.util.ResourceLoader; +import org.apache.lucene.util.IOUtils; import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrException.ErrorCode; import org.slf4j.Logger; @@ -181,7 +182,7 @@ public class OpenExchangeRatesOrgProvider implements ExchangeRateProvider { private JSONParser parser; public OpenExchangeRates(InputStream ratesStream) throws IOException { - parser = new JSONParser(new InputStreamReader(ratesStream)); + parser = new JSONParser(new InputStreamReader(ratesStream, IOUtils.CHARSET_UTF_8)); rates = new HashMap(); int ev; diff --git a/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java b/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java index c9b739d6e42..6a27a09a5fb 100644 --- a/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java +++ b/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java @@ -16,6 +16,7 @@ */ package org.apache.solr; +import org.apache.lucene.util.IOUtils; import org.apache.lucene.util.LuceneTestCase; import org.apache.solr.util.AbstractSolrTestCase; import org.apache.solr.client.solrj.embedded.JettySolrRunner; @@ -24,7 +25,6 @@ import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.params.ModifiableSolrParams; -import org.apache.commons.io.IOUtils; import java.io.*; import java.util.Properties; @@ -115,29 +115,15 @@ public class TestSolrCoreProperties extends LuceneTestCase { confDir.mkdirs(); File f = new File(confDir, "solrconfig.xml"); - copyFile(SolrTestCaseJ4.getFile(getSolrConfigFile()), f); + IOUtils.copy(SolrTestCaseJ4.getFile(getSolrConfigFile()), f); f = new File(confDir, "schema.xml"); - copyFile(SolrTestCaseJ4.getFile(getSchemaFile()), f); + IOUtils.copy(SolrTestCaseJ4.getFile(getSchemaFile()), f); Properties p = new Properties(); p.setProperty("foo.foo1", "f1"); p.setProperty("foo.foo2", "f2"); FileOutputStream fos = new FileOutputStream(confDir + File.separator + "solrcore.properties"); p.store(fos, null); - fos.close(); - IOUtils.closeQuietly(fos); - - } - - - private void copyFile(File src, File dst) throws IOException { - BufferedReader in = new BufferedReader(new FileReader(src)); - Writer out = new FileWriter(dst); - - for (String line = in.readLine(); null != line; line = in.readLine()) { - out.write(line); - } - in.close(); - out.close(); + IOUtils.close(fos); } }