From a74684473eeb6b924fd7cf88feb94a2973c6f6c0 Mon Sep 17 00:00:00 2001 From: Tanguy Leroux Date: Mon, 3 Aug 2015 12:18:51 +0200 Subject: [PATCH] Move Streams.copyTo(String|Bytes)FromClasspath() into StreamsUtils The Streams.copyTo(String|Bytes)FromClasspath() methods resolve resources using org.elasticsearch.io.Streams classloader. This is fine in elasticsearch core and when running tests but if used in a plugin this can lead to FileNotFoundExceptions at runtime because plugin are loaded in a dedicated classloader. --- .../main/java/org/elasticsearch/Build.java | 8 +-- .../org/elasticsearch/common/io/Streams.java | 29 --------- .../action/bulk/BulkIntegrationIT.java | 2 +- .../action/bulk/BulkRequestTests.java | 2 +- .../fieldstats/FieldStatsRequestTest.java | 4 +- .../MultiPercolatorRequestTests.java | 6 +- .../search/MultiSearchRequestTests.java | 10 +-- .../termvectors/TermVectorsUnitTests.java | 8 +-- .../common/cli/CliToolTestCase.java | 5 +- .../mapper/all/SimpleAllMapperTests.java | 5 +- .../GenericStoreDynamicTemplateTests.java | 4 +- .../PathMatchDynamicTemplateTests.java | 4 +- .../simple/SimpleDynamicTemplatesTests.java | 4 +- .../mapper/multifield/MultiFieldTests.java | 4 +- .../merge/JavaMultiFieldMergeTests.java | 2 +- .../index/mapper/path/PathMapperTests.java | 2 +- .../mapper/simple/SimpleMapperTests.java | 4 +- .../update/UpdateMappingOnClusterIT.java | 2 +- .../mapper/update/UpdateMappingTests.java | 2 +- ...QueryParserFilterDateRangeFormatTests.java | 4 +- ...eryParserFilterDateRangeTimezoneTests.java | 4 +- .../query/SimpleIndexQueryParserTests.java | 4 +- .../bucket/DedicatedAggregationIT.java | 2 +- .../search/child/ChildQuerySearchIT.java | 2 +- .../morelikethis/ItemSerializationTests.java | 2 +- .../org/elasticsearch/test/StreamsUtils.java | 61 +++++++++++++++++++ 26 files changed, 107 insertions(+), 79 deletions(-) create mode 100644 core/src/test/java/org/elasticsearch/test/StreamsUtils.java diff --git a/core/src/main/java/org/elasticsearch/Build.java b/core/src/main/java/org/elasticsearch/Build.java index cf3b7de05a6..508b4dc4375 100644 --- a/core/src/main/java/org/elasticsearch/Build.java +++ b/core/src/main/java/org/elasticsearch/Build.java @@ -19,14 +19,13 @@ package org.elasticsearch; -import org.elasticsearch.common.io.FastStringReader; -import org.elasticsearch.common.io.Streams; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.joda.time.DateTimeZone; import org.joda.time.format.ISODateTimeFormat; import java.io.IOException; +import java.io.InputStream; import java.util.Properties; /** @@ -40,10 +39,9 @@ public class Build { String hashShort = "NA"; String timestamp = "NA"; - try { - String properties = Streams.copyToStringFromClasspath("/es-build.properties"); + try (InputStream is = Build.class.getResourceAsStream("/es-build.properties")){ Properties props = new Properties(); - props.load(new FastStringReader(properties)); + props.load(is); hash = props.getProperty("hash", hash); if (!hash.equals("NA")) { hashShort = hash.substring(0, 7); diff --git a/core/src/main/java/org/elasticsearch/common/io/Streams.java b/core/src/main/java/org/elasticsearch/common/io/Streams.java index b5f224e72f0..166e7960b3c 100644 --- a/core/src/main/java/org/elasticsearch/common/io/Streams.java +++ b/core/src/main/java/org/elasticsearch/common/io/Streams.java @@ -22,7 +22,6 @@ package org.elasticsearch.common.io; import com.google.common.base.Charsets; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; -import org.elasticsearch.common.io.stream.BytesStreamOutput; import org.elasticsearch.common.util.Callback; import java.io.*; @@ -184,34 +183,6 @@ public abstract class Streams { return out.toString(); } - public static String copyToStringFromClasspath(ClassLoader classLoader, String path) throws IOException { - InputStream is = classLoader.getResourceAsStream(path); - if (is == null) { - throw new FileNotFoundException("Resource [" + path + "] not found in classpath with class loader [" + classLoader + "]"); - } - return copyToString(new InputStreamReader(is, Charsets.UTF_8)); - } - - public static String copyToStringFromClasspath(String path) throws IOException { - InputStream is = Streams.class.getResourceAsStream(path); - if (is == null) { - throw new FileNotFoundException("Resource [" + path + "] not found in classpath"); - } - return copyToString(new InputStreamReader(is, Charsets.UTF_8)); - } - - public static byte[] copyToBytesFromClasspath(String path) throws IOException { - try (InputStream is = Streams.class.getResourceAsStream(path)) { - if (is == null) { - throw new FileNotFoundException("Resource [" + path + "] not found in classpath"); - } - try (BytesStreamOutput out = new BytesStreamOutput()) { - copy(is, out); - return out.bytes().toBytes(); - } - } - } - public static int readFully(Reader reader, char[] dest) throws IOException { return readFully(reader, dest, 0, dest.length); } diff --git a/core/src/test/java/org/elasticsearch/action/bulk/BulkIntegrationIT.java b/core/src/test/java/org/elasticsearch/action/bulk/BulkIntegrationIT.java index fe5c0821330..ce2df6b3543 100644 --- a/core/src/test/java/org/elasticsearch/action/bulk/BulkIntegrationIT.java +++ b/core/src/test/java/org/elasticsearch/action/bulk/BulkIntegrationIT.java @@ -26,7 +26,7 @@ import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse; import org.elasticsearch.test.ESIntegTestCase; import org.junit.Test; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; public class BulkIntegrationIT extends ESIntegTestCase { diff --git a/core/src/test/java/org/elasticsearch/action/bulk/BulkRequestTests.java b/core/src/test/java/org/elasticsearch/action/bulk/BulkRequestTests.java index 61361d48fb0..3d462fd17ee 100644 --- a/core/src/test/java/org/elasticsearch/action/bulk/BulkRequestTests.java +++ b/core/src/test/java/org/elasticsearch/action/bulk/BulkRequestTests.java @@ -37,7 +37,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.notNullValue; diff --git a/core/src/test/java/org/elasticsearch/action/fieldstats/FieldStatsRequestTest.java b/core/src/test/java/org/elasticsearch/action/fieldstats/FieldStatsRequestTest.java index e2c98ce65a6..dd562a9bccd 100644 --- a/core/src/test/java/org/elasticsearch/action/fieldstats/FieldStatsRequestTest.java +++ b/core/src/test/java/org/elasticsearch/action/fieldstats/FieldStatsRequestTest.java @@ -20,8 +20,8 @@ package org.elasticsearch.action.fieldstats; import org.elasticsearch.common.bytes.BytesArray; -import org.elasticsearch.common.io.Streams; import org.elasticsearch.test.ESTestCase; +import org.elasticsearch.test.StreamsUtils; import static org.elasticsearch.action.fieldstats.IndexConstraint.Comparison.*; import static org.elasticsearch.action.fieldstats.IndexConstraint.Property.MAX; @@ -31,7 +31,7 @@ import static org.hamcrest.Matchers.equalTo; public class FieldStatsRequestTest extends ESTestCase { public void testFieldsParsing() throws Exception { - byte[] data = Streams.copyToBytesFromClasspath("/org/elasticsearch/action/fieldstats/fieldstats-index-constraints-request.json"); + byte[] data = StreamsUtils.copyToBytesFromClasspath("/org/elasticsearch/action/fieldstats/fieldstats-index-constraints-request.json"); FieldStatsRequest request = new FieldStatsRequest(); request.source(new BytesArray(data)); diff --git a/core/src/test/java/org/elasticsearch/action/percolate/MultiPercolatorRequestTests.java b/core/src/test/java/org/elasticsearch/action/percolate/MultiPercolatorRequestTests.java index 2f2a0728c67..48c75d8267b 100644 --- a/core/src/test/java/org/elasticsearch/action/percolate/MultiPercolatorRequestTests.java +++ b/core/src/test/java/org/elasticsearch/action/percolate/MultiPercolatorRequestTests.java @@ -20,7 +20,7 @@ package org.elasticsearch.action.percolate; import org.elasticsearch.action.support.IndicesOptions; import org.elasticsearch.common.collect.MapBuilder; -import org.elasticsearch.common.io.Streams; +import org.elasticsearch.test.StreamsUtils; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.test.ESTestCase; import org.junit.Test; @@ -35,7 +35,7 @@ public class MultiPercolatorRequestTests extends ESTestCase { @Test public void testParseBulkRequests() throws Exception { - byte[] data = Streams.copyToBytesFromClasspath("/org/elasticsearch/action/percolate/mpercolate1.json"); + byte[] data = StreamsUtils.copyToBytesFromClasspath("/org/elasticsearch/action/percolate/mpercolate1.json"); MultiPercolateRequest request = new MultiPercolateRequest().add(data, 0, data.length); assertThat(request.requests().size(), equalTo(8)); @@ -152,7 +152,7 @@ public class MultiPercolatorRequestTests extends ESTestCase { @Test public void testParseBulkRequests_defaults() throws Exception { - byte[] data = Streams.copyToBytesFromClasspath("/org/elasticsearch/action/percolate/mpercolate2.json"); + byte[] data = StreamsUtils.copyToBytesFromClasspath("/org/elasticsearch/action/percolate/mpercolate2.json"); MultiPercolateRequest request = new MultiPercolateRequest(); request.indices("my-index1").documentType("my-type1").indicesOptions(IndicesOptions.lenientExpandOpen()); request.add(data, 0, data.length); diff --git a/core/src/test/java/org/elasticsearch/action/search/MultiSearchRequestTests.java b/core/src/test/java/org/elasticsearch/action/search/MultiSearchRequestTests.java index 05f7d522346..97aee6ea3d6 100644 --- a/core/src/test/java/org/elasticsearch/action/search/MultiSearchRequestTests.java +++ b/core/src/test/java/org/elasticsearch/action/search/MultiSearchRequestTests.java @@ -20,7 +20,7 @@ package org.elasticsearch.action.search; import org.elasticsearch.action.support.IndicesOptions; -import org.elasticsearch.common.io.Streams; +import org.elasticsearch.test.StreamsUtils; import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; @@ -38,7 +38,7 @@ public class MultiSearchRequestTests extends ESTestCase { @Test public void simpleAdd() throws Exception { - byte[] data = Streams.copyToBytesFromClasspath("/org/elasticsearch/action/search/simple-msearch1.json"); + byte[] data = StreamsUtils.copyToBytesFromClasspath("/org/elasticsearch/action/search/simple-msearch1.json"); MultiSearchRequest request = new MultiSearchRequest().add(data, 0, data.length, null, null, null); assertThat(request.requests().size(), equalTo(8)); assertThat(request.requests().get(0).indices()[0], equalTo("test")); @@ -64,7 +64,7 @@ public class MultiSearchRequestTests extends ESTestCase { @Test public void simpleAdd2() throws Exception { - byte[] data = Streams.copyToBytesFromClasspath("/org/elasticsearch/action/search/simple-msearch2.json"); + byte[] data = StreamsUtils.copyToBytesFromClasspath("/org/elasticsearch/action/search/simple-msearch2.json"); MultiSearchRequest request = new MultiSearchRequest().add(data, 0, data.length, null, null, null); assertThat(request.requests().size(), equalTo(5)); assertThat(request.requests().get(0).indices()[0], equalTo("test")); @@ -82,7 +82,7 @@ public class MultiSearchRequestTests extends ESTestCase { @Test public void simpleAdd3() throws Exception { - byte[] data = Streams.copyToBytesFromClasspath("/org/elasticsearch/action/search/simple-msearch3.json"); + byte[] data = StreamsUtils.copyToBytesFromClasspath("/org/elasticsearch/action/search/simple-msearch3.json"); MultiSearchRequest request = new MultiSearchRequest().add(data, 0, data.length, null, null, null); assertThat(request.requests().size(), equalTo(4)); assertThat(request.requests().get(0).indices()[0], equalTo("test0")); @@ -101,7 +101,7 @@ public class MultiSearchRequestTests extends ESTestCase { @Test public void simpleAdd4() throws Exception { - byte[] data = Streams.copyToBytesFromClasspath("/org/elasticsearch/action/search/simple-msearch4.json"); + byte[] data = StreamsUtils.copyToBytesFromClasspath("/org/elasticsearch/action/search/simple-msearch4.json"); MultiSearchRequest request = new MultiSearchRequest().add(data, 0, data.length, null, null, null); assertThat(request.requests().size(), equalTo(3)); assertThat(request.requests().get(0).indices()[0], equalTo("test0")); diff --git a/core/src/test/java/org/elasticsearch/action/termvectors/TermVectorsUnitTests.java b/core/src/test/java/org/elasticsearch/action/termvectors/TermVectorsUnitTests.java index 13d923a7901..82809d1c5cd 100644 --- a/core/src/test/java/org/elasticsearch/action/termvectors/TermVectorsUnitTests.java +++ b/core/src/test/java/org/elasticsearch/action/termvectors/TermVectorsUnitTests.java @@ -31,7 +31,6 @@ import org.apache.lucene.store.Directory; import org.elasticsearch.action.termvectors.TermVectorsRequest.Flag; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.bytes.BytesReference; -import org.elasticsearch.common.io.Streams; import org.elasticsearch.common.io.stream.InputStreamStreamInput; import org.elasticsearch.common.io.stream.OutputStreamStreamOutput; import org.elasticsearch.common.xcontent.XContentFactory; @@ -43,6 +42,7 @@ import org.elasticsearch.index.mapper.core.TypeParsers; import org.elasticsearch.index.mapper.internal.AllFieldMapper; import org.elasticsearch.rest.action.termvectors.RestTermVectorsAction; import org.elasticsearch.test.ESTestCase; +import org.elasticsearch.test.StreamsUtils; import org.hamcrest.Matchers; import org.junit.Test; @@ -292,13 +292,13 @@ public class TermVectorsUnitTests extends ESTestCase { @Test public void testMultiParser() throws Exception { - byte[] data = Streams.copyToBytesFromClasspath("/org/elasticsearch/action/termvectors/multiRequest1.json"); + byte[] data = StreamsUtils.copyToBytesFromClasspath("/org/elasticsearch/action/termvectors/multiRequest1.json"); BytesReference bytes = new BytesArray(data); MultiTermVectorsRequest request = new MultiTermVectorsRequest(); request.add(new TermVectorsRequest(), bytes); checkParsedParameters(request); - data = Streams.copyToBytesFromClasspath("/org/elasticsearch/action/termvectors/multiRequest2.json"); + data = StreamsUtils.copyToBytesFromClasspath("/org/elasticsearch/action/termvectors/multiRequest2.json"); bytes = new BytesArray(data); request = new MultiTermVectorsRequest(); request.add(new TermVectorsRequest(), bytes); @@ -328,7 +328,7 @@ public class TermVectorsUnitTests extends ESTestCase { @Test // issue #12311 public void testMultiParserFilter() throws Exception { - byte[] data = Streams.copyToBytesFromClasspath("/org/elasticsearch/action/termvectors/multiRequest3.json"); + byte[] data = StreamsUtils.copyToBytesFromClasspath("/org/elasticsearch/action/termvectors/multiRequest3.json"); BytesReference bytes = new BytesArray(data); MultiTermVectorsRequest request = new MultiTermVectorsRequest(); request.add(new TermVectorsRequest(), bytes); diff --git a/core/src/test/java/org/elasticsearch/common/cli/CliToolTestCase.java b/core/src/test/java/org/elasticsearch/common/cli/CliToolTestCase.java index fdfee87dfcc..b30788cf702 100644 --- a/core/src/test/java/org/elasticsearch/common/cli/CliToolTestCase.java +++ b/core/src/test/java/org/elasticsearch/common/cli/CliToolTestCase.java @@ -21,11 +21,10 @@ package org.elasticsearch.common.cli; import org.elasticsearch.ExceptionsHelper; import org.elasticsearch.common.Strings; -import org.elasticsearch.common.io.Streams; import org.elasticsearch.test.ESTestCase; +import org.elasticsearch.test.StreamsUtils; import org.junit.After; import org.junit.Before; -import org.junit.Ignore; import java.io.IOException; import java.io.PrintWriter; @@ -161,7 +160,7 @@ public abstract class CliToolTestCase extends ESTestCase { } assertThat(nonEmptyLines, hasSize(greaterThan(0))); - String expectedDocs = Streams.copyToStringFromClasspath(classPath); + String expectedDocs = StreamsUtils.copyToStringFromClasspath(classPath); for (String nonEmptyLine : nonEmptyLines) { assertThat(expectedDocs, containsString(nonEmptyLine.replaceAll(System.lineSeparator(), ""))); } diff --git a/core/src/test/java/org/elasticsearch/index/mapper/all/SimpleAllMapperTests.java b/core/src/test/java/org/elasticsearch/index/mapper/all/SimpleAllMapperTests.java index e80dcec3e97..b50f2da849c 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/all/SimpleAllMapperTests.java +++ b/core/src/test/java/org/elasticsearch/index/mapper/all/SimpleAllMapperTests.java @@ -56,15 +56,14 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import static org.elasticsearch.common.io.Streams.copyToBytesFromClasspath; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToBytesFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.empty; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasItem; import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.nullValue; public class SimpleAllMapperTests extends ESSingleNodeTestCase { diff --git a/core/src/test/java/org/elasticsearch/index/mapper/dynamictemplate/genericstore/GenericStoreDynamicTemplateTests.java b/core/src/test/java/org/elasticsearch/index/mapper/dynamictemplate/genericstore/GenericStoreDynamicTemplateTests.java index 83a14687b32..76383408ed8 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/dynamictemplate/genericstore/GenericStoreDynamicTemplateTests.java +++ b/core/src/test/java/org/elasticsearch/index/mapper/dynamictemplate/genericstore/GenericStoreDynamicTemplateTests.java @@ -29,8 +29,8 @@ import org.elasticsearch.index.mapper.ParsedDocument; import org.elasticsearch.test.ESSingleNodeTestCase; import org.junit.Test; -import static org.elasticsearch.common.io.Streams.copyToBytesFromClasspath; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToBytesFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.hamcrest.Matchers.equalTo; /** diff --git a/core/src/test/java/org/elasticsearch/index/mapper/dynamictemplate/pathmatch/PathMatchDynamicTemplateTests.java b/core/src/test/java/org/elasticsearch/index/mapper/dynamictemplate/pathmatch/PathMatchDynamicTemplateTests.java index b4c1ba668f4..34c855f4f2e 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/dynamictemplate/pathmatch/PathMatchDynamicTemplateTests.java +++ b/core/src/test/java/org/elasticsearch/index/mapper/dynamictemplate/pathmatch/PathMatchDynamicTemplateTests.java @@ -29,8 +29,8 @@ import org.elasticsearch.index.mapper.ParseContext.Document; import org.elasticsearch.test.ESSingleNodeTestCase; import org.junit.Test; -import static org.elasticsearch.common.io.Streams.copyToBytesFromClasspath; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToBytesFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.hamcrest.Matchers.equalTo; /** diff --git a/core/src/test/java/org/elasticsearch/index/mapper/dynamictemplate/simple/SimpleDynamicTemplatesTests.java b/core/src/test/java/org/elasticsearch/index/mapper/dynamictemplate/simple/SimpleDynamicTemplatesTests.java index c136f4d989c..09358b5280c 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/dynamictemplate/simple/SimpleDynamicTemplatesTests.java +++ b/core/src/test/java/org/elasticsearch/index/mapper/dynamictemplate/simple/SimpleDynamicTemplatesTests.java @@ -31,8 +31,8 @@ import org.elasticsearch.test.ESSingleNodeTestCase; import org.hamcrest.Matchers; import org.junit.Test; -import static org.elasticsearch.common.io.Streams.copyToBytesFromClasspath; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToBytesFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.hamcrest.Matchers.equalTo; /** diff --git a/core/src/test/java/org/elasticsearch/index/mapper/multifield/MultiFieldTests.java b/core/src/test/java/org/elasticsearch/index/mapper/multifield/MultiFieldTests.java index 8511bf96c08..dc14ebecd5e 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/multifield/MultiFieldTests.java +++ b/core/src/test/java/org/elasticsearch/index/mapper/multifield/MultiFieldTests.java @@ -47,8 +47,8 @@ import java.util.Collections; import java.util.Map; import java.util.TreeMap; -import static org.elasticsearch.common.io.Streams.copyToBytesFromClasspath; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToBytesFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; import static org.elasticsearch.index.mapper.MapperBuilders.doc; import static org.elasticsearch.index.mapper.MapperBuilders.rootObject; diff --git a/core/src/test/java/org/elasticsearch/index/mapper/multifield/merge/JavaMultiFieldMergeTests.java b/core/src/test/java/org/elasticsearch/index/mapper/multifield/merge/JavaMultiFieldMergeTests.java index 5405aee6ec8..655069ed9e2 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/multifield/merge/JavaMultiFieldMergeTests.java +++ b/core/src/test/java/org/elasticsearch/index/mapper/multifield/merge/JavaMultiFieldMergeTests.java @@ -32,7 +32,7 @@ import org.junit.Test; import java.util.Arrays; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.hamcrest.Matchers.*; /** diff --git a/core/src/test/java/org/elasticsearch/index/mapper/path/PathMapperTests.java b/core/src/test/java/org/elasticsearch/index/mapper/path/PathMapperTests.java index 4bd12550d89..06ef922e94d 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/path/PathMapperTests.java +++ b/core/src/test/java/org/elasticsearch/index/mapper/path/PathMapperTests.java @@ -25,7 +25,7 @@ import org.junit.Test; import java.io.IOException; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; diff --git a/core/src/test/java/org/elasticsearch/index/mapper/simple/SimpleMapperTests.java b/core/src/test/java/org/elasticsearch/index/mapper/simple/SimpleMapperTests.java index 5c4bd28a028..a08eacce647 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/simple/SimpleMapperTests.java +++ b/core/src/test/java/org/elasticsearch/index/mapper/simple/SimpleMapperTests.java @@ -30,8 +30,8 @@ import org.elasticsearch.index.IndexService; import org.elasticsearch.test.ESSingleNodeTestCase; import org.junit.Test; -import static org.elasticsearch.common.io.Streams.copyToBytesFromClasspath; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToBytesFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.elasticsearch.index.mapper.MapperBuilders.*; import static org.hamcrest.Matchers.equalTo; diff --git a/core/src/test/java/org/elasticsearch/index/mapper/update/UpdateMappingOnClusterIT.java b/core/src/test/java/org/elasticsearch/index/mapper/update/UpdateMappingOnClusterIT.java index 7478b79bf7b..4d4d06bd292 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/update/UpdateMappingOnClusterIT.java +++ b/core/src/test/java/org/elasticsearch/index/mapper/update/UpdateMappingOnClusterIT.java @@ -30,7 +30,7 @@ import org.junit.Test; import java.util.HashMap; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.hamcrest.Matchers.containsString; diff --git a/core/src/test/java/org/elasticsearch/index/mapper/update/UpdateMappingTests.java b/core/src/test/java/org/elasticsearch/index/mapper/update/UpdateMappingTests.java index a45d4a34a13..4b136a78b65 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/update/UpdateMappingTests.java +++ b/core/src/test/java/org/elasticsearch/index/mapper/update/UpdateMappingTests.java @@ -36,7 +36,7 @@ import org.junit.Test; import java.io.IOException; import java.util.LinkedHashMap; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.hamcrest.CoreMatchers.equalTo; diff --git a/core/src/test/java/org/elasticsearch/index/query/IndexQueryParserFilterDateRangeFormatTests.java b/core/src/test/java/org/elasticsearch/index/query/IndexQueryParserFilterDateRangeFormatTests.java index 4a60a2da464..8b4c40585c4 100644 --- a/core/src/test/java/org/elasticsearch/index/query/IndexQueryParserFilterDateRangeFormatTests.java +++ b/core/src/test/java/org/elasticsearch/index/query/IndexQueryParserFilterDateRangeFormatTests.java @@ -38,8 +38,8 @@ import org.junit.Test; import java.io.IOException; -import static org.elasticsearch.common.io.Streams.copyToBytesFromClasspath; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToBytesFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; diff --git a/core/src/test/java/org/elasticsearch/index/query/IndexQueryParserFilterDateRangeTimezoneTests.java b/core/src/test/java/org/elasticsearch/index/query/IndexQueryParserFilterDateRangeTimezoneTests.java index 5c7b122096a..d581aa6ae77 100644 --- a/core/src/test/java/org/elasticsearch/index/query/IndexQueryParserFilterDateRangeTimezoneTests.java +++ b/core/src/test/java/org/elasticsearch/index/query/IndexQueryParserFilterDateRangeTimezoneTests.java @@ -38,8 +38,8 @@ import org.junit.Test; import java.io.IOException; -import static org.elasticsearch.common.io.Streams.copyToBytesFromClasspath; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToBytesFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.lessThanOrEqualTo; diff --git a/core/src/test/java/org/elasticsearch/index/query/SimpleIndexQueryParserTests.java b/core/src/test/java/org/elasticsearch/index/query/SimpleIndexQueryParserTests.java index b17282ee412..b164c448b8a 100644 --- a/core/src/test/java/org/elasticsearch/index/query/SimpleIndexQueryParserTests.java +++ b/core/src/test/java/org/elasticsearch/index/query/SimpleIndexQueryParserTests.java @@ -73,8 +73,8 @@ import java.util.Arrays; import java.util.EnumSet; import java.util.List; -import static org.elasticsearch.common.io.Streams.copyToBytesFromClasspath; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToBytesFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; import static org.elasticsearch.index.query.QueryBuilders.*; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertBooleanSubQuery; diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/DedicatedAggregationIT.java b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/DedicatedAggregationIT.java index 941cf238d5a..0f22bb42d5f 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/bucket/DedicatedAggregationIT.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/bucket/DedicatedAggregationIT.java @@ -26,7 +26,7 @@ import org.junit.Test; import java.io.IOException; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse; import static org.hamcrest.CoreMatchers.equalTo; diff --git a/core/src/test/java/org/elasticsearch/search/child/ChildQuerySearchIT.java b/core/src/test/java/org/elasticsearch/search/child/ChildQuerySearchIT.java index 5f89af38660..4a1eed7a457 100644 --- a/core/src/test/java/org/elasticsearch/search/child/ChildQuerySearchIT.java +++ b/core/src/test/java/org/elasticsearch/search/child/ChildQuerySearchIT.java @@ -55,7 +55,7 @@ import java.io.IOException; import java.util.*; import static com.google.common.collect.Maps.newHashMap; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.elasticsearch.common.settings.Settings.settingsBuilder; import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; import static org.elasticsearch.index.query.QueryBuilders.*; diff --git a/core/src/test/java/org/elasticsearch/search/morelikethis/ItemSerializationTests.java b/core/src/test/java/org/elasticsearch/search/morelikethis/ItemSerializationTests.java index 91a1731feda..ab06a3d5d51 100644 --- a/core/src/test/java/org/elasticsearch/search/morelikethis/ItemSerializationTests.java +++ b/core/src/test/java/org/elasticsearch/search/morelikethis/ItemSerializationTests.java @@ -37,7 +37,7 @@ import java.io.IOException; import java.util.List; import java.util.Random; -import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; +import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; import static org.hamcrest.Matchers.is; public class ItemSerializationTests extends ESTestCase { diff --git a/core/src/test/java/org/elasticsearch/test/StreamsUtils.java b/core/src/test/java/org/elasticsearch/test/StreamsUtils.java new file mode 100644 index 00000000000..ffc9537c3ee --- /dev/null +++ b/core/src/test/java/org/elasticsearch/test/StreamsUtils.java @@ -0,0 +1,61 @@ +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch 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. + */ + +package org.elasticsearch.test; + +import com.google.common.base.Charsets; +import org.elasticsearch.common.io.Streams; +import org.elasticsearch.common.io.stream.BytesStreamOutput; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + +public class StreamsUtils { + + public static String copyToStringFromClasspath(ClassLoader classLoader, String path) throws IOException { + InputStream is = classLoader.getResourceAsStream(path); + if (is == null) { + throw new FileNotFoundException("Resource [" + path + "] not found in classpath with class loader [" + classLoader + "]"); + } + return Streams.copyToString(new InputStreamReader(is, Charsets.UTF_8)); + } + + public static String copyToStringFromClasspath(String path) throws IOException { + InputStream is = Streams.class.getResourceAsStream(path); + if (is == null) { + throw new FileNotFoundException("Resource [" + path + "] not found in classpath"); + } + return Streams.copyToString(new InputStreamReader(is, Charsets.UTF_8)); + } + + public static byte[] copyToBytesFromClasspath(String path) throws IOException { + try (InputStream is = Streams.class.getResourceAsStream(path)) { + if (is == null) { + throw new FileNotFoundException("Resource [" + path + "] not found in classpath"); + } + try (BytesStreamOutput out = new BytesStreamOutput()) { + Streams.copy(is, out); + return out.bytes().toBytes(); + } + } + } + +}