Repository: incubator-tamaya-extensions Updated Branches: refs/heads/master 1dfc5e6ee -> 1d735ca47
TAMAYA-351 Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/commit/1d735ca4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/1d735ca4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/1d735ca4 Branch: refs/heads/master Commit: 1d735ca47c2825e71cff0a2e6661fef0337f0202 Parents: 1dfc5e6 Author: Alex <[email protected]> Authored: Mon Sep 24 17:59:57 2018 +0200 Committer: Phil Ottlinger <[email protected]> Committed: Thu Sep 27 12:09:23 2018 +0200 ---------------------------------------------------------------------- .../tamaya/resolver/internal/FileResolver.java | 34 +++++++++----------- .../tamaya/resolver/ConfigResolutionTest.java | 16 +++++++++ .../tamaya/resolver/MyTestPropertySource.java | 9 +++--- .../src/test/resources/Testresource3.txt | 19 +++++++++++ 4 files changed, 55 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/1d735ca4/modules/resolver/src/main/java/org/apache/tamaya/resolver/internal/FileResolver.java ---------------------------------------------------------------------- diff --git a/modules/resolver/src/main/java/org/apache/tamaya/resolver/internal/FileResolver.java b/modules/resolver/src/main/java/org/apache/tamaya/resolver/internal/FileResolver.java index 6050ac2..9837c81 100644 --- a/modules/resolver/src/main/java/org/apache/tamaya/resolver/internal/FileResolver.java +++ b/modules/resolver/src/main/java/org/apache/tamaya/resolver/internal/FileResolver.java @@ -18,21 +18,22 @@ */ package org.apache.tamaya.resolver.internal; -import org.apache.tamaya.resolver.spi.ExpressionResolver; -import org.apache.tamaya.resource.ResourceResolver; -import org.apache.tamaya.spi.ServiceContextManager; +import static java.nio.charset.StandardCharsets.UTF_8; -import javax.annotation.Priority; -import java.io.BufferedReader; import java.io.File; -import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.Collection; import java.util.logging.Level; import java.util.logging.Logger; -import static java.nio.charset.StandardCharsets.UTF_8; +import javax.annotation.Priority; + +import org.apache.tamaya.resolver.spi.ExpressionResolver; +import org.apache.tamaya.resource.ResourceResolver; +import org.apache.tamaya.spi.ServiceContextManager; /** * <p>Property resolver implementation that tries to load the given resource from the current file system.</p> @@ -42,7 +43,8 @@ import static java.nio.charset.StandardCharsets.UTF_8; */ @Priority(400) public final class FileResolver implements ExpressionResolver { - /** + + /** * The looger used. */ private final Logger LOG = Logger.getLogger(FileResolver.class.getName()); @@ -77,16 +79,10 @@ public final class FileResolver implements ExpressionResolver { if(url==null){ return null; } - try (InputStreamReader streamReader = new InputStreamReader(url.openStream(), UTF_8); - BufferedReader bufferedReader = new BufferedReader(streamReader)) { - StringBuilder builder = new StringBuilder(); - String inputLine; - - while ((inputLine = bufferedReader.readLine()) != null) { - builder.append(inputLine).append("\n"); - } - - return builder.toString(); + + try { + byte[] encoded = Files.readAllBytes(Paths.get(url.toURI())); + return new String(encoded, UTF_8); } catch (Exception e) { LOG.log(Level.FINEST, "Could not resolve URL: " + expression, e); return null; @@ -116,5 +112,5 @@ public final class FileResolver implements ExpressionResolver { } return null; // no such resource found } - + } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/1d735ca4/modules/resolver/src/test/java/org/apache/tamaya/resolver/ConfigResolutionTest.java ---------------------------------------------------------------------- diff --git a/modules/resolver/src/test/java/org/apache/tamaya/resolver/ConfigResolutionTest.java b/modules/resolver/src/test/java/org/apache/tamaya/resolver/ConfigResolutionTest.java index f795ee1..051e366 100644 --- a/modules/resolver/src/test/java/org/apache/tamaya/resolver/ConfigResolutionTest.java +++ b/modules/resolver/src/test/java/org/apache/tamaya/resolver/ConfigResolutionTest.java @@ -25,6 +25,11 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.net.URI; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; + /** * Test class that test resolution of different values as configured within * {@link org.apache.tamaya.resolver.MyTestPropertySource} and on test resource path. @@ -103,6 +108,17 @@ public class ConfigResolutionTest { assertNotNull(value); assertTrue(value.contains("This content comes from Testresource2.txt!")); } + + @Test + public void testFile_Refs_doNotAppendNewLineAtTheEnd() throws Exception { + String value = ConfigurationProvider.getConfiguration().get("file3-ref"); + + URI uri = getClass().getClassLoader().getResource("Testresource3.txt").toURI(); + byte[] byteContent = Files.readAllBytes(Paths.get(uri)); + String content = new String(byteContent, StandardCharsets.UTF_8); + + assertEquals(content, value); + } @Test public void testURL_Refs() { http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/1d735ca4/modules/resolver/src/test/java/org/apache/tamaya/resolver/MyTestPropertySource.java ---------------------------------------------------------------------- diff --git a/modules/resolver/src/test/java/org/apache/tamaya/resolver/MyTestPropertySource.java b/modules/resolver/src/test/java/org/apache/tamaya/resolver/MyTestPropertySource.java index eee7fa4..8a67159 100644 --- a/modules/resolver/src/test/java/org/apache/tamaya/resolver/MyTestPropertySource.java +++ b/modules/resolver/src/test/java/org/apache/tamaya/resolver/MyTestPropertySource.java @@ -44,7 +44,8 @@ public class MyTestPropertySource implements PropertySource{ properties.put("Multi-expression", "Java version ${sys:java.version} and line.separator ${line.separator}."); properties.put("cp-ref", "${resource:Testresource.txt}"); - properties.put("file-ref", "${file:"+getFileRefAsString()+"}"); + properties.put("file-ref", "${file:"+getFileRefAsString("Testresource2.txt")+"}"); + properties.put("file3-ref", "${file:"+getFileRefAsString("Testresource3.txt")+"}"); properties.put("res-ref", "${resource:Test?es*ce.txt}"); properties.put("url-ref", "${url:http://www.google.com}"); properties.put("config-ref", "Expression Only -> ${conf:Expression Only}"); @@ -63,15 +64,15 @@ public class MyTestPropertySource implements PropertySource{ "newlines or \\r returns...YEP!"); } - private String getFileRefAsString() { + private String getFileRefAsString(String filename) { try { - URL res = getClass().getClassLoader().getResource("Testresource2.txt"); + URL res = getClass().getClassLoader().getResource(filename); if(res==null){ return null; } return new File(res.toURI()).getAbsolutePath().replaceAll("\\\\","/"); } catch (URISyntaxException e) { - return "Failed to evaluate file: Testresource2.txt"; + return "Failed to evaluate file: " + filename; } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/1d735ca4/modules/resolver/src/test/resources/Testresource3.txt ---------------------------------------------------------------------- diff --git a/modules/resolver/src/test/resources/Testresource3.txt b/modules/resolver/src/test/resources/Testresource3.txt new file mode 100644 index 0000000..22ef52f --- /dev/null +++ b/modules/resolver/src/test/resources/Testresource3.txt @@ -0,0 +1,19 @@ +# +# 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 current 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. +# +singleValue
