CAMEL-7997: Fixed CS
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/733e4cbd Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/733e4cbd Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/733e4cbd Branch: refs/heads/master Commit: 733e4cbdc818838ecc8693efc367e00b8b95ded0 Parents: 79a4717 Author: Claus Ibsen <davscl...@apache.org> Authored: Sun Nov 9 09:18:13 2014 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sun Nov 9 09:31:30 2014 +0100 ---------------------------------------------------------------------- .../apache/camel/scr/AbstractCamelRunner.java | 64 +++++++++++-------- .../java/org/apache/camel/scr/ScrHelper.java | 48 ++++++++------ .../camel/scr/AbstractCamelRunnerTest.java | 8 +-- .../apache/camel/scr/ConcreteCamelRunner.java | 66 +++++++++++++------- 4 files changed, 117 insertions(+), 69 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/733e4cbd/components/camel-scr/src/main/java/org/apache/camel/scr/AbstractCamelRunner.java ---------------------------------------------------------------------- diff --git a/components/camel-scr/src/main/java/org/apache/camel/scr/AbstractCamelRunner.java b/components/camel-scr/src/main/java/org/apache/camel/scr/AbstractCamelRunner.java index f029422..e1fa67c 100644 --- a/components/camel-scr/src/main/java/org/apache/camel/scr/AbstractCamelRunner.java +++ b/components/camel-scr/src/main/java/org/apache/camel/scr/AbstractCamelRunner.java @@ -16,6 +16,23 @@ */ package org.apache.camel.scr; +import java.io.File; +import java.lang.reflect.Field; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.net.URI; +import java.net.URL; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + import org.apache.camel.CamelContext; import org.apache.camel.RoutesBuilder; import org.apache.camel.component.properties.PropertiesComponent; @@ -31,38 +48,28 @@ import org.osgi.framework.BundleContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; -import java.lang.reflect.Field; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.net.URI; -import java.net.URL; -import java.util.*; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; - public abstract class AbstractCamelRunner implements Runnable { + public static final int START_DELAY = 5000; + public static final String PROPERTY_PREFIX = "camel.scr.properties.prefix"; + protected Logger log = LoggerFactory.getLogger(getClass()); protected ModelCamelContext context; protected SimpleRegistry registry = new SimpleRegistry(); private ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); private ScheduledFuture starter; - private boolean activated = false; - private boolean started = false; - - public static final int START_DELAY = 5000; - public static final String PROPERTY_PREFIX = "camel.scr.properties.prefix"; + private volatile boolean activated; + private volatile boolean started; // Configured fields - public String camelContextId = "camel-runner-default"; - public boolean active = false; + private String camelContextId = "camel-runner-default"; + private volatile boolean active; public synchronized void activate(final BundleContext bundleContext, final Map<String, String> props) throws Exception { - if (activated) return; + if (activated) { + return; + } log.debug("activated!"); activated = true; @@ -84,7 +91,6 @@ public abstract class AbstractCamelRunner implements Runnable { protected void createCamelContext(final BundleContext bundleContext, final Map<String, String> props) { if (null != bundleContext) { context = new OsgiDefaultCamelContext(bundleContext, registry); - // From https://issues.jboss.org/browse/MR-911 // Setup the application context classloader with the bundle classloader context.setApplicationContextClassLoader(new BundleDelegatingClassLoader(bundleContext.getBundle())); // and make sure the TCCL is our classloader @@ -159,7 +165,9 @@ public abstract class AbstractCamelRunner implements Runnable { } public synchronized void deactivate() { - if (!activated) return; + if (!activated) { + return; + } log.debug("deactivated!"); activated = false; @@ -180,7 +188,9 @@ public abstract class AbstractCamelRunner implements Runnable { } private void startCamelContext() { - if (started) return; + if (started) { + return; + } try { if (active) { context.start(); @@ -194,7 +204,9 @@ public abstract class AbstractCamelRunner implements Runnable { } private void stopCamelContext() { - if (!started) return; + if (!started) { + return; + } try { context.stop(); } catch (Exception e) { @@ -224,7 +236,7 @@ public abstract class AbstractCamelRunner implements Runnable { public static <T> T configure(final CamelContext context, final T target, final Logger log) { Class clazz = target.getClass(); log.debug("Configuring " + clazz.getName()); - Collection<Field> fields = new ArrayList<>(); + Collection<Field> fields = new ArrayList<Field>(); fields.addAll(Arrays.asList(clazz.getDeclaredFields())); fields.addAll(Arrays.asList(clazz.getFields())); for (Field field : fields) { @@ -270,7 +282,7 @@ public abstract class AbstractCamelRunner implements Runnable { } else if (clazz == URL.class) { return new URL(value); } else { - throw new IllegalArgumentException("Unknown type: "+ (clazz != null ? clazz.getName() : null)); + throw new IllegalArgumentException("Unknown type: " + (clazz != null ? clazz.getName() : null)); } } else { return null; http://git-wip-us.apache.org/repos/asf/camel/blob/733e4cbd/components/camel-scr/src/main/java/org/apache/camel/scr/ScrHelper.java ---------------------------------------------------------------------- diff --git a/components/camel-scr/src/main/java/org/apache/camel/scr/ScrHelper.java b/components/camel-scr/src/main/java/org/apache/camel/scr/ScrHelper.java index aa528e8..d01d460 100644 --- a/components/camel-scr/src/main/java/org/apache/camel/scr/ScrHelper.java +++ b/components/camel-scr/src/main/java/org/apache/camel/scr/ScrHelper.java @@ -16,36 +16,42 @@ */ package org.apache.camel.scr; +import java.io.File; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import javax.xml.XMLConstants; +import javax.xml.namespace.NamespaceContext; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpression; +import javax.xml.xpath.XPathExpressionException; +import javax.xml.xpath.XPathFactory; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; -import javax.xml.XMLConstants; -import javax.xml.namespace.NamespaceContext; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.xpath.*; -import java.io.File; -import java.io.IOException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; +/** + * Helper class. + */ +public final class ScrHelper { -@SuppressWarnings("unused") -public class ScrHelper { + private static final Logger LOG = LoggerFactory.getLogger(ScrHelper.class); - private static Logger log = LoggerFactory.getLogger(ScrHelper.class); + private ScrHelper() { + } public static Map<String, String> getScrProperties(String componentName) throws Exception { return getScrProperties(String.format("target/classes/OSGI-INF/%s.xml", componentName), componentName); } public static Map<String, String> getScrProperties(String xmlLocation, String componentName) throws Exception { - Map<String, String> result = new HashMap<>(); + Map<String, String> result = new HashMap<String, String>(); final Document dom = readXML(new File(xmlLocation)); final XPath xPath = XPathFactory.newInstance(XPathFactory.DEFAULT_OBJECT_MODEL_URI, "com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl", null).newXPath(); xPath.setNamespaceContext(new NamespaceContext() { @@ -58,9 +64,13 @@ public class ScrHelper { Node node = (Node) scrNamespace.evaluate(dom, XPathConstants.NODE); return node.getNodeValue(); } catch (XPathExpressionException e) { - e.printStackTrace(); + // ignore + LOG.debug("Error evaluating xpath to obtain namespace prefix. This exception is ignored and using namespace: http://www.osgi.org/xmlns/scr/v1.1.0", e); + } return "http://www.osgi.org/xmlns/scr/v1.1.0"; + default: + // noop } return XMLConstants.NULL_NS_URI; } @@ -75,6 +85,7 @@ public class ScrHelper { return null; } }); + String propertyListExpression = String.format("/components/scr:component[@name='%s']/property", componentName); XPathExpression propertyList = xPath.compile(propertyListExpression); XPathExpression propertyName = xPath.compile("@name"); @@ -87,10 +98,11 @@ public class ScrHelper { return result; } - private static Document readXML(File xml) throws ParserConfigurationException, SAXException, IOException { + private static Document readXML(File xml) throws Exception { DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); builderFactory.setNamespaceAware(true); DocumentBuilder builder = builderFactory.newDocumentBuilder(); return builder.parse(xml); } + } http://git-wip-us.apache.org/repos/asf/camel/blob/733e4cbd/components/camel-scr/src/test/java/org/apache/camel/scr/AbstractCamelRunnerTest.java ---------------------------------------------------------------------- diff --git a/components/camel-scr/src/test/java/org/apache/camel/scr/AbstractCamelRunnerTest.java b/components/camel-scr/src/test/java/org/apache/camel/scr/AbstractCamelRunnerTest.java index 15e7e49..b6d9cbd 100644 --- a/components/camel-scr/src/test/java/org/apache/camel/scr/AbstractCamelRunnerTest.java +++ b/components/camel-scr/src/test/java/org/apache/camel/scr/AbstractCamelRunnerTest.java @@ -16,6 +16,8 @@ */ package org.apache.camel.scr; +import java.util.Map; + import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -25,19 +27,17 @@ import org.junit.runners.JUnit4; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Map; - import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @RunWith(JUnit4.class) public class AbstractCamelRunnerTest { - Logger log = LoggerFactory.getLogger(getClass()); - @Rule public TestName testName = new TestName(); + private Logger log = LoggerFactory.getLogger(getClass()); + @Before public void setUp() throws Exception { log.info("*******************************************************************"); http://git-wip-us.apache.org/repos/asf/camel/blob/733e4cbd/components/camel-scr/src/test/java/org/apache/camel/scr/ConcreteCamelRunner.java ---------------------------------------------------------------------- diff --git a/components/camel-scr/src/test/java/org/apache/camel/scr/ConcreteCamelRunner.java b/components/camel-scr/src/test/java/org/apache/camel/scr/ConcreteCamelRunner.java index d85e51c..a591a2e 100644 --- a/components/camel-scr/src/test/java/org/apache/camel/scr/ConcreteCamelRunner.java +++ b/components/camel-scr/src/test/java/org/apache/camel/scr/ConcreteCamelRunner.java @@ -16,23 +16,35 @@ */ package org.apache.camel.scr; -import org.apache.camel.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ThreadPoolExecutor; + +import org.apache.camel.CamelContext; +import org.apache.camel.Component; +import org.apache.camel.Endpoint; +import org.apache.camel.ErrorHandlerFactory; +import org.apache.camel.Processor; +import org.apache.camel.Route; +import org.apache.camel.RoutesBuilder; +import org.apache.camel.Service; +import org.apache.camel.VetoCamelContextStartException; import org.apache.camel.spi.LifecycleStrategy; import org.apache.camel.spi.RouteContext; import org.osgi.framework.BundleContext; -import java.util.*; -import java.util.concurrent.ThreadPoolExecutor; - public class ConcreteCamelRunner extends AbstractCamelRunner implements LifecycleStrategy { - protected int camelContextStarted = 0; - protected int camelContextStopped = 0; - protected int routeAdded = 0; + protected int camelContextStarted; + protected int camelContextStopped; + protected int routeAdded; public Map<String, String> getDefaultProperties() { // Set default properties - Map<String,String> defaultProps = new HashMap<>(); + Map<String, String> defaultProps = new HashMap<String, String>(); defaultProps.put("camelContextId", "camel-runner-test"); defaultProps.put("camelRouteId", "test/direct-mock"); defaultProps.put("active", "true"); @@ -55,7 +67,7 @@ public class ConcreteCamelRunner extends AbstractCamelRunner implements Lifecycl @Override public List<RoutesBuilder> getRouteBuilders() { - List<RoutesBuilder> routesBuilders = new ArrayList<>(); + List<RoutesBuilder> routesBuilders = new ArrayList<RoutesBuilder>(); routesBuilders.add(new TestRouteBuilder()); routesBuilders.add(new TestRouteBuilder2()); return routesBuilders; @@ -72,22 +84,28 @@ public class ConcreteCamelRunner extends AbstractCamelRunner implements Lifecycl } @Override - public void onComponentAdd(String s, Component component) {} + public void onComponentAdd(String s, Component component) { + } @Override - public void onComponentRemove(String s, Component component) {} + public void onComponentRemove(String s, Component component) { + } @Override - public void onEndpointAdd(Endpoint endpoint) {} + public void onEndpointAdd(Endpoint endpoint) { + } @Override - public void onEndpointRemove(Endpoint endpoint) {} + public void onEndpointRemove(Endpoint endpoint) { + } @Override - public void onServiceAdd(CamelContext camelContext, Service service, Route route) {} + public void onServiceAdd(CamelContext camelContext, Service service, Route route) { + } @Override - public void onServiceRemove(CamelContext camelContext, Service service, Route route) {} + public void onServiceRemove(CamelContext camelContext, Service service, Route route) { + } @Override public void onRoutesAdd(Collection<Route> routes) { @@ -95,20 +113,26 @@ public class ConcreteCamelRunner extends AbstractCamelRunner implements Lifecycl } @Override - public void onRoutesRemove(Collection<Route> routes) {} + public void onRoutesRemove(Collection<Route> routes) { + } @Override - public void onRouteContextCreate(RouteContext routeContext) {} + public void onRouteContextCreate(RouteContext routeContext) { + } @Override - public void onErrorHandlerAdd(RouteContext routeContext, Processor processor, ErrorHandlerFactory errorHandlerFactory) {} + public void onErrorHandlerAdd(RouteContext routeContext, Processor processor, ErrorHandlerFactory errorHandlerFactory) { + } @Override - public void onErrorHandlerRemove(RouteContext routeContext, Processor processor, ErrorHandlerFactory errorHandlerFactory) {} + public void onErrorHandlerRemove(RouteContext routeContext, Processor processor, ErrorHandlerFactory errorHandlerFactory) { + } @Override - public void onThreadPoolAdd(CamelContext camelContext, ThreadPoolExecutor threadPoolExecutor, String s, String s2, String s3, String s4) {} + public void onThreadPoolAdd(CamelContext camelContext, ThreadPoolExecutor threadPoolExecutor, String s, String s2, String s3, String s4) { + } @Override - public void onThreadPoolRemove(CamelContext camelContext, ThreadPoolExecutor threadPoolExecutor) {} + public void onThreadPoolRemove(CamelContext camelContext, ThreadPoolExecutor threadPoolExecutor) { + } }