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);


Reply via email to