This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 9fc335ffa767df4cf06c5127733518758c2c8fda Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Sat Jun 23 01:19:15 2018 +0200 [CAMEL-12688] Avoid lamba --- .../org/apache/camel/impl/DefaultCamelContext.java | 33 +++++++++++++++------- .../apache/camel/impl/DefaultFactoryFinder.java | 29 ++++++++++++------- 2 files changed, 42 insertions(+), 20 deletions(-) diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java index d081cae..8adcc18 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java @@ -42,6 +42,7 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; import java.util.stream.Collectors; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; @@ -461,9 +462,12 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon final AtomicBoolean created = new AtomicBoolean(false); // atomic operation to get/create a component. Avoid global locks. - final Component component = components.computeIfAbsent(name, comp -> { - created.set(true); - return initComponent(name, autoCreateComponents); + final Component component = components.computeIfAbsent(name, new Function<String, Component>() { + @Override + public Component apply(String comp) { + created.set(true); + return DefaultCamelContext.this.initComponent(name, autoCreateComponents); + } }); // Start the component after its creation as if it is a component proxy @@ -3267,7 +3271,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon } } - private void doStartCamel() throws Exception { + protected void doStartCamel() throws Exception { // custom properties may use property placeholders so resolve those early on if (globalOptions != null && !globalOptions.isEmpty()) { @@ -3507,13 +3511,22 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon // shutdown await manager to trigger interrupt of blocked threads to attempt to free these threads graceful shutdownServices(asyncProcessorAwaitManager); - shutdownServices(getRouteStartupOrder().stream() - .sorted(Comparator.comparing(RouteStartupOrder::getStartupOrder).reversed()) - .map(DefaultRouteStartupOrder.class::cast) - .map(DefaultRouteStartupOrder::getRouteService) - .collect(Collectors.toList()), false); + routeStartupOrder.sort(new Comparator<RouteStartupOrder>() { + @Override + public int compare(RouteStartupOrder o1, RouteStartupOrder o2) { + // Reversed order + return Integer.compare(o2.getStartupOrder(), o1.getStartupOrder()); + } + }); + List<RouteService> list = new ArrayList<>(); + for (RouteStartupOrder startupOrder : routeStartupOrder) { + DefaultRouteStartupOrder order = (DefaultRouteStartupOrder) startupOrder; + RouteService routeService = order.getRouteService(); + list.add(routeService); + } + shutdownServices(list, false); // do not clear route services or startup listeners as we can start Camel again and get the route back as before - getRouteStartupOrder().clear(); + routeStartupOrder.clear(); // but clear any suspend routes suspendedRouteServices.clear(); diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultFactoryFinder.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultFactoryFinder.java index bf87c6e..3ed501e 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultFactoryFinder.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultFactoryFinder.java @@ -25,6 +25,7 @@ import java.util.List; import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import java.util.function.Function; import org.apache.camel.NoFactoryAvailableException; import org.apache.camel.spi.ClassResolver; @@ -79,7 +80,12 @@ public class DefaultFactoryFinder implements FactoryFinder { final String prefix = propertyPrefix != null ? propertyPrefix : ""; final String classKey = prefix + key; - return addToClassMap(classKey, () -> newInstance(doFindFactoryProperties(key), prefix)); + return addToClassMap(classKey, new ClassSupplier() { + @Override + public Class<?> get() throws ClassNotFoundException, IOException { + return DefaultFactoryFinder.this.newInstance(DefaultFactoryFinder.this.doFindFactoryProperties(key), prefix); + } + }); } @Override @@ -160,15 +166,18 @@ public class DefaultFactoryFinder implements FactoryFinder { */ protected Class<?> addToClassMap(String key, ClassSupplier mappingFunction) throws ClassNotFoundException, IOException { try { - return classMap.computeIfAbsent(key, (String classKey) -> { - try { - return mappingFunction.get(); - } catch (ClassNotFoundException e) { - throw new WrappedRuntimeException(e); - } catch (NoFactoryAvailableException e) { - throw new WrappedRuntimeException(e); - } catch (IOException e) { - throw new WrappedRuntimeException(e); + return classMap.computeIfAbsent(key, new Function<String, Class<?>>() { + @Override + public Class<?> apply(String classKey) { + try { + return mappingFunction.get(); + } catch (ClassNotFoundException e) { + throw new WrappedRuntimeException(e); + } catch (NoFactoryAvailableException e) { + throw new WrappedRuntimeException(e); + } catch (IOException e) { + throw new WrappedRuntimeException(e); + } } }); } catch (WrappedRuntimeException e) {