You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2013/07/31 15:27:39 UTC
git commit: Polsihed camel-dozer to support better loading mapping
files using file paths
Updated Branches:
refs/heads/master 4f73ebf7d -> efb95c12b
Polsihed camel-dozer to support better loading mapping files using file paths
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/efb95c12
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/efb95c12
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/efb95c12
Branch: refs/heads/master
Commit: efb95c12b672424e43070312d1b18bdd3c18cd10
Parents: 4f73ebf
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Jul 31 15:27:14 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Jul 31 15:27:32 2013 +0200
----------------------------------------------------------------------
.../org/apache/camel/util/ResourceHelper.java | 56 +++++++++++++++-----
.../dozer/DozerTypeConverterLoader.java | 18 ++++++-
2 files changed, 58 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/efb95c12/camel-core/src/main/java/org/apache/camel/util/ResourceHelper.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/util/ResourceHelper.java b/camel-core/src/main/java/org/apache/camel/util/ResourceHelper.java
index ccdf0bf..46b7616 100644
--- a/camel-core/src/main/java/org/apache/camel/util/ResourceHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/util/ResourceHelper.java
@@ -83,6 +83,26 @@ public final class ResourceHelper {
* @throws java.io.IOException is thrown if the resource file could not be found or loaded as {@link InputStream}
*/
public static InputStream resolveMandatoryResourceAsInputStream(ClassResolver classResolver, String uri) throws IOException {
+ InputStream is = resolveResourceAsInputStream(classResolver, uri);
+ if (is == null) {
+ String resolvedName = resolveUriPath(uri);
+ throw new FileNotFoundException("Cannot find resource: " + resolvedName + " in classpath for URI: " + uri);
+ } else {
+ return is;
+ }
+ }
+
+ /**
+ * Resolves the resource.
+ * <p/>
+ * If possible recommended to use {@link #resolveMandatoryResourceAsUrl(org.apache.camel.spi.ClassResolver, String)}
+ *
+ * @param classResolver the class resolver to load the resource from the classpath
+ * @param uri URI of the resource
+ * @return the resource as an {@link InputStream}. Remember to close this stream after usage. Or <tt>null</tt> if not found.
+ * @throws java.io.IOException is thrown if error loading the resource
+ */
+ public static InputStream resolveResourceAsInputStream(ClassResolver classResolver, String uri) throws IOException {
if (uri.startsWith("file:")) {
uri = ObjectHelper.after(uri, "file:");
LOG.trace("Loading resource: {} from file system", uri);
@@ -109,12 +129,7 @@ public final class ResourceHelper {
// load from classpath by default
String resolvedName = resolveUriPath(uri);
LOG.trace("Loading resource: {} from classpath", resolvedName);
- InputStream is = classResolver.loadResourceAsStream(resolvedName);
- if (is == null) {
- throw new FileNotFoundException("Cannot find resource: " + resolvedName + " in classpath for URI: " + uri);
- } else {
- return is;
- }
+ return classResolver.loadResourceAsStream(resolvedName);
}
/**
@@ -122,18 +137,36 @@ public final class ResourceHelper {
*
* @param classResolver the class resolver to load the resource from the classpath
* @param uri uri of the resource
- * @return the resource as an {@link InputStream}. Remember to close this stream after usage.
+ * @return the resource as an {@link java.net.URL}.
* @throws java.io.FileNotFoundException is thrown if the resource file could not be found
* @throws java.net.MalformedURLException if the URI is malformed
*/
public static URL resolveMandatoryResourceAsUrl(ClassResolver classResolver, String uri) throws FileNotFoundException, MalformedURLException {
+ URL url = resolveResourceAsUrl(classResolver, uri);
+ if (url == null) {
+ String resolvedName = resolveUriPath(uri);
+ throw new FileNotFoundException("Cannot find resource: " + resolvedName + " in classpath for URI: " + uri);
+ } else {
+ return url;
+ }
+ }
+
+ /**
+ * Resolves the resource.
+ *
+ * @param classResolver the class resolver to load the resource from the classpath
+ * @param uri uri of the resource
+ * @return the resource as an {@link java.net.URL}. Or <tt>null</tt> if not found.
+ * @throws java.net.MalformedURLException if the URI is malformed
+ */
+ public static URL resolveResourceAsUrl(ClassResolver classResolver, String uri) throws MalformedURLException {
if (uri.startsWith("file:")) {
// check if file exists first
String name = ObjectHelper.after(uri, "file:");
LOG.trace("Loading resource: {} from file system", uri);
File file = new File(name);
if (!file.exists()) {
- throw new FileNotFoundException("File " + file + " not found");
+ return null;
}
return new URL(uri);
} else if (uri.startsWith("http:")) {
@@ -146,12 +179,7 @@ public final class ResourceHelper {
// load from classpath by default
String resolvedName = resolveUriPath(uri);
LOG.trace("Loading resource: {} from classpath", resolvedName);
- URL url = classResolver.loadResourceAsURL(resolvedName);
- if (url == null) {
- throw new FileNotFoundException("Cannot find resource: " + resolvedName + " in classpath for URI: " + uri);
- } else {
- return url;
- }
+ return classResolver.loadResourceAsURL(resolvedName);
}
/**
http://git-wip-us.apache.org/repos/asf/camel/blob/efb95c12/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java b/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
index 3312535..f44d5e9 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.converter.dozer;
+import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
@@ -28,6 +29,7 @@ import org.apache.camel.CamelContextAware;
import org.apache.camel.TypeConverter;
import org.apache.camel.spi.ClassResolver;
import org.apache.camel.spi.TypeConverterRegistry;
+import org.apache.camel.util.ResourceHelper;
import org.dozer.DozerBeanMapper;
import org.dozer.Mapper;
import org.dozer.classmap.ClassMap;
@@ -105,7 +107,7 @@ public class DozerTypeConverterLoader implements CamelContextAware {
CamelToDozerClassResolverAdapter adapter = new CamelToDozerClassResolverAdapter(camelContext);
BeanContainer.getInstance().setClassLoader(adapter);
- Map<String, DozerBeanMapper> mappers = new HashMap<String, DozerBeanMapper>(camelContext.getRegistry().findByTypeWithName(DozerBeanMapper.class));
+ Map<String, DozerBeanMapper> mappers = lookupDozerBeanMappers();
if (mapper != null) {
mappers.put("parameter", mapper);
}
@@ -124,6 +126,13 @@ public class DozerTypeConverterLoader implements CamelContextAware {
}
}
+ /**
+ * Lookup the dozer {@link DozerBeanMapper} to be used.
+ */
+ protected Map<String, DozerBeanMapper> lookupDozerBeanMappers() {
+ return new HashMap<String, DozerBeanMapper>(camelContext.getRegistry().findByTypeWithName(DozerBeanMapper.class));
+ }
+
private void registerClassMaps(TypeConverterRegistry registry, DozerBeanMapper dozer, List<ClassMap> all) {
DozerTypeConverter converter = new DozerTypeConverter(dozer);
for (ClassMap map : all) {
@@ -197,7 +206,12 @@ public class DozerTypeConverterLoader implements CamelContextAware {
}
public URL loadResource(String s) {
- URL url = classResolver.loadResourceAsURL(s);
+ URL url = null;
+ try {
+ url = ResourceHelper.resolveResourceAsUrl(classResolver, s);
+ } catch (MalformedURLException e) {
+ // ignore
+ }
if (url == null) {
// using the classloader of DozerClassLoader as a fallback
url = DozerClassLoader.class.getClassLoader().getResource(s);