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

com.netflix.hystrix.strategy.HystrixArchaiusHelper Maven / Gradle / Ivy

There is a newer version: 1.5.18
Show newest version
/**
 * Copyright 2016 Netflix, Inc.
 * 

* Licensed 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 com.netflix.hystrix.strategy; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import com.netflix.hystrix.strategy.properties.HystrixDynamicProperties; /** * @ExcludeFromJavadoc * @author agentgt */ class HystrixArchaiusHelper { /** * To keep class loading minimal for those that have archaius in the classpath but choose not to use it. * @ExcludeFromJavadoc * @author agent */ private static class LazyHolder { private final static Method loadCascadedPropertiesFromResources; private final static String CONFIG_MANAGER_CLASS = "com.netflix.config.ConfigurationManager"; static { Method load = null; try { Class configManager = Class.forName(CONFIG_MANAGER_CLASS); load = configManager.getMethod("loadCascadedPropertiesFromResources", String.class); } catch (Exception e) { } loadCascadedPropertiesFromResources = load; } } /** * @ExcludeFromJavadoc */ static boolean isArchaiusV1Available() { return LazyHolder.loadCascadedPropertiesFromResources != null; } static void loadCascadedPropertiesFromResources(String name) { if (isArchaiusV1Available()) { try { LazyHolder.loadCascadedPropertiesFromResources.invoke(null, name); } catch (IllegalAccessException e) { } catch (IllegalArgumentException e) { } catch (InvocationTargetException e) { } } } /** * @ExcludeFromJavadoc */ static HystrixDynamicProperties createArchaiusDynamicProperties() { if (isArchaiusV1Available()) { loadCascadedPropertiesFromResources("hystrix-plugins"); try { Class defaultProperties = Class.forName( "com.netflix.hystrix.strategy.properties.archaius" + ".HystrixDynamicPropertiesArchaius"); return (HystrixDynamicProperties) defaultProperties.newInstance(); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } catch (InstantiationException e) { throw new RuntimeException(e); } catch (IllegalAccessException e) { throw new RuntimeException(e); } } // Fallback to System properties. return null; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy