This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit e865e984baf9dc3c40b9450d6ef21be55056dbc0 Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Fri May 10 16:16:41 2019 +0200 [CAMEL-13512] Use unchecked exceptions for property resolution --- .../camel/blueprint/BlueprintPropertiesResolver.java | 2 +- .../properties/DefaultPropertiesResolver.java | 19 ++++++++++++------- .../component/properties/PropertiesComponent.java | 12 ++++++------ .../component/properties/PropertiesResolver.java | 4 ++-- .../spi/BridgePropertyPlaceholderConfigurer.java | 2 +- ...CamelSpringPropertyPlaceholderConfigurer3Test.java | 2 +- .../src/main/java/org/apache/camel/CamelContext.java | 4 ++-- .../org/apache/camel/spi/PropertiesComponent.java | 17 +++++++++-------- .../camel/impl/engine/AbstractCamelContext.java | 2 +- .../properties/PropertiesComponentDefaultTest.java | 5 ++++- .../properties/PropertiesComponentRestartTest.java | 2 +- .../component/properties/PropertiesResolverTest.java | 2 +- .../org/apache/camel/support/CamelContextHelper.java | 4 ++-- 13 files changed, 43 insertions(+), 34 deletions(-) diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintPropertiesResolver.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintPropertiesResolver.java index 50c8af8..1e982e9 100644 --- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintPropertiesResolver.java +++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintPropertiesResolver.java @@ -42,7 +42,7 @@ public class BlueprintPropertiesResolver implements PropertiesResolver { } @Override - public Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, List<PropertiesLocation> locations) throws Exception { + public Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, List<PropertiesLocation> locations) { Properties answer = new Properties(); boolean explicit = false; diff --git a/components/camel-properties/src/main/java/org/apache/camel/component/properties/DefaultPropertiesResolver.java b/components/camel-properties/src/main/java/org/apache/camel/component/properties/DefaultPropertiesResolver.java index 8962582..7ac047f 100644 --- a/components/camel-properties/src/main/java/org/apache/camel/component/properties/DefaultPropertiesResolver.java +++ b/components/camel-properties/src/main/java/org/apache/camel/component/properties/DefaultPropertiesResolver.java @@ -28,6 +28,7 @@ import java.util.Map; import java.util.Properties; import org.apache.camel.CamelContext; +import org.apache.camel.RuntimeCamelException; import org.apache.camel.util.IOHelper; /** @@ -45,7 +46,7 @@ public class DefaultPropertiesResolver implements PropertiesResolver { this.propertiesComponent = propertiesComponent; } - public Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, List<PropertiesLocation> locations) throws Exception { + public Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, List<PropertiesLocation> locations) { Properties answer = new Properties(); Properties prop; @@ -74,7 +75,7 @@ public class DefaultPropertiesResolver implements PropertiesResolver { return answer; } - protected Properties loadPropertiesFromFilePath(CamelContext context, boolean ignoreMissingLocation, PropertiesLocation location) throws IOException { + protected Properties loadPropertiesFromFilePath(CamelContext context, boolean ignoreMissingLocation, PropertiesLocation location) { Properties answer = new Properties(); String path = location.getPath(); @@ -90,8 +91,10 @@ public class DefaultPropertiesResolver implements PropertiesResolver { } } catch (FileNotFoundException e) { if (!ignoreMissingLocation && !location.isOptional()) { - throw e; + throw RuntimeCamelException.wrapRuntimeCamelException(e); } + } catch (IOException e) { + throw RuntimeCamelException.wrapRuntimeCamelException(e); } finally { IOHelper.close(reader, is); } @@ -99,7 +102,7 @@ public class DefaultPropertiesResolver implements PropertiesResolver { return answer; } - protected Properties loadPropertiesFromClasspath(CamelContext context, boolean ignoreMissingLocation, PropertiesLocation location) throws IOException { + protected Properties loadPropertiesFromClasspath(CamelContext context, boolean ignoreMissingLocation, PropertiesLocation location) { Properties answer = new Properties(); String path = location.getPath(); @@ -107,7 +110,7 @@ public class DefaultPropertiesResolver implements PropertiesResolver { Reader reader = null; if (is == null) { if (!ignoreMissingLocation && !location.isOptional()) { - throw new FileNotFoundException("Properties file " + path + " not found in classpath"); + throw RuntimeCamelException.wrapRuntimeCamelException(new FileNotFoundException("Properties file " + path + " not found in classpath")); } } else { try { @@ -117,6 +120,8 @@ public class DefaultPropertiesResolver implements PropertiesResolver { } else { answer.load(is); } + } catch (IOException e) { + throw RuntimeCamelException.wrapRuntimeCamelException(e); } finally { IOHelper.close(reader, is); } @@ -125,7 +130,7 @@ public class DefaultPropertiesResolver implements PropertiesResolver { } @SuppressWarnings({"rawtypes", "unchecked"}) - protected Properties loadPropertiesFromRegistry(CamelContext context, boolean ignoreMissingLocation, PropertiesLocation location) throws IOException { + protected Properties loadPropertiesFromRegistry(CamelContext context, boolean ignoreMissingLocation, PropertiesLocation location) { String path = location.getPath(); Properties answer; try { @@ -137,7 +142,7 @@ public class DefaultPropertiesResolver implements PropertiesResolver { answer.putAll(map); } if (answer == null && (!ignoreMissingLocation && !location.isOptional())) { - throw new FileNotFoundException("Properties " + path + " not found in registry"); + throw RuntimeCamelException.wrapRuntimeCamelException(new FileNotFoundException("Properties " + path + " not found in registry")); } return answer != null ? answer : new Properties(); } diff --git a/components/camel-properties/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java b/components/camel-properties/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java index 6d77953..cda1377 100644 --- a/components/camel-properties/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java +++ b/components/camel-properties/src/main/java/org/apache/camel/component/properties/PropertiesComponent.java @@ -172,11 +172,11 @@ public class PropertiesComponent extends DefaultComponent implements org.apache. return answer; } - public String parseUri(String uri) throws Exception { + public String parseUri(String uri) { return parseUri(uri, locations); } - public String parseUri(String uri, String... locations) throws Exception { + public String parseUri(String uri, String... locations) { return parseUri( uri, locations != null @@ -184,18 +184,18 @@ public class PropertiesComponent extends DefaultComponent implements org.apache. : Collections.emptyList()); } - public Properties loadProperties() throws Exception { + public Properties loadProperties() { return doLoadProperties(locations); } - public Properties loadProperties(String... locations) throws Exception { + public Properties loadProperties(String... locations) { if (locations != null) { return doLoadProperties(Arrays.stream(locations).map(PropertiesLocation::new).collect(Collectors.toList())); } return new Properties(); } - protected Properties doLoadProperties(List<PropertiesLocation> paths) throws Exception { + protected Properties doLoadProperties(List<PropertiesLocation> paths) { Properties prop = new Properties(); // use initial properties @@ -233,7 +233,7 @@ public class PropertiesComponent extends DefaultComponent implements org.apache. return prop; } - protected String parseUri(String uri, List<PropertiesLocation> paths) throws Exception { + protected String parseUri(String uri, List<PropertiesLocation> paths) { Properties prop = doLoadProperties(paths); // enclose tokens if missing diff --git a/components/camel-properties/src/main/java/org/apache/camel/component/properties/PropertiesResolver.java b/components/camel-properties/src/main/java/org/apache/camel/component/properties/PropertiesResolver.java index e93cc0b..aa28883 100644 --- a/components/camel-properties/src/main/java/org/apache/camel/component/properties/PropertiesResolver.java +++ b/components/camel-properties/src/main/java/org/apache/camel/component/properties/PropertiesResolver.java @@ -35,7 +35,7 @@ public interface PropertiesResolver { * @param ignoreMissingLocation ignore silently if the property file is missing * @param locations location(s) defining the source(s) * @return the properties - * @throws Exception is thrown if resolving the properties failed + * @throws java.io.IOError is thrown if resolving the properties failed */ - Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, List<PropertiesLocation> locations) throws Exception; + Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, List<PropertiesLocation> locations); } diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/BridgePropertyPlaceholderConfigurer.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/BridgePropertyPlaceholderConfigurer.java index af9852f..0a9d357 100644 --- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/BridgePropertyPlaceholderConfigurer.java +++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/BridgePropertyPlaceholderConfigurer.java @@ -132,7 +132,7 @@ public class BridgePropertyPlaceholderConfigurer extends PropertyPlaceholderConf } @Override - public Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, List<PropertiesLocation> locations) throws Exception { + public Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, List<PropertiesLocation> locations) { // return the spring properties, if it Properties answer = new Properties(); for (PropertiesLocation location : locations) { diff --git a/components/camel-spring/src/test/java/org/apache/camel/component/properties/CamelSpringPropertyPlaceholderConfigurer3Test.java b/components/camel-spring/src/test/java/org/apache/camel/component/properties/CamelSpringPropertyPlaceholderConfigurer3Test.java index 7e5e628..71e6dbf 100644 --- a/components/camel-spring/src/test/java/org/apache/camel/component/properties/CamelSpringPropertyPlaceholderConfigurer3Test.java +++ b/components/camel-spring/src/test/java/org/apache/camel/component/properties/CamelSpringPropertyPlaceholderConfigurer3Test.java @@ -73,7 +73,7 @@ public class CamelSpringPropertyPlaceholderConfigurer3Test extends SpringTestSup private static class MyBridgePropertyPlaceholderConfigurer extends BridgePropertyPlaceholderConfigurer { @Override - public Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, List<PropertiesLocation> locations) throws Exception { + public Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, List<PropertiesLocation> locations) { Properties answer = super.resolveProperties(context, ignoreMissingLocation, locations); // define the additional properties we need to provide so that the uri "direct:{{foo}}" by the "from" clause diff --git a/core/camel-api/src/main/java/org/apache/camel/CamelContext.java b/core/camel-api/src/main/java/org/apache/camel/CamelContext.java index 355ff69..a9a5fa9 100644 --- a/core/camel-api/src/main/java/org/apache/camel/CamelContext.java +++ b/core/camel-api/src/main/java/org/apache/camel/CamelContext.java @@ -763,9 +763,9 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration { * * @param text the text such as an endpoint uri or the likes * @return the text with resolved property placeholders - * @throws Exception is thrown if property placeholders was used and there was an error resolving them + * @throws IllegalArgumentException is thrown if property placeholders was used and there was an error resolving them */ - String resolvePropertyPlaceholders(String text) throws Exception; + String resolvePropertyPlaceholders(String text); /** * Returns the configured property placeholder prefix token if and only if the CamelContext has diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/PropertiesComponent.java b/core/camel-api/src/main/java/org/apache/camel/spi/PropertiesComponent.java index 07dc1a8..c88f72d 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/PropertiesComponent.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/PropertiesComponent.java @@ -16,6 +16,7 @@ */ package org.apache.camel.spi; +import java.io.IOError; import java.util.Properties; import org.apache.camel.Component; @@ -46,9 +47,9 @@ public interface PropertiesComponent extends Component { * * @param uri input text * @return text with resolved property placeholders - * @throws Exception is thrown if error during parsing + * @throws IllegalArgumentException is thrown if error during parsing */ - String parseUri(String uri) throws Exception; + String parseUri(String uri); /** * Parses the input text and resolve all property placeholders. @@ -56,26 +57,26 @@ public interface PropertiesComponent extends Component { * @param uri input text * @param locations locations to load as properties (will not use the default locations) * @return text with resolved property placeholders - * @throws Exception is thrown if error during parsing + * @throws IllegalArgumentException is thrown if error during parsing */ - String parseUri(String uri, String... locations) throws Exception; + String parseUri(String uri, String... locations); /** * Loads the properties from the default locations. * * @return the properties loaded. - * @throws Exception is thrown if error loading properties + * @throws IOError is thrown if error loading properties */ - Properties loadProperties() throws Exception; + Properties loadProperties(); /** * Loads the properties from the given locations * * @param locations locations to load as properties (will not use the default locations) * @return the properties loaded. - * @throws Exception is thrown if error loading properties + * @throws IOError is thrown if error loading properties */ - Properties loadProperties(String... locations) throws Exception; + Properties loadProperties(String... locations); /** * A list of locations to load properties. You can use comma to separate multiple locations. diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java index de81632..d41c5d7 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java @@ -1546,7 +1546,7 @@ public abstract class AbstractCamelContext extends ServiceSupport implements Cam } } - public String resolvePropertyPlaceholders(String text) throws Exception { + public String resolvePropertyPlaceholders(String text) { // While it is more efficient to only do the lookup if we are sure we // need the component, // with custom tokens, we cannot know if the URI contains a property or diff --git a/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentDefaultTest.java b/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentDefaultTest.java index 3354890..fe68a36 100644 --- a/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentDefaultTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentDefaultTest.java @@ -17,10 +17,12 @@ package org.apache.camel.component.properties; import java.io.FileNotFoundException; +import java.io.IOError; import org.apache.camel.ContextTestSupport; import org.apache.camel.FailedToCreateRouteException; import org.apache.camel.ResolveEndpointFailedException; +import org.apache.camel.RuntimeCamelException; import org.apache.camel.builder.RouteBuilder; import org.junit.Test; @@ -56,7 +58,8 @@ public class PropertiesComponentDefaultTest extends ContextTestSupport { fail("Should throw exception"); } catch (FailedToCreateRouteException e) { ResolveEndpointFailedException cause = assertIsInstanceOf(ResolveEndpointFailedException.class, e.getCause()); - FileNotFoundException fnfe = assertIsInstanceOf(FileNotFoundException.class, cause.getCause()); + RuntimeCamelException rce = assertIsInstanceOf(RuntimeCamelException.class, cause.getCause()); + FileNotFoundException fnfe = assertIsInstanceOf(FileNotFoundException.class, rce.getCause()); assertEquals("Properties file org/apache/camel/component/properties/unknown.properties not found in classpath", fnfe.getMessage()); } } diff --git a/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentRestartTest.java b/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentRestartTest.java index 8a2545e..1f398d5 100644 --- a/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentRestartTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentRestartTest.java @@ -51,7 +51,7 @@ public class PropertiesComponentRestartTest extends ContextTestSupport { protected CamelContext createCamelContext() throws Exception { final PropertiesComponent pc = new PropertiesComponent("classpath:org/apache/camel/component/properties/myproperties.properties"); pc.setPropertiesResolver(new PropertiesResolver() { - public Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, List<PropertiesLocation> locations) throws Exception { + public Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, List<PropertiesLocation> locations) { resolvedCount++; return new DefaultPropertiesResolver(pc).resolveProperties(context, ignoreMissingLocation, locations); } diff --git a/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesResolverTest.java b/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesResolverTest.java index 6c01ef6..a71db59 100644 --- a/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesResolverTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesResolverTest.java @@ -63,7 +63,7 @@ public class PropertiesResolverTest extends ContextTestSupport { public static class MyCustomResolver implements PropertiesResolver { - public Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, List<PropertiesLocation> locations) throws Exception { + public Properties resolveProperties(CamelContext context, boolean ignoreMissingLocation, List<PropertiesLocation> locations) { Properties answer = new Properties(); answer.put("foo", "mock:result"); return answer; diff --git a/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java index a2aaa09..d63da74 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java @@ -460,9 +460,9 @@ public final class CamelContextHelper { * @param camelContext the camel context * @param text the text * @return the boolean vale, or <tt>null</tt> if the text was <tt>null</tt> - * @throws Exception is thrown if illegal argument or type conversion not possible + * @throws IllegalArgumentException is thrown if illegal argument or type conversion not possible */ - public static Boolean parseBoolean(CamelContext camelContext, String text) throws Exception { + public static Boolean parseBoolean(CamelContext camelContext, String text) { // ensure we support property placeholders String s = camelContext.resolvePropertyPlaceholders(text); if (s != null) {