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 2008/05/24 13:47:31 UTC

svn commit: r659798 - in /activemq/camel/trunk/camel-core/src/main/java/org/apache/camel: converter/stream/ impl/ impl/converter/ spi/ util/

Author: davsclaus
Date: Sat May 24 04:47:30 2008
New Revision: 659798

URL: http://svn.apache.org/viewvc?rev=659798&view=rev
Log:
CAMEL-517: Javadoc polished and FactoryFinder uses ObjectHelper for loading resources

Modified:
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchangeConverter.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLifecycleStrategy.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/PropertyEditorTypeConverter.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/TypeConverterLoader.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/TypeConverterRegistry.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Injector.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/DefaultTimeoutMap.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/FactoryFinder.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/TimeoutMap.java

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java?rev=659798&r1=659797&r2=659798&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java Sat May 24 04:47:30 2008
@@ -29,8 +29,8 @@
 import org.apache.camel.converter.jaxp.XmlConverter;
 
 /**
- * A set of {@link Converter} methods for wrapping stream-based messages in a {@link StreamCache} implementation to ensure message re-readability.
- * e.g. multicasting, retrying, ...
+ * A set of {@link Converter} methods for wrapping stream-based messages in a {@link StreamCache}
+ * implementation to ensure message re-readability (eg multicasting, retrying)
  */
 @Converter
 public class StreamCacheConverter {

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchangeConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchangeConverter.java?rev=659798&r1=659797&r2=659798&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchangeConverter.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchangeConverter.java Sat May 24 04:47:30 2008
@@ -20,11 +20,15 @@
 import org.apache.camel.spi.ExchangeConverter;
 
 /**
+ * Default implementation of {@link org.apache.camel.spi.ExchangeConverter}.
+ *
  * @version $Revision$
  */
 public class DefaultExchangeConverter implements ExchangeConverter {
+
     public <T> T convertTo(Class<T> type, Exchange exchange) {
         // TODO use some kinda introspection to find available exchange conversions
-        return null;
+        throw new UnsupportedOperationException("Not implemented yet");
     }
+    
 }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java?rev=659798&r1=659797&r2=659798&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLanguageResolver.java Sat May 24 04:47:30 2008
@@ -24,6 +24,9 @@
 import org.apache.camel.util.NoFactoryAvailableException;
 
 /**
+ * Default language resolver that looks for language factories in <b>META-INF/services/org/apache/camel/language/</b> and
+ * language resolvers in <b>META-INF/services/org/apache/camel/language/resolver/</b>.
+ *
  * @version $Revision$
  */
 public class DefaultLanguageResolver implements LanguageResolver {

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLifecycleStrategy.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLifecycleStrategy.java?rev=659798&r1=659797&r2=659798&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLifecycleStrategy.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultLifecycleStrategy.java Sat May 24 04:47:30 2008
@@ -26,6 +26,9 @@
 import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.RouteContext;
 
+/**
+ * Default implementation of the lifecycle strategy.
+ */
 public class DefaultLifecycleStrategy implements LifecycleStrategy {
 
     public void onContextCreate(CamelContext context) {

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java?rev=659798&r1=659797&r2=659798&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/AsyncProcessorTypeConverter.java Sat May 24 04:47:30 2008
@@ -20,12 +20,11 @@
 import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
-import org.apache.camel.Service;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.processor.DelegateProcessor;
 
 /**
- * A simple converter that can convert any Processor to an AsyncProcessor.
+ * A simple converter that can convert any {@link Processor} to an {@link AsyncProcessor}.
  * Processing will still occur synchronously but it will provide the required
  * notifications that the caller expects.
  * 
@@ -33,7 +32,7 @@
  */
 public class AsyncProcessorTypeConverter implements TypeConverter {
 
-    public static final class ProcessorToAsynProcessorBridge extends DelegateProcessor implements AsyncProcessor {
+    private static final class ProcessorToAsynProcessorBridge extends DelegateProcessor implements AsyncProcessor {
 
         private ProcessorToAsynProcessorBridge(Processor processor) {
             super(processor);

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java?rev=659798&r1=659797&r2=659798&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java Sat May 24 04:47:30 2008
@@ -34,6 +34,9 @@
 import org.apache.commons.logging.LogFactory;
 
 /**
+ * Default implementation of a type converter registry used for
+ * <a href="http://activemq.apache.org/camel/type-converter.html">type converters</a> in Camel.
+ *
  * @version $Revision$
  */
 public class DefaultTypeConverter implements TypeConverter, TypeConverterRegistry {
@@ -71,8 +74,7 @@
             }
         }
 
-        // lets avoid NullPointerException when converting to boolean for null
-        // values
+        // lets avoid NullPointerException when converting to boolean for null values
         if (boolean.class.isAssignableFrom(toType)) {
             return (T) Boolean.FALSE;
         }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/PropertyEditorTypeConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/PropertyEditorTypeConverter.java?rev=659798&r1=659797&r2=659798&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/PropertyEditorTypeConverter.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/PropertyEditorTypeConverter.java Sat May 24 04:47:30 2008
@@ -23,7 +23,7 @@
 import org.apache.camel.util.ObjectHelper;
 
 /**
- * Uses the java.beans.PropertyEditor conversion system to convert Objects to
+ * Uses the {@link java.beans.PropertyEditor} conversion system to convert Objects to
  * and from String values.
  *
  * @version $Revision$
@@ -31,16 +31,13 @@
 public class PropertyEditorTypeConverter implements TypeConverter {
 
     public <T> T convertTo(Class<T> toType, Object value) {
-
         // We can't convert null values since we can't figure out a property
         // editor for it.
         if (value == null) {
             return null;
         }
 
-
         if (value.getClass() == String.class) {
-
             // No conversion needed.
             if (toType == String.class) {
                 return ObjectHelper.cast(toType, value);
@@ -51,15 +48,14 @@
                 editor.setAsText(value.toString());
                 return ObjectHelper.cast(toType, editor.getValue());
             }
-
         } else if (toType == String.class) {
-
             PropertyEditor editor = PropertyEditorManager.findEditor(value.getClass());
             if (editor != null) {
                 editor.setValue(value);
                 return ObjectHelper.cast(toType, editor.getAsText());
             }
         }
+
         return null;
     }
 

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/TypeConverterLoader.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/TypeConverterLoader.java?rev=659798&r1=659797&r2=659798&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/TypeConverterLoader.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/TypeConverterLoader.java Sat May 24 04:47:30 2008
@@ -17,9 +17,12 @@
 package org.apache.camel.impl.converter;
 
 /**
+ * A pluggable strategy to load type converters into a registry from some kind of mechanism
+ *
  * @version $Revision$
  */
 public interface TypeConverterLoader {
+
     /**
      * A pluggable strategy to load type converters into a registry from some kind of mechanism
      *

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/TypeConverterRegistry.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/TypeConverterRegistry.java?rev=659798&r1=659797&r2=659798&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/TypeConverterRegistry.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/TypeConverterRegistry.java Sat May 24 04:47:30 2008
@@ -20,9 +20,12 @@
 import org.apache.camel.spi.Injector;
 
 /**
+ * Registry for type converters.
+ *
  * @version $Revision$
  */
 public interface TypeConverterRegistry {
+
     /**
      * Allows a new type converter to be registered
      *

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Injector.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Injector.java?rev=659798&r1=659797&r2=659798&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Injector.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Injector.java Sat May 24 04:47:30 2008
@@ -24,6 +24,7 @@
  * @version $Revision$
  */
 public interface Injector {
+
     /**
      * Instantiates a new instance of the given type possibly injecting values
      * into the object in the process

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/DefaultTimeoutMap.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/DefaultTimeoutMap.java?rev=659798&r1=659797&r2=659798&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/DefaultTimeoutMap.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/DefaultTimeoutMap.java Sat May 24 04:47:30 2008
@@ -29,6 +29,7 @@
 import org.apache.commons.logging.LogFactory;
 
 /**
+ * Default implementation of the {@link TimeoutMap}.
  *
  * @version $Revision$
  */
@@ -86,9 +87,6 @@
         }
     }
 
-    /**
-     * Returns a copy of the keys in the map
-     */
     public Object[] getKeys() {
         Object[] keys = null;
         synchronized (map) {
@@ -113,9 +111,6 @@
         schedulePoll();
     }
 
-    /**
-     * Purges any old entries from the map
-     */
     public void purge() {
         long now = currentTime();
         synchronized (map) {

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/FactoryFinder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/FactoryFinder.java?rev=659798&r1=659797&r2=659798&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/FactoryFinder.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/FactoryFinder.java Sat May 24 04:47:30 2008
@@ -27,6 +27,9 @@
 
 import org.apache.camel.spi.Injector;
 
+/**
+ * Finder to find factories from the resource classpath, usually <b>META-INF/services/org/apache/camel/</b>.
+ */
 public class FactoryFinder {
     private final String path;
     private final ConcurrentHashMap classMap = new ConcurrentHashMap();
@@ -41,9 +44,9 @@
 
     /**
      * Creates a new instance of the given key
-     * 
+     *
      * @param key is the key to add to the path to find a text file containing
-     *                the factory name
+     *            the factory name
      * @return a newly created instance
      */
     public Object newInstance(String key) throws IllegalAccessException, InstantiationException, IOException,
@@ -130,35 +133,16 @@
         if (className == null) {
             throw new IOException("Expected property is missing: " + propertyPrefix + "class");
         }
-        Class clazz = null;
-        ClassLoader loader = Thread.currentThread().getContextClassLoader();
-        if (loader != null) {
-            try {
-                clazz = loader.loadClass(className);
-            } catch (ClassNotFoundException e) {
-                // ignore
-            }
-        }
-        if (clazz == null) {
-            clazz = FactoryFinder.class.getClassLoader().loadClass(className);
-        }
-        return clazz;
+
+        return ObjectHelper.loadClass(className);
     }
 
     private Properties doFindFactoryProperties(String key) throws IOException {
         String uri = path + key;
 
-        // lets try the thread context class loader first
-        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-        if (classLoader == null) {
-            classLoader = getClass().getClassLoader();
-        }
-        InputStream in = classLoader.getResourceAsStream(uri);
+        InputStream in = ObjectHelper.loadResourceAsStream(uri);
         if (in == null) {
-            in = FactoryFinder.class.getClassLoader().getResourceAsStream(uri);
-            if (in == null) {
-                throw new NoFactoryAvailableException(uri);
-            }
+            throw new NoFactoryAvailableException(uri);
         }
 
         // lets load the file
@@ -169,10 +153,9 @@
             properties.load(reader);
             return properties;
         } finally {
-            try {
-                reader.close();
-            } catch (Exception ignore) {
-            }
+            ObjectHelper.close(reader, key, null);
+            ObjectHelper.close(in, key, null);
         }
     }
+    
 }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java?rev=659798&r1=659797&r2=659798&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java Sat May 24 04:47:30 2008
@@ -18,6 +18,7 @@
 
 import java.io.Closeable;
 import java.io.IOException;
+import java.io.InputStream;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -312,6 +313,27 @@
     }
 
     /**
+     * Attempts to load the given resource as a stream using the thread context class
+     * loader or the class loader used to load this class
+     *
+     * @param name the name of the resource to load
+     * @return the stream or null if it could not be loaded
+     */
+    public static InputStream loadResourceAsStream(String name) {
+        InputStream in = null;
+
+        ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+        if (contextClassLoader != null) {
+            in = contextClassLoader.getResourceAsStream(name);
+        }
+        if (in != null) {
+            in = ObjectHelper.class.getClassLoader().getResourceAsStream(name);
+        }
+
+        return in;
+    }
+
+    /**
      * A helper method to invoke a method via reflection and wrap any exceptions
      * as {@link RuntimeCamelException} instances
      *
@@ -459,7 +481,9 @@
             try {
                 closeable.close();
             } catch (IOException e) {
-                log.warn("Could not close " + name + ". Reason: " + e, e);
+                if (log != null) {
+                    log.warn("Could not close: " + name + ". Reason: " + e, e);
+                }
             }
         }
     }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/TimeoutMap.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/TimeoutMap.java?rev=659798&r1=659797&r2=659798&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/TimeoutMap.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/TimeoutMap.java Sat May 24 04:47:30 2008
@@ -27,10 +27,8 @@
     /**
      * Looks up the value in the map by the given key.
      *
-     * @param key
-     *            the key of the value to search for
-     * @return the value for the given key or null if it is not present (or has
-     *         timed out)
+     * @param key the key of the value to search for
+     * @return the value for the given key or null if it is not present (or has timed out)
      */
     Object get(Object key);
 
@@ -39,13 +37,22 @@
      */
     Object[] getKeys();
 
+    /**
+     * Returns the size of the map
+     */
     int size();
+
     /**
      * Adds the key value pair into the map such that some time after the given
      * timeout the entry will be evicted
      */
     void put(Object key, Object value, long timeoutMillis);
 
+    /**
+     * Removes the object with the given key
+     *
+     * @param key  key for the object to remove
+     */
     void remove(Object key);
 
     /**