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