Author: davsclaus Date: Sun Jan 30 12:35:04 2011 New Revision: 1065255 URL: http://svn.apache.org/viewvc?rev=1065255&view=rev Log: CAMEL-3592: Added more TRACE logging for osgi class and resource loading.
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiClassResolver.java camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiComponentResolver.java camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDataFormatResolver.java camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiLanguageResolver.java camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiPackageScanClassResolver.java camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/utils/BundleDelegatingClassLoader.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java?rev=1065255&r1=1065254&r2=1065255&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java Sun Jan 30 12:35:04 2011 @@ -139,6 +139,9 @@ public abstract class GenericFileEndpoin Class<?> factory = null; try { FactoryFinder finder = getCamelContext().getFactoryFinder("META-INF/services/org/apache/camel/component/"); + if (log.isTraceEnabled()) { + log.trace("Using FactoryFinder: " + finder); + } factory = finder.findClass(getScheme(), "strategy.factory."); } catch (ClassNotFoundException e) { if (log.isTraceEnabled()) { @@ -152,7 +155,28 @@ public abstract class GenericFileEndpoin if (factory == null) { // use default - factory = this.getCamelContext().getClassResolver().resolveClass(DEFAULT_STRATEGYFACTORY_CLASS); + try { + if (log.isTraceEnabled()) { + log.trace("Using ClassResolver to resolve class: " + DEFAULT_STRATEGYFACTORY_CLASS); + } + factory = this.getCamelContext().getClassResolver().resolveClass(DEFAULT_STRATEGYFACTORY_CLASS); + } catch (Exception e) { + if (log.isTraceEnabled()) { + log.trace("Cannot load class: " + DEFAULT_STRATEGYFACTORY_CLASS, e); + } + } + // fallback and us this class loader + try { + if (log.isTraceEnabled()) { + log.trace("Using classloader: " + this.getClass().getClassLoader() + " to resolve class: " + DEFAULT_STRATEGYFACTORY_CLASS); + } + factory = this.getCamelContext().getClassResolver().resolveClass(DEFAULT_STRATEGYFACTORY_CLASS, this.getClass().getClassLoader()); + } catch (Exception e) { + if (log.isTraceEnabled()) { + log.trace("Cannot load class: " + DEFAULT_STRATEGYFACTORY_CLASS + " using classloader: " + this.getClass().getClassLoader(), e); + } + } + if (factory == null) { throw new TypeNotPresentException(DEFAULT_STRATEGYFACTORY_CLASS + " class not found", null); } Modified: camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiClassResolver.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiClassResolver.java?rev=1065255&r1=1065254&r2=1065255&view=diff ============================================================================== --- camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiClassResolver.java (original) +++ camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiClassResolver.java Sun Jan 30 12:35:04 2011 @@ -59,7 +59,7 @@ public class OsgiClassResolver extends D try { answer = url.openStream(); } catch (IOException ex) { - LOG.error("Cannot load resource: " + uri, ex); + throw new RuntimeException("Cannot load resource: " + uri, ex); } } return answer; @@ -79,7 +79,7 @@ public class OsgiClassResolver extends D answer = loader.loadClass(name); } catch (ClassNotFoundException e) { if (LOG.isTraceEnabled()) { - LOG.trace("Cannot load class: " + name + " using classloader: " + loader, e); + LOG.trace("Cannot load class: " + name + " using classloader: " + loader + ". This exception will be ignored.", e); } } } Modified: camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiComponentResolver.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiComponentResolver.java?rev=1065255&r1=1065254&r2=1065255&view=diff ============================================================================== --- camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiComponentResolver.java (original) +++ camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiComponentResolver.java Sun Jan 30 12:35:04 2011 @@ -19,6 +19,7 @@ package org.apache.camel.core.osgi; import org.apache.camel.CamelContext; import org.apache.camel.Component; import org.apache.camel.spi.ComponentResolver; +import org.apache.camel.util.ObjectHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.osgi.framework.BundleContext; @@ -53,7 +54,9 @@ public class OsgiComponentResolver imple } protected Component getComponent(String name, CamelContext context) throws Exception { - LOG.trace("Finding Component: " + name); + if (LOG.isTraceEnabled()) { + LOG.trace("Finding Component: " + name); + } try { ServiceReference[] refs = bundleContext.getServiceReferences(ComponentResolver.class.getName(), "(component=" + name + ")"); if (refs != null && refs.length > 0) { @@ -62,7 +65,7 @@ public class OsgiComponentResolver imple } return null; } catch (InvalidSyntaxException e) { - throw new RuntimeException(e); // Should never happen + throw ObjectHelper.wrapRuntimeCamelException(e); } } Modified: camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDataFormatResolver.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDataFormatResolver.java?rev=1065255&r1=1065254&r2=1065255&view=diff ============================================================================== --- camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDataFormatResolver.java (original) +++ camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDataFormatResolver.java Sun Jan 30 12:35:04 2011 @@ -20,6 +20,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.model.DataFormatDefinition; import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.DataFormatResolver; +import org.apache.camel.util.ObjectHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.osgi.framework.BundleContext; @@ -73,7 +74,9 @@ public class OsgiDataFormatResolver impl } protected DataFormat getDataFormat(String name, CamelContext context) { - LOG.trace("Finding DataFormat: " + name); + if (LOG.isTraceEnabled()) { + LOG.trace("Finding DataFormat: " + name); + } try { ServiceReference[] refs = bundleContext.getServiceReferences(DataFormatResolver.class.getName(), "(dataformat=" + name + ")"); if (refs != null && refs.length > 0) { @@ -82,7 +85,7 @@ public class OsgiDataFormatResolver impl } return null; } catch (InvalidSyntaxException e) { - throw new RuntimeException(e); // Should never happen + throw ObjectHelper.wrapRuntimeCamelException(e); } } Modified: camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiLanguageResolver.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiLanguageResolver.java?rev=1065255&r1=1065254&r2=1065255&view=diff ============================================================================== --- camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiLanguageResolver.java (original) +++ camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiLanguageResolver.java Sun Jan 30 12:35:04 2011 @@ -20,6 +20,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.NoSuchLanguageException; import org.apache.camel.spi.Language; import org.apache.camel.spi.LanguageResolver; +import org.apache.camel.util.ObjectHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.osgi.framework.BundleContext; @@ -63,7 +64,9 @@ public class OsgiLanguageResolver implem } protected Language getLanguage(String name, CamelContext context) { - LOG.trace("Finding Language: " + name); + if (LOG.isTraceEnabled()) { + LOG.trace("Finding Language: " + name); + } try { ServiceReference[] refs = bundleContext.getServiceReferences(LanguageResolver.class.getName(), "(language=" + name + ")"); if (refs != null && refs.length > 0) { @@ -72,12 +75,14 @@ public class OsgiLanguageResolver implem } return null; } catch (InvalidSyntaxException e) { - throw new RuntimeException(e); // Should never happen + throw ObjectHelper.wrapRuntimeCamelException(e); } } protected LanguageResolver getLanguageResolver(String name, CamelContext context) { - LOG.trace("Finding LanguageResolver: " + name); + if (LOG.isTraceEnabled()) { + LOG.trace("Finding LanguageResolver: " + name); + } try { ServiceReference[] refs = bundleContext.getServiceReferences(LanguageResolver.class.getName(), "(resolver=" + name + ")"); if (refs != null && refs.length > 0) { @@ -86,7 +91,7 @@ public class OsgiLanguageResolver implem } return null; } catch (InvalidSyntaxException e) { - throw new RuntimeException(e); // Should never happen + throw ObjectHelper.wrapRuntimeCamelException(e); } } Modified: camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiPackageScanClassResolver.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiPackageScanClassResolver.java?rev=1065255&r1=1065254&r2=1065255&view=diff ============================================================================== --- camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiPackageScanClassResolver.java (original) +++ camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiPackageScanClassResolver.java Sun Jan 30 12:35:04 2011 @@ -21,6 +21,7 @@ import java.net.URL; import java.util.Collections; import java.util.Enumeration; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.Set; import org.apache.camel.core.osgi.utils.BundleDelegatingClassLoader; @@ -90,21 +91,21 @@ public class OsgiPackageScanClassResolve @SuppressWarnings("unchecked") private Set<String> getImplementationsInBundle(PackageScanFilter test, String packageName) { - try { - Bundle[] bundles; - if (bundle.getBundleContext() != null) { - bundles = bundle.getBundleContext().getBundles(); - } else { - bundles = new Bundle[]{bundle}; + Bundle[] bundles; + if (bundle.getBundleContext() != null) { + bundles = bundle.getBundleContext().getBundles(); + } else { + bundles = new Bundle[]{bundle}; + } + Set<String> urls = new LinkedHashSet<String>(); + for (Bundle bd : bundles) { + if (log.isTraceEnabled()) { + log.trace("Searching in bundle:" + bd); } - Set<String> urls = new HashSet<String>(); - for (Bundle bd : bundles) { - if (log.isTraceEnabled()) { - log.trace("Searching in bundle:" + bd); - } + try { Enumeration<URL> paths = bd.findEntries("/" + packageName, "*.class", true); while (paths != null && paths.hasMoreElements()) { - URL path = paths.nextElement(); + URL path = paths.nextElement(); String pathString = path.getPath(); String urlString = pathString.substring(pathString.indexOf(packageName)); urls.add(urlString); @@ -112,13 +113,12 @@ public class OsgiPackageScanClassResolve log.trace("Added url: " + urlString); } } + } catch (Throwable t) { + log.warn("Cannot search in bundle: " + bundle + " for classes matching criteria: " + test + " due: " + + t.getMessage() + ". This exception will be ignored.", t); } - return urls; - } catch (Throwable t) { - log.warn("Cannot search bundles for classes matching criteria: " + test + " due: " - + t.getMessage() + ". This exception will be ignored.", t); - return null; } + return urls; } } Modified: camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java?rev=1065255&r1=1065254&r2=1065255&view=diff ============================================================================== --- camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java (original) +++ camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiTypeConverter.java Sun Jan 30 12:35:04 2011 @@ -28,6 +28,7 @@ import org.apache.camel.impl.converter.D import org.apache.camel.spi.Injector; import org.apache.camel.spi.TypeConverterLoader; import org.apache.camel.spi.TypeConverterRegistry; +import org.apache.camel.util.ObjectHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.osgi.framework.BundleContext; @@ -50,11 +51,16 @@ public class OsgiTypeConverter extends S } public Object addingService(ServiceReference serviceReference) { + if (LOG.isTraceEnabled()) { + LOG.trace("AddingService: " + serviceReference); + } TypeConverterLoader loader = (TypeConverterLoader) bundleContext.getService(serviceReference); - try { - loader.load(getDelegate()); - } catch (Throwable t) { - LOG.debug("Error while loading type converter", t); + if (loader != null) { + try { + loader.load(getDelegate()); + } catch (Throwable t) { + throw ObjectHelper.wrapRuntimeCamelException(t); + } } return loader; } @@ -63,6 +69,9 @@ public class OsgiTypeConverter extends S } public void removedService(ServiceReference serviceReference, Object o) { + if (LOG.isTraceEnabled()) { + LOG.trace("RemovedService: " + serviceReference); + } this.delegate = null; } @@ -128,6 +137,7 @@ public class OsgiTypeConverter extends S protected DefaultTypeConverter createRegistry() { // base the osgi type converter on the default type converter + // TODO: Why is it based on the DefaultPackageScanClassResolver and not OsgiPackageScanClassResolver? DefaultTypeConverter reg = new DefaultTypeConverter(new DefaultPackageScanClassResolver() { @Override public Set<ClassLoader> getClassLoaders() { @@ -140,11 +150,17 @@ public class OsgiTypeConverter extends S try { ((TypeConverterLoader) o).load(reg); } catch (Throwable t) { - LOG.debug("Error while loading type converter", t); + throw ObjectHelper.wrapRuntimeCamelException(t); } } } + + if (LOG.isTraceEnabled()) { + LOG.trace("Created TypeConverter: " + reg); + } return reg; } + + } Modified: camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/utils/BundleDelegatingClassLoader.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/utils/BundleDelegatingClassLoader.java?rev=1065255&r1=1065254&r2=1065255&view=diff ============================================================================== --- camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/utils/BundleDelegatingClassLoader.java (original) +++ camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/utils/BundleDelegatingClassLoader.java Sun Jan 30 12:35:04 2011 @@ -20,6 +20,8 @@ import java.io.IOException; import java.net.URL; import java.util.Enumeration; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.osgi.framework.Bundle; /** @@ -28,7 +30,7 @@ import org.osgi.framework.Bundle; * @version $Rev: 896324 $, $Date: 2010-01-06 07:05:04 +0100 (Wed, 06 Jan 2010) $ */ public class BundleDelegatingClassLoader extends ClassLoader { - + private static final transient Log LOG = LogFactory.getLog(BundleDelegatingClassLoader.class); private final Bundle bundle; private final ClassLoader classLoader; @@ -42,10 +44,16 @@ public class BundleDelegatingClassLoader } protected Class<?> findClass(String name) throws ClassNotFoundException { + if (LOG.isTraceEnabled()) { + LOG.trace("FindClass: " + name); + } return bundle.loadClass(name); } protected URL findResource(String name) { + if (LOG.isTraceEnabled()) { + LOG.trace("FindResource: " + name); + } URL resource = bundle.getResource(name); if (classLoader != null && resource == null) { resource = classLoader.getResource(name); @@ -55,10 +63,16 @@ public class BundleDelegatingClassLoader @SuppressWarnings("unchecked") protected Enumeration findResources(String name) throws IOException { + if (LOG.isTraceEnabled()) { + LOG.trace("FindResource: " + name); + } return bundle.getResources(name); } protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { + if (LOG.isTraceEnabled()) { + LOG.trace("LoadClass: " + name + ", resolve: " + resolve); + } Class clazz; try { clazz = findClass(name);