Author: bvahdat Date: Thu Feb 7 21:32:12 2013 New Revision: 1443735 URL: http://svn.apache.org/r1443735 Log: Polished the generics craft.
Modified: camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelContextLifecycle.java camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelServletContextListener.java camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/JndiCamelServletContextListener.java camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/SimpleCamelServletContextListener.java Modified: camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelContextLifecycle.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelContextLifecycle.java?rev=1443735&r1=1443734&r2=1443735&view=diff ============================================================================== --- camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelContextLifecycle.java (original) +++ camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelContextLifecycle.java Thu Feb 7 21:32:12 2013 @@ -21,6 +21,8 @@ import org.apache.camel.spi.Registry; /** * A callback lifecycle allows end users to implement custom logic before * the {@link ServletCamelContext} is started and stopped. + * + * @param <R> the type of the {@link Registry} being used by this callback */ public interface CamelContextLifecycle<R extends Registry> { Modified: camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelServletContextListener.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelServletContextListener.java?rev=1443735&r1=1443734&r2=1443735&view=diff ============================================================================== --- camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelServletContextListener.java (original) +++ camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelServletContextListener.java Thu Feb 7 21:32:12 2013 @@ -43,19 +43,21 @@ import org.apache.camel.model.RoutesDefi import org.apache.camel.spi.ManagementStrategy; import org.apache.camel.spi.Registry; import org.apache.camel.util.CamelContextHelper; +import org.apache.camel.util.CastUtils; import org.apache.camel.util.IOHelper; import org.apache.camel.util.IntrospectionSupport; import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.ResourceHelper; -import org.apache.camel.util.jndi.JndiContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * A {@link ServletContextListener} which is used to bootstrap * {@link org.apache.camel.CamelContext} in web applications. + * + * @param <R> the type of the {@link Registry} being {@link #createRegistry() created} */ -public abstract class CamelServletContextListener implements ServletContextListener { +public abstract class CamelServletContextListener<R extends Registry> implements ServletContextListener { /** * instance is used for testing purpose @@ -64,12 +66,11 @@ public abstract class CamelServletContex protected static final Logger LOG = LoggerFactory.getLogger(CamelServletContextListener.class); protected ServletCamelContext camelContext; - protected CamelContextLifecycle camelContextLifecycle; + protected CamelContextLifecycle<R> camelContextLifecycle; protected boolean test; - protected Registry registry; + protected R registry; @Override - @SuppressWarnings("unchecked") public void contextInitialized(ServletContextEvent sce) { LOG.info("CamelContextServletListener initializing ..."); @@ -114,11 +115,11 @@ public abstract class CamelServletContex } } else if (route instanceof Set) { // its a set of route builders - for (Object clazz : (Set) route) { + for (Object routesBuilder : (Set<?>) route) { try { - camelContext.addRoutes((RoutesBuilder) clazz); + camelContext.addRoutes((RoutesBuilder) routesBuilder); } catch (Exception e) { - throw new RuntimeException("Error adding route " + clazz, e); + throw new RuntimeException("Error adding route " + routesBuilder, e); } } } else if (route instanceof RoutesDefinition) { @@ -142,7 +143,7 @@ public abstract class CamelServletContex String lifecycle = (String) map.remove("CamelContextLifecycle"); if (lifecycle != null) { try { - Class<CamelContextLifecycle> clazz = camelContext.getClassResolver().resolveMandatoryClass(lifecycle, CamelContextLifecycle.class); + Class<CamelContextLifecycle<R>> clazz = CastUtils.cast(camelContext.getClassResolver().resolveMandatoryClass(lifecycle, CamelContextLifecycle.class)); camelContextLifecycle = camelContext.getInjector().newInstance(clazz); } catch (ClassNotFoundException e) { throw new RuntimeException("Error creating CamelContextLifecycle class with name " + lifecycle, e); @@ -175,7 +176,6 @@ public abstract class CamelServletContex } @Override - @SuppressWarnings("unchecked") public void contextDestroyed(ServletContextEvent sce) { LOG.info("CamelContextServletListener destroying ..."); if (camelContext != null) { @@ -198,18 +198,18 @@ public abstract class CamelServletContex } /** - * Create the {@link Registry} implementation to use. + * Creates the {@link Registry} implementation to use. */ - public abstract Registry createRegistry() throws Exception; + public abstract R createRegistry() throws Exception; /** - * Extracts all the init parameters, and will do reference lookup in {@link JndiContext} - * if the value starts with a # sign. + * Extracts all the init parameters, and will do reference lookup in {@link #createRegistry() registry} + * in case the value starts with a {@code #} sign. */ private Map<String, Object> extractInitParameters(ServletContextEvent sce) { // configure CamelContext with the init parameter Map<String, Object> map = new LinkedHashMap<String, Object>(); - Enumeration names = sce.getServletContext().getInitParameterNames(); + Enumeration<?> names = sce.getServletContext().getInitParameterNames(); while (names.hasMoreElements()) { String name = (String) names.nextElement(); String value = sce.getServletContext().getInitParameter(name); @@ -217,9 +217,10 @@ public abstract class CamelServletContex if (ObjectHelper.isNotEmpty(value)) { Object target = value; if (value.startsWith("#")) { - // a reference lookup in jndi + // a reference lookup in registry value = value.substring(1); - target = lookupRegistry(registry, value); + target = lookupRegistryByName(value); + LOG.debug("Resolved the servlet context's initialization parameter {} to {}", value, target); } map.put(name, target); } @@ -271,7 +272,7 @@ public abstract class CamelServletContex ManagementStrategy managementStrategy = new ManagedManagementStrategy(camelContext, agent); camelContext.setManagementStrategy(managementStrategy); - // clear the existing lifecycle strategies define by the DefaultCamelContext constructor + // clear the existing lifecycle strategies defined by the DefaultCamelContext constructor camelContext.getLifecycleStrategies().clear(); camelContext.addLifecycleStrategy(new DefaultManagementLifecycleStrategy(camelContext)); // set additional configuration from agent @@ -366,7 +367,7 @@ public abstract class CamelServletContex names.add(entry.getKey()); // we can have multiple values assigned, separated by comma, so create an iterator String value = (String) entry.getValue(); - Iterator it = ObjectHelper.createIterator(value); + Iterator<Object> it = ObjectHelper.createIterator(value); while (it.hasNext()) { value = (String) it.next(); if (ObjectHelper.isNotEmpty(value)) { @@ -377,7 +378,7 @@ public abstract class CamelServletContex if (value.startsWith("#")) { // a reference lookup in jndi value = value.substring(1); - target = lookupRegistry(registry, value); + target = lookupRegistryByName(value); } else if (ResourceHelper.hasScheme(value)) { // XML resource from classpath or file system InputStream is = null; @@ -430,7 +431,7 @@ public abstract class CamelServletContex return answer; } - private static Object lookupRegistry(Registry registry, String name) { + private Object lookupRegistryByName(String name) { return registry.lookupByName(name); } Modified: camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/JndiCamelServletContextListener.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/JndiCamelServletContextListener.java?rev=1443735&r1=1443734&r2=1443735&view=diff ============================================================================== --- camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/JndiCamelServletContextListener.java (original) +++ camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/JndiCamelServletContextListener.java Thu Feb 7 21:32:12 2013 @@ -23,15 +23,15 @@ import org.apache.camel.impl.JndiRegistr import org.apache.camel.spi.Registry; /** - * An implementation of {@link CamelServletContextListener} that uses the {@link org.apache.camel.impl.JndiRegistry} + * An implementation of {@link CamelServletContextListener} that uses the {@link JndiRegistry} * as its {@link Registry}. */ -public class JndiCamelServletContextListener extends CamelServletContextListener { +public class JndiCamelServletContextListener extends CamelServletContextListener<JndiRegistry> { private Context jndiContext; @Override - public Registry createRegistry() throws Exception { + public JndiRegistry createRegistry() throws Exception { jndiContext = new InitialContext(); return new JndiRegistry(jndiContext); } Modified: camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/SimpleCamelServletContextListener.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/SimpleCamelServletContextListener.java?rev=1443735&r1=1443734&r2=1443735&view=diff ============================================================================== --- camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/SimpleCamelServletContextListener.java (original) +++ camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/SimpleCamelServletContextListener.java Thu Feb 7 21:32:12 2013 @@ -25,20 +25,20 @@ import org.apache.camel.spi.Registry; * An implementation of {@link CamelServletContextListener} that uses the {@link SimpleRegistry} * as its {@link Registry}. */ -public class SimpleCamelServletContextListener extends CamelServletContextListener { +public class SimpleCamelServletContextListener extends CamelServletContextListener<SimpleRegistry> { - private Map map; + private SimpleRegistry map; @Override - public Registry createRegistry() throws Exception { + public SimpleRegistry createRegistry() throws Exception { map = new SimpleRegistry(); - return (Registry) map; + return map; } /** * Gets the {@link Map} that contains the data for the {@link SimpleRegistry} */ - public Map getMap() { + public Map<String, Object> getMap() { return map; } }