All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.camel.test.spring.CamelSpringTestHelper Maven / Gradle / Ivy

There is a newer version: 3.22.2
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.camel.test.spring;

import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.apache.camel.spring.SpringCamelContext;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.TestContext;

/**
 * Helper that provides state information across the levels of Spring Test that do not expose the necessary
 * context/state for integration of Camel testing features into Spring test. Also provides utility methods.
 * 

* Note that this class makes use of {@link ThreadLocal}s to maintain some state. It is imperative that the state * setters and getters are accessed within the scope of a single thread in order for this class to work right. */ @Deprecated public final class CamelSpringTestHelper { private static ThreadLocal originalJmxDisabledValue = new ThreadLocal<>(); private static ThreadLocal originalExcludeRoutesValue = new ThreadLocal<>(); private static ThreadLocal> testClazz = new ThreadLocal<>(); private static ThreadLocal testContext = new ThreadLocal<>(); private CamelSpringTestHelper() { } public static String getOriginalJmxDisabled() { return originalJmxDisabledValue.get(); } public static void setOriginalJmxDisabledValue(String originalValue) { originalJmxDisabledValue.set(originalValue); } public static String getOriginalExcludeRoutes() { return originalExcludeRoutesValue.get(); } public static void setOriginalExcludeRoutesValue(String originalValue) { originalExcludeRoutesValue.set(originalValue); } public static Class getTestClass() { return testClazz.get(); } public static void setTestClass(Class testClass) { testClazz.set(testClass); } public static Method getTestMethod() { return testContext.get().getTestMethod(); } public static void setTestContext(TestContext context) { testContext.set(context); } /** * Returns all methods defined in {@code clazz} and its superclasses/interfaces. */ public static Collection getAllMethods(Class clazz) { Set methods = new LinkedHashSet<>(); Class currentClass = clazz; while (currentClass != null) { methods.addAll(Arrays.asList(clazz.getMethods())); currentClass = currentClass.getSuperclass(); } return methods; } /** * Executes {@code strategy} against all {@link SpringCamelContext}s found in the Spring context. This method * reduces the amount of repeated find and loop code throughout this class. * * @param context the Spring context to search * @param strategy the strategy to execute against the found {@link SpringCamelContext}s * * @throws Exception if there is an error executing any of the strategies */ public static void doToSpringCamelContexts(ApplicationContext context, DoToSpringCamelContextsStrategy strategy) throws Exception { Map contexts = context.getBeansOfType(SpringCamelContext.class); for (Entry entry : contexts.entrySet()) { strategy.execute(entry.getKey(), entry.getValue()); } } public interface DoToSpringCamelContextsStrategy { void execute(String contextName, SpringCamelContext camelContext) throws Exception; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy