Full Code of Netflix/Hystrix for AI

master 5ce3bc58c38e cached
470 files
3.5 MB
963.0k tokens
5261 symbols
1 requests
Download .txt
Showing preview only (3,853K chars total). Download the full file or copy to clipboard to get everything.
Repository: Netflix/Hystrix
Branch: master
Commit: 5ce3bc58c38e
Files: 470
Total size: 3.5 MB

Directory structure:
gitextract_j1n9dj5j/

├── .github/
│   └── workflows/
│       ├── nebula-ci.yml
│       ├── nebula-publish.yml
│       └── nebula-snapshot.yml
├── .gitignore
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE-2.0.txt
├── OSSMETADATA
├── README.md
├── build.gradle
├── codequality/
│   └── checkstyle.xml
├── gradle/
│   ├── javadocStyleSheet.css
│   └── wrapper/
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── hystrix-contrib/
│   ├── README.md
│   ├── hystrix-clj/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── clojure/
│   │       │       └── com/
│   │       │           └── netflix/
│   │       │               └── hystrix/
│   │       │                   └── core.clj
│   │       └── test/
│   │           └── clojure/
│   │               └── com/
│   │                   └── netflix/
│   │                       └── hystrix/
│   │                           └── core_test.clj
│   ├── hystrix-codahale-metrics-publisher/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── com/
│   │       │           └── netflix/
│   │       │               └── hystrix/
│   │       │                   └── contrib/
│   │       │                       └── codahalemetricspublisher/
│   │       │                           ├── ConfigurableCodaHaleMetricFilter.java
│   │       │                           ├── HystrixCodaHaleMetricsPublisher.java
│   │       │                           ├── HystrixCodaHaleMetricsPublisherCollapser.java
│   │       │                           ├── HystrixCodaHaleMetricsPublisherCommand.java
│   │       │                           └── HystrixCodaHaleMetricsPublisherThreadPool.java
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── netflix/
│   │                       └── hystrix/
│   │                           └── contrib/
│   │                               └── codahalemetricspublisher/
│   │                                   ├── ConfigurableCodaHaleMetricFilterTest.java
│   │                                   └── HystrixCodaHaleMetricsPublisherCommandTest.java
│   ├── hystrix-javanica/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── ajcTest/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── netflix/
│   │       │   │           └── hystrix/
│   │       │   │               └── contrib/
│   │       │   │                   └── javanica/
│   │       │   │                       └── test/
│   │       │   │                           └── aspectj/
│   │       │   │                               ├── cache/
│   │       │   │                               │   └── CacheTest.java
│   │       │   │                               ├── collapser/
│   │       │   │                               │   └── CollapserTest.java
│   │       │   │                               ├── command/
│   │       │   │                               │   └── CommandTest.java
│   │       │   │                               ├── configuration/
│   │       │   │                               │   ├── collapser/
│   │       │   │                               │   │   └── CollapserPropertiesTest.java
│   │       │   │                               │   └── command/
│   │       │   │                               │       └── CommandPropertiesTest.java
│   │       │   │                               ├── error/
│   │       │   │                               │   ├── ErrorPropagationTest.java
│   │       │   │                               │   └── ObservableErrorPropagationTest.java
│   │       │   │                               ├── fallback/
│   │       │   │                               │   └── CommandFallbackTest.java
│   │       │   │                               └── observable/
│   │       │   │                                   └── ObservableTest.java
│   │       │   └── resources/
│   │       │       ├── dummy.txt
│   │       │       └── log4j.properties
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── netflix/
│   │       │   │           └── hystrix/
│   │       │   │               └── contrib/
│   │       │   │                   └── javanica/
│   │       │   │                       ├── annotation/
│   │       │   │                       │   ├── DefaultProperties.java
│   │       │   │                       │   ├── HystrixCollapser.java
│   │       │   │                       │   ├── HystrixCommand.java
│   │       │   │                       │   ├── HystrixException.java
│   │       │   │                       │   ├── HystrixProperty.java
│   │       │   │                       │   └── ObservableExecutionMode.java
│   │       │   │                       ├── aop/
│   │       │   │                       │   └── aspectj/
│   │       │   │                       │       ├── HystrixCacheAspect.java
│   │       │   │                       │       ├── HystrixCommandAspect.java
│   │       │   │                       │       └── WeavingMode.java
│   │       │   │                       ├── cache/
│   │       │   │                       │   ├── CacheInvocationContext.java
│   │       │   │                       │   ├── CacheInvocationContextFactory.java
│   │       │   │                       │   ├── CacheInvocationParameter.java
│   │       │   │                       │   ├── DefaultHystrixGeneratedCacheKey.java
│   │       │   │                       │   ├── HystrixCacheKeyGenerator.java
│   │       │   │                       │   ├── HystrixGeneratedCacheKey.java
│   │       │   │                       │   ├── HystrixRequestCacheManager.java
│   │       │   │                       │   └── annotation/
│   │       │   │                       │       ├── CacheKey.java
│   │       │   │                       │       ├── CacheRemove.java
│   │       │   │                       │       └── CacheResult.java
│   │       │   │                       ├── collapser/
│   │       │   │                       │   └── CommandCollapser.java
│   │       │   │                       ├── command/
│   │       │   │                       │   ├── AbstractHystrixCommand.java
│   │       │   │                       │   ├── AsyncResult.java
│   │       │   │                       │   ├── BatchHystrixCommand.java
│   │       │   │                       │   ├── ClosureCommand.java
│   │       │   │                       │   ├── CommandAction.java
│   │       │   │                       │   ├── CommandActions.java
│   │       │   │                       │   ├── CommandExecutionAction.java
│   │       │   │                       │   ├── CommandExecutor.java
│   │       │   │                       │   ├── ExecutionType.java
│   │       │   │                       │   ├── GenericCommand.java
│   │       │   │                       │   ├── GenericObservableCommand.java
│   │       │   │                       │   ├── GenericSetterBuilder.java
│   │       │   │                       │   ├── HystrixCommandBuilder.java
│   │       │   │                       │   ├── HystrixCommandBuilderFactory.java
│   │       │   │                       │   ├── HystrixCommandFactory.java
│   │       │   │                       │   ├── LazyCommandExecutionAction.java
│   │       │   │                       │   ├── MetaHolder.java
│   │       │   │                       │   ├── MethodExecutionAction.java
│   │       │   │                       │   └── closure/
│   │       │   │                       │       ├── AbstractClosureFactory.java
│   │       │   │                       │       ├── AsyncClosureFactory.java
│   │       │   │                       │       ├── Closure.java
│   │       │   │                       │       └── ClosureFactory.java
│   │       │   │                       ├── conf/
│   │       │   │                       │   └── HystrixPropertiesManager.java
│   │       │   │                       ├── exception/
│   │       │   │                       │   ├── CommandActionExecutionException.java
│   │       │   │                       │   ├── ExceptionUtils.java
│   │       │   │                       │   ├── FallbackDefinitionException.java
│   │       │   │                       │   ├── FallbackInvocationException.java
│   │       │   │                       │   ├── HystrixCacheKeyGenerationException.java
│   │       │   │                       │   ├── HystrixCachingException.java
│   │       │   │                       │   └── HystrixPropertyException.java
│   │       │   │                       └── utils/
│   │       │   │                           ├── AopUtils.java
│   │       │   │                           ├── CommonUtils.java
│   │       │   │                           ├── EnvUtils.java
│   │       │   │                           ├── FallbackMethod.java
│   │       │   │                           ├── FutureDecorator.java
│   │       │   │                           ├── MethodProvider.java
│   │       │   │                           ├── TypeHelper.java
│   │       │   │                           └── ajc/
│   │       │   │                               └── AjcUtils.java
│   │       │   └── resources/
│   │       │       └── dummy.txt
│   │       └── test/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── netflix/
│   │           │           └── hystrix/
│   │           │               └── contrib/
│   │           │                   └── javanica/
│   │           │                       ├── cache/
│   │           │                       │   ├── CacheInvocationContextFactoryTest.java
│   │           │                       │   ├── CacheInvocationParameterTest.java
│   │           │                       │   └── HystrixCacheKeyGeneratorTest.java
│   │           │                       ├── command/
│   │           │                       │   └── ExecutionTypeTest.java
│   │           │                       ├── test/
│   │           │                       │   ├── common/
│   │           │                       │   │   ├── BasicHystrixTest.java
│   │           │                       │   │   ├── CommonUtils.java
│   │           │                       │   │   ├── cache/
│   │           │                       │   │   │   └── BasicCacheTest.java
│   │           │                       │   │   ├── collapser/
│   │           │                       │   │   │   └── BasicCollapserTest.java
│   │           │                       │   │   ├── command/
│   │           │                       │   │   │   └── BasicCommandTest.java
│   │           │                       │   │   ├── configuration/
│   │           │                       │   │   │   ├── collapser/
│   │           │                       │   │   │   │   └── BasicCollapserPropertiesTest.java
│   │           │                       │   │   │   ├── command/
│   │           │                       │   │   │   │   ├── BasicCommandDefaultPropertiesTest.java
│   │           │                       │   │   │   │   └── BasicCommandPropertiesTest.java
│   │           │                       │   │   │   └── fallback/
│   │           │                       │   │   │       └── BasicFallbackDefaultPropertiesTest.java
│   │           │                       │   │   ├── domain/
│   │           │                       │   │   │   ├── Domain.java
│   │           │                       │   │   │   ├── Profile.java
│   │           │                       │   │   │   └── User.java
│   │           │                       │   │   ├── error/
│   │           │                       │   │   │   ├── BasicDefaultIgnoreExceptionsTest.java
│   │           │                       │   │   │   ├── BasicDefaultRaiseHystrixExceptionsTest.java
│   │           │                       │   │   │   ├── BasicErrorPropagationTest.java
│   │           │                       │   │   │   └── BasicObservableErrorPropagationTest.java
│   │           │                       │   │   ├── fallback/
│   │           │                       │   │   │   ├── BasicCommandFallbackTest.java
│   │           │                       │   │   │   ├── BasicDefaultFallbackTest.java
│   │           │                       │   │   │   └── BasicGenericFallbackTest.java
│   │           │                       │   │   └── observable/
│   │           │                       │   │       └── BasicObservableTest.java
│   │           │                       │   └── spring/
│   │           │                       │       ├── cache/
│   │           │                       │       │   └── CacheTest.java
│   │           │                       │       ├── collapser/
│   │           │                       │       │   └── CollapserTest.java
│   │           │                       │       ├── command/
│   │           │                       │       │   ├── CommandTest.java
│   │           │                       │       │   ├── cglib/
│   │           │                       │       │   │   └── CommandCGlibProxyTest.java
│   │           │                       │       │   └── jdk/
│   │           │                       │       │       └── CommandJdkProxyTest.java
│   │           │                       │       ├── conf/
│   │           │                       │       │   ├── AopCglibConfig.java
│   │           │                       │       │   ├── AopJdkConfig.java
│   │           │                       │       │   ├── AopLoadTimeWeavingConfig.java
│   │           │                       │       │   └── SpringApplicationContext.java
│   │           │                       │       ├── configuration/
│   │           │                       │       │   ├── collapser/
│   │           │                       │       │   │   └── CollapserPropertiesTest.java
│   │           │                       │       │   ├── command/
│   │           │                       │       │   │   ├── CommandDefaultPropertiesTest.java
│   │           │                       │       │   │   └── CommandPropertiesTest.java
│   │           │                       │       │   └── fallback/
│   │           │                       │       │       └── FallbackDefaultPropertiesTest.java
│   │           │                       │       ├── error/
│   │           │                       │       │   ├── DefaultIgnoreExceptionsTest.java
│   │           │                       │       │   ├── DefaultRaiseHystrixExceptionsTest.java
│   │           │                       │       │   ├── ErrorPropagationTest.java
│   │           │                       │       │   └── ObservableErrorPropagationTest.java
│   │           │                       │       ├── fallback/
│   │           │                       │       │   ├── CommandFallbackTest.java
│   │           │                       │       │   ├── DefaultFallbackTest.java
│   │           │                       │       │   ├── GenericFallbackTest.java
│   │           │                       │       │   └── InheritedFallbackTest.java
│   │           │                       │       └── observable/
│   │           │                       │           └── ObservableTest.java
│   │           │                       └── util/
│   │           │                           ├── FallbackMethodTest.java
│   │           │                           ├── FallbackMethodValidationTest.java
│   │           │                           ├── GetMethodTest.java
│   │           │                           └── bridge/
│   │           │                               ├── Child.java
│   │           │                               ├── GenericInterface.java
│   │           │                               ├── GenericInterfaceImpl.java
│   │           │                               ├── Parent.java
│   │           │                               ├── SubChild.java
│   │           │                               └── UnbridgeMethodTest.java
│   │           └── resources/
│   │               ├── dummy.txt
│   │               └── log4j.properties
│   ├── hystrix-junit/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── com/
│   │       │           └── hystrix/
│   │       │               └── junit/
│   │       │                   └── HystrixRequestContextRule.java
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── hystrix/
│   │                       └── junit/
│   │                           └── HystrixRequestContextRuleTest.java
│   ├── hystrix-metrics-event-stream/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── com/
│   │       │           └── netflix/
│   │       │               └── hystrix/
│   │       │                   └── contrib/
│   │       │                       ├── metrics/
│   │       │                       │   └── eventstream/
│   │       │                       │       ├── HystrixMetricsPoller.java
│   │       │                       │       └── HystrixMetricsStreamServlet.java
│   │       │                       ├── requests/
│   │       │                       │   └── stream/
│   │       │                       │       ├── HystrixRequestEventsJsonStream.java
│   │       │                       │       └── HystrixRequestEventsSseServlet.java
│   │       │                       └── sample/
│   │       │                           └── stream/
│   │       │                               ├── HystrixConfigSseServlet.java
│   │       │                               ├── HystrixConfigurationJsonStream.java
│   │       │                               ├── HystrixSampleSseServlet.java
│   │       │                               ├── HystrixUtilizationJsonStream.java
│   │       │                               └── HystrixUtilizationSseServlet.java
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── netflix/
│   │                       └── hystrix/
│   │                           └── contrib/
│   │                               ├── metrics/
│   │                               │   └── eventstream/
│   │                               │       ├── HystrixMetricsPollerTest.java
│   │                               │       └── HystrixMetricsStreamServletUnitTest.java
│   │                               └── sample/
│   │                                   └── stream/
│   │                                       ├── HystrixConfigSseServletTest.java
│   │                                       └── HystrixSampleSseServletTest.java
│   ├── hystrix-metrics-event-stream-jaxrs/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── com/
│   │       │           └── netflix/
│   │       │               └── hystrix/
│   │       │                   └── contrib/
│   │       │                       └── metrics/
│   │       │                           ├── HystrixStream.java
│   │       │                           ├── HystrixStreamFeature.java
│   │       │                           ├── HystrixStreamingOutputProvider.java
│   │       │                           └── controller/
│   │       │                               ├── AbstractHystrixStreamController.java
│   │       │                               ├── HystrixConfigSseController.java
│   │       │                               ├── HystrixMetricsStreamController.java
│   │       │                               ├── HystrixRequestEventsSseController.java
│   │       │                               └── HystrixUtilizationSseController.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── netflix/
│   │           │           └── hystrix/
│   │           │               └── contrib/
│   │           │                   └── metrics/
│   │           │                       └── controller/
│   │           │                           ├── HystricsMetricsControllerTest.java
│   │           │                           ├── HystrixConfigControllerTest.java
│   │           │                           ├── HystrixUtilizationControllerTest.java
│   │           │                           └── StreamingOutputProviderTest.java
│   │           └── resources/
│   │               └── test.properties
│   ├── hystrix-network-auditor-agent/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── com/
│   │                   └── netflix/
│   │                       └── hystrix/
│   │                           └── contrib/
│   │                               └── networkauditor/
│   │                                   ├── HystrixNetworkAuditorAgent.java
│   │                                   ├── HystrixNetworkAuditorEventListener.java
│   │                                   └── NetworkClassTransform.java
│   ├── hystrix-request-servlet/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── com/
│   │                   └── netflix/
│   │                       └── hystrix/
│   │                           └── contrib/
│   │                               └── requestservlet/
│   │                                   ├── HystrixRequestContextServletFilter.java
│   │                                   ├── HystrixRequestLogViaLoggerServletFilter.java
│   │                                   └── HystrixRequestLogViaResponseHeaderServletFilter.java
│   ├── hystrix-rx-netty-metrics-stream/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── com/
│   │       │           └── netflix/
│   │       │               └── hystrix/
│   │       │                   └── contrib/
│   │       │                       └── rxnetty/
│   │       │                           └── metricsstream/
│   │       │                               └── HystrixMetricsStreamHandler.java
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── netflix/
│   │                       └── hystrix/
│   │                           ├── HystrixCommandMetricsSamples.java
│   │                           └── contrib/
│   │                               └── rxnetty/
│   │                                   └── metricsstream/
│   │                                       └── HystrixMetricsStreamHandlerTest.java
│   ├── hystrix-servo-metrics-publisher/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── com/
│   │       │           └── netflix/
│   │       │               └── hystrix/
│   │       │                   └── contrib/
│   │       │                       └── servopublisher/
│   │       │                           ├── HystrixServoMetricsPublisher.java
│   │       │                           ├── HystrixServoMetricsPublisherAbstract.java
│   │       │                           ├── HystrixServoMetricsPublisherCollapser.java
│   │       │                           ├── HystrixServoMetricsPublisherCommand.java
│   │       │                           └── HystrixServoMetricsPublisherThreadPool.java
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── netflix/
│   │                       └── hystrix/
│   │                           └── contrib/
│   │                               └── servopublisher/
│   │                                   └── HystrixServoMetricsPublisherCommandTest.java
│   └── hystrix-yammer-metrics-publisher/
│       ├── README.md
│       ├── build.gradle
│       └── src/
│           └── main/
│               └── java/
│                   └── com/
│                       └── netflix/
│                           └── hystrix/
│                               └── contrib/
│                                   └── yammermetricspublisher/
│                                       ├── HystrixYammerMetricsPublisher.java
│                                       ├── HystrixYammerMetricsPublisherCollapser.java
│                                       ├── HystrixYammerMetricsPublisherCommand.java
│                                       └── HystrixYammerMetricsPublisherThreadPool.java
├── hystrix-core/
│   ├── README.md
│   ├── build.gradle
│   └── src/
│       ├── jmh/
│       │   └── java/
│       │       └── com/
│       │           └── netflix/
│       │               └── hystrix/
│       │                   └── perf/
│       │                       ├── CollapserPerfTest.java
│       │                       ├── CommandConstructionPerfTest.java
│       │                       ├── CommandExecutionAndConcurrentMetricsReadPerfTest.java
│       │                       ├── CommandExecutionPerfTest.java
│       │                       ├── ObservableCollapserPerfTest.java
│       │                       ├── RollingMaxPerfTest.java
│       │                       ├── RollingNumberPerfTest.java
│       │                       └── RollingPercentilePerfTest.java
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── netflix/
│       │               └── hystrix/
│       │                   ├── AbstractCommand.java
│       │                   ├── ExecutionResult.java
│       │                   ├── Hystrix.java
│       │                   ├── HystrixCachedObservable.java
│       │                   ├── HystrixCircuitBreaker.java
│       │                   ├── HystrixCollapser.java
│       │                   ├── HystrixCollapserKey.java
│       │                   ├── HystrixCollapserMetrics.java
│       │                   ├── HystrixCollapserProperties.java
│       │                   ├── HystrixCommand.java
│       │                   ├── HystrixCommandGroupKey.java
│       │                   ├── HystrixCommandKey.java
│       │                   ├── HystrixCommandMetrics.java
│       │                   ├── HystrixCommandProperties.java
│       │                   ├── HystrixCommandResponseFromCache.java
│       │                   ├── HystrixCounters.java
│       │                   ├── HystrixEventType.java
│       │                   ├── HystrixExecutable.java
│       │                   ├── HystrixInvokable.java
│       │                   ├── HystrixInvokableInfo.java
│       │                   ├── HystrixKey.java
│       │                   ├── HystrixMetrics.java
│       │                   ├── HystrixObservable.java
│       │                   ├── HystrixObservableCollapser.java
│       │                   ├── HystrixObservableCommand.java
│       │                   ├── HystrixRequestCache.java
│       │                   ├── HystrixRequestLog.java
│       │                   ├── HystrixThreadPool.java
│       │                   ├── HystrixThreadPoolKey.java
│       │                   ├── HystrixThreadPoolMetrics.java
│       │                   ├── HystrixThreadPoolProperties.java
│       │                   ├── HystrixTimerThreadPoolProperties.java
│       │                   ├── collapser/
│       │                   │   ├── CollapsedRequestSubject.java
│       │                   │   ├── CollapserTimer.java
│       │                   │   ├── HystrixCollapserBridge.java
│       │                   │   ├── README.txt
│       │                   │   ├── RealCollapserTimer.java
│       │                   │   ├── RequestBatch.java
│       │                   │   ├── RequestCollapser.java
│       │                   │   └── RequestCollapserFactory.java
│       │                   ├── config/
│       │                   │   ├── HystrixCollapserConfiguration.java
│       │                   │   ├── HystrixCommandConfiguration.java
│       │                   │   ├── HystrixConfiguration.java
│       │                   │   ├── HystrixConfigurationStream.java
│       │                   │   └── HystrixThreadPoolConfiguration.java
│       │                   ├── exception/
│       │                   │   ├── ExceptionNotWrappedByHystrix.java
│       │                   │   ├── HystrixBadRequestException.java
│       │                   │   ├── HystrixRuntimeException.java
│       │                   │   ├── HystrixTimeoutException.java
│       │                   │   └── package-info.java
│       │                   ├── metric/
│       │                   │   ├── CachedValuesHistogram.java
│       │                   │   ├── HystrixCollapserEvent.java
│       │                   │   ├── HystrixCollapserEventStream.java
│       │                   │   ├── HystrixCommandCompletion.java
│       │                   │   ├── HystrixCommandCompletionStream.java
│       │                   │   ├── HystrixCommandEvent.java
│       │                   │   ├── HystrixCommandExecutionStarted.java
│       │                   │   ├── HystrixCommandStartStream.java
│       │                   │   ├── HystrixEvent.java
│       │                   │   ├── HystrixEventStream.java
│       │                   │   ├── HystrixRequestEvents.java
│       │                   │   ├── HystrixRequestEventsStream.java
│       │                   │   ├── HystrixThreadEventStream.java
│       │                   │   ├── HystrixThreadPoolCompletionStream.java
│       │                   │   ├── HystrixThreadPoolStartStream.java
│       │                   │   ├── consumer/
│       │                   │   │   ├── BucketedCounterStream.java
│       │                   │   │   ├── BucketedCumulativeCounterStream.java
│       │                   │   │   ├── BucketedRollingCounterStream.java
│       │                   │   │   ├── CumulativeCollapserEventCounterStream.java
│       │                   │   │   ├── CumulativeCommandEventCounterStream.java
│       │                   │   │   ├── CumulativeThreadPoolEventCounterStream.java
│       │                   │   │   ├── HealthCountsStream.java
│       │                   │   │   ├── HystrixDashboardStream.java
│       │                   │   │   ├── RollingCollapserBatchSizeDistributionStream.java
│       │                   │   │   ├── RollingCollapserEventCounterStream.java
│       │                   │   │   ├── RollingCommandEventCounterStream.java
│       │                   │   │   ├── RollingCommandLatencyDistributionStream.java
│       │                   │   │   ├── RollingCommandMaxConcurrencyStream.java
│       │                   │   │   ├── RollingCommandUserLatencyDistributionStream.java
│       │                   │   │   ├── RollingConcurrencyStream.java
│       │                   │   │   ├── RollingDistributionStream.java
│       │                   │   │   ├── RollingThreadPoolEventCounterStream.java
│       │                   │   │   └── RollingThreadPoolMaxConcurrencyStream.java
│       │                   │   └── sample/
│       │                   │       ├── HystrixCommandUtilization.java
│       │                   │       ├── HystrixThreadPoolUtilization.java
│       │                   │       ├── HystrixUtilization.java
│       │                   │       └── HystrixUtilizationStream.java
│       │                   ├── package-info.java
│       │                   ├── strategy/
│       │                   │   ├── HystrixArchaiusHelper.java
│       │                   │   ├── HystrixPlugins.java
│       │                   │   ├── concurrency/
│       │                   │   │   ├── HystrixConcurrencyStrategy.java
│       │                   │   │   ├── HystrixConcurrencyStrategyDefault.java
│       │                   │   │   ├── HystrixContextCallable.java
│       │                   │   │   ├── HystrixContextRunnable.java
│       │                   │   │   ├── HystrixContextScheduler.java
│       │                   │   │   ├── HystrixContextSchedulerAction.java
│       │                   │   │   ├── HystrixLifecycleForwardingRequestVariable.java
│       │                   │   │   ├── HystrixRequestContext.java
│       │                   │   │   ├── HystrixRequestVariable.java
│       │                   │   │   ├── HystrixRequestVariableDefault.java
│       │                   │   │   ├── HystrixRequestVariableHolder.java
│       │                   │   │   ├── HystrixRequestVariableLifecycle.java
│       │                   │   │   └── package-info.java
│       │                   │   ├── eventnotifier/
│       │                   │   │   ├── HystrixEventNotifier.java
│       │                   │   │   ├── HystrixEventNotifierDefault.java
│       │                   │   │   └── package-info.java
│       │                   │   ├── executionhook/
│       │                   │   │   ├── HystrixCommandExecutionHook.java
│       │                   │   │   ├── HystrixCommandExecutionHookDefault.java
│       │                   │   │   └── package-info.java
│       │                   │   ├── metrics/
│       │                   │   │   ├── HystrixMetricsPublisher.java
│       │                   │   │   ├── HystrixMetricsPublisherCollapser.java
│       │                   │   │   ├── HystrixMetricsPublisherCollapserDefault.java
│       │                   │   │   ├── HystrixMetricsPublisherCommand.java
│       │                   │   │   ├── HystrixMetricsPublisherCommandDefault.java
│       │                   │   │   ├── HystrixMetricsPublisherDefault.java
│       │                   │   │   ├── HystrixMetricsPublisherFactory.java
│       │                   │   │   ├── HystrixMetricsPublisherThreadPool.java
│       │                   │   │   ├── HystrixMetricsPublisherThreadPoolDefault.java
│       │                   │   │   └── package-info.java
│       │                   │   ├── package-info.java
│       │                   │   └── properties/
│       │                   │       ├── HystrixDynamicProperties.java
│       │                   │       ├── HystrixDynamicPropertiesSystemProperties.java
│       │                   │       ├── HystrixDynamicProperty.java
│       │                   │       ├── HystrixPropertiesChainedArchaiusProperty.java
│       │                   │       ├── HystrixPropertiesChainedProperty.java
│       │                   │       ├── HystrixPropertiesCollapserDefault.java
│       │                   │       ├── HystrixPropertiesCommandDefault.java
│       │                   │       ├── HystrixPropertiesFactory.java
│       │                   │       ├── HystrixPropertiesStrategy.java
│       │                   │       ├── HystrixPropertiesStrategyDefault.java
│       │                   │       ├── HystrixPropertiesThreadPoolDefault.java
│       │                   │       ├── HystrixPropertiesTimerThreadPoolDefault.java
│       │                   │       ├── HystrixProperty.java
│       │                   │       ├── archaius/
│       │                   │       │   └── HystrixDynamicPropertiesArchaius.java
│       │                   │       └── package-info.java
│       │                   └── util/
│       │                       ├── ExceptionThreadingUtility.java
│       │                       ├── Exceptions.java
│       │                       ├── HystrixRollingNumber.java
│       │                       ├── HystrixRollingNumberEvent.java
│       │                       ├── HystrixRollingPercentile.java
│       │                       ├── HystrixTimer.java
│       │                       ├── InternMap.java
│       │                       ├── LongAdder.java
│       │                       ├── LongMaxUpdater.java
│       │                       ├── PlatformSpecific.java
│       │                       ├── Striped64.java
│       │                       └── package-info.java
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── netflix/
│           │           └── hystrix/
│           │               ├── AbstractTestHystrixCommand.java
│           │               ├── CommonHystrixCommandTests.java
│           │               ├── HystrixCircuitBreakerTest.java
│           │               ├── HystrixCollapserTest.java
│           │               ├── HystrixCommandMetricsTest.java
│           │               ├── HystrixCommandPropertiesTest.java
│           │               ├── HystrixCommandTest.java
│           │               ├── HystrixCommandTestWithCustomConcurrencyStrategy.java
│           │               ├── HystrixCommandTimeoutConcurrencyTesting.java
│           │               ├── HystrixObservableCollapserTest.java
│           │               ├── HystrixObservableCommandTest.java
│           │               ├── HystrixRequestCacheTest.java
│           │               ├── HystrixRequestLogTest.java
│           │               ├── HystrixSubclassCommandTest.java
│           │               ├── HystrixTest.java
│           │               ├── HystrixThreadPoolMetricsTest.java
│           │               ├── HystrixThreadPoolPropertiesTest.java
│           │               ├── HystrixThreadPoolTest.java
│           │               ├── InspectableBuilder.java
│           │               ├── NotWrappedByHystrixTestException.java
│           │               ├── NotWrappedByHystrixTestRuntimeException.java
│           │               ├── TestHystrixCommand.java
│           │               ├── TestHystrixObservableCommand.java
│           │               ├── TestableExecutionHook.java
│           │               ├── UnsubscribedTasksRequestCacheTest.java
│           │               ├── collapser/
│           │               │   └── CollapsedRequestSubjectTest.java
│           │               ├── config/
│           │               │   └── HystrixConfigurationStreamTest.java
│           │               ├── metric/
│           │               │   ├── CommandStreamTest.java
│           │               │   ├── HystrixCommandCompletionStreamTest.java
│           │               │   ├── HystrixThreadEventStreamTest.java
│           │               │   ├── consumer/
│           │               │   │   ├── CumulativeCollapserEventCounterStreamTest.java
│           │               │   │   ├── CumulativeCommandEventCounterStreamTest.java
│           │               │   │   ├── CumulativeThreadPoolEventCounterStreamTest.java
│           │               │   │   ├── HealthCountsStreamTest.java
│           │               │   │   ├── HystrixDashboardStreamTest.java
│           │               │   │   ├── RollingCollapserBatchSizeDistributionStreamTest.java
│           │               │   │   ├── RollingCollapserEventCounterStreamTest.java
│           │               │   │   ├── RollingCommandEventCounterStreamTest.java
│           │               │   │   ├── RollingCommandLatencyDistributionStreamTest.java
│           │               │   │   ├── RollingCommandMaxConcurrencyStreamTest.java
│           │               │   │   ├── RollingThreadPoolEventCounterStreamTest.java
│           │               │   │   └── RollingThreadPoolMaxConcurrencyStreamTest.java
│           │               │   └── sample/
│           │               │       └── HystrixUtilizationStreamTest.java
│           │               ├── strategy/
│           │               │   ├── HystrixPluginsTest.java
│           │               │   ├── concurrency/
│           │               │   │   ├── HystrixConcurrencyStrategyTest.java
│           │               │   │   └── HystrixContextSchedulerTest.java
│           │               │   ├── metrics/
│           │               │   │   └── HystrixMetricsPublisherFactoryTest.java
│           │               │   └── properties/
│           │               │       ├── HystrixPropertiesChainedArchaiusPropertyTest.java
│           │               │       └── HystrixPropertyTest.java
│           │               └── util/
│           │                   ├── ExceptionsTest.java
│           │                   ├── HystrixRollingNumberTest.java
│           │                   ├── HystrixRollingPercentileTest.java
│           │                   └── HystrixTimerTest.java
│           └── resources/
│               └── FAKE_META_INF_SERVICES/
│                   ├── com.netflix.hystrix.strategy.properties.HystrixDynamicProperties
│                   └── com.netflix.hystrix.strategy.properties.HystrixDynamicPropertiesFail
├── hystrix-examples/
│   ├── README.md
│   ├── build.gradle
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── netflix/
│                       └── hystrix/
│                           └── examples/
│                               ├── basic/
│                               │   ├── CommandCollapserGetValueForKey.java
│                               │   ├── CommandFacadeWithPrimarySecondary.java
│                               │   ├── CommandHelloFailure.java
│                               │   ├── CommandHelloWorld.java
│                               │   ├── CommandThatFailsFast.java
│                               │   ├── CommandThatFailsSilently.java
│                               │   ├── CommandUsingRequestCache.java
│                               │   ├── CommandUsingRequestCacheInvalidation.java
│                               │   ├── CommandUsingSemaphoreIsolation.java
│                               │   ├── CommandWithFallbackViaNetwork.java
│                               │   ├── CommandWithStubbedFallback.java
│                               │   ├── ObservableCollapserGetWordForNumber.java
│                               │   └── ObservableCommandNumbersToWords.java
│                               └── demo/
│                                   ├── CreditCardAuthorizationResult.java
│                                   ├── CreditCardCommand.java
│                                   ├── GetOrderCommand.java
│                                   ├── GetPaymentInformationCommand.java
│                                   ├── GetUserAccountCommand.java
│                                   ├── HystrixCommandAsyncDemo.java
│                                   ├── HystrixCommandDemo.java
│                                   ├── Order.java
│                                   ├── PaymentInformation.java
│                                   └── UserAccount.java
├── hystrix-examples-webapp/
│   ├── README.md
│   ├── build.gradle
│   └── src/
│       └── main/
│           └── webapp/
│               ├── WEB-INF/
│               │   ├── classes/
│               │   │   └── log4j.properties
│               │   └── web.xml
│               └── index.jsp
├── hystrix-serialization/
│   ├── build.gradle
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── netflix/
│       │               └── hystrix/
│       │                   └── serial/
│       │                       ├── SerialHystrixConfiguration.java
│       │                       ├── SerialHystrixDashboardData.java
│       │                       ├── SerialHystrixMetric.java
│       │                       ├── SerialHystrixRequestEvents.java
│       │                       └── SerialHystrixUtilization.java
│       └── test/
│           └── java/
│               └── com/
│                   └── netflix/
│                       └── hystrix/
│                           └── serial/
│                               └── SerialHystrixRequestEventsTest.java
└── settings.gradle

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/workflows/nebula-ci.yml
================================================
name: "CI"
on:
  push:
    branches:
      - '*'
    tags-ignore:
      - '*'
  pull_request:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        # test against JDK 8
        java: [ 8  ]
    name: CI with Java ${{ matrix.java }}
    steps:
      - uses: actions/checkout@v6
      - name: Setup jdk
        uses: actions/setup-java@v5
        with:
          java-version: ${{ matrix.java }}
          distribution: 'zulu'
      - uses: actions/cache@v5
        id: gradle-cache
        with:
          path: ~/.gradle/caches
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/gradle/dependency-locks/*.lockfile') }}
          restore-keys: |
            - ${{ runner.os }}-gradle-
      - uses: actions/cache@v5
        id: gradle-wrapper-cache
        with:
          path: ~/.gradle/wrapper
          key: ${{ runner.os }}-gradlewrapper-${{ hashFiles('gradle/wrapper/*') }}
          restore-keys: |
            - ${{ runner.os }}-gradlewrapper-
      - name: Build with Gradle
        run: ./gradlew --info --stacktrace build
        env:
          CI_NAME: github_actions
          CI_BUILD_NUMBER: ${{ github.sha }}
          CI_BUILD_URL: 'https://github.com/${{ github.repository }}'
          CI_BRANCH: ${{ github.ref }}
          COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/nebula-publish.yml
================================================
name: "Publish candidate/release to NetflixOSS and Maven Central"
on:
  push:
    tags:
      - v*.*.*
      - v*.*.*-rc.*
  release:
    types:
      - published

jobs:
  build:
    runs-on: ubuntu-latest
    environment: Publish
    steps:
      - uses: actions/checkout@v6
      - name: Setup jdk 8
        uses: actions/setup-java@v5
        with:
          java-version: 1.8
          distribution: 'zulu'
      - uses: actions/cache@v5
        id: gradle-cache
        with:
          path: ~/.gradle/caches
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/gradle/dependency-locks/*.lockfile') }}
          restore-keys: |
            - ${{ runner.os }}-gradle-
      - uses: actions/cache@v5
        id: gradle-wrapper-cache
        with:
          path: ~/.gradle/wrapper
          key: ${{ runner.os }}-gradlewrapper-${{ hashFiles('gradle/wrapper/*') }}
          restore-keys: |
            - ${{ runner.os }}-gradlewrapper-
      - name: Publish candidate
        if: contains(github.ref, '-rc.')
        run: ./gradlew --info --stacktrace -Prelease.useLastTag=true candidate
        env:
          NETFLIX_OSS_SIGNING_KEY: ${{ secrets.ORG_SIGNING_KEY }}
          NETFLIX_OSS_SIGNING_PASSWORD: ${{ secrets.ORG_SIGNING_PASSWORD }}
          NETFLIX_OSS_REPO_USERNAME: ${{ secrets.ORG_NETFLIXOSS_USERNAME }}
          NETFLIX_OSS_REPO_PASSWORD: ${{ secrets.ORG_NETFLIXOSS_PASSWORD }}
      - name: Publish release
        if: (!contains(github.ref, '-rc.'))
        run: ./gradlew --info -Prelease.useLastTag=true final
        env:
          NETFLIX_OSS_SONATYPE_USERNAME: ${{ secrets.ORG_SONATYPE_USERNAME }}
          NETFLIX_OSS_SONATYPE_PASSWORD: ${{ secrets.ORG_SONATYPE_PASSWORD }}
          NETFLIX_OSS_SIGNING_KEY: ${{ secrets.ORG_SIGNING_KEY }}
          NETFLIX_OSS_SIGNING_PASSWORD: ${{ secrets.ORG_SIGNING_PASSWORD }}
          NETFLIX_OSS_REPO_USERNAME: ${{ secrets.ORG_NETFLIXOSS_USERNAME }}
          NETFLIX_OSS_REPO_PASSWORD: ${{ secrets.ORG_NETFLIXOSS_PASSWORD }}


================================================
FILE: .github/workflows/nebula-snapshot.yml
================================================
name: "Publish snapshot to NetflixOSS and Maven Central"

on:
  push:
    branches:
      - master

jobs:
  build:
    runs-on: ubuntu-latest
    environment: Publish
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: Set up JDK
        uses: actions/setup-java@v5
        with:
          java-version: 8
          distribution: 'zulu'
      - uses: actions/cache@v5
        id: gradle-cache
        with:
          path: |
            ~/.gradle/caches
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
      - uses: actions/cache@v5
        id: gradle-wrapper-cache
        with:
          path: |
            ~/.gradle/wrapper
          key: ${{ runner.os }}-gradlewrapper-${{ hashFiles('gradle/wrapper/*') }}
      - name: Build
        run: ./gradlew build snapshot
        env:
          NETFLIX_OSS_SIGNING_KEY: ${{ secrets.ORG_SIGNING_KEY }}
          NETFLIX_OSS_SIGNING_PASSWORD: ${{ secrets.ORG_SIGNING_PASSWORD }}
          NETFLIX_OSS_REPO_USERNAME: ${{ secrets.ORG_NETFLIXOSS_USERNAME }}
          NETFLIX_OSS_REPO_PASSWORD: ${{ secrets.ORG_NETFLIXOSS_PASSWORD }}


================================================
FILE: .gitignore
================================================
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so

# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip

# Logs and databases #
######################
*.log

# OS generated files #
######################
.DS_Store*
ehthumbs.db
Icon?
Thumbs.db

# Editor Files #
################
*~
*.swp

# Gradle Files #
################
.gradle
.m2

# Build output directies
target/
build/

# IntelliJ specific files/directories
out
.idea
*.ipr
*.iws
*.iml
atlassian-ide-plugin.xml

# Eclipse specific files/directories
.classpath
.project
.settings
.metadata
bin/

# NetBeans specific files/directories
.nbattrs


================================================
FILE: CHANGELOG.md
================================================
# Hystrix Releases #

### Version 1.5.13 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.13%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.13/)) ###

- [Pull 1621](https://github.com/Netflix/Hystrix/pull/1621) Fixed bug where an unsubscription of a command in half-open state leaves circuit permanently open
- [Pull 1605](https://github.com/Netflix/Hystrix/pull/1605) Change return value on unsubscribe to Observable.empty().  Thanks @atoulme !
- [Pull 1615](https://github.com/Netflix/Hystrix/pull/1615) Updated Gradle to version 4.0. Thanks @wlsc !
- [Pull 1616](https://github.com/Netflix/Hystrix/pull/1616) Javanica: Wrong hystrix event type for fallback missing.  Thanks @dmgcodevil  !
- [Pull 1606](https://github.com/Netflix/Hystrix/pull/1606) Escape user entered input to avoid HTML injection. This fixes #1456.  Thanks @atoulme  !
- [Pull 1595](https://github.com/Netflix/Hystrix/pull/1595) Possibility to add custom root node for command and thread pool metrics.  Thanks @dstoklosa !
- [Pull 1587](https://github.com/Netflix/Hystrix/pull/1587) Throw IllegalStateException if request cache is not available when clearing.  Thanks @jack-kerouac !

### Version 1.5.12 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.12%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.12/)) ###

- [Pull 1586](https://github.com/Netflix/Hystrix/pull/1586) Start streams for CodaHale metric consumer, ot get it actually working
- [Pull 1584](https://github.com/Netflix/Hystrix/pull/1584) Javanica: Wire up allowMaximumSizeToDivergeFromCoreSize thread-pool property
- [Pull 1585](https://github.com/Netflix/Hystrix/pull/1585) Fix actualMaximumSize Codahale threadpool metric calculation
- [Pull 1567](https://github.com/Netflix/Hystrix/pull/1567) Fix interaction between ExceptionNotWrappedInHystrix and HystrixBadRequestException.  Thanks @gagoman !
- [Pull 1576](https://github.com/Netflix/Hystrix/pull/1576) Fix permyriad calculation for 99.9p latency
- [Pull 1524](https://github.com/Netflix/Hystrix/pull/1524) Javanica: Support rx.Single or rx.Completable types.  Thanks @dmgcodevil !
- [Pull 1574](https://github.com/Netflix/Hystrix/pull/1574) Add unit-test for using a Completable in a HystrixObservableCommand
- [Pull 1572](https://github.com/Netflix/Hystrix/pull/1572) Javanica: Wire up maximumSize thread-pool property.  Thanks @dmgcodevil !
- [Pull 1573](https://github.com/Netflix/Hystrix/pull/1573) Javanica: Don't get cause from HystrixBadRequestException if null.  Thanks @dmgcodevil !
- [Pull 1570](https://github.com/Netflix/Hystrix/pull/1570) Only create HystrixContextRunnable in timeout case lazily, when timeout is fired
- [Pull 1568](https://github.com/Netflix/Hystrix/pull/1568) Made circuit-opening happen in background thread, powered by metric streams
- [Pull 1561](https://github.com/Netflix/Hystrix/pull/1561) Add error-handling for unexpected errors to servlet writes in metric sample servlet
- [Pull 1556](https://github.com/Netflix/Hystrix/pull/1556) Typo fix in Javanica fallback log. Thanks @Thunderforge !
- [Pull 1551](https://github.com/Netflix/Hystrix/pull/1551) Match colors in multiple circuit-breaker status case.  Thanks @eunmin !
- [Pull 1547](https://github.com/Netflix/Hystrix/pull/1547) Support multiple circuit-breaker statuses in dashboard against aggregated data.  Thanks @eunmin !
- [Pull 1539](https://github.com/Netflix/Hystrix/pull/1539) Fix unintentionally shared variable in hystrix-metrics-event-stream-jaxrs.  Thanks @justinjose28 !
- [Pull 1535](https://github.com/Netflix/Hystrix/pull/1535) Move markCommandExecution after markEvent SUCCESS to allow eventNotifier to have full context of execution.  Thanks @bltb!

### Version 1.5.11 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.11%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.11/)) ###

- [Pull 1531](https://github.com/Netflix/Hystrix/pull/1531) Add assertion to dashboard receiving metrics data.  Thanks @lholmquist !
- [Pull 1529](https://github.com/Netflix/Hystrix/pull/1529) Remove commons-collection as dependency of hystrix-javanica.  Thanks @Psynbiotik !
- [Pull 1532](https://github.com/Netflix/Hystrix/pull/1532) Move metrics subscription out of synchronized block in HealthCountsStream to limit time spent holding a lock.
- [Pull 1513](https://github.com/Netflix/Hystrix/pull/1513) Fixed COMMAND_MAX_ACTIVE metrics for Coda Hale metrics.  Thanks @chrisgray !
- [Pull 1515](https://github.com/Netflix/Hystrix/pull/1515) Fixed comment typo in HystrixCommand.  Thanks @kmkr !
- [Pull 1512](https://github.com/Netflix/Hystrix/pull/1512) Upgrade codahale metrics-core to 3.2.2.  Thanks @chrisgray !
- [Pull 1507](https://github.com/Netflix/Hystrix/pull/1507) README typo fix. Thanks @PiperChester !
- [Pull 1503](https://github.com/Netflix/Hystrix/pull/1503) Allow BadRequest exceptions to not be attached if user explicitly wants unwrapped exceptions.  Thanks @mNantern !
- [Pull 1502](https://github.com/Netflix/Hystrix/pull/1502) Remove useless code in HystrixConcurrencyStrategy.  Thanks @zzzvvvxxxd !
- [Pull 1495](https://github.com/Netflix/Hystrix/pull/1495) Add hystrix-metrics-event-stream-jaxrs.  Thanks @justinjose28 !
- [Pull 1498](https://github.com/Netflix/Hystrix/pull/1498) Upgrade Servo to 0.10.1 in hystrix-servo-metrics-publisher

### Version 1.5.10 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.10%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.10/)) ###

- [Pull 1489](https://github.com/Netflix/Hystrix/pull/1489) Added rollingMaxConcurrentExecutionCount to CodaHale metrics publisher.  Thanks @LuboVarga !
- [Pull 1481](https://github.com/Netflix/Hystrix/pull/1481) Add sanity checking to HystrixCommandAspect to debug unreproducible cases.  Thanks @dmgcodevil !
- [Pull 1482](https://github.com/Netflix/Hystrix/pull/1482) Make it possible to re-use fallback methods in Javanica.  (Addresses #1446).  Thanks @dmgcodevil !
- [Pull 1488](https://github.com/Netflix/Hystrix/pull/1488) Fix spelling mistakes in Javanica docs.  Thanks @bltb!
- [Pull 1475](https://github.com/Netflix/Hystrix/pull/1475) Added example usage of CodaHale metrics publisher.  Thanks @LuboVarga !
- [Pull 1469](https://github.com/Netflix/Hystrix/pull/1469) Fix possible concurrency bug.  Thanks @petercla! 
- [Pull 1453](https://github.com/Netflix/Hystrix/pull/1453) Add Javanica unit test for NotWrapped checked exception.  Thanks @tbvh!

### Version 1.5.9 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.9%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.9/)) ###

* [Pull 1423](https://github.com/Netflix/Hystrix/pull/1423) Write correct value to error log when maximumSize < coreSize.  Thanks @diver-in-sky!
* [Pull 1412](https://github.com/Netflix/Hystrix/pull/1412) Javanica: raiseHystrixExceptions support for Observables.  Thanks @michaelcowan !
* [Pull 1441](https://github.com/Netflix/Hystrix/pull/1441) Use Gretty Gradle plugin for hystrix-examples-webapp 
* [Pull 1442](https://github.com/Netflix/Hystrix/pull/1442) Fix handling of client-connect/disconnect never getting released if it occurs before metrics start getting produced by hystrix-metrics-event-stream.  Thanks for review, @mattnelson!
* [Pull 1444](https://github.com/Netflix/Hystrix/pull/1444) More efficient server thread release in hystrix-metrics-event-stream.  Thanks @mattnelson for the suggestion!
* [Pull 1443](https://github.com/Netflix/Hystrix/pull/1443) Use Gretty Gradle plugin for hystrix-dashboard
* [Pull 1445](https://github.com/Netflix/Hystrix/pull/1445) Add missing onUnsubscribe hook to execution hooks
* [Pull 1414](https://github.com/Netflix/Hystrix/pull/1414) Introduce NotWrappedByHystrix exception type to indicate Hystrix should propagate it back without wrapping in a HystrixRuntimeException.  Thanks @tbvh!
* [Pull 1448](https://github.com/Netflix/Hystrix/pull/1448) Remove dependency on jackson-cbor in hystrix-serialization.  This belongs in a different module.  Existing public methods now throw an exception.
* [Pull 1435](https://github.com/Netflix/Hystrix/pull/1435) Allow the property `allowMaximumSixeToDivergeFromCoreSize` to be set dynamically.  Thanks @ptab!
* [Pull 1447](https://github.com/Netflix/Hystrix/pull/1447) Allow the property `allowMaximumSixeToDivergeFromCoreSize` to be set dynamically. 
* [Pull 1449](https://github.com/Netflix/Hystrix/pull/1435) Introduce a distinction between `maximumSize` (configured value) and `actualMaximumSize` (value used to set the thread pool maximum size).  Publish both values to make understanding configuration more straightforward.  Thanks @ptab!

### Version 1.5.8 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.8%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.8/)) ###

* [Pull 1419](https://github.com/Netflix/Hystrix/pull/1419) When user has not opted in to letting core/maximum threadpools diverge, ensure dynamic updates to coreSize apply to both
* [Pull 1415](https://github.com/Netflix/Hystrix/pull/1415) Fix spelling mistake in comments.  Thanks @starlight36 !

### Version 1.5.7 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.7%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.7/)) ###

* [Pull 1408](https://github.com/Netflix/Hystrix/pull/1408) Fix Clojure key name for collapsing.  Thanks @crimeminister !
* [Pull 1407](https://github.com/Netflix/Hystrix/pull/1407) Reset percentile snapshot whenever all HystrixRollingPercentile buckets are empty
* [Pull 1397](https://github.com/Netflix/Hystrix/pull/1397) Javanica: Add option to raise HystrixRuntimeException
* [Pull 1399](https://github.com/Netflix/Hystrix/pull/1399) Add configuration to make users opt-in to allowing coreSize and maximumSize to diverge.  See config [here] (https://github.com/Netflix/Hystrix/wiki/Configuration#allowMaximumSizeToDivergeFromCoreSize)
* [Pull 1396](https://github.com/Netflix/Hystrix/pull/1396) If command is unsubscribed before any work is done, return Observable.empty().  
* [Pull 1393](https://github.com/Netflix/Hystrix/pull/1393) Javanica: Performance improvement by caching weavingMode boolean.  Thanks @ricardoletgo !
* [Pull 1389](https://github.com/Netflix/Hystrix/pull/1389) Javanica: Send fallback exception to client instead of primary command.  Thanks @dmgcodevil !
* [Pull 1385](https://github.com/Netflix/Hystrix/pull/1385) Bump jmh Gradle plugin to 0.3.1.  Thanks @monkey-mas!
* [Pull 1382](https://github.com/Netflix/Hystrix/pull/1382) Bump jmh to 1.15.  Thanks @monkey-mas!
* [Pull 1380](https://github.com/Netflix/Hystrix/pull/1380) Add jmh test for open-circuit case
* [Pull 1376](https://github.com/Netflix/Hystrix/pull/1376) Clean up documentation around thread keep-alive.  Thanks @bitb !
* [Pull 1375](https://github.com/Netflix/Hystrix/pull/1375) Remove cancelled tasks from threadpool queue
* [Pull 1371](https://github.com/Netflix/Hystrix/pull/1371) Allow core and maximum size of threadpools to diverge.

### Version 1.5.6 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.6%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.6/)) ###

* [Pull 1368](https://github.com/Netflix/Hystrix/pull/1368) Upgrade jmh to 1.14.1
* [Pull 1365](https://github.com/Netflix/Hystrix/pull/1365) Upgrade to Gradle 3.1 / Nebula 3.4.0
* [Pull 1364](https://github.com/Netflix/Hystrix/pull/1364) Fix backwards-incompatibility introduced in #1356
* [Pull 1363](https://github.com/Netflix/Hystrix/pull/1363) Fix metrics regression where thread pool objects without any executions were being sent out in metrics streams
* [Pull 1360](https://github.com/Netflix/Hystrix/pull/1360) Convert command-construction jmh test to single-shot
* [Pull 1356](https://github.com/Netflix/Hystrix/pull/1356) Add better AppEngine detection mechanism that allows GAE-Flexible to work like any other JVM.  Thanks @cadef!
* [Pull 1353](https://github.com/Netflix/Hystrix/pull/1353) Upgrade to RxJava 1.2.0
* [Pull 1351](https://github.com/Netflix/Hystrix/pull/1351) Remove histogram object-pooling
* [Pull 1336](https://github.com/Netflix/Hystrix/pull/1336) Overall Dashboard UX improvements.  Thanks @kennedyoliveira !
* [Pull 1320](https://github.com/Netflix/Hystrix/pull/1320) Adding example of HystrixObservableCollapser.  Thanks @zsoltm !
* [Pull 1341](https://github.com/Netflix/Hystrix/pull/1341) Javanica fix for handling commands with generic types.  Thanks @dmgcodevil ! 
* [Pull 1340](https://github.com/Netflix/Hystrix/pull/1340) Refactor how commands determine if fallbacks are user-defined

### Version 1.5.5 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.5%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.5/)) ###

* [Pull 1323](https://github.com/Netflix/Hystrix/pull/1323) Remove ReactiveSocket modules and change Jenkins release process back to JDK7

### Version 1.5.4 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.4%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.4/)) ###

* [Pull 1308](https://github.com/Netflix/Hystrix/pull/1308) Update jmh to 1.13
* [Pull 1310](https://github.com/Netflix/Hystrix/pull/1310) Update nebula.netflixoss Gradle plugin to 3.3.0
* [Pull 1309](https://github.com/Netflix/Hystrix/pull/1309) Update HdrHistogram to 2.1.9
* [Pull 1307](https://github.com/Netflix/Hystrix/pull/1307) Update RxJava to 1.1.8
* [Pull 1306](https://github.com/Netflix/Hystrix/pull/1306) Update Clojure to 1.7.0 and nebula-clojure-plugin to 4.0.1
* [Pull 1305](https://github.com/Netflix/Hystrix/pull/1305) Update Gradle to 2.14
* [Pull 1304](https://github.com/Netflix/Hystrix/pull/1304) Make all metrics streams multicast.
* [Pull 1303](https://github.com/Netflix/Hystrix/pull/1303) Update RxNetty to 0.4.17
* [Pull 1302](https://github.com/Netflix/Hystrix/pull/1302) Manual merge of #1265.  Interrupt execution thread on HystrixCommand#queue()#cancel(true).  Thanks @mmanciop!
* [Pull 1300](https://github.com/Netflix/Hystrix/pull/1300) Update all completion state for scalar command in the onNext handling
* [Pull 1294](https://github.com/Netflix/Hystrix/pull/1294) Make sure that threadpools shutdown when asked to.  Thanks @thesmith!
* [Pull 1297](https://github.com/Netflix/Hystrix/pull/1297) Fix typo in README.  Thanks @ManishMaheshwari!
* [Pull 1295](https://github.com/Netflix/Hystrix/pull/1295) Fix typo in README.  Thanks @C-Otto!
* [Pull 1273](https://github.com/Netflix/Hystrix/pull/1273) Corrected ignoreExceptions for Observable-returning methods.  Thanks @jbojar!
* [Pull 1197](https://github.com/Netflix/Hystrix/pull/1197) Eureka integration for Hystrix dashboard.  Thanks @diegopacheco!
* [Pull 1278](https://github.com/Netflix/Hystrix/pull/1278) Prevent duplicate arguments from getting into a single collapser RequestBatch
* [Pull 1277](https://github.com/Netflix/Hystrix/pull/1277) Make HystrixCollapser.toObservable lazy
* [Pull 1276](https://github.com/Netflix/Hystrix/pull/1276) Make HystrixObservableCollapser.toObservable lazy
* [Pull 1271](https://github.com/Netflix/Hystrix/pull/1271) Fix race condition in all of the Hystrix*Key.asKey methods.  Thanks @daniilguit!
* [Pull 1274](https://github.com/Netflix/Hystrix/pull/1274) Make AbstractCommand.toObservable lazy
* [Pull 1270](https://github.com/Netflix/Hystrix/pull/1270) Fix deprecation warnings by upgrading RxJava and Netty usages
* [Pull 1269](https://github.com/Netflix/Hystrix/pull/1269) Rework hystrix-data-stream module to just include serialization logic
* [Pull 1259](https://github.com/Netflix/Hystrix/pull/1259) Javanica: added DefaultProperties annotation.  Thanks @dmgcodevil!
* [Pull 1261](https://github.com/Netflix/Hystrix/pull/1261) Add toString() to key implementations.  Thanks @mebigfatguy!
* [Pull 1258](https://github.com/Netflix/Hystrix/pull/1258) Javanica: Change getMethod to recursively search in parent types.  Thanks @dmgcodevil!
* [Pull 1255](https://github.com/Netflix/Hystrix/pull/1255) Introduce intermediate data streams module [LATER REVERTED - SEE #1269 ABOVE]
* [Pull 1254](https://github.com/Netflix/Hystrix/pull/1254) Allow multiple consumers of sample data to only trigger work once and share data
* [Pull 1251](https://github.com/Netflix/Hystrix/pull/1251) Fix Dashboard RPS
* [Pull 1247](https://github.com/Netflix/Hystrix/pull/1247) Call thread pool size setters only when pool size changes.  Thanks @yanglifan!
* [Pull 1246](https://github.com/Netflix/Hystrix/pull/1246) Move HystrixDashboardStream to hystrix-core
* [Pull 1244](https://github.com/Netflix/Hystrix/pull/1244) Fix handling of invalid weavingMode property.  Thanks @mebigfatguy!
* [Pull 1238](https://github.com/Netflix/Hystrix/pull/1238) Local variable caching fixups.  Thanks @mebigfatguy!
* [Pull 1236](https://github.com/Netflix/Hystrix/pull/1236) ReactiveSocket metrics client/server
* [Pull 1235](https://github.com/Netflix/Hystrix/pull/1235) Add demo that composes async command executions
* [Pull 1231](https://github.com/Netflix/Hystrix/pull/1231) Make inner classes static where possible, and remove outer class reference.  Thanks @mebigfatguy!
* [Pull 1229](https://github.com/Netflix/Hystrix/pull/1229) Remove dead Setter class from RequestCollapserFactory. Thanks @mebigfatguy!
* [Pull 1225](https://github.com/Netflix/Hystrix/pull/1225) Remove unused thunk from HystrixCommandMetrics.  Thanks @mebigfatguy!
* [Pull 1224](https://github.com/Netflix/Hystrix/pull/1224) Remove dead field from RequestCollapserFactory.  Thanks @mebigfatguy!
* [Pull 1221](https://github.com/Netflix/Hystrix/pull/1221) Improve grammar in comments and log messages.  Thanks @dysmento !
* [Pull 1211](https://github.com/Netflix/Hystrix/pull/1211) Add ReactiveSocket metrics stream.  Thanks @robertroeser!
* [Pull 1219](https://github.com/Netflix/Hystrix/pull/1219) Move map lookup outside of loop in collapser code.  Thanks @mebigfatguy!

### Version 1.5.3 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.3%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.3/)) ###

The largest new feature in this release is that cancellation is now supported.  Either calling `cancel()` on the result of `HystrixCommand.queue()` or `unsubscribe()` on the result of `HystrixCommand.toObservable().subscribe()` will propagate the cancellation to the underlying work.

* [Pull 1218](https://github.com/Netflix/Hystrix/pull/1218) Fixing unsubscription races by modeling explicit FSMs for command and thread execution state
* [Pull 1217](https://github.com/Netflix/Hystrix/pull/1217) Remove dead code in RequestEventsStream.  Thanks @mebigfatguy!
* [Pull 1214](https://github.com/Netflix/Hystrix/pull/1214) Fix Servo metric calculation.  Bug identified by @AchimWe.
* [Pull 1213](https://github.com/Netflix/Hystrix/pull/1213) Use parameterized logging.  Thanks @mebigfatguy!
* [Pull 1212](https://github.com/Netflix/Hystrix/pull/1212) Correct logging contexts.  Thanks @mebigfatguy!
* [Pull 1210](https://github.com/Netflix/Hystrix/pull/1210) Javanica: code optimization to fetch parameters only if needed.  Thanks @mebigfatguy!
* [Pull 1209](https://github.com/Netflix/Hystrix/pull/1209) Fixed thread-state cleanup to happen on unsubscribe or terminate
* [Pull 1208](https://github.com/Netflix/Hystrix/pull/1208) Reorganization of HystrixCollapser/HystrixObservableCollapser logic to support cancellation
* [Pull 1207](https://github.com/Netflix/Hystrix/pull/1207) Fix command concurrency metric in light of cancellation
* [Pull 1206](https://github.com/Netflix/Hystrix/pull/1206) Added subscribeOn to HystrixObservableCommand in JMH test to make it async
* [Pull 1204](https://github.com/Netflix/Hystrix/pull/1204) Reorganization of AbstractCommand logic to support cancellation
* [Pull 1198](https://github.com/Netflix/Hystrix/pull/1198) Release semaphores upon cancellation.
* [Pull 1194](https://github.com/Netflix/Hystrix/pull/1194) Improved tests readability a bit by letting exceptions propagate out.  Thanks @caarlos0!
* [Pull 1193](https://github.com/Netflix/Hystrix/pull/1193) More tests using HystrixRequestContext rule.  Thanks @caarlos0!
* [Pull 1181](https://github.com/Netflix/Hystrix/pull/1181) Deprecate getter and setter for unused collapsingEnabled property in Collapser Setter.  Thanks @nluchs!
* [Pull 1184](https://github.com/Netflix/Hystrix/pull/1184) migrating all hystrix-javanica tests to hystrix-junit.  Thanks @caarlos0!
* [Pull 1147](https://github.com/Netflix/Hystrix/pull/1147) Added hystrix-junit.  Thanks @caarlos0!

### Version 1.4.26 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.26%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.26/)) ###

* [Pull 1169](https://github.com/Netflix/Hystrix/pull/1169) Javanica: Switch hystrix-javanica to use getExecutionException, which returns Exception object even when command is not executed

### Version 1.5.2 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.2%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.2/)) ###

* [Pull 1171](https://github.com/Netflix/Hystrix/pull/1171) Do all histogram latency summarization upfront to minimize storage/operations on them
* [Pull 1167](https://github.com/Netflix/Hystrix/pull/1167) Javanica: Switch hystrix-javanica to use getExecutionException, which returns Exception object even when command is not executed
* [Pull 1157](https://github.com/Netflix/Hystrix/pull/1157) Make HystrixMetricsPoller a daemon thread
* [Pull 1154](https://github.com/Netflix/Hystrix/pull/1154) Remove more unused methods
* [Pull 1151](https://github.com/Netflix/Hystrix/pull/1151) Remove unused method in HystrixCollapserProperties
* [Pull 1149](https://github.com/Netflix/Hystrix/pull/1149) Make queue size of MetricJsonListener configurable
* [Pull 1124](https://github.com/Netflix/Hystrix/pull/1124) Turning down loglevels of metrics streams
* [Pull 1120](https://github.com/Netflix/Hystrix/pull/1120) Making the HystrixTimeoutException instance per-command, not static

### Version 1.4.25 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.25%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.25/)) ###

* [Pull 1114](https://github.com/Netflix/Hystrix/pull/1114) Make queue size of MetricsJsonListener configurable
* [Pull 1121](https://github.com/Netflix/Hystrix/pull/1121) HystrixTimeoutException is non-static for better stacktrace

Artifacts: [Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.25%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.25/)

### Version 1.5.1 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.1%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.1/)) ###

* [Pull 1118](https://github.com/Netflix/Hystrix/pull/1118) Revert #1075.  Return userThreadLatency to metrics, mostly to maintain format compatibility with data streams from 1.4.x
* [Pull 1116](https://github.com/Netflix/Hystrix/pull/1116) Fix references to underscore.js over HTTPS
* [Pull 1115](https://github.com/Netflix/Hystrix/pull/1115) Fix LICENSE reference in README
* [Pull 1111](https://github.com/Netflix/Hystrix/pull/1111) HystrixRequestContext implements Closeable

### Version 1.5.0 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.0%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.0/)) ###

The general premise of this release is to make metrics more flexible within Hystrix. See https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring for a deep dive on the new metrics architecture.  The high-level approach is to model metrics directly as a stream, so that Hystrix metrics consumers may aggregate the metrics as they wish. In 1.4.x and prior releases, `HystrixRollingNumber` and `HystrixRollingPercentile` were used to store aggregate command counters and command latencies, respectively.  These are no longer used.  

Instead, new concepts like `HystrixCommandCompletionStream` are present.  These may be consumed by a rolling, summarizing data structure (like `HystrixRollingNumber`), or they may be consumed without any aggregation at all.  This should allow for all metrics processing to move off-box, if you desire to add that piece to your infrastructure.

This version should be backwards-compatible with v1.4.x.  If you find otherwise, please submit a Hystrix issue as it was unintentional.

This version also introduces new metric streams: ([configuration](https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring#configuration-stream) and [Utilization](https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring#utilization-stream)) have been added, along with a [request-scoped stream](https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring#request-streams).

Archaius is now a soft-dependency of Hystrix, so you can supply your own configuration mechanism.

Some known semantic changes:
* Latencies for timeouts and bad-requests are now included in command latency
* Latency distribution percentiles are now calculated with HdrHistogram library and don't have a max number of elements in the distribution
* Previously, HealthCounts data allowed reads to see the value in the "hot" bucket.  (the one currently being written to).  That does not happen anymore - only full read-only buckets are available for reads.
* Bucket rolling now happens via Rx background threads instead of unlucky Hystrix command threads.  This makes command performance more predictable.  User-thread latency is now practically indistinguishable from command latency.

### Version 1.4.24 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.24%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.24/)) ###

* [Pull 1113](https://github.com/Netflix/Hystrix/pull/1113) Make HystrixRequestContext implement Closeable
* [Pull 1112](https://github.com/Netflix/Hystrix/pull/1112) Upgrade to latest Nebula Gradle plugin
* [Pull 1110](https://github.com/Netflix/Hystrix/pull/1110) Upgrade to RxJava 1.1.1
* [Pull 1108](https://github.com/Netflix/Hystrix/pull/1108) Javanica HystrixRequestCacheManager should use the concurrency strategy 

### Version 1.5.0-rc.5 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.0-rc.5%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.0-rc.5/)) ###

This version does not have any known bugs, but is not recommended for production use until 1.5.0.

Included changes: 

* [Pull 1102](https://github.com/Netflix/Hystrix/pull/1102) Bugfix to null check on HystrixRequestCache context

### Version 1.5.0-rc.4 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.0-rc.4%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.0-rc.4/)) ###

This version does not have any known bugs, but is not recommended for production use until 1.5.0.

Included changes: 

* [Pull 1099](https://github.com/Netflix/Hystrix/pull/1099) Bugfix to get Hystrix dashboard operational again

### Version 1.5.0-rc.3 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.0-rc.3%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.0-rc.3/)) ###

This version does not have any known bugs, but is not recommended for production use until 1.5.0.

A few dependency bumps, but the major change here is that Archaius is now a soft dependency of hystrix-core.  Thanks to @agentgt for the PR!. Thanks also to @caarlos0 for the NPE fix in HystrixRequestCache.
 
Included changes: 

* [Pull 1079](https://github.com/Netflix/Hystrix/pull/1079) Remove dynamic config lookup in HystrixThreadPool
* [Pull 1081](https://github.com/Netflix/Hystrix/pull/1081) Cleanup hystrix-javanica BadRequest docs
* [Pull 1093](https://github.com/Netflix/Hystrix/pull/1093) Fix NPE in HystrixRequestCache when HystrixRequestContext not initialized
* [Pull 1083](https://github.com/Netflix/Hystrix/pull/1083) Made Archaius a soft dependency of hystrix-core.  It is now possible to run without Archaius and rely on j.u.l.ServiceLoader or system properties only
* [Pull 1095](https://github.com/Netflix/Hystrix/pull/1095) Upgrade to Nebula netflixoss 3.2.3
* [Pull 1096](https://github.com/Netflix/Hystrix/pull/1096) Upgrade to RxJava 1.1.1
* [Pull 1097](https://github.com/Netflix/Hystrix/pull/1097) Fix POM generation by excluding WAR artifacts

### Version 1.5.0-rc.2 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.0-rc.2%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.0-rc.2/)) ###

This version does not have any known bugs, but is not recommended for production use until 1.5.0.

This is mostly a new set of features building on top of Release Candidate 1.  Specifically, some sample streams ([Configuration](https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring#configuration-stream) and [Utilization](https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring#utilization-stream)) have been added, along with a [request-scoped stream](https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring#request-streams).
 
Included changes: 

* [Pull 1050](https://github.com/Netflix/Hystrix/pull/1050) Modular command construction
* [Pull 1061](https://github.com/Netflix/Hystrix/pull/1061) Sample config/utilization streams, and request-scoped streams
* [Pull 1064](https://github.com/Netflix/Hystrix/pull/1064) Safer enum references in case mismatched Hystrix jars are deployed together
* [Pull 1066](https://github.com/Netflix/Hystrix/pull/1066) Layer of abstraction on top of ThreadFactory, so AppEngine can run Hystrix
* [Pull 1067](https://github.com/Netflix/Hystrix/pull/1067) Decouple sample stream JSON from servlets
* [Pull 1067](https://github.com/Netflix/Hystrix/pull/1068) Decouple request-scoped stream JSON from servlets
* [Pull 1075](https://github.com/Netflix/Hystrix/pull/1075) Deprecate userThreadLatency, since it is practically identical to executionLatency now

### Version 1.5.0-rc.1 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.0-rc.1%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.0-rc.1/)) ###

This version does not have any known bugs, but *is not* recommended for production use until 1.5.0.

The general premise of this release is to make metrics more flexible within Hystrix. See https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring for a deep dive on the new metrics architecture.  The high-level view is to make the metrics primitive a stream instead of an aggregate.  In 1.4.x and prior releases, `HystrixRollingNumber` and `HystrixRollingPercentile` were used to store aggregate command counters and command latencies, respectively.  These are no longer used.  

Instead, new concepts like `HystrixCommandCompletionStream` are present.  These may be consumed by a rolling, summarizing data structure (like `HystrixRollingNumber`), or they may be consumed without any aggregation at all.  This should allow for all metrics processing to move off-box, if you desire to add that piece to your infrastructure.

This version should be backwards-compatible with v1.4.x.  If you find otherwise, please submit a Hystrix issue as it was unintentional.

Some known semantic changes:
* Latencies for timeouts and bad-requests are now included in command latency
* Latency distribution percentiles are now calculated with HdrHistogram library and don't have a max number of elements in the distribution
* Previously, HealthCounts data allowed reads to see the value in the "hot" bucket.  (the one currently being written to).  That does not happen anymore - only full read-only buckets are available for reads.
* Bucket rolling now happens via Rx background threads instead of unlucky Hystrix command threads.  This makes command performance more predictable.  User-thread latency is now practically indistinguishable from command latency.

Artifacts: [Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.5.0-rc.1%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.5.0-rc.1/)

### Version 1.4.23 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.23%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.23/)) ###

* [Pull 1032](https://github.com/Netflix/Hystrix/pull/1032) Make number of timer threads a piece of config (with Archaius integration)
* [Pull 1045](https://github.com/Netflix/Hystrix/pull/1045) Documentation cleanup in HystrixCommandProperties
* [Pull 1044](https://github.com/Netflix/Hystrix/pull/1044) Add request context and HystrixObservableCommand to command execution JMH tests
* [Pull 1043](https://github.com/Netflix/Hystrix/pull/1043) HystrixObservableCollapser emits error to each submitter when batch command encounters error
* [Pull 1039](https://github.com/Netflix/Hystrix/pull/1039) Use thread-safe data structure for storing list of command keys per-thread
* [Pull 1036](https://github.com/Netflix/Hystrix/pull/1036) Remove redundant ConcurrentHashMap read when getting name from command class
* [Pull 1035](https://github.com/Netflix/Hystrix/pull/1035) Rename command execution JMH tests
* [Pull 1034](https://github.com/Netflix/Hystrix/pull/1034) Remove SHORT_CIRCUITED events from health counts calculation 
* [Pull 1027](https://github.com/Netflix/Hystrix/pull/1027) Fix typo in hystrix-examples-webapp documentation

### Version 1.4.22 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.22%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.22/)) ###

* [Pull 1019](https://github.com/Netflix/Hystrix/pull/1019) hystrix-dashboard: Swap magnifying glass logos
* [Commit 41e9c210f044fe822625acc6e23c5167e56c3f09](https://github.com/Netflix/Hystrix/commit/41e9c210f044fe822625acc6e23c5167e56c3f09) Add OSSMETADATA
* [Pull 1014](https://github.com/Netflix/Hystrix/pull/1014) Upgrade to RxJava 1.1.0
* [Pull 1009](https://github.com/Netflix/Hystrix/pull/1009) hystrix-javanica: Upgrade to AspectJ 1.8.6
* [Pull 1008](https://github.com/Netflix/Hystrix/pull/1008) Add AbstractCommand.getExecutionException
* [Pull 1006](https://github.com/Netflix/Hystrix/pull/1006) Add Cobertura plugin
* [Pull 1005](https://github.com/Netflix/Hystrix/pull/1005) Upgrade RxJava to 1.0.17
* [Pull 1000](https://github.com/Netflix/Hystrix/pull/1000) Fix network-auditor Javadoc
* [Pull 999](https://github.com/Netflix/Hystrix/pull/999) Upgrade Javassist within hystrix-network-auditor-agent
* [Pull 992](https://github.com/Netflix/Hystrix/pull/992) hystrix-dashboard: Remove validation error message when adding a stream
* [Pull 977](https://github.com/Netflix/Hystrix/pull/977) hystrix-javanica support for Observable command

### Version 1.4.21 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.21%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.21/)) ###

* [Pull 978](https://github.com/Netflix/Hystrix/pull/978) Upgrade commons-collections to 3.2.2
* [Pull 959](https://github.com/Netflix/Hystrix/pull/959) Support multiple metric streams in hystrix-dashboard
* [Pull 976](https://github.com/Netflix/Hystrix/pull/976) Prevent execution observable from running when hook throws an error in onXXXStart 
* [Pull 972](https://github.com/Netflix/Hystrix/pull/972) Mark servlet-api dependency as 'provided'
* [Pull 968](https://github.com/Netflix/Hystrix/pull/968) Add defaultSetter() to properties classes to workaround GROOVY-6286

### Version 1.4.20 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.20%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.20/)) ###

* [Pull 965](https://github.com/Netflix/Hystrix/pull/965) Upgrade Nebula Gradle plugin
* [Pull 962](https://github.com/Netflix/Hystrix/pull/962) Javanica: Support for async commands
* [Pull 960](https://github.com/Netflix/Hystrix/pull/960) Avoid Clojure reflection in hystrix-clj
* [Pull 957](https://github.com/Netflix/Hystrix/pull/957) Javanica: Fix threadpool properties
* [Pull 956](https://github.com/Netflix/Hystrix/pull/956) Upgrade JMH from 1.10.3 to 1.11.1
* [Pull 945](https://github.com/Netflix/Hystrix/pull/945) Javanica: Compile-time weaving support
* [Pull 952](https://github.com/Netflix/Hystrix/pull/952) Tolerate lack of RequestContext better for custom concurrency strategies
* [Pull 947](https://github.com/Netflix/Hystrix/pull/947) Upgrade RxNetty to 0.4.12 for RxNetty metrics stream
* [Pull 946](https://github.com/Netflix/Hystrix/pull/946) More extension-friendly Yammer metrics publisher
* [Pull 944](https://github.com/Netflix/Hystrix/pull/944) Fix generated POM to include dependencies in 'compile' scope
* [Pull 942](https://github.com/Netflix/Hystrix/pull/942) Fix metrics stream fallbackEmit metric
* [Pull 941](https://github.com/Netflix/Hystrix/pull/941) Add FALLBACK_MISSING event type and metric

### Version 1.4.19 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.19%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.19/)) ###

This version should be the exact same as 1.4.20, but suffered problems during the publishing process.  Please use 1.4.20 instead.

### Version 1.4.18 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.18%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.18/)) ###

* [Pull 934](https://github.com/Netflix/Hystrix/pull/934) Remove duplicate EventSource from dashboard
* [Pull 931](https://github.com/Netflix/Hystrix/pull/931) Make HystrixTimeoutException public
* [Pull 930](https://github.com/Netflix/Hystrix/pull/930) Support collapser metrics in HystrixMetricPublisher implementations
* [Pull 927](https://github.com/Netflix/Hystrix/pull/927) Dashboard fix to isCircuitBreakerOpen

### Version 1.4.17 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.17%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.17/)) ###

* [Pull 924](https://github.com/Netflix/Hystrix/pull/924) Dashboard protection against XSS
* [Pull 923](https://github.com/Netflix/Hystrix/pull/923) Upgrade to RxJava 1.0.14
* [Pull 922](https://github.com/Netflix/Hystrix/pull/922) Add DEBUG tag to Servo rolling counter and made it a GaugeMetric

### Version 1.4.16 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.16%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.16/)) ###

* [Pull 917](https://github.com/Netflix/Hystrix/pull/917) Better version of making servo-metrics-publisher extension-friendly
* [Pull 912](https://github.com/Netflix/Hystrix/pull/912) Only look up if HystrixRequestCache is enabled once per HystrixObservableCollapser-invocation
* [Pull 911](https://github.com/Netflix/Hystrix/pull/911) Unit test for large threadpool/small queue case in command execution
* [Pull 910](https://github.com/Netflix/Hystrix/pull/910) Make servo-metrics-publisher more extension-friendly
* [Pull 905](https://github.com/Netflix/Hystrix/pull/905) HystrixObservableCollapser examples
* [Pull 902](https://github.com/Netflix/Hystrix/pull/902) Cleanup HystrixObservableCollapser unit tests
* [Pull 900](https://github.com/Netflix/Hystrix/pull/900) Remove commons-collections dependency from hystrix-javanica
* [Pull 897](https://github.com/Netflix/Hystrix/pull/897) Fix missing null check in hystrix-javanica HystrixCacheKeyGenerator

### Version 1.4.15 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.15%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.15/)) ###

* [Pull 890](https://github.com/Netflix/Hystrix/pull/890) Allow multiple responses per collapser argument.  No semantic change for HystrixCollapser, but a bugfix to HystrixObservableCollapser
* [Pull 892](https://github.com/Netflix/Hystrix/pull/892) Cache Setter in MultithreadedMetricsPerfTest
* [Pull 891](https://github.com/Netflix/Hystrix/pull/891) Add request context to command JMH tests
* [Pull 889](https://github.com/Netflix/Hystrix/pull/889) Replace subscribe() in RequestBatch with unsafeUnsubscribe()
* [Pull 887](https://github.com/Netflix/Hystrix/pull/887) Only look up if HystrixRequestCache is enabled once per collapser-invocation
* [Pull 885](https://github.com/Netflix/Hystrix/pull/885) Only look up if HystrixRequestCache is enabled once per command-invocation
* [Pull 876](https://github.com/Netflix/Hystrix/pull/876) Report BAD_REQUEST to HystrixRequestLog
* [Pull 861](https://github.com/Netflix/Hystrix/pull/861) Make hystrix-javanica OSGI-compliant
* [Pull 856](https://github.com/Netflix/Hystrix/pull/856) Add missing licenses
* [Pull 855](https://github.com/Netflix/Hystrix/pull/855) Save allocation if using a convenience constructor for HystrixCommand
* [Pull 853](https://github.com/Netflix/Hystrix/pull/853) Run Travis build in a container
* [Pull 848](https://github.com/Netflix/Hystrix/pull/848) Unit tests to demonstrate HystrixRequestLog was not experiencing data races

### Version 1.4.14 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.14%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.14/)) ###

* [Pull 852](https://github.com/Netflix/Hystrix/pull/852) Fix hystrix-clj that was blocking http://dev.clojure.org/jira/browse/CLJ-1232
* [Pull 849](https://github.com/Netflix/Hystrix/pull/849) Unit tests for HystrixCommands that are part of a class hierarchy with other HystrixCommands

### Version 1.4.13 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.13%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.13/)) ###

* [Pull 839](https://github.com/Netflix/Hystrix/pull/839) Fix typo in hystrix-dashboard js
* [Pull 838](https://github.com/Netflix/Hystrix/pull/838) Add back unit tests for Hystrix class and its reset() method in particular
* [Pull 837](https://github.com/Netflix/Hystrix/pull/837) Upgrade to RxJava 1.0.13
* [Pull 830](https://github.com/Netflix/Hystrix/pull/830) Add validation for rollingCountBadRequest in hystrix-dashboard

### Version 1.4.12 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.12%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.12/)) ###

* [Pull 826](https://github.com/Netflix/Hystrix/pull/826) Safely handle negative input for delay parameter to metrics stream servlet
* [Pull 825](https://github.com/Netflix/Hystrix/pull/825) Only check bucket properties at HystrixRollingNumber construction
* [Pull 824](https://github.com/Netflix/Hystrix/pull/824) Only check bucket properties at HystrixRollingPercentile construction
* [Pull 823](https://github.com/Netflix/Hystrix/pull/823) Fix half hidden mean metric in Hystrix Dashboard because of container height
* [Pull 818](https://github.com/Netflix/Hystrix/pull/818) Only check maxQueueSize value at thread pool construction

### Version 1.4.11 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.11%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.11/)) ###

* [Pull 814](https://github.com/Netflix/Hystrix/pull/814) Upgrade to RxJava 1.0.12
* [Pull 813](https://github.com/Netflix/Hystrix/pull/813) Output something when Hystrix falls back on recoverable java.lang.Error
* [Pull 812](https://github.com/Netflix/Hystrix/pull/812) Fixing overload functions in hystrix-clj
* [Pull 808](https://github.com/Netflix/Hystrix/pull/808) Update Hystrix Metrics Stream README

### Version 1.4.10 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.10%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.10/)) ###

* [Pull 804](https://github.com/Netflix/Hystrix/pull/804) Fix memory leak by switching back to AtomicIntegerArray for HystrixRollingPercentile

### Version 1.4.9 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.9%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.9/)) ###

* [Pull 799](https://github.com/Netflix/Hystrix/pull/799) Fix thread-safety of writes to HystrixRollingPercentile

### Version 1.4.8 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.8%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.8/)) ###

* [Pull 797](https://github.com/Netflix/Hystrix/pull/797) Move all histogram reads to a single-threaded path.
* [Pull 794](https://github.com/Netflix/Hystrix/pull/794) Allow dashboard connection on 'Enter' keypress
* [Pull 787](https://github.com/Netflix/Hystrix/pull/787) Reject requests after metrics-event-stream servlet shutdown
* [Pull 785](https://github.com/Netflix/Hystrix/pull/785) Update metrics package from com.codahale.metrics to io.dropwizard.metrics

### Version 1.4.7 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.7%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.7/)) ###

* [Pull 783](https://github.com/Netflix/Hystrix/pull/783) Upgrade to RxJava 1.0.10
* [Pull 781](https://github.com/Netflix/Hystrix/pull/781) Shorten collapser stress test to avoid OOM in Travis
* [Pull 780](https://github.com/Netflix/Hystrix/pull/780) Allow hooks to throw exceptions and not corrupt internal Hystrix state
* [Pull 779](https://github.com/Netflix/Hystrix/pull/779) Use HdrHistogram for capturing latencies
* [Pull 778](https://github.com/Netflix/Hystrix/pull/778) Run jmh using more forks and fewer iterations/fork
* [Pull 776](https://github.com/Netflix/Hystrix/pull/776) Add Bad requests to Hystrix dashboard
* [Pull 775](https://github.com/Netflix/Hystrix/pull/775) Add counters for number of commands, thread pools, groups
* [Pull 774](https://github.com/Netflix/Hystrix/pull/774) Add global concurrent Hystrix threads counter

### Version 1.4.6 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.6%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.6/)) ###

* [Pull 772](https://github.com/Netflix/Hystrix/pull/772) Add try-catch to all hook invocations
* [Pull 773](https://github.com/Netflix/Hystrix/pull/773) Move threadPool field to end of metrics stream
* [Pull 770](https://github.com/Netflix/Hystrix/pull/770) Fix AbstractCommand.isCircuitBreakerOpen() return value when circuit is forced open or closed
* [Pull 769](https://github.com/Netflix/Hystrix/pull/769) Add threadPool to command metrics in event stream
* [Pull 767](https://github.com/Netflix/Hystrix/pull/767) JMH upgrade and multithreaded benchmark

### Version 1.4.5 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.5%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.5/)) ###

* [Pull 764](https://github.com/Netflix/Hystrix/pull/764) Upgrade RxJava from 1.0.7 to 1.0.9
* [Pull 763](https://github.com/Netflix/Hystrix/pull/763) Upgrade Jackson for hystrix-metrics-event-stream from 1.9.2 to 2.5.2
* [Pull 760](https://github.com/Netflix/Hystrix/pull/760) Set Hystrix-created threads to be daemon
* [Pull 757](https://github.com/Netflix/Hystrix/pull/757) Update RxNetty version in hystrix-rx-netty-metrics-stream from 0.3.8 to 0.4.7
* [Pull 755](https://github.com/Netflix/Hystrix/pull/755) Improve Javadoc for HystrixThreadPoolProperties.Setter
* [Pull 754](https://github.com/Netflix/Hystrix/pull/754) Only fire onFallbackStart/onFallbackError hooks when a user-supplied fallback is invoked
* [Pull 753](https://github.com/Netflix/Hystrix/pull/753) Add timeout to dashboard for semaphore commands
* [Pull 750](https://github.com/Netflix/Hystrix/pull/750) First pass at jmh performance benchmarking
* [Pull 748](https://github.com/Netflix/Hystrix/pull/748) Fix return value of HystrixCircuiBreakerImpl.isOpen when it loses a race to open a circuit
* [Pull 746](https://github.com/Netflix/Hystrix/pull/746) Improve Javadoc for HystrixCommandProperties.Setter


### Version 1.4.4 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.4%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.4/)) ###

* [Pull 743](https://github.com/Netflix/Hystrix/pull/743) Proper Javadoc deprecation for command timeouts being thread-specific
* [Pull 742](https://github.com/Netflix/Hystrix/pull/742) Add flag to disable command timeouts
* [Pull 741](https://github.com/Netflix/Hystrix/pull/741) Bugfix to java.lang.Error handling
* [Pull 735](https://github.com/Netflix/Hystrix/pull/735) (Javanica) BatchHystrixCommand
* [Pull 739](https://github.com/Netflix/Hystrix/pull/739) Mark some java.lang.Errors as unrecoverable and never trigger fallback
* [Pull 738](https://github.com/Netflix/Hystrix/pull/738) Filter out thread pools with no thread activity from hystrics-metrics-event-stream
* [Pull 732](https://github.com/Netflix/Hystrix/pull/732) Comment out flaky unit test

### Version 1.4.3 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.3%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.3/)) ###

* [Pull 731](https://github.com/Netflix/Hystrix/pull/731) Revert to Java 6
* [Pull 728](https://github.com/Netflix/Hystrix/pull/728) Add semaphore-rejected count to dashboard
* [Pull 711](https://github.com/Netflix/Hystrix/pull/711) Use Archaius for plugin registration
* [Pull 671](https://github.com/Netflix/Hystrix/pull/671) Stop passing Transfer-Encoding header when streaming metrics

### Version 1.4.2 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.2%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.2/)) ###

* [Pull 723](https://github.com/Netflix/Hystrix/pull/723) Fixed Javanica issue where annotation appeared in superclasses
* [Pull 727](https://github.com/Netflix/Hystrix/pull/727) Fixed TravisCI issue by raising timeout in fallback rejection unit test
* [Pull 724](https://github.com/Netflix/Hystrix/pull/724) Fixed backwards-incompatibility where using a custom HystrixConcurrencyStrategy forced use of a non-null HystrixRequestContext
* [Pull 717](https://github.com/Netflix/Hystrix/pull/717) Added error message to dashboard HTML when connection to metrics source fails

### Version 1.4.1 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.1%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.1/)) ###

* [Pull 716](https://github.com/Netflix/Hystrix/pull/716) Fixed backwards-incompatibility where .execute(), .queue(), .observe(), .toObservable() were all made final in 1.4.0

### Version 1.4.0 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.0%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.0/)) ###

This version adds HystrixObservableCommand and implements both it and HystrixCommand in terms of [Observables](https://github.com/ReactiveX/RxJava).  

A HystrixObservableCommand allows for fully non-blocking commands that can be composed as part of a larger Observable chain.  See [the wiki](https://github.com/Netflix/Hystrix/wiki/How-To-Use#reactive-commands) for more details on usage.  Here's an example (using Java 8):

```java
public class ObservableHttpCommand extends HystrixObsverableCommand<BackendResponse> {

@Override
protected Observable<BackendResponse> construct() {
    return httpClient.submit(HttpClientRequest.createGet("/mock.json?numItems=" + numItems))
        .flatMap((HttpClientResponse<ByteBuf> r) -> r.getContent()
        .map(b -> BackendResponse.fromJson(new ByteBufInputStream(b))));
    }

@Override
protected Observable<BackendResponse> resumeWithFallback() {
    return Observable.just(new BackendResponse(0, numItems, new String[] {}));
}}

```

Because an Observable represents a stream of data, your HystrixObservableCommand may now return a stream of data, and supply a stream of data as a fallback.  The methods to do so are `construct()` and `resumeWithFallback()`, respectively.  All other aspects of the Hystrix state machine work the same in a HystrixCommand.  See [this wiki page](https://github.com/Netflix/Hystrix/wiki/How-it-Works#flow-chart) for a diagram of this state machine.

The public API of HystrixCommand is unchanged, though the internals have significantly changed.  Some bugfixes are now possible that affect Hystrix semantics:

* Timeouts now apply to semaphore-isolated commands as well as thread-isolated commands.  Before 1.4.x, semaphore-isolated commands could not timeout.  They now have a timeout registered on another (HystrixTimer) thread, which triggers the timeout flow.  If you use semaphore-isolated commands, they will now see timeouts.  As all HystrixCommands have a [default timeout](https://github.com/Netflix/Hystrix/wiki/Configuration#execution.isolation.thread.timeoutInMilliseconds), this potentially affects all semaphore-isolated commands.
* Timeouts now fire on `HystrixCommand.queue()`, even if the caller never calls `get()` on the resulting Future.  Before 1.4.x, only calls to `get()` triggered the timeout mechanism to take effect.

You can see more in-depth examples of how the new functionality of Hystrix 1.4 is used at [Netflix/ReactiveLab](https://github.com/Netflix/ReactiveLab).

You can learn more about Observables and RxJava at [Netflix/RxJava](https://github.com/ReactiveX/RxJava).

As this was a major refactoring of Hystrix internals, we (Netflix) have run a release candidate of Hystrix 1.4 in canaries and production over the last month to gain confidence.

* [Pull 701](https://github.com/Netflix/Hystrix/pull/701) Fix Javadoc warnings
* [Pull 700](https://github.com/Netflix/Hystrix/pull/700) Example code for publishing to Graphite

### Version 1.4.0 Release Candidate 9 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.0-rc.9%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.0-rc.9/)) ###
_NOTE: This code is believed to be production worthy.  As of now, there are no known bugs preventing this becoming 1.4.0.  Please report any design issues/questions, bugs, or any observations about this release to the [Issues](https://github.com/Netflix/Hystrix/issues) page._

* [Pull 697](https://github.com/Netflix/Hystrix/pull/697) Add execution event for FALLBACK_REJECTION and unit tests
* [Pull 696](https://github.com/Netflix/Hystrix/pull/696) Upgrade to RxJava 1.0.7
* [Pull 694](https://github.com/Netflix/Hystrix/pull/694) Make execution timeout in HystrixCommandProperties work in the case when classes extend HystrixCommandProperties
* [Pull 693](https://github.com/Netflix/Hystrix/pull/693) Hystrix Dashboard sorting issue

### Version 1.4.0 Release Candidate 8 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.0-rc.8%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.0-rc.8/)) ###
_NOTE: This code is believed to be production worthy.  As of now, there are no known bugs preventing this becoming 1.4.0.  Please report any design issues/questions, bugs, or any observations about this release to the [Issues](https://github.com/Netflix/Hystrix/issues) page._

* [Pull 691](https://github.com/Netflix/Hystrix/pull/691) HystrixCommandTest test with large number of semaphores
* [Pull 690](https://github.com/Netflix/Hystrix/pull/690) Add back ExceptionThreadingUtility
* [Pull 688](https://github.com/Netflix/Hystrix/pull/688) Add metrics for EMIT and FALLBACK_EMIT
* [Pull 687](https://github.com/Netflix/Hystrix/pull/687) Fixed issue where fallback rejection was also incrementing fallback failure metric
* [Pull 686](https://github.com/Netflix/Hystrix/pull/686) HystrixCommandTest Unit test refactoring
* [Pull 683](https://github.com/Netflix/Hystrix/pull/683) Add and Deprecate pieces of execution hook API to be more consistent
* [Pull 681](https://github.com/Netflix/Hystrix/pull/681) Add cache hit execution hook
* [Pull 680](https://github.com/Netflix/Hystrix/pull/680) Add command rejection metrics for HystrixThreadPools


### Version 1.4.0 Release Candidate 7 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.0-rc.7%22), [Bintray](https://bintray.com/netflixoss/maven/Hystrix/1.4.0-rc.7/)) ###
NOTE: This code is believed to be production worthy.  As of now, there are no known bugs preventing this becoming 1.4.0.  Please report any design issues/questions, bugs, or any observations about this release to the [Issues](https://github.com/Netflix/Hystrix/issues) page

* [Pull 678](https://github.com/Netflix/Hystrix/pull/678) Fix current concurrent execution count
* [Pull 676](https://github.com/Netflix/Hystrix/pull/676) Add test to confirm that bad requests do not affect circuit breaker's computed error percentage
* [Pull 675](https://github.com/Netflix/Hystrix/pull/675) Deprecate method names for executionTimeout that are thread-specific
* [Pull 672](https://github.com/Netflix/Hystrix/pull/672) Limit the thread-interrupt behavior to occur only on timeouts
* [Pull 669](https://github.com/Netflix/Hystrix/pull/669) Added unit tests to demonstrate non-blocking semaphore timeout
* [Pull 667](https://github.com/Netflix/Hystrix/pull/667) Added rolling max counter for command execution
* [Pull 666](https://github.com/Netflix/Hystrix/pull/666) Added missing licenses
* [Pull 665](https://github.com/Netflix/Hystrix/pull/665) Added comment to HystrixConcurrencyStrategy about non-idempotency of strategy application
* [Pull 647](https://github.com/Netflix/Hystrix/pull/647) Tie command property to thread interrupt
* [Pull 645](https://github.com/Netflix/Hystrix/pull/645) Remove incorrect reference to async timeout
* [Pull 644](https://github.com/Netflix/Hystrix/pull/644) Add RequestCollapser metrics to Yammer Metrics Publisher
* [Pull 643](https://github.com/Netflix/Hystrix/pull/643) Stress-test HystrixObservalbeCollapser
* [Pull 642](https://github.com/Netflix/Hystrix/pull/642) Fix flakiness of HystrixObservableCommandTest.testRejectedViaSemaphoreIsolation
* [Pull 641](https://github.com/Netflix/Hystrix/pull/641) Fix flakiness of testSemaphorePermitsInUse
* [Pull 608](https://github.com/Netflix/Hystrix/pull/608) Make HystrixObservableCommand handle both sync and async exceptions
* [Pull 607](https://github.com/Netflix/Hystrix/pull/607) Upgrade RxJava from 1.0.4 to 1.0.5
* [Pull 604](https://github.com/Netflix/Hystrix/pull/604) Added EMIT and FALLBACK_EMIT event types that get emitted in HystrixObservableCommand
* [Pull 599](https://github.com/Netflix/Hystrix/pull/599) Added metrics to HystrixObservableCollapser
* [Pull 596](https://github.com/Netflix/Hystrix/pull/596) Fixed HystrixContextScheduler to conform with RxJava Worker contract
* [Pull 583](https://github.com/Netflix/Hystrix/pull/583) Style and consistency fixes
* [Pull 582](https://github.com/Netflix/Hystrix/pull/582) Add more unit tests for non-blocking HystrixCommand.queue()
* [Pull 580](https://github.com/Netflix/Hystrix/pull/580) Unit test to demonstrate fixed non-blocking timeout for HystrixCommand.queue()
* [Pull 579](https://github.com/Netflix/Hystrix/pull/579) Remove synchronous timeout
* [Pull 577](https://github.com/Netflix/Hystrix/pull/577) Upgrade language level to Java7
* [Pull 576](https://github.com/Netflix/Hystrix/pull/576) Add request collapser metrics
* [Pull 573](https://github.com/Netflix/Hystrix/pull/573) Fix link to CHANGELOG.md in README.md
* [Pull 572](https://github.com/Netflix/Hystrix/pull/572) Add bad request metrics at the command granularity
* [Pull 567](https://github.com/Netflix/Hystrix/pull/567) Comment out flaky unit-tests
* [Pull 566](https://github.com/Netflix/Hystrix/pull/566) Fix hardcoded groupname in CodaHale metrics publisher
* [Commit 6c08d9](https://github.com/Netflix/Hystrix/commit/6c08d90fd10a947bdbee81afc9c0f866d1f33eef) Bumped nebula.netflixoss from 2.2.3 to 2.2.5
* [Pull 562](https://github.com/Netflix/Hystrix/pull/562) Build changes to nebula.netflixoss (initially submitted as [Pull 469](https://github.com/Netflix/Hystrix/pull/469))
	
	
### Version 1.4.0 Release Candidate 6 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.0-RC6%22)) ###

_NOTE: This code is believed to be production worthy but is still a "Release Candidate" until [these possible functional or design issues are resolved](https://github.com/Netflix/Hystrix/issues?q=is%3Aopen+is%3Aissue+milestone%3A1.4.0-RC7)._
* [Pull 534](https://github.com/Netflix/Hystrix/pull/534) Bump RxJava to 1.0.4
* [Pull 532](https://github.com/Netflix/Hystrix/pull/532) Hystrix-Clojure: Fix typo
* [Pull 531](https://github.com/Netflix/Hystrix/pull/531) Move onThreadStart execution hook after check that wrapping thread timed out 
* [Pull 530](https://github.com/Netflix/Hystrix/pull/530) Add shutdown hook to metrics servlet for WebSphere
* [Pull 527](https://github.com/Netflix/Hystrix/pull/527) Creating a synthetic exception in the semaphore execution and short-circuited case
* [Pull 526](https://github.com/Netflix/Hystrix/pull/526) Move onRunSuccess/onRunError and thread-pool book-keeping to Hystrix thread
* [Pull 524](https://github.com/Netflix/Hystrix/pull/524) Change calls from getExecutedCommands() to getAllExecutedCommands()
* [Pull 516](https://github.com/Netflix/Hystrix/pull/516) Updated HystrixServoMetricsPublisher initalization of singleton
* [Pull 489](https://github.com/Netflix/Hystrix/pull/489) Javanica: Request Caching
* [Pull 512](https://github.com/Netflix/Hystrix/pull/512) Add execution hook Javadoc
* [Pull 511](https://github.com/Netflix/Hystrix/pull/511) Fix missing onComplete hook call when command short-circuits and missing onRunSuccess hook call in thread-timeout case
* [Pull 466](https://github.com/Netflix/Hystrix/pull/466) Add unit tests to HystrixCommand and HystrixObservableCommand
* [Pull 465](https://github.com/Netflix/Hystrix/pull/465) Handle error in construction of HystrixMetricsPoller
* [Pull 457](https://github.com/Netflix/Hystrix/pull/457) Fixing resettability of HystrixMetricsPublisherFactory
* [Pull 451](https://github.com/Netflix/Hystrix/pull/451) Removed ExceptionThreadingUtility
* [Pull 366](https://github.com/Netflix/Hystrix/pull/366) Added support to get command start time in Nanos
* [Pull 456](https://github.com/Netflix/Hystrix/pull/456) Allow hooks to generate HystrixBadRequestExceptions that get handled appropriately
* [Pull 454](https://github.com/Netflix/Hystrix/pull/454) Add tests around HystrixRequestLog in HystrixObservableCommand
* [Pull 453](https://github.com/Netflix/Hystrix/pull/453) Resettable command and thread pool defaults
* [Pull 452](https://github.com/Netflix/Hystrix/pull/452) Make HystrixPlugins resettable
* [Pull 450](https://github.com/Netflix/Hystrix/pull/450) Add fallback tests to HystrixObservableCommand
* [Pull 449](https://github.com/Netflix/Hystrix/pull/449) Move thread completion bookkeeping to end of chain
* [Pull 447](https://github.com/Netflix/Hystrix/pull/447) Synchronous queue fix
* [Pull 376](https://github.com/Netflix/Hystrix/pull/376) Javanica README cleanup
* [Pull 378](https://github.com/Netflix/Hystrix/pull/378) Exection hook call sequences (based on work submitted in [Pull 327](https://github.com/Netflix/Hystrix/pull/327))
* [Pull 374](https://github.com/Netflix/Hystrix/pull/374) RequestBatch logging
* [Pull 371](https://github.com/Netflix/Hystrix/pull/371) Defer creation of IllegalStateException in collapser flow (based on work submitted in [Pull 264](https://github.com/Netflix/Hystrix/pull/264))
* [Pull 369](https://github.com/Netflix/Hystrix/pull/369) Added basic auth to Hystrix Dashboard (based on work submitted in [Pull 336](https://github.com/Netflix/Hystrix/pull/336))
* [Pull 367](https://github.com/Netflix/Hystrix/pull/367) Added thread pool metrics back to execution flow (based on test submitted in [Pull 339](https://github.com/Netflix/Hystrix/pull/339))
* [Pull 365](https://github.com/Netflix/Hystrix/pull/365) Fix Javadoc for HystrixCommand.Setter
* [Pull 364](https://github.com/Netflix/Hystrix/pull/364) Upgrade servo to 0.7.5
* [Pull 362](https://github.com/Netflix/Hystrix/pull/362) Fixed hystrix-rxnetty-metrics-stream unit tests
* [Pull 359](https://github.com/Netflix/Hystrix/pull/359) Fixed Javanica unit tests
* [Pull 361](https://github.com/Netflix/Hystrix/pull/361) Race condition when creating HystrixThreadPool (initially submitted as [Pull 270](https://github.com/Netflix/Hystrix/pull/270))
* [Pull 358](https://github.com/Netflix/Hystrix/pull/358) Fixed Clojure unit tests that failed with RxJava 1.0
* [Commit 2edcd5](https://github.com/Netflix/Hystrix/commit/2edcd578194849a1c2f5acd73a2e6f10ebfdd112) Upgrade to core-metrics 3.0.2
* [Pull 310](https://github.com/Netflix/Hystrix/pull/310) Osgi-ify hystrix-core, hystrix-examples
* [Pull 340](https://github.com/Netflix/Hystrix/pull/340) Race condition when creating HystrixThreadPool
* [Pull 343](https://github.com/Netflix/Hystrix/pull/343) Added 3 new constructors for common command setup
* [Pull 347](https://github.com/Netflix/Hystrix/pull/347) Javanica: Allow for @HystrixCommand to be used on parameterized return type
* [Pull 353](https://github.com/Netflix/Hystrix/pull/353) Fixing a hystrix-examples compilation failure
* [Pull 338](https://github.com/Netflix/Hystrix/pull/338) API Changes after design review of [Issue 321](https://github.com/Netflix/Hystrix/issues/321)
* [Pull 344](https://github.com/Netflix/Hystrix/pull/344) Upgrade to Gradle 1.12 
* [Pull 334](https://github.com/Netflix/Hystrix/pull/334) Javanica: Hystrix Error Propagation 
* [Pull 326](https://github.com/Netflix/Hystrix/pull/326) Javanica: Added support for setting threadPoolProperties through @HystrixCommand annotation
* [Pull 318](https://github.com/Netflix/Hystrix/pull/318) HystrixAsyncCommand and HystrixObservableCommand
* [Pull 316](https://github.com/Netflix/Hystrix/pull/316) Add support for execution.isolation.semaphore.timeoutInMilliseconds

### Version 1.3.20 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.20%22)) ###
* [Pull 533] (https://github.com/Netflix/Hystrix/pull/533) Upgrade to RxJava 1.0.4
* [Pull 528] (https://github.com/Netflix/Hystrix/pull/528) Pass RuntimeException to onError hook in semaphore-rejection and short-circuit cases, instead of null
* [Pull 520] (https://github.com/Netflix/Hystrix/pull/520) More unit tests for hook ordering
* [Commit 61b77c] (https://github.com/Netflix/Hystrix/commit/61b77c305bda6dbd4dc8c86445b4a6670f981845) Fix flow where ExecutionHook.onComplete was called twice
* [Commit a5e52a] (https://github.com/Netflix/Hystrix/commit/a5e52a6d29cd911c1e14ec107a875a9343472db5) Add call to ExecutionHook.onError in HystrixBadRequestException flow
* [Commit cec25e] (https://github.com/Netflix/Hystrix/commit/cec25ed7c6f10c4c59189b443bda844fa39043d6) Fix hook ordering assertions
* [Pull 508] (https://github.com/Netflix/Hystrix/pull/508) Backport of [Pull 327] (https://github.com/Netflix/Hystrix/pull/327) from master: Add hook assertions to unit tests
* [Pull 507] (https://github.com/Netflix/Hystrix/pull/507) Fix hystrix-clj unit tests
* [Commit 62be49] (https://github.com/Netflix/Hystrix/commit/62be49465ae418509814fd195081ef7611eb6015) RxJava 1.0.2

### Version 1.3.19 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.19%22)) ###

* [Pull 348](https://github.com/Netflix/Hystrix/pull/348) Javanica: Allow for @HystrixCommand to be used on parameterized return type
* [Pull 329](https://github.com/Netflix/Hystrix/pull/329) Javanica: allowing configuration of threadPoolProperties through @HystrixCommand annotation

### Version 1.4.0 Release Candidate 5 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.0-RC5%22)) ###

_NOTE: This code is believed to be production worthy but is still a "Release Candidate" until [these possible functional or design issues are resolved](https://github.com/Netflix/Hystrix/issues?q=is%3Aopen+is%3Aissue+milestone%3A1.4)._

* [Pull 314](https://github.com/Netflix/Hystrix/pull/314) RxJava 0.20 and Remove Deprecated Usage
* [Pull 307](https://github.com/Netflix/Hystrix/pull/307) Dashboard: Avoid NPE when 'origin' parameter not present

### Version 1.3.18 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.18%22)) ###

* [Pull 305](https://github.com/Netflix/Hystrix/pull/305) Removing deprecated RxJava usage

### Version 1.3.17 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.17%22)) ###

* [Pull 291](https://github.com/Netflix/Hystrix/pull/291) String optimization for HystrixRequestLog
* [Pull 296](https://github.com/Netflix/Hystrix/pull/296) Fix Premature Unsubscribe Bug
* [Commit 47122e](https://github.com/Netflix/Hystrix/commit/1268454ec4381b6ae121cac1675205484847122e) RxJava 0.20.1

### Version 1.4.0 Release Candidate 4 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.0-RC4%22)) ###

_NOTE: This code is NOT considered production worthy yet, hence the "Release Candidate" status._

This fixes some bugs and changes the `HystrixObservableCollapser` signature to support `Observable` batches.

* [Pull 256](https://github.com/Netflix/Hystrix/pull/256) Fix Race Condition on Timeout
* [Pull 261](https://github.com/Netflix/Hystrix/pull/261) New signature for HystrixObservableCollapser
* [Pull 254](https://github.com/Netflix/Hystrix/pull/254) Remove jsr305 Dependency
* [Pull 260](https://github.com/Netflix/Hystrix/pull/260) RxJava 0.18.2
* [Pull 253](https://github.com/Netflix/Hystrix/pull/253) Handling InterruptedExceptions in the HystrixMetricsStreamServlet

### Version 1.4.0 Release Candidate 3 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.0-RC3%22)) ###

_NOTE: This code is NOT considered production worthy yet, hence the "Release Candidate" status._

This adds non-blocking support to the collapser via the `HystrixObservableCollapser` type, fixes some bugs and upgrades to RxJava 0.18.

* [Pull 245](https://github.com/Netflix/Hystrix/pull/245) HystrixObservableCollapser
* [Pull 246](https://github.com/Netflix/Hystrix/pull/246) RxJava 0.18
* [Pull 250](https://github.com/Netflix/Hystrix/pull/250) Tripped CircuitBreaker Wouldn't Close Under Contention
* [Pull 243](https://github.com/Netflix/Hystrix/pull/243) Update servo to 0.6
* [Pull 240](https://github.com/Netflix/Hystrix/pull/240) Add missing reset for CommandExecutionHook in HystrixPlugins.UnitTest
* [Pull 244](https://github.com/Netflix/Hystrix/pull/244) Javanica: Cleaner error propagation 


### Version 1.4.0 Release Candidate 2 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.0-RC2%22)) ###

_NOTE: This code is NOT considered production worthy yet, hence the "Release Candidate" status._

This fixes a bug found in Release Candidate 1 that caused the semaphore limits to be applied when thread isolation was chosen.

It also stops scheduling callbacks onto new threads and lets the Hystrix threads perform the callbacks.

* [Pull 238](https://github.com/Netflix/Hystrix/pull/238) Fix for Semaphore vs Thread Isolation Bug
* [Pull 230](https://github.com/Netflix/Hystrix/pull/230) Javanica Module: Added support for Request Cache and Reactive Execution


### Version 1.4.0 Release Candidate 1 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.4.0-RC1%22)) ###

This is the first release candidate of 1.4.0 that includes `HystrixObservableCommand` ([Source](https://github.com/Netflix/Hystrix/blob/master/hystrix-core/src/main/java/com/netflix/hystrix/HystrixObservableCommand.java)) that supports bulkheading asynchronous, non-blocking sources.

_NOTE: This code is NOT considered production worthy yet, hence the "Release Candidate" status._

_It has run for 1 day on a single machine taking production traffic at Netflix. This is sufficient for us to proceed to a release candidate for official canary testing, but we intend to test for a week or two before doing a final release._

Here is a very basic example using Java 8 to make an HTTP call via Netty and receives a stream of chunks back:

```java

    public static void main(String args[]) {
        HystrixObservableCommand<String> command = bulkheadedNetworkRequest("www.google.com");
        command.toObservable()
                // using BlockingObservable.forEach for demo simplicity
                .toBlockingObservable().forEach(d -> System.out.println(d));
        System.out.println("Time: " + command.getExecutionTimeInMilliseconds() 
                + "  Events: " + command.getExecutionEvents());
    }

    public static HystrixObservableCommand<String> bulkheadedNetworkRequest(final String host) {
        return new HystrixObservableCommand<String>(HystrixCommandGroupKey.Factory.asKey("http")) {

            @Override
            protected Observable<String> run() {
                return directNetworkRequest(host);
            }

            @Override
            protected Observable<String> getFallback() {
                return Observable.just("Error 500");
            }

        };
    }

    public static Observable<String> directNetworkRequest(String host) {
        return RxNetty.createHttpClient(host, 80)
                .submit(HttpClientRequest.createGet("/"))
                .flatMap(response -> response.getContent())
                .map(data -> data.toString(Charset.defaultCharset()));
    }
```

* [Pull 218](https://github.com/Netflix/Hystrix/pull/218) Hystrix 1.4 - Async/Non-Blocking
* [Pull 217](https://github.com/Netflix/Hystrix/pull/217) Javanica: Added support for "Reactive Execution" and "Error Propagation"
* [Pull 219](https://github.com/Netflix/Hystrix/pull/219) Restore HystrixContext* Constructors without ConcurrencyStrategy

### Version 1.3.16 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.16%22)) ###

* [Pull 258](https://github.com/Netflix/Hystrix/pull/258) Skip CachedObservableOriginal when no getCacheKey()
* [Pull 259](https://github.com/Netflix/Hystrix/pull/259) Fix #257 with RxJava 0.18.2


### Version 1.3.15 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.15%22)) ###

* [Pull 248](https://github.com/Netflix/Hystrix/pull/248) RxJava 0.18 for Hystrix
* [Pull 249](https://github.com/Netflix/Hystrix/pull/249) Tripped CircuitBreaker Wouldn't Close Under Contention
* [Pull 229](https://github.com/Netflix/Hystrix/pull/229) Javanica: Added support for Request Cache and Reactive Execution
* [Pull 242](https://github.com/Netflix/Hystrix/pull/242) Javanica: Cleaner error propagation


### Version 1.3.14 (not released) ###

* [Pull 228](https://github.com/Netflix/Hystrix/pull/228) Upgrade 1.3.x to RxJava 0.17.1


### Version 1.3.13 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.13%22)) ###


* [Pull 216](https://github.com/Netflix/Hystrix/pull/216) hystrix-javanica contrib-module: [annotation support](https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-javanica)


### Version 1.3.12 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.12%22)) ###

* [Pull 214](https://github.com/Netflix/Hystrix/pull/214) HystrixContextCallable/Runnable Constructors

### Version 1.3.11 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.11%22)) ###

* We'll ignore this release ever happened. Exact same binary as 1.3.10. (It helps to push code to Github before releasing.)

### Version 1.3.10 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.10%22)) ###

* [Pull 211](https://github.com/Netflix/Hystrix/pull/211) Update Javassist version to 3.18.1-GA
* [Pull 213](https://github.com/Netflix/Hystrix/pull/213) BugFix: Timeout does not propagate request context
* [Pull 204](https://github.com/Netflix/Hystrix/pull/204) deploying hystrix dashboard on tomcat, SLF4J complains about a missing implementation
* [Pull 199](https://github.com/Netflix/Hystrix/pull/199) Add new module for publishing metrics to Coda Hale Metrics version 3

### Version 1.3.9 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.9%22)) ###

* [Pull 210](https://github.com/Netflix/Hystrix/pull/210) HystrixContextScheduler was not wrapping the Inner Scheduler
* [Pull 206](https://github.com/Netflix/Hystrix/pull/206) Bugfix ExceptionThreadingUtility
* [Pull 203](https://github.com/Netflix/Hystrix/pull/203) Made HystrixTimer initialization thread-safe

### Version 1.3.8 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.8%22)) ###

* [Pull 194](https://github.com/Netflix/Hystrix/pull/194) BugFix: Do not overwrite user thread duration in case of timeouts

### Version 1.3.7 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.7%22)) ###

* [Pull 189](https://github.com/Netflix/Hystrix/pull/189) BugFix: Race condition between run() and timeout
* [Pull 190](https://github.com/Netflix/Hystrix/pull/190) BugFix: ConcurrencyStrategy.wrapCallable was not being used on callbacks


### Version 1.3.6 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.6%22)) ###

* [Pull 181](https://github.com/Netflix/Hystrix/pull/181) [hystrix-contrib/hystrix-clj] Making Command keys quantified by namespaces
* [Pull 182](https://github.com/Netflix/Hystrix/pull/182) Removing unused Legend component latent. Removed from html templates/css
* [Pull 183](https://github.com/Netflix/Hystrix/pull/183) Bugfix to HystrixBadRequestException handling
* [Pull 184](https://github.com/Netflix/Hystrix/pull/184) BugFix: queue() BadRequestException Handling on Cached Response
* [Pull 185](https://github.com/Netflix/Hystrix/pull/185) BugFix: Observable.observeOn Scheduler Lost RequestContext
* [0fb0d3d](https://github.com/Netflix/Hystrix/commit/0fb0d3d25e406f8b6240d312c2ee1f515c77fc13) RxJava 0.14

### Version 1.3.5 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.5%22)) ###

* [Pull 179](https://github.com/Netflix/Hystrix/pull/179) RxJava 0.13

### Version 1.3.4 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.4%22)) ###

* [f68fa23c](https://github.com/Netflix/Hystrix/commit/bd6dfac5255753978253605f7e8b4c6af68fa23c) RxJava [0.11,0.12)

### Version 1.3.3 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.3%22)) ###

* [858e334f](https://github.com/Netflix/Hystrix/commit/7bcf0ee7b876cbfdcb942ea83637d4b5858e334f) RxJava 0.11

### Version 1.3.2 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.2%22)) ###

* [Pull 173](https://github.com/Netflix/Hystrix/pull/173) Fix Exception vs Throwable typo in preparation for RxJava 0.11.0

### Version 1.3.1 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.1%22)) ###

* [Pull 170](https://github.com/Netflix/Hystrix/pull/170) Add rx support to hystrix-clj

### Version 1.3.0 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.3.0%22)) ###

This version integrations Hystrix with [RxJava](https://github.com/Netflix/RxJava) to enable non-blocking reactive execution and functional composition.

Async execution can now be done reactively with the `observe()` method and it will callback when the value is received:

```java
Observable<String> s = new CommandHelloWorld("World").observe();
```

A simple example of subscribing to the value (using a Groovy lambda instead of anonymous inner class):

```groovy
s.subscribe({ value -> println(value) })
```

A "Hello World" example of reactive execution can be [found on the wiki](https://github.com/Netflix/Hystrix/wiki/How-To-Use#wiki-Reactive-Execution).

More can be learned about RxJava and the composition features at https://github.com/Netflix/RxJava/wiki

This release is a major refactoring of the Hystrix codebase. To assert correctness and performance it was run in production canary servers on the Netflix API several times during development and for over a week during release candidate stages. Prior to this release the 1.3.0.RC1 version has been running in full Netflix API production for several days performing billions of executions a day.

* [Pull 151](https://github.com/Netflix/Hystrix/pull/151) Version 1.3 - RxJava Observable Integration
* [Pull 158](https://github.com/Netflix/Hystrix/pull/158) Expose current HystrixCommand to fns


### Version 1.2.18 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.18%22)) ###

* [Pull 152](https://github.com/Netflix/Hystrix/pull/152) Escape meta-characters to fix dashboard
* [Pull 156](https://github.com/Netflix/Hystrix/pull/156) Improve hystrix-clj docs
* [Pull 155](https://github.com/Netflix/Hystrix/pull/155) Reset Hystrix after hystrix-clj tests have run

### Version 1.2.17 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.17%22)) ###

* [Pull 138](https://github.com/Netflix/Hystrix/pull/138) Eclipse and IDEA Config
* [Pull 141](https://github.com/Netflix/Hystrix/pull/141) Upgrade Clojuresque (hystrix-clj builds)
* [Pull 139](https://github.com/Netflix/Hystrix/pull/139) Fix dashboard math bug on thread pool rate calculations
* [Pull 149](https://github.com/Netflix/Hystrix/pull/149) Allow getFallback to query failure states

### Version 1.2.16 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.16%22)) ###

* [Pull 132](https://github.com/Netflix/Hystrix/pull/132) Add `with-context` macro for conviently wrapping collapsers in thier own context
* [Pull 136](https://github.com/Netflix/Hystrix/pull/136) Fixed the mock stream
* [Pull 137](https://github.com/Netflix/Hystrix/pull/137) Limit scope of CurrentThreadExecutingCommand

### Version 1.2.15 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.15%22)) ###

This is fixing a bug introduced in the last release that affects semaphore isolated commands that use request caching.

* [Pull 133](https://github.com/Netflix/Hystrix/pull/133) Fix NoSuchElement Exception

### Version 1.2.14 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.14%22)) ###

* [Issue 116](https://github.com/Netflix/Hystrix/issues/116) Mechanism for Auditing Network Access Not Isolated by Hystrix
 
A new module for instrumenting network access to identify calls not wrapped by Hystrix.

See the module README for more information: https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-network-auditor-agent

### Version 1.2.13 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.13%22)) ###

* [Issue 127](https://github.com/Netflix/Hystrix/issues/127) Add destroy() method to MetricsServlet

### Version 1.2.12 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.12%22)) ###

* [Issue 124](https://github.com/Netflix/Hystrix/issues/124) NPE if Hystrix.reset() called when it's already shutdown

### Version 1.2.11 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.11%22)) ###

* [Issue 113](https://github.com/Netflix/Hystrix/issues/113) IllegalStateException: Future Not Started (on thread pool rejection with response caching)
* [Issue 118](https://github.com/Netflix/Hystrix/issues/118) Semaphore counter scope was global instead of per-key
* [Pull 121](https://github.com/Netflix/Hystrix/issues/121) Concurrent execution metric for semaphore and thread isolation

### Version 1.2.10 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.10%22)) ###

* [Issue 80](https://github.com/Netflix/Hystrix/issues/80) HystrixCollapser Concurrency and Performance Fixes

### Version 1.2.9 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.9%22)) ###

* [Issue 109](https://github.com/Netflix/Hystrix/issues/109) Hystrix.reset() now shuts down HystrixTimer
* [Pull 110](https://github.com/Netflix/Hystrix/issues/110) hystrix-clj cleanup
* [Pull 112](https://github.com/Netflix/Hystrix/issues/112) Further work on HystrixCollapser IllegalStateException ([Issue 80](https://github.com/Netflix/Hystrix/issues/80))

### Version 1.2.8 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.8%22)) ###

* [Issue 102](https://github.com/Netflix/Hystrix/issues/102) Hystrix.reset() functionality for clean shutdown and resource cleanup
* [Pull 103](https://github.com/Netflix/Hystrix/issues/103) hystrix-clj cleanup
* [Pull 104](https://github.com/Netflix/Hystrix/issues/104) javadoc clarification
* [Pull 105](https://github.com/Netflix/Hystrix/issues/104) Added IntelliJ IDEA support, cleanup to Eclipse support

### Version 1.2.7 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.7%22)) ###

* [Pull 99](https://github.com/Netflix/Hystrix/issues/99) Experimental Clojure Bindings [hystrix-clj](https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-clj)

### Version 1.2.6 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.6%22)) ###

* [Issue 96](https://github.com/Netflix/Hystrix/issues/96) Remove 'final' modifiers to allow mocking

### Version 1.2.5 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.5%22)) ###

* [Pull 94](https://github.com/Netflix/Hystrix/pull/94) Force character encoding for event stream to utf-8
* [Issue 60](https://github.com/Netflix/Hystrix/issues/60) Dashboard: Hover for full name (when shortened with ellipsis)
* [Issue 53](https://github.com/Netflix/Hystrix/issues/53) RequestLog: Reduce Chance of Memory Leak
 
### Version 1.2.4 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.4%22)) ###

* [Pull 91](https://github.com/Netflix/Hystrix/pull/91) handle null circuit breaker in HystrixMetricsPoller

### Version 1.2.3 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.3%22)) ###

* [Issue 85](https://github.com/Netflix/Hystrix/issues/85) hystrix.stream holds connection open if no metrics
* [Pull 84](https://github.com/Netflix/Hystrix/pull/84) include 'provided' dependencies in Eclipse project classpath

### Version 1.2.2 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.2%22)) ###

* [Issue 82](https://github.com/Netflix/Hystrix/issues/82) ThreadPool stream should include reportingHosts

### Version 1.2.1 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.1%22)) ###

* [Issue 80](https://github.com/Netflix/Hystrix/issues/80) IllegalStateException: Future Not Started
* [Issue 78](https://github.com/Netflix/Hystrix/issues/78) Include more info when collapsed requests remain in queue

### Version 1.2.0 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.2.0%22)) ###

* [Issue 10](https://github.com/Netflix/Hystrix/issues/10) HystrixCommand Execution Hooks via Plugin
  * [Pull 71](https://github.com/Netflix/Hystrix/pull/71) Change Throwable to Exception 
  * [Pull 71](https://github.com/Netflix/Hystrix/pull/71) jettyRun support for running webapps via gradle
* [Issue 15](https://github.com/Netflix/Hystrix/issues/15) Property to disable percentile calculations
* [Issue 69](https://github.com/Netflix/Hystrix/issues/69) Property to disable fallbacks
* [Pull 73](https://github.com/Netflix/Hystrix/pull/73) Make servlet-api a provided dependency
* [Pull 74](https://github.com/Netflix/Hystrix/pull/74) Dashboard problem when using Turbine (Stream not flushing)

### Version 1.1.7 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20v%3A%221.1.7%22)) ###

* [Pull 67](https://github.com/Netflix/Hystrix/pull/67) Unit tests for request log and checked exceptions
* [Pull 66](https://github.com/Netflix/Hystrix/pull/66) Making provided scope transtive
* [Pull 65](https://github.com/Netflix/Hystrix/pull/65) Fixed gitignore definition of build output directories
* [Issue 63](https://github.com/Netflix/Hystrix/issues/63) Add "throws Exception" to HystrixCommand run() method
* [Pull 62](https://github.com/Netflix/Hystrix/pull/62) applying js fixes to threadPool ui
* [Pull 61](https://github.com/Netflix/Hystrix/pull/61) Request log with timeouts
* [Issue 55](https://github.com/Netflix/Hystrix/issues/55) HysrixRequestLog: Missing Events and Time on Timeouts
* [Issue 20](https://github.com/Netflix/Hystrix/issues/20) TotalExecutionTime not tracked on queue()
* [Pull 57](https://github.com/Netflix/Hystrix/pull/57) Dashboard js fix
* [Issue 39](https://github.com/Netflix/Hystrix/issues/39) HystrixPlugins Bootstrapping Problem - Race Conditions
* [Pull 52](https://github.com/Netflix/Hystrix/pull/52) Gradle Build Changes

### Version 1.1.6 ###

* [Pull 51](https://github.com/Netflix/Hystrix/pull/51) Merging in gradle-template, specifically provided

### Version 1.1.5 ###

* [Pull 50](https://github.com/Netflix/Hystrix/pull/50) Make javax.servlet-api a 'provided' dependency not 'compile'

### Version 1.1.4 ###

* [Pull 49](https://github.com/Netflix/Hystrix/pull/49) Cleaner design (for metrics) by injecting listener into constructor.

### Version 1.1.3 ###

* [Pull 47](https://github.com/Netflix/Hystrix/pull/47) Support pausing/resuming metrics poller
* [Pull 48](https://github.com/Netflix/Hystrix/pull/48) Fixing non-deterministic unit test
* README files added to submodules

### Version 1.1.2 ###

* [Pull 44](https://github.com/Netflix/Hystrix/pull/44) Hystrix Dashboard

### Version 1.1.1 ###

* [Issue 24](https://github.com/Netflix/Hystrix/issues/24) Yammer Metrics Support
* [Pull 43](https://github.com/Netflix/Hystrix/pull/43) Fix the wrong percentile for latencyExecute_percentile_75 in the Servo publisher

### Version 1.1.0 ###

* [Pull 32](https://github.com/Netflix/Hystrix/pull/32) servo-event-stream module
* [Pull 33](https://github.com/Netflix/Hystrix/pull/33) Remove Servo dependency from core, move to submodule
* [Pull 35](https://github.com/Netflix/Hystrix/pull/35) Metrics event stream
* [Issue 34](https://github.com/Netflix/Hystrix/issues/34) Remove Strategy Injection on HystrixCommand
* [Pull 36](https://github.com/Netflix/Hystrix/pull/36) example webapp
* [Pull 37](https://github.com/Netflix/Hystrix/pull/37) Migrate metrics stream from org.json.JSONObject to Jackson

### Version 1.0.3 ###

* [Pull 4](https://github.com/Netflix/Hystrix/pull/4) Contrib request context servlet filters 
* [Pull 16](https://github.com/Netflix/Hystrix/pull/16) Change logger from info to debug for property changes
* [Issue 12](https://github.com/Netflix/Hystrix/issues/12) Use logger.error not logger.debug for fallback failure
* [Issue 8](https://github.com/Netflix/Hystrix/issues/8) Capture exception from run() and expose getter
* [Issue 22](https://github.com/Netflix/Hystrix/issues/22) Default Collapser scope to REQUEST if using Setter
* [Pull 27](https://github.com/Netflix/Hystrix/pull/27) Initialize HealthCounts to non-null value
* [Issue 28](https://github.com/Netflix/Hystrix/issues/28) Thread pools lost custom names in opensource refactoring
* [Pull 30](https://github.com/Netflix/Hystrix/pull/30) Simplified access to HystrixCommandMetrics
* Javadoc and README changes

### Version 1.0.2 ###

* Javadoc changes

### Version 1.0.0 ###

* Initial open source release 


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Hystrix

If you would like to contribute code you can do so through GitHub by forking the repository and sending a pull request.

When submitting code, please make every effort to follow existing conventions and style in order to keep the code as readable as possible.

## License

By contributing your code, you agree to license your contribution under the terms of the APLv2: https://github.com/Netflix/Hystrix/blob/master/LICENSE-2.0.txt

All files are released with the Apache 2.0 license.

If you are adding a new file it should have a header like this:

```
/**
 * Copyright 2013 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.
 */
 ```


================================================
FILE: LICENSE-2.0.txt
================================================

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright 2012 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.


================================================
FILE: OSSMETADATA
================================================
osslifecycle=maintenance


================================================
FILE: README.md
================================================
<img src="https://netflix.github.io/Hystrix/images/hystrix-logo-tagline-850.png">

# Hystrix: Latency and Fault Tolerance for Distributed Systems

[![NetflixOSS Lifecycle](https://img.shields.io/osslifecycle/Netflix/hystrix.svg)]()
[![][travis img]][travis]
[![][maven img]][maven]
[![][license img]][license]

# Hystrix Status
Hystrix is no longer in active development, and is currently in maintenance mode.

Hystrix (at version 1.5.18) is stable enough to meet the needs of Netflix for our existing applications. Meanwhile, our focus has shifted towards more adaptive implementations that react to an application’s real time performance rather than pre-configured settings (for example, through [adaptive concurrency limits](https://medium.com/@NetflixTechBlog/performance-under-load-3e6fa9a60581)). For the cases where something like Hystrix makes sense, we intend to continue using Hystrix for existing applications, and to leverage open and active projects like [resilience4j](https://github.com/resilience4j/resilience4j) for new internal projects. We are beginning to recommend others do the same.

Netflix Hystrix is now officially in maintenance mode, with the following expectations to the greater community: 
Netflix will no longer actively review issues, merge pull-requests, and release new versions of Hystrix. 
We have made a final release of Hystrix (1.5.18) per [issue 1891](https://github.com/Netflix/Hystrix/issues/1891) so that the latest version in Maven Central is aligned with the last known stable version used internally at Netflix (1.5.11). 
If members of the community are interested in taking ownership of Hystrix and moving it back into active mode, please reach out to hystrixoss@googlegroups.com.

Hystrix has served Netflix and the community well over the years, and the transition to maintenance mode is in no way an indication that the concepts and ideas from Hystrix are no longer valuable. On the contrary, Hystrix has inspired many great ideas and projects. We thank everyone at Netflix, and in the greater community, for all the contributions made to Hystrix over the years.

## Introduction

Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.

## Full Documentation

See the [Wiki](https://github.com/Netflix/Hystrix/wiki/) for full documentation, examples, operational details and other information.

See the [Javadoc](http://netflix.github.com/Hystrix/javadoc) for the API.

## Communication

- Google Group: [HystrixOSS](http://groups.google.com/d/forum/hystrixoss)
- Twitter: [@HystrixOSS](http://twitter.com/HystrixOSS)
- [GitHub Issues](https://github.com/Netflix/Hystrix/issues)

## What does it do?

#### 1) Latency and Fault Tolerance

Stop cascading failures. Fallbacks and graceful degradation. Fail fast and rapid recovery. 

Thread and semaphore isolation with circuit breakers. 

#### 2) Realtime Operations

Realtime monitoring and configuration changes. Watch service and property changes take effect immediately as they spread across a fleet. 

Be alerted, make decisions, affect change and see results in seconds. 

#### 3) Concurrency

Parallel execution. Concurrency aware request caching. Automated batching through request collapsing.

## Hello World!

Code to be isolated is wrapped inside the run() method of a HystrixCommand similar to the following:

```java
public class CommandHelloWorld extends HystrixCommand<String> {

    private final String name;

    public CommandHelloWorld(String name) {
        super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"));
        this.name = name;
    }

    @Override
    protected String run() {
        return "Hello " + name + "!";
    }
}
```

This command could be used like this:

```java
String s = new CommandHelloWorld("Bob").execute();
Future<String> s = new CommandHelloWorld("Bob").queue();
Observable<String> s = new CommandHelloWorld("Bob").observe();
```

More examples and information can be found in the [How To Use](https://github.com/Netflix/Hystrix/wiki/How-To-Use) section.

Example source code can be found in the [hystrix-examples](https://github.com/Netflix/Hystrix/tree/master/hystrix-examples/src/main/java/com/netflix/hystrix/examples) module.

## Binaries

Binaries and dependency information for Maven, Ivy, Gradle and others can be found at [http://search.maven.org](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.hystrix%22%20AND%20a%3A%22hystrix-core%22).

Change history and version numbers => [CHANGELOG.md](https://github.com/Netflix/Hystrix/blob/master/CHANGELOG.md)

Example for Maven:

```xml
<dependency>
    <groupId>com.netflix.hystrix</groupId>
    <artifactId>hystrix-core</artifactId>
    <version>x.y.z</version>
</dependency>
```
and for Ivy:

```xml
<dependency org="com.netflix.hystrix" name="hystrix-core" rev="x.y.z" />
```

If you need to download the jars instead of using a build system, create a Maven pom file like this with the desired version:

```xml
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.netflix.hystrix.download</groupId>
	<artifactId>hystrix-download</artifactId>
	<version>1.0-SNAPSHOT</version>
	<name>Simple POM to download hystrix-core and dependencies</name>
	<url>http://github.com/Netflix/Hystrix</url>
	<dependencies>
		<dependency>
			<groupId>com.netflix.hystrix</groupId>
			<artifactId>hystrix-core</artifactId>
			<version>x.y.z</version>
			<scope/>
		</dependency>
	</dependencies>
</project>
```

Then execute:

```
mvn -f download-hystrix-pom.xml dependency:copy-dependencies
```

It will download hystrix-core-*.jar and its dependencies into ./target/dependency/.

You need Java 6 or later.

## Build

To build:

```
$ git clone git@github.com:Netflix/Hystrix.git
$ cd Hystrix/
$ ./gradlew build
```

Further details on building can be found on the [Getting Started](https://github.com/Netflix/Hystrix/wiki/Getting-Started) page of the wiki.

## Run Demo

To run a [demo app](https://github.com/Netflix/Hystrix/tree/master/hystrix-examples/src/main/java/com/netflix/hystrix/examples/demo/HystrixCommandDemo.java) do the following:

```
$ git clone git@github.com:Netflix/Hystrix.git
$ cd Hystrix/
./gradlew runDemo
```

You will see output similar to the following:

```
Request => GetUserAccountCommand[SUCCESS][8ms], GetPaymentInformationCommand[SUCCESS][20ms], GetUserAccountCommand[SUCCESS, RESPONSE_FROM_CACHE][0ms]x2, GetOrderCommand[SUCCESS][101ms], CreditCardCommand[SUCCESS][1075ms]
Request => GetUserAccountCommand[FAILURE, FALLBACK_SUCCESS][2ms], GetPaymentInformationCommand[SUCCESS][22ms], GetUserAccountCommand[FAILURE, FALLBACK_SUCCESS, RESPONSE_FROM_CACHE][0ms]x2, GetOrderCommand[SUCCESS][130ms], CreditCardCommand[SUCCESS][1050ms]
Request => GetUserAccountCommand[FAILURE, FALLBACK_SUCCESS][4ms], GetPaymentInformationCommand[SUCCESS][19ms], GetUserAccountCommand[FAILURE, FALLBACK_SUCCESS, RESPONSE_FROM_CACHE][0ms]x2, GetOrderCommand[SUCCESS][145ms], CreditCardCommand[SUCCESS][1301ms]
Request => GetUserAccountCommand[SUCCESS][4ms], GetPaymentInformationCommand[SUCCESS][11ms], GetUserAccountCommand[SUCCESS, RESPONSE_FROM_CACHE][0ms]x2, GetOrderCommand[SUCCESS][93ms], CreditCardCommand[SUCCESS][1409ms]

#####################################################################################
# CreditCardCommand: Requests: 17 Errors: 0 (0%)   Mean: 1171 75th: 1391 90th: 1470 99th: 1486 
# GetOrderCommand: Requests: 21 Errors: 0 (0%)   Mean: 100 75th: 144 90th: 207 99th: 230 
# GetUserAccountCommand: Requests: 21 Errors: 4 (19%)   Mean: 8 75th: 11 90th: 46 99th: 51 
# GetPaymentInformationCommand: Requests: 21 Errors: 0 (0%)   Mean: 18 75th: 21 90th: 24 99th: 25 
#####################################################################################

Request => GetUserAccountCommand[SUCCESS][10ms], GetPaymentInformationCommand[SUCCESS][16ms], GetUserAccountCommand[SUCCESS, RESPONSE_FROM_CACHE][0ms]x2, GetOrderCommand[SUCCESS][51ms], CreditCardCommand[SUCCESS][922ms]
Request => GetUserAccountCommand[SUCCESS][12ms], GetPaymentInformationCommand[SUCCESS][12ms], GetUserAccountCommand[SUCCESS, RESPONSE_FROM_CACHE][0ms]x2, GetOrderCommand[SUCCESS][68ms], CreditCardCommand[SUCCESS][1257ms]
Request => GetUserAccountCommand[SUCCESS][10ms], GetPaymentInformationCommand[SUCCESS][11ms], GetUserAccountCommand[SUCCESS, RESPONSE_FROM_CACHE][0ms]x2, GetOrderCommand[SUCCESS][78ms], CreditCardCommand[SUCCESS][1295ms]
Request => GetUserAccountCommand[FAILURE, FALLBACK_SUCCESS][6ms], GetPaymentInformationCommand[SUCCESS][11ms], GetUserAccountCommand[FAILURE, FALLBACK_SUCCESS, RESPONSE_FROM_CACHE][0ms]x2, GetOrderCommand[SUCCESS][153ms], CreditCardCommand[SUCCESS][1321ms]
```

This demo simulates 4 different [HystrixCommand](https://github.com/Netflix/Hystrix/tree/master/hystrix-core/src/main/java/com/netflix/hystrix/HystrixCommand.java) implementations with failures, latency, timeouts and duplicate calls in a multi-threaded environment.

It logs the results of [HystrixRequestLog](https://github.com/Netflix/Hystrix/tree/master/hystrix-core/src/main/java/com/netflix/hystrix/HystrixRequestLog.java) and metrics from [HystrixCommandMetrics](https://github.com/Netflix/Hystrix/tree/master/hystrix-core/src/main/java/com/netflix/hystrix/HystrixCommandMetrics.java).

## Dashboard

The hystrix-dashboard component of this project has been deprecated and moved to [Netflix-Skunkworks/hystrix-dashboard](https://github.com/Netflix-Skunkworks/hystrix-dashboard). Please see the README there for more details including important security considerations.


## Bugs and Feedback

For bugs, questions and discussions please use the [GitHub Issues](https://github.com/Netflix/Hystrix/issues).

 
## LICENSE

Copyright 2013 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.


[travis]:https://travis-ci.org/Netflix/Hystrix
[travis img]:https://travis-ci.org/Netflix/Hystrix.svg?branch=master

[maven]:http://search.maven.org/#search|gav|1|g:"com.netflix.hystrix"%20AND%20a:"hystrix-core"
[maven img]:https://maven-badges.herokuapp.com/maven-central/com.netflix.hystrix/hystrix-core/badge.svg

[release]:https://github.com/netflix/hystrix/releases
[release img]:https://img.shields.io/github/release/netflix/hystrix.svg

[license]:LICENSE-2.0.txt
[license img]:https://img.shields.io/badge/License-Apache%202-blue.svg



================================================
FILE: build.gradle
================================================
plugins {
    id "com.netflix.nebula.netflixoss" version "11.3.1"
    id "me.champeau.jmh" version "0.7.1"
}

allprojects {
    repositories {
        mavenCentral()
    }
}

subprojects {
    apply plugin: 'nebula.netflixoss'
    apply plugin: 'java-library'

    group = "com.netflix.hystrix"

    tasks.withType(Javadoc).configureEach {
        failOnError = false
    }
}


================================================
FILE: codequality/checkstyle.xml
================================================
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">

<module name="Checker">

    <!-- Checks that a package-info.java file exists for each package.     -->
    <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
    <!--
    <module name="JavadocPackage">
      <property name="allowLegacy" value="true"/>
    </module>
    -->

    <!-- Checks whether files end with a new line.                        -->
    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
    <module name="NewlineAtEndOfFile"/>

    <!-- Checks that property files contain the same keys.         -->
    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
    <module name="Translation"/>

    <!-- Checks for Size Violations.                    -->
    <!-- See http://checkstyle.sf.net/config_sizes.html -->
    <module name="FileLength"/>

    <!-- Checks for whitespace                               -->
    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
    <module name="FileTabCharacter"/>

    <!-- Miscellaneous other checks.                   -->
    <!-- See http://checkstyle.sf.net/config_misc.html -->
    <module name="RegexpSingleline">
       <property name="format" value="\s+$"/>
       <property name="minimum" value="0"/>
       <property name="maximum" value="0"/>
       <property name="message" value="Line has trailing spaces."/>
       <property name="severity" value="info"/>
    </module>

    <module name="TreeWalker">

        <!-- Checks for Javadoc comments.                     -->
        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
        <module name="JavadocMethod">
          <property name="scope" value="package"/>
          <property name="allowMissingParamTags" value="true"/>
          <property name="allowMissingThrowsTags" value="true"/>
          <property name="allowMissingReturnTag" value="true"/>
          <property name="allowThrowsTagsForSubclasses" value="true"/>
          <property name="allowUndeclaredRTE" value="true"/>
          <property name="allowMissingPropertyJavadoc" value="true"/>
        </module>
        <module name="JavadocType">
          <property name="scope" value="package"/>
        </module>
        <module name="JavadocVariable">
          <property name="scope" value="package"/>
        </module>
        <module name="JavadocStyle">
          <property name="checkEmptyJavadoc" value="true"/>
        </module>

        <!-- Checks for Naming Conventions.                  -->
        <!-- See http://checkstyle.sf.net/config_naming.html -->
        <module name="ConstantName"/>
        <module name="LocalFinalVariableName"/>
        <module name="LocalVariableName"/>
        <module name="MemberName"/>
        <module name="MethodName"/>
        <module name="PackageName"/>
        <module name="ParameterName"/>
        <module name="StaticVariableName"/>
        <module name="TypeName"/>

        <!-- Checks for imports                              -->
        <!-- See http://checkstyle.sf.net/config_import.html -->
        <module name="AvoidStarImport"/>
        <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
        <module name="RedundantImport"/>
        <module name="UnusedImports"/>


        <!-- Checks for Size Violations.                    -->
        <!-- See http://checkstyle.sf.net/config_sizes.html -->
        <module name="LineLength">
          <!-- what is a good max value? -->
          <property name="max" value="120"/>
          <!-- ignore lines like "$File: //depot/... $" -->
          <property name="ignorePattern" value="\$File.*\$"/>
          <property name="severity" value="info"/>
        </module>
        <module name="MethodLength"/>
        <module name="ParameterNumber"/>


        <!-- Checks for whitespace                               -->
        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
        <module name="EmptyForIteratorPad"/>
        <module name="GenericWhitespace"/>
        <module name="MethodParamPad"/>
        <module name="NoWhitespaceAfter"/>
        <module name="NoWhitespaceBefore"/>
        <module name="OperatorWrap"/>
        <module name="ParenPad"/>
        <module name="TypecastParenPad"/>
        <module name="WhitespaceAfter"/>
        <module name="WhitespaceAround"/>

        <!-- Modifier Checks                                    -->
        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
        <module name="ModifierOrder"/>
        <module name="RedundantModifier"/>


        <!-- Checks for blocks. You know, those {}'s         -->
        <!-- See http://checkstyle.sf.net/config_blocks.html -->
        <module name="AvoidNestedBlocks"/>
        <module name="EmptyBlock">
          <property name="option" value="text"/>
        </module>
        <module name="LeftCurly"/>
        <module name="NeedBraces"/>
        <module name="RightCurly"/>


        <!-- Checks for common coding problems               -->
        <!-- See http://checkstyle.sf.net/config_coding.html -->
        <!-- <module name="AvoidInlineConditionals"/> -->
        <module name="EmptyStatement"/>
        <module name="EqualsHashCode"/>
        <module name="HiddenField">
          <property name="ignoreConstructorParameter" value="true"/>
          <property name="ignoreSetter" value="true"/>
          <property name="severity" value="warning"/>
        </module>
        <module name="IllegalInstantiation"/>
        <module name="InnerAssignment"/>
        <module name="MagicNumber">
          <property name="severity" value="warning"/>
        </module>
        <module name="MissingSwitchDefault"/>
        <!-- Problem with finding exception types... -->
        <module name="RedundantThrows">
          <property name="allowUnchecked" value="true"/>
          <property name="suppressLoadErrors" value="true"/>
          <property name="severity" value="info"/>
        </module>
        <module name="SimplifyBooleanExpression"/>
        <module name="SimplifyBooleanReturn"/>

        <!-- Checks for class design                         -->
        <!-- See http://checkstyle.sf.net/config_design.html -->
        <!-- <module name="DesignForExtension"/> -->
        <module name="FinalClass"/>
        <module name="HideUtilityClassConstructor"/>
        <module name="InterfaceIsType"/>
        <module name="VisibilityModifier"/>


        <!-- Miscellaneous other checks.                   -->
        <!-- See http://checkstyle.sf.net/config_misc.html -->
        <module name="ArrayTypeStyle"/>
        <!-- <module name="FinalParameters"/> -->
        <module name="TodoComment">
          <property name="format" value="TODO"/>
          <property name="severity" value="info"/>
        </module>
        <module name="UpperEll"/>

        <module name="FileContentsHolder"/> <!-- Required by comment suppression filters -->

    </module>

    <!-- Enable suppression comments -->
    <module name="SuppressionCommentFilter">
      <property name="offCommentFormat" value="CHECKSTYLE IGNORE\s+(\S+)"/>
      <property name="onCommentFormat" value="CHECKSTYLE END IGNORE\s+(\S+)"/>
      <property name="checkFormat" value="$1"/>
    </module>
    <module name="SuppressWithNearbyCommentFilter">
      <!-- Syntax is "SUPPRESS CHECKSTYLE name" -->
      <property name="commentFormat" value="SUPPRESS CHECKSTYLE (\w+)"/>
      <property name="checkFormat" value="$1"/>
      <property name="influenceFormat" value="1"/>
    </module>
</module>


================================================
FILE: gradle/javadocStyleSheet.css
================================================
# originally from http://sensemaya.org/files/stylesheet.css and then modified
# http://sensemaya.org/maya/2009/07/10/making-javadoc-more-legible

/* Javadoc style sheet */

/* Define colors, fonts and other style attributes here to override the defaults */

/* Page background color */
body { background-color: #FFFFFF; color:#333; font-size: 100%; }

body { font-size: 0.875em; line-height: 1.286em; font-family:   "Helvetica", "Arial", sans-serif; }

code { color: #777; line-height: 1.286em; font-family: "Consolas", "Lucida Console", "Droid Sans Mono", "Andale Mono", "Monaco", "Lucida Sans Typewriter"; }

a { text-decoration: none; color: #16569A; /* also try #2E85ED, #0033FF, #6C93C6, #1D7BBE, #1D8DD2 */ }
a:hover { text-decoration: underline; }


table[border="1"] { border: 1px solid #ddd; }
table[border="1"] td, table[border="1"] th { border: 1px solid #ddd; }
table[cellpadding="3"] td { padding: 0.5em; }

font[size="-1"] { font-size: 0.85em; line-height: 1.5em; }
font[size="-2"] { font-size: 0.8em; }
font[size="+2"] { font-size: 1.4em; line-height: 1.3em; padding: 0.4em 0; }

/* Headings */
h1 { font-size: 1.5em; line-height: 1.286em;}
h2.title { color: #c81f08; }

/* Table colors */
.TableHeadingColor     { background: #ccc; color:#444; } /* Dark mauve */
.TableSubHeadingColor  { background: #ddd; color:#444; } /* Light mauve */
.TableRowColor         { background: #FFFFFF; color:#666; font-size: 0.95em; } /* White */
.TableRowColor code    { color:#000; } /* White */

/* Font used in left-hand frame lists */
.FrameTitleFont   { font-size: 100%; }
.FrameHeadingFont { font-size:  90%; }
.FrameItemFont { font-size:  0.9em; line-height: 1.3em; 
}
/* Java Interfaces */
.FrameItemFont a i {
  font-style: normal; color: #16569A;
}
.FrameItemFont a:hover i {
  text-decoration: underline;
}


/* Navigation bar fonts and colors */
.NavBarCell1    { background-color:#E0E6DF; } /* Light mauve */
.NavBarCell1Rev { background-color:#16569A; color:#FFFFFF} /* Dark Blue */
.NavBarFont1    { }
.NavBarFont1Rev { color:#FFFFFF; }

.NavBarCell2    { background-color:#FFFFFF; color:#000000}
.NavBarCell3    { background-color:#FFFFFF; color:#000000}



================================================
FILE: gradle/wrapper/gradle-wrapper.properties
================================================
#Mon Jun 19 21:27:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-all.zip


================================================
FILE: gradle.properties
================================================


================================================
FILE: gradlew
================================================
#!/usr/bin/env sh

##############################################################################
##
##  Gradle start up script for UN*X
##
##############################################################################

# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
        PRG="$link"
    else
        PRG=`dirname "$PRG"`"/$link"
    fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null

APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`

# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"

warn () {
    echo "$*"
}

die () {
    echo
    echo "$*"
    echo
    exit 1
}

# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
  CYGWIN* )
    cygwin=true
    ;;
  Darwin* )
    darwin=true
    ;;
  MINGW* )
    msys=true
    ;;
  NONSTOP* )
    nonstop=true
    ;;
esac

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar

# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
        # IBM's JDK on AIX uses strange locations for the executables
        JAVACMD="$JAVA_HOME/jre/sh/java"
    else
        JAVACMD="$JAVA_HOME/bin/java"
    fi
    if [ ! -x "$JAVACMD" ] ; then
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
    fi
else
    JAVACMD="java"
    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi

# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
    MAX_FD_LIMIT=`ulimit -H -n`
    if [ $? -eq 0 ] ; then
        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
            MAX_FD="$MAX_FD_LIMIT"
        fi
        ulimit -n $MAX_FD
        if [ $? -ne 0 ] ; then
            warn "Could not set maximum file descriptor limit: $MAX_FD"
        fi
    else
        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
    fi
fi

# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi

# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
    JAVACMD=`cygpath --unix "$JAVACMD"`

    # We build the pattern for arguments to be converted via cygpath
    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
    SEP=""
    for dir in $ROOTDIRSRAW ; do
        ROOTDIRS="$ROOTDIRS$SEP$dir"
        SEP="|"
    done
    OURCYGPATTERN="(^($ROOTDIRS))"
    # Add a user-defined pattern to the cygpath arguments
    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
    fi
    # Now convert the arguments - kludge to limit ourselves to /bin/sh
    i=0
    for arg in "$@" ; do
        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option

        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
        else
            eval `echo args$i`="\"$arg\""
        fi
        i=$((i+1))
    done
    case $i in
        (0) set -- ;;
        (1) set -- "$args0" ;;
        (2) set -- "$args0" "$args1" ;;
        (3) set -- "$args0" "$args1" "$args2" ;;
        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
    esac
fi

# Escape application args
save () {
    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
    echo " "
}
APP_ARGS=$(save "$@")

# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"

# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
  cd "$(dirname "$0")"
fi

exec "$JAVACMD" "$@"


================================================
FILE: gradlew.bat
================================================
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem  Gradle startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init

echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto init

echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:init
@rem Get command-line arguments, handling Windows variants

if not "%OS%" == "Windows_NT" goto win9xME_args

:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2

:win9xME_args_slurp
if "x%~1" == "x" goto execute

set CMD_LINE_ARGS=%*

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd

:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1

:mainEnd
if "%OS%"=="Windows_NT" endlocal

:omega


================================================
FILE: hystrix-contrib/README.md
================================================
## hystrix-contrib

This is the parent of all "contrib" submodules to Hystrix. 

Examples of what makes sense as a contrib submodule are:

- alternate implementations of [HystrixMetricsPublisher](http://netflix.github.com/Hystrix/javadoc/com/netflix/hystrix/strategy/metrics/HystrixMetricsPublisher.html)
- alternate implementations of [HystrixPropertiesStrategy](http://netflix.github.com/Hystrix/javadoc/com/netflix/hystrix/strategy/properties/HystrixPropertiesStrategy.html)
- request lifecycle implementations (such as [hystrix-request-servlet](https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-request-servlet))
- implementations of [HystrixEventNotifier](http://netflix.github.com/Hystrix/javadoc/com/netflix/hystrix/strategy/eventnotifier/HystrixEventNotifier.html)
- dashboard and monitoring tools

3rd partly libraries wrapped with Hystrix do not belong here and should be their own project.

They can however be referenced from the Wiki [Libraries](https://github.com/Netflix/Hystrix/wiki/Libraries) page.


================================================
FILE: hystrix-contrib/hystrix-clj/README.md
================================================
# Hystrix Clojure Bindings

This module contains idiomatic Clojure bindings for Hystrix.

# Binaries

Binaries and dependency information for Maven, Ivy, Gradle and others can be found at [http://search.maven.org](http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22hystrix-clj%22).

Example for Maven:

```xml
<dependency>
    <groupId>com.netflix.hystrix</groupId>
    <artifactId>hystrix-clj</artifactId>
    <version>x.y.z</version>
</dependency>
```

and for Ivy:

```xml
<dependency org="com.netflix.hystrix" name="hystrix-clj" rev="x.y.z" />
```

and for Leiningen:

```clojure
[com.netflix.hystrix/hystrix-clj "x.y.z"]
```

# Usage

Please see the docstrings in src/com/netflix/hystrix/core.clj for extensive usage info.

## TL;DR
You have a function that interacts with an untrusted dependency:

```clojure
(defn make-request
  [arg]
  ... make the request ...)

; execute the request
(make-request "baz")
```

and you want to make it a Hystrix dependency command. Do this:

```clojure
(defcommand make-request
  [arg]
  ... make the request ...)

; execute the request
(make-request "baz")

; or queue for async execution
(queue #'make-request "baz")
```

# Event Stream

A Clojure version of hystrix-event-stream can be found at https://github.com/josephwilk/hystrix-event-stream-clj


================================================
FILE: hystrix-contrib/hystrix-clj/build.gradle
================================================
buildscript {
    repositories {
        jcenter()
        maven{
          name 'clojars'
          url 'https://clojars.org/repo'
        }
    }
    dependencies {
        classpath 'com.netflix.nebula:nebula-clojure-plugin:13.0.1'
    }
}
apply plugin: 'com.netflix.nebula.clojure' // this is a wrapper around clojuresque to make it behave well with other plugins

repositories {
    mavenCentral()
    clojarsRepo()
}

dependencies {
    api project(':hystrix-core')
    implementation 'org.clojure:clojure:1.7.0'
}

/*
 * Add Counterclockwise and include 'provided' dependencies
 */
eclipse {
  project {
    natures "ccw.nature"
  }
}


////////////////////////////////////////////////////////////////////////////////
// Define a task that runs an nrepl server. The port is given with the nreplPort
// property:
//    gradlew nrepl -PnreplPort=9999
// or put the property in ~/.gradle/gradle.properties
def nreplPort = 9999 // hardcoding to 9999 until figuring out how to make this not break Eclipse project import when the property isn't defined
configurations { nrepl }
dependencies { nrepl 'org.clojure:tools.nrepl:0.2.1' }
task nrepl(type: JavaExec) {
    classpath configurations.nrepl.asPath,
              project.sourceSets.main.clojure.srcDirs,
              project.sourceSets.test.clojure.srcDirs,
              sourceSets.main.runtimeClasspath
    main = "clojure.main"
    args '--eval', "(ns gradle-nrepl (:require [clojure.tools.nrepl.server :refer (start-server stop-server)]))",
        '--eval', "(println \"Starting nrepl server on port $nreplPort\")",
        '--eval', "(def server (start-server :port $nreplPort))"
}

// vim:ft=groovy


================================================
FILE: hystrix-contrib/hystrix-clj/src/main/clojure/com/netflix/hystrix/core.clj
================================================
;;
;; Copyright 2015 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.

(ns com.netflix.hystrix.core
  "THESE BINDINGS ARE EXPERIMENTAL AND SUBJECT TO CHANGE

  Functions for defining and executing Hystrix dependency commands and collapsers.

  The definition of commands and collapers is separated from their instantiation and execution.
  They are represented as plain Clojure maps (see below) which are later instantiated into
  functional HystrixCommand or HystrixCollapser instances. defcommand and defcollapser macros
  are provided to assist in defining these maps.

  A command or collapser definition map can be passed to the execute and queue functions to
  invoke the command.

  The main Hystrix documentation can be found at https://github.com/Netflix/Hystrix. In particular,
  you may find the Javadocs useful if you need to drop down into Java:
  http://netflix.github.io/Hystrix/javadoc/

  # HystrixCommand

  A HystrixCommand is a representation for an interaction with a network dependency, or other
  untrusted resource. See the Hystrix documentation (https://github.com/Netflix/Hystrix) for
  more details.

  A command is defined by a map with the following keys:

    :type

      Always :command. Required.

    :group-key

      A HystrixCommandGroupKey, string, or keyword. Required.

    :command-key

      A HystrixCommandKey, string, or keyword. Required.

    :thread-pool-key

      A HystrixThreadPoolKey, string, or keyword. Optional, defaults to :group-key.

    :run-fn

      The function to run for the command. The function may have any number of
      arguments. Required.

    :fallback-fn

      A function with the same args as :run-fn that calculates a fallback result when
      the command fails. Optional, defaults to a function that throws UnsupportedOperationException.

    :cache-key-fn

      A function which the same args as :run-fn that calculates a cache key for the
      given args. Optional, defaults to nil, i.e. no caching.

    :init-fn

      A function that takes a definition map and HystrixCommand$Setter which should return
      a HystrixCommand$Setter (usually the one passed in) to ultimately be passed to the
      constructor of the HystrixCommand. For example,

          (fn [_ setter]
            (.andCommandPropertiesDefaults setter ...))

      This is your escape hatch into raw Hystrix.
      ... but NOTE: Hystrix does a fair bit of configuration caching and that caching is keyed
      by command key. Thus, many of the settings you apply within :init-fn will only apply
      the *first time it is invoked*. After that, they're ignored. This means that some REPL-based
      dynamicism is lost and that :init-fn shouldn't be used to configure a HystrixCommand at
      run-time. Instead use Archaius properties as described in the Hystrix docs.

  The com.netflix.hystrix.core/defcommand macro is a helper for defining this map and storing it
  in a var. For example, here's a definition for an addition command:

    ; Define a command with :group-key set to the current namespace, *ns*, and with :command-key
    ; set to \"plus\". The function the command executes is clojure.core/+.
    (defcommand plus
      \"My resilient addition operation\"
      [& args]
      (apply + args))
    ;=> #'user/plus

    ; Execute the command
    (plus 1 2 3 4 5)
    ;=> 15

    ; Queue the command for async operation
    (def f (queue #'plus 4 5))
    ;=> java.util.concurrent.Future/clojure.lang.IDeref

    ; Now you can deref the future as usual
    @f   ; or (.get f)
    ;=> 9

  # HystrixCollapser

  A HystrixCollapser allows multiple HystrixCommand requests to be batched together if the underlying
  resource provides such a capability. See the Hystrix documentation (https://github.com/Netflix/Hystrix)
  for more details.

  A collapser is defined by a map with the following keys:

    :type

      Always :collapser. Required.

    :collapser-key

      A HystrixCollapserKey, string, or keyword. Required.

    :collapse-fn

      A fn that takes a sequence of arg lists and instantiates a new command to
      execute them. Required. See com.netflix.hystrix.core/instantiate.  This
      function should be completely free of side effects.

    :map-fn

      A fn that takes sequence of arg lists (as passed to :collapse-fn) and the
      result from the command created by :collapse-fn. Must return a sequence of
      results where the nth element is the result or exception associated with the
      nth arg list. The arg lists are in the same order as passed to :collapse-fn.
      Required.  This function should be completely free of side effects.

    :scope

      The collapser scope, :request or :global. Optional, defaults to :request.

    :shard-fn

      A fn that takes a sequence of arg lists and shards them, returns a sequence of
      sequence of arg lists. Optional, defaults to no sharding.  This function should
      be completely free of side effects.

    :cache-key-fn

      A function that calculates a String cache key for the args passed to the
      collapser. Optional, defaults to a function returning nil, i.e. no caching.
      This function should be completely free of side effects.

    :init-fn

      A function that takes a definition map and HystrixCollapser$Setter which should return
      a HystrixCollapser$Setter (usually the one passed in) to ultimately be passed to the
      constructor of the HystrixCollapser. For example,

          (fn [_ setter]
            (.andCollapserPropertiesDefaults setter ...))

      This is your escape hatch into raw Hystrix. Please see additional notes about :init-fn
      above. They apply to collapsers as well.

  The com.netflix.hystric.core/defcollapser macro is a helper for defining this map and storing it
  in a callable var.
  "
  (:require [clojure.set :as set])
  (:import [java.util.concurrent Future]
           [com.netflix.hystrix
              HystrixExecutable
              HystrixCommand
              HystrixCommand$Setter
              HystrixCollapser
              HystrixCollapser$Scope
              HystrixCollapser$Setter
              HystrixCollapser$CollapsedRequest]
           [com.netflix.hystrix.strategy.concurrency
             HystrixRequestContext]))

(set! *warn-on-reflection* true)

(defmacro ^:private key-fn
  "Make a function that creates keys of the given class given one of:

      * an instance of class
      * a string name
      * a keyword name
  "
  [class]
  (let [s (-> class name (str "$Factory/asKey") symbol)]
    `(fn [key-name#]
       (cond
         (nil? key-name#)
          nil
         (instance? ~class key-name#)
           key-name#
         (keyword? key-name#)
           (~s (name key-name#))
         (string? key-name#)
           (~s key-name#)
         :else
           (throw (IllegalArgumentException. (str "Don't know how to make " ~class " from " key-name#)))))))

(def command-key
  "Given a string or keyword, returns a HystrixCommandKey. nil and HystrixCommandKey instances
  are returned unchanged.

  This function is rarely needed since most hystrix-clj functions will do this automatically.

  See:
    com.netflix.hystrix.HystrixCommandKey
  "
  (key-fn com.netflix.hystrix.HystrixCommandKey))

(def group-key
  "Given a string or keyword, returns a HystrixCommandGroupKey. nil and HystrixCommandGroupKey
  instances are returned unchanged.

  This function is rarely needed since most hystrix-clj functions will do this automatically.

  See:
    com.netflix.hystrix.HystrixCommandGroupKey
  "
  (key-fn com.netflix.hystrix.HystrixCommandGroupKey))

(def thread-pool-key
  "Given a string or keyword, returns a HystrixThreadPoolGroupKey. nil and HystrixThreadPoolKey
  instances are returned unchanged.

  This function is rarely needed since most hystrix-clj functions will do this automatically.

  See:
    com.netflix.hystrix.HystrixThreadPoolKey
  "
  (key-fn com.netflix.hystrix.HystrixThreadPoolKey))

(def collapser-key
  "Given a string or keyword, returns a HystrixCollapserKey. nil and HystrixCollapserKey
  instances are returned unchanged.

  This function is rarely needed since most hystrix-clj functions will do this automatically.

  See:
    com.netflix.hystrix.HystrixCollapserKey
  "
  (key-fn com.netflix.hystrix.HystrixCollapserKey))

(defn ^HystrixCollapser$Scope collapser-scope
  [v]
  (cond
    (instance? HystrixCollapser$Scope v)
      v
    (= :request v)
      HystrixCollapser$Scope/REQUEST
    (= :global v)
      HystrixCollapser$Scope/GLOBAL
    :else
      (throw (IllegalArgumentException. (str "Don't know how to make collapser scope from '" v "'")))))

(defn- required-key
  [k p msg]
  (fn [d]
    (when-not (contains? d k)
      (throw (IllegalArgumentException. (str k " is required."))))
    (when-not (p (get d k))
      (throw (IllegalArgumentException. (str k " " msg "."))))
    d))

(defn- optional-key
  [k p msg]
  (fn [d]
    (if-let [v (get d k)]
      (when-not (p v)
        (throw (IllegalArgumentException. (str k " " msg ".")))))
    d))
(defn- required-fn [k] (required-key k ifn? "must be a function"))
(defn- optional-fn [k] (optional-key k ifn? "must be a function"))

;################################################################################

(defmulti normalize
  "Given a definition map, verify and normalize it, expanding shortcuts to fully-qualified objects, etc.

  Throws IllegalArgumentException if any constraints for the definition map are violated.
  "
  (fn [definition] (:type definition)))

(defmulti instantiate* (fn [definition & _] (:type definition)))

;################################################################################

(def ^{:dynamic true :tag HystrixCommand} *command*
  "A dynamic var which is bound to the HystrixCommand instance during execution of
  :run-fn and :fallback-fn.

  It's occasionally useful, especially for fallbacks, to base the result on the state of
  the comand. The fallback might vary based on whether it was triggered by an application
  error versus a timeout.

  Note: As always with dynamic vars be careful about scoping. This binding only holds for
  the duration of the :run-fn or :fallback-fn.
  "
  nil)

;################################################################################

(defmacro with-request-context
  "Executes body within a new Hystrix Context.

  Initializes a new HystrixRequestContext, executes the code and then shuts down the
  context. Evaluates to the result of body.

  Example:

    (with-request-context
      (... some code that uses Hystrix ...))

  See:
    com.netflix.hystrix.strategy.concurrency.HystrixRequestContext
  "
  [& body]
  `(let [context# (HystrixRequestContext/initializeContext)]
     (try
       ~@body
       (finally
         (.shutdown context#)))))

(defn command
  "Helper function that takes a definition map for a HystrixCommand and returns a normalized
  version ready for use with execute and queue.

  See com.netflix.hystrix.core ns documentation for valid keys.

  See:
    com.netflix.hystrix.core/defcommand
  "
  [options-map]
  (-> options-map
    (assoc :type :command)
    normalize))

(defn- split-def-meta
  "split meta map out of def-style args list"
  [opts]
  (let [doc?      (string? (first opts))
        m         (if doc? {:doc (first opts)} {})
        opts      (if doc? (rest opts) opts)

        attrs?    (map? (first opts))
        m         (if attrs? (merge (first opts) m) m)
        opts      (if attrs? (rest opts) opts)]
    [m opts]))

(defn- extract-hystrix-command-options
  [meta-map]
  (let [key-map {:hystrix/cache-key-fn    :cache-key-fn
                 :hystrix/fallback-fn     :fallback-fn
                 :hystrix/group-key       :group-key
                 :hystrix/command-key     :command-key
                 :hystrix/thread-pool-key :thread-pool-key
                 :hystrix/init-fn         :init-fn }]
    (set/rename-keys (select-keys meta-map (keys key-map)) key-map)))

(defmacro defcommand
  "A macro with the same basic form as clojure.core/defn exception that it wraps the body
  of the function in a HystrixCommand. This allows an existing defn to be turned into
  a command by simply change \"defn\" to \"defcommand\".

  Additional command options can be provided in the defn attr-map, qualifying their keys with
  the :hystrix namespace, e.g. :thread-pool-key becomes :hystrix/thread-pool-key. Obviously,
  :hystrix/run-fn is ignored since it's inferred from the body of the macro.

  The *var* defined by this macro can be passed to the execute and queue functions as if
  it were a HystrixCommand definition map. The complete definition map is stored under the
  :hystrix key in the var's metadata.

  See com.netflix.hystrix.core ns documentation for valid keys.

  Example:

    (defcommand search
      \"Fault tolerant search\"
      [term]
      ... execute service request and return vector of results ...)

    ; Same as above, but add fallback and caching
    (defcommand search
      \"Fault tolerant search\"
      {:hystrix/cache-key-fn identity
       :hystrix/fallback-fn  (constantly []))}
      [term]
      ... execute service request and return vector of results ...)

    ; Call it like a normal function
    (search \"The Big Lebowski\")
    ;=>  [... vector of results ...]

    ; Asynchronously execute the search command
    (queue #'search \"Fargo\")
    ;=> a deref-able future
  "
  {:arglists '([name doc-string? attr-map? [params*] & body])}
  [name & opts]
  (let [command-key         (str *ns* "/" name )
        group-key           (str *ns*)
        [m body]            (split-def-meta opts)
        params              (if (vector? (first body))
                              (list (first body))
                              (map first body))
        m                   (if-not (contains? m :arglists)
                              (assoc m :arglists ('quote `(~params)))
                              m)]
    `(let [meta-options# (#'com.netflix.hystrix.core/extract-hystrix-command-options ~m)
           run-fn#       (fn ~name ~@body)
           command-map#  (com.netflix.hystrix.core/command (merge {:command-key   ~command-key
                                                                   :group-key     ~group-key
                                                                   :run-fn        run-fn# }
                                                                  meta-options#))]
       (def ~(with-meta name m)
         (fn [& args#]
           (apply com.netflix.hystrix.core/execute command-map# args#)))
       (alter-meta! (var ~name) assoc :hystrix command-map#)
       (var ~name))))

(defn- extract-hystrix-collapser-options
  [meta-map]
  (let [key-map {:hystrix/collapser-key :collapser-key
                 :hystrix/shard-fn      :shard-fn
                 :hystrix/scope         :scope
                 :hystrix/cache-key-fn  :cache-key-fn
                 :hystrix/init-fn       :init-fn }]
    (set/rename-keys (select-keys meta-map (keys key-map)) key-map)))

(defn collapser
  "Helper function that takes a definition map for a HystrixCollapser and returns a normalized
  version ready for use with execute and queue.

  See com.netflix.hystrix.core ns documentation for valid keys.

  See:
    com.netflix.hystrix.core/defcollapser
  "
  [{:keys [collapser-key] :as options-map}]
  (let [result (-> options-map
                 (assoc :type :collapser)
                 normalize)]
    result))

(defmacro defcollapser
  "Define a new collapser bound to the given var with a collapser key created from the current
  namespace and the var name. Like clojure.core/defn, takes an optional doc string and metadata
  map. The form is similar to defn except that a body for both :map-fn and :collapse-fn must be
  provided:

    (defcollapser my-collapser
      \"optional doc string\"
      {... optional attr map with var metadata ...}
      (collapse [arg-lists] ... body of :collapse-fn ...)
      (map      [arg-lists batch-result] ... body of :map-fn ...))

  Additional collapser options can be provided in the attr-map, qualifying their keys with
  the :hystrix namespace, e.g. :scope becomes :hystrix/scope. Obviously,
  :hystrix/collapse-fn and :hystrix/map-fn are ignored since they're inferred from the body
  of the macro.

  See com.netflix.hystrix.core ns documentation for valid keys.

  Example:

     (ns my-namespace
       :require  com.netflix.hystrix.core :refer [defcommand defcollapser instantiate execute queue])

    ; Suppose there's an existing multi-search command that takes a sequence of multiple search
    ; terms and returns a vector of vector of search results with a single server request.
    (defcommand multi-search ...)

    ; Now we can define single-term search as a collapser that will collapse multiple
    ; in-flight search requests into a single multi-term search request to the server
    (defcollapser search
      \"Collapsing single-term search command\"
      (collapse [arg-lists]
        ; Create a multi-search command, passing individual terms as a seq of args
        (instantiate multi-search (map first arg-lists)))
      (map [arg-lists batch-result]
        ; Map from input args to results. Here we assume order is preserve by
        ; multi-search so we can return the result list directly
        batch-result))

    ; The search collapser is now defined. It has a collapser key of \"my-namespace/search\".
    ; This is used for configuration and metrics.

    ; Syncrhonously execute the search collapser
    (search \"The Hudsucker Proxy\")
    ;=> [... vector of results ...]

    ; Asynchronously execute the search collapser
    (queue search \"Raising Arizona\")
    ;=> a deref-able future
  "
  {:arglists '([name doc-string? attr-map?
                (collapse [arg-lists] :collapse-fn body)
                (map      [arg-lists batch-result] :map-fn body)])}
  [name & opts]
  (let [full-name (str *ns* "/" name)
        [m fns]   (split-def-meta opts)
        _         (when-not (= 2 (count fns))
                    (throw (IllegalArgumentException. "Expected collapse and map forms.")))
        getfn     (fn [s] (first (filter #(= s (first %)) fns)))
        [_ collapse-args & collapse-body] (getfn 'collapse)
        [_ map-args      & map-body]      (getfn 'map)]
    `(let [meta-options# (#'com.netflix.hystrix.core/extract-hystrix-collapser-options ~m)
           map-fn#       (fn ~map-args ~@map-body)
           collapse-fn#  (fn ~collapse-args ~@collapse-body)
           def-map# (com.netflix.hystrix.core/collapser (merge {:collapser-key ~full-name
                                                                :map-fn map-fn#
                                                                :collapse-fn collapse-fn# }
                                                               meta-options#))]
       (def ~(with-meta name m)
         (fn [& args#]
           (apply com.netflix.hystrix.core/execute def-map# args#)))
       (alter-meta! (var ~name) assoc :hystrix def-map#)
       (var ~name))))

(defn ^HystrixExecutable instantiate
  "Given a normalized definition map for a command or collapser, 'compiles' it into a HystrixExecutable object
  that can be executed, queued, etc. This function should rarely be used. Use execute and queue
  instead.

  definition may be any of:

    * A var created with defcommand
    * A var created with defcollapser
    * A normalized definition map for a command
    * A HystrixExecutable instance and no additional arguments

  One typical use case for this function is to create a batch command in the :collapse-fn of a collapser. Another is to get an actual HystrixCommand instance to get access to additional methods
  it provides.

  See:
    com.neflix.hystrix.core/normalize
    com.neflix.hystrix.core/execute
    com.neflix.hystrix.core/queue
  "
  {:arglists '[[defcommand-var & args]
               [defcollapser-var & args]
               [definition-map & args]
               [HystrixExecutable] ]}
  [definition & args]
  (cond
    (var? definition)
      (if-let [hm (-> definition meta :hystrix)]
        (apply instantiate* hm  args)
        (throw (IllegalArgumentException. (str "Couldn't find :hystrix metadata on var " definition))))

    (map? definition)
      (apply instantiate* definition args)

    (instance? HystrixExecutable definition)
      (if (empty? args)
        definition
        (throw (IllegalArgumentException. "Trailing args when executing raw HystrixExecutable")))

    :else
      (throw (IllegalArgumentException. (str "Don't know how to make instantiate HystrixExecutable from: " definition)))))

(defn execute
  "Synchronously execute the command or collapser specified by the given normalized definition with
  the given arguments. Returns the result of :run-fn.

  NEVER EXECUTE A HystrixExecutable MORE THAN ONCE.

  See:
    http://netflix.github.com/Hystrix/javadoc/com/netflix/hystrix/HystrixCommand.html#execute()
  "
  [definition & args]
  (.execute ^HystrixExecutable (apply instantiate definition args)))

(defprotocol QueuedCommand
  "Protocol implemented by the result of com.netflix.hystrix.core/queue"
  (instance [this] "Returns the raw HystrixExecutable instance created by the queued command"))

(defn- queued-command [^HystrixExecutable instance ^Future future]
  (reify
    QueuedCommand
      (instance [this] instance)

    Future
      (get [this] (.get future))
      (get [this timeout timeunit] (.get future timeout timeunit))
      (isCancelled [this] (.isCancelled future))
      (isDone [this] (.isDone future))
      (cancel [this may-interrupt?] (.cancel future may-interrupt?))

    clojure.lang.IDeref
      (deref [this] (.get future))))

(defn queue
  "Asynchronously queue the command or collapser specified by the given normalized definition with
  the given arguments. Returns an object which implements both java.util.concurrent.Future and
  clojure.lang.IDeref.

  The returned object also implements the QueuedCommand protocol.

  If definition is already a HystrixExecutable and no args are given, queues it and returns
  the same object as described above. NEVER QUEUE A HystrixExecutable MORE THAN ONCE.

  Examples:

    (let [qc (queue my-command 1 2 3)]
      ... do something else ...
      ; wait for result
      @qc)

  See:
    http://netflix.github.com/Hystrix/javadoc/com/netflix/hystrix/HystrixCommand.html#queue()
  "
  [definition & args]
  (let [^HystrixExecutable instance (apply instantiate definition args)]
    (queued-command instance (.queue instance))))

(defn observe
  "Asynchronously execute the command or collapser specified by the given normalized definition
  with the given arguments. Returns an rx.Observable which can be subscribed to.

  Note that this will eagerly begin execution of the command, even if there are no subscribers.
  Use observe-later for lazy semantics.

  If definition is already a HystrixExecutable and no args are given, observes it and returns
  an Observable as described above. NEVER OBSERVE A HystrixExecutable MORE THAN ONCE.

  See:
    http://netflix.github.io/Hystrix/javadoc/com/netflix/hystrix/HystrixCommand.html#observe()
    http://netflix.github.io/Hystrix/javadoc/com/netflix/hystrix/HystrixCollapser.html#observe()
    http://netflix.github.io/RxJava/javadoc/rx/Observable.html
  "
  [definition & args]
  (let [^HystrixExecutable instance (apply instantiate definition args)]
    (.observe instance)))

(defprotocol ^:private ObserveLater
  "A protocol solely to eliminate reflection warnings because .toObservable
  can be found on both HystrixCommand and HystrixCollapser, but not in their
  common base class HystrixExecutable."
  (^:private observe-later* [this])
  (^:private observe-later-on* [this scheduler]))

(extend-protocol ObserveLater
  HystrixCommand
    (observe-later* [this] (.toObservable this))
    (observe-later-on* [this scheduler] (.observeOn (.toObservable this) scheduler))
  HystrixCollapser
    (observe-later* [this] (.toObservable this))
    (observe-later-on* [this scheduler] (.observeOn (.toObservable this) scheduler)))

(defn observe-later
  "Same as #'com.netflix.hystrix.core/observe, but command execution does not begin until the
  returned Observable is subscribed to.

  See:
    http://netflix.github.io/Hystrix/javadoc/com/netflix/hystrix/HystrixCommand.html#toObservable())
    http://netflix.github.io/RxJava/javadoc/rx/Observable.html
  "
  [definition & args]
  (observe-later* (apply instantiate definition args)))

(defn observe-later-on
  "Same as #'com.netflix.hystrix.core/observe-later but an explicit scheduler can be provided
  for the callback.

  See:
    com.netflix.hystrix.core/observe-later
    com.netflix.hystrix.core/observe
    http://netflix.github.io/Hystrix/javadoc/com/netflix/hystrix/HystrixCommand.html#toObservable(Scheduler)
    http://netflix.github.io/RxJava/javadoc/rx/Observable.html
  "
  [definition scheduler & args]
  (observe-later-on* (apply instantiate definition args) scheduler))

;################################################################################
; :command impl

(defmethod normalize :command
  [definition]
  (-> definition
    ((required-fn :run-fn))
    ((optional-fn :fallback-fn))
    ((optional-fn :cache-key-fn))
    ((optional-fn :init-fn))

    (update-in [:group-key] group-key)
    (update-in [:command-key] command-key)
    (update-in [:thread-pool-key] thread-pool-key)))

(defmethod instantiate* :command
  [{:keys [group-key command-key thread-pool-key
           run-fn fallback-fn cache-key-fn
           init-fn] :as def-map} & args]
  (let [setter (-> (HystrixCommand$Setter/withGroupKey group-key)
                 (.andCommandKey    command-key)
                 (.andThreadPoolKey thread-pool-key))
        setter (if init-fn
                 (init-fn def-map setter)
                 setter)]
    (when (not (instance? HystrixCommand$Setter setter))
      (throw (IllegalStateException. (str ":init-fn didn't return HystrixCommand$Setter instance"))))
    (proxy [HystrixCommand] [^HystrixCommand$Setter setter]
      (run []
        (binding [*command* this]
          (apply run-fn args)))
      (getFallback []
        (if fallback-fn
          (binding [*command* this]
            (apply fallback-fn args))
          (throw (UnsupportedOperationException. "No :fallback-fn provided"))))
      (getCacheKey [] (if cache-key-fn
                        (apply cache-key-fn args))))))


;################################################################################
; :collapser impl

(defmethod normalize :collapser
  [definition]
  (-> definition
    ((required-fn :collapse-fn))
    ((required-fn :map-fn))
    ((optional-fn :shard-fn))
    ((optional-fn :cache-key-fn))
    ((optional-fn :init-fn))

    (update-in [:collapser-key] collapser-key)
    (update-in [:scope]         (fnil collapser-scope HystrixCollapser$Scope/REQUEST))))

(defn- collapsed-request->arg-list
  [^HystrixCollapser$CollapsedRequest request]
  (.getArgument request))

(defmethod instantiate* :collapser
  [{:keys [collapser-key scope
           collapse-fn map-fn shard-fn cache-key-fn
           init-fn] :as def-map} & args]
  (let [setter (-> (HystrixCollapser$Setter/withCollapserKey collapser-key)
                 (.andScope scope))
        setter (if init-fn
                 (init-fn def-map setter)
                 setter)]
    (when (not (instance? HystrixCollapser$Setter setter))
      (throw (IllegalStateException. (str ":init-fn didn't return HystrixCollapser$Setter instance"))))
    (proxy [HystrixCollapser] [^HystrixCollapser$Setter setter]
      (getCacheKey [] (if cache-key-fn
                        (apply cache-key-fn args)))

      (getRequestArgument [] args)

      (createCommand [requests]
        (collapse-fn (map collapsed-request->arg-list requests)))

      (shardRequests [requests]
        (if shard-fn
          [requests] ; TODO implement sharding
          [requests]))

      (mapResponseToRequests [batch-response requests]
        (let [arg-lists        (map collapsed-request->arg-list requests)
              mapped-responses (map-fn arg-lists batch-response)]
          (if-not (= (count requests) (count mapped-responses))
            (throw (IllegalStateException.
                     (str ":map-fn of collapser '" collapser-key
                          "' did not return a result for each request. Expected " (count requests)
                          ", got " (count mapped-responses)))))
          (doseq [[^HystrixCollapser$CollapsedRequest request response] (map vector requests mapped-responses)]
            (if (instance? Exception response)
              (.setException request ^Exception response)
              (.setResponse request response))))))))


================================================
FILE: hystrix-contrib/hystrix-clj/src/test/clojure/com/netflix/hystrix/core_test.clj
================================================
;
; 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.
;

(ns com.netflix.hystrix.core-test
  (:use com.netflix.hystrix.core)
  (:require [clojure.test :refer [deftest testing is are use-fixtures]])
  (:import [com.netflix.hystrix Hystrix HystrixExecutable]
           [com.netflix.hystrix.strategy.concurrency HystrixRequestContext]
           [com.netflix.hystrix.exception HystrixRuntimeException]))

; reset hystrix after each execution, for consistency and sanity
(defn reset-fixture
  [f]
  (try
    (f)
    (finally
      (Hystrix/reset))))

(use-fixtures :once reset-fixture)

; wrap each test in hystrix context
(defn request-context-fixture
  [f]
  (try
    (HystrixRequestContext/initializeContext)
    (f)
    (finally
      (when-let [c (HystrixRequestContext/getContextForCurrentThread)]
        (.shutdown c)))))

(use-fixtures :each request-context-fixture)

(deftest test-command-key
  (testing "returns nil when input is nil"
    (is (nil? (command-key nil))))

  (testing "returns existing key unchanged"
    (let [k (command-key "foo")]
      (is (identical? k (command-key k)))))

  (testing "Makes a key from a string"
    (let [^com.netflix.hystrix.HystrixCommandKey k (command-key "foo")]
      (is (instance? com.netflix.hystrix.HystrixCommandKey k))
      (is (= "foo" (.name k)))))

  (testing "Makes a key from a keyword"
    (let [^com.netflix.hystrix.HystrixCommandKey k (command-key :bar)]
      (is (instance? com.netflix.hystrix.HystrixCommandKey k))
      (is (= "bar" (.name k))))))

(deftest test-normalize-collapser-scope
  (testing "throws on nil"
    (is (thrown? IllegalArgumentException (collapser-scope nil))))
  (testing "throws on unknown"
    (is (thrown? IllegalArgumentException (collapser-scope :foo))))
  (testing "Returns a scope unchanged"
    (is (= com.netflix.hystrix.HystrixCollapser$Scope/REQUEST
           (collapser-scope com.netflix.hystrix.HystrixCollapser$Scope/REQUEST))))
  (testing "Returns a request scope"
    (is (= com.netflix.hystrix.HystrixCollapser$Scope/REQUEST
           (collapser-scope :request))))
  (testing "Returns a global scope"
    (is (= com.netflix.hystrix.HystrixCollapser$Scope/GLOBAL
           (collapser-scope :global)))))

(deftest test-normalize-command
  (testing "throws if :init-fn isn't a fn"
    (is (thrown-with-msg? IllegalArgumentException #"^.*init-fn.*$"
                          (normalize {:type :command
                                      :run-fn +
                                      :init-fn 999})))))

(deftest test-normalize-collapser
  (testing "throws if :init-fn isn't a fn"
    (is (thrown-with-msg? IllegalArgumentException #"^.*init-fn.*$"
                          (normalize {:type :collapser
                                      :collapse-fn (fn [& args])
                                      :map-fn (fn [& args])
                                      :init-fn "foo"})))))

(deftest test-instantiate
  (let [base-def {:type :command
                  :group-key :my-group
                  :command-key :my-command
                  :run-fn + }]
    (testing "makes a HystrixCommand"
      (let [c (instantiate (normalize base-def))]
        (is (instance? com.netflix.hystrix.HystrixCommand c))))

    (testing "makes a HystrixCommand and calls :init-fn"
      (let [called (atom nil)
            init-fn (fn [d s] (reset! called [d s]) s)
            c (instantiate (normalize (assoc base-def :init-fn init-fn)))
            [d s] @called]
        (is (not (nil? @called)))
        (is (map? d))
        (is (instance? com.netflix.hystrix.HystrixCommand$Setter s))))

    (testing "makes a HystrixCommand that executes :run-fn with given args"
      (let [c (instantiate (normalize base-def) 99 42)]
        (is (= 141 (.execute c)))))

    (testing "makes a HystrixCommand that executes :fallback-fn with given args"
      (let [c (instantiate (normalize (assoc base-def
                                             :run-fn (fn [& args] (throw (IllegalStateException.)))
                                             :fallback-fn -))
                           99 42)]
        (is (= (- 99 42) (.execute c)))))

    (testing "makes a HystrixCommand that implements getCacheKey"
      (with-request-context
        (let [call-count (atom 0) ; make sure run-fn is only called once
               test-def (normalize (assoc base-def
                                     :run-fn       (fn [arg] (swap! call-count inc) (str arg "!"))
                                     :cache-key-fn (fn [arg] arg)))
               result1 (.execute (instantiate test-def "hi"))
               result2 (.execute (instantiate test-def "hi"))]
          (is (= "hi!" result1 result2))
          (is (= 1 @call-count))))))
  (testing "throws if :hystrix metadata isn't found in a var"
    (is (thrown? IllegalArgumentException
                 (instantiate #'map))))
  (testing "throws if it doesn't know what to do"
    (is (thrown? IllegalArgumentException
                 (instantiate [1 2 2])))))

(deftest test-execute
  (let [base-def {:type :command
                  :group-key :my-group
                  :command-key :my-command }]
    (testing "executes a HystrixCommand"
      (is (= "hello-world")
          (execute (instantiate (normalize (assoc base-def :run-fn str))
                                "hello" "-" "world"))))

    (testing "throws HystrixRuntimeException if called twice on same instance"
      (let [instance (instantiate (normalize (assoc base-def :run-fn str)) "hi")]
        (is (thrown? HystrixRuntimeException
                     (execute instance)
                     (execute instance)))))

    (testing "throws if there are trailing args"
      (is (thrown? IllegalArgumentException
                   (execute (instantiate (normalize base-def)) "hello" "-" "world"))))

    (testing "instantiates and executes a command"
      (is (= "hello-world")
          (execute (normalize (assoc base-def :run-fn str))
                   "hello" "-" "world")))))

(deftest test-queue
  (let [base-def {:type :command
                  :group-key :my-group
                  :command-key :my-command
                  :run-fn + }]

    (testing "queues a HystrixCommand"
      (is (= "hello-world")
          (.get (queue (instantiate (normalize (assoc base-def :run-fn str))
                                    "hello" "-" "world")))))

    (testing "throws if there are trailing args"
      (is (thrown? IllegalArgumentException
                   (queue (instantiate (normalize base-def)) "hello" "-" "world"))))

    (testing "instantiates and queues a command"
      (let [qc (queue (normalize (assoc base-def :run-fn str)) "hello" "-" "world")]
        (is (instance? HystrixExecutable (instance qc)))
        (is (future? qc))
        (is (= "hello-world" (.get qc) @qc))
        (is (.isDone qc))))))

(defn ^:private wait-for-observable
  [^rx.Observable o]
  (-> o .toBlocking .single))

(deftest test-observe
  (let [base-def {:type :command
                  :group-key :my-group
                  :command-key :my-command
                  :run-fn + }]
    (testing "observes a HystrixCommand"
      (is (= 99
             (-> (instantiate (normalize base-def) 11 88)
                 observe
                 wait-for-observable))))
    (testing "throws if there are trailing args"
      (is (thrown? IllegalArgumentException
                   (observe (instantiate (normalize base-def)) 10 23))))
    (testing "instantiates and observes a command"
      (let [o (observe (normalize base-def) 75 19 23)]
        (is (instance? rx.Observable o))
        (is (= (+ 75 19 23)
               (wait-for-observable o)))))))

(deftest test-observe-later
  (let [base-def {:type :command
                  :group-key :my-group
                  :command-key :my-command
                  :run-fn + }]
    (testing "observes a HystrixCommand"
      (is (= 99
             (-> (instantiate (normalize base-def) 11 88)
                 observe-later
                 wait-for-observable))))
    (testing "throws if there are trailing args"
      (is (thrown? IllegalArgumentException
                   (observe-later (instantiate (normalize base-def)) 10 23))))
    (testing "instantiates and observes a command"
      (let [o (observe-later (normalize base-def) 75 19 23)]
        (is (instance? rx.Observable o))
        (is (= (+ 75 19 23)
               (wait-for-observable o)))))
    (testing "observes command with a Scheduler"
      (let [o (observe-later-on (normalize base-def)
                                (rx.schedulers.Schedulers/newThread)
                                75 19 23)]
        (is (instance? rx.Observable o))
        (is (= (+ 75 19 23)
               (wait-for-observable o)))))))

(deftest test-this-command-binding
  (let [base-def {:type :command
                  :group-key :test-this-command-binding-group
                  :command-key :test-this-command-binding
                  }]
    (testing "this is bound while :run-fn is executing"
      (let [captured (atom nil)
            command-def (normalize (assoc base-def
                                          :run-fn (fn []
                                                    (reset! captured *command*))))
            command (instantiate command-def)]
        (.execute command)
        (is (identical? command @captured))))


    (testing "this is bound while :fallback-fn is executing"
      (let [captured (atom nil)
            command-def (normalize (assoc base-def
                                          :run-fn (fn [] (throw (Exception. "FALLBACK!")))
                                          :fallback-fn (fn [] (reset! captured *command*))
                                          ))
            command (instantiate command-def)]
        (.execute command)
        (is (identical? command @captured))))))

(deftest test-collapser
  ; These atoms are only for testing. In real life, collapser functions should *never*
  ; have side effects.
  (let [batch-calls (atom [])
        map-fn-calls (atom [])
        collapse-fn-calls (atom [])
        to-upper-batch  (fn [xs] (mapv #(.toUpperCase ^String %) xs))
        ; Define a batch version of to-upper
        command (normalize {:type        :command
                            :group-key   :my-group
                            :command-key :to-upper-batcher
                            :run-fn      (fn [xs]
                                           (swap! batch-calls conj (count xs))
                                           (to-upper-batch xs))})

        ; Define a collapser for to-upper
        collapser (normalize {:type          :collapser
                              :collapser-key :to-upper-collapser
                              :collapse-fn   (fn [arg-lists]
                                               (swap! collapse-fn-calls conj (count arg-lists))
                                               ; batch to-upper takes a list of strings, i.e. the first/only
                                               ; arg of each request
                                               (instantiate command (mapv first arg-lists)))
                              :map-fn        (fn [arg-lists uppered]
                                               (swap! map-fn-calls conj (count arg-lists))
                                               ; batch to-upper returns results in same order as input so
                                               ; we can just to a direct mapping without looking in the
                                               ; results.
                                               uppered) })]
    (testing "that it actually works"
      (let [n 100
            inputs           (mapv #(str "xyx" %) (range n))
            expected-results (to-upper-batch inputs)
            to-upper         (partial queue collapser)
            queued           (doall (map (fn [x]
                                           (Thread/sleep 1)
                                           (to-upper x))
                                         inputs))
            results          (doall (map deref queued))]
        (println "Got collapses with sizes:" @collapse-fn-calls)
        (println "Got maps with sizes:" @map-fn-calls)
        (println "Got batches with sizes:" @batch-calls)
        (is (= n (count expected-results) (count results)))
        (is (= expected-results results))
        (is (not (empty? @collapse-fn-calls)))
        (is (not (empty? @map-fn-calls)))
        (is (not (empty? @batch-calls)))))))

(defcommand my-fn-command
  "A doc string"
  {:meta :data
   :hystrix/fallback-fn (constantly 500)}
  [a b]
  (+ a b))

(defcommand my-overload-fn-command
  "A doc string"
  {:meta :data
   :hystrix/fallback-fn (constantly 500)}
  ([a b]
     (+ a b))
  ([a b c]
     (+ a b c)))

(deftest test-defcommand
  (let [hm (-> #'my-fn-command meta :hystrix)]
    (testing "defines a fn in a var"
      (is (fn? my-fn-command))
      (is (map? hm))
      (is (= "com.netflix.hystrix.core-test/my-fn-command" (.name (:command-key hm))))
      (is (= "com.netflix.hystrix.core-test" (.name (:group-key hm))))
      (is (= :data (-> #'my-fn-command meta :meta)))
      (= 500 ((:fallback-fn hm))))
    (testing "defines a functioning command"
      (is (= 99 (my-fn-command 88 11)))
      (is (= 100 (execute #'my-fn-command 89 11)))
      (is (= 101 (deref (queue #'my-fn-command 89 12))))
      (is (= 103 (wait-for-observable (observe #'my-fn-command 90 13))))
      (is (= 105 (wait-for-observable (observe-later #'my-fn-command 91 14))))
      (is (= 107 (wait-for-observable (observe-later-on #'my-fn-command
                                                        (rx.schedulers.Schedulers/newThread)
                                                        92 15)))))
    (testing "overload functioning command"
      (is (= 99 (my-overload-fn-command 88 11)))
      (is (= 100 (my-overload-fn-command 88 11 1)))
      (is (= 100 (execute #'my-overload-fn-command 89 11)))
      (is (= 100 (execute #'my-overload-fn-command 88 11 1)))
      (is (= 101 (deref (queue #'my-overload-fn-command 89 12))))
      (is (= 102 (deref (queue #'my-overload-fn-command 89 12 1))))
      (is (= 103 (wait-for-observable (observe #'my-overload-fn-command 90 13))))
      (is (= 104 (wait-for-observable (observe #'my-overload-fn-command 90 13 1))))
      (is (= 105 (wait-for-observable (observe-later #'my-overload-fn-command 91 14))))
      (is (= 106 (wait-for-observable (observe-later #'my-overload-fn-command 91 14 1))))
      (is (= 107 (wait-for-observable (observe-later-on #'my-overload-fn-command
                                                        (rx.schedulers.Schedulers/newThread)
                                                        92 15))))
      (is (= 108 (wait-for-observable (observe-later-on #'my-overload-fn-command
                                                        (rx.schedulers.Schedulers/newThread)
                                                        92 15 1)))))))

(defcollapser my-collapser
  "a doc string"
  {:meta :data}
  (collapse [arg-lists] "collapse")
  (map      [batch-result arg-lists] "map"))

(deftest test-defcollapser
  (let [hm (-> #'my-collapser meta :hystrix)]
    (testing "defines a collapser in a var"
      (is (fn? my-collapser))
      (is (map? hm))
      (is (= "com.netflix.hystrix.core-test/my-collapser" (.name (:collapser-key hm))))
      (is (= :collapser (:type hm)))
      (is (= "a doc string" (-> #'my-collapser meta :doc)))
      (is (= :data (-> #'my-collapser meta :meta)))
      (is (= "collapse" ((:collapse-fn hm) nil)))
      (is (= "map" ((:map-fn hm) nil nil))))))

; This is a version of the larger batcher example above using macros
(defcommand to-upper-batcher
  "a batch version of to-upper"
  [xs]
  (mapv #(.toUpperCase ^String %) xs))

(defcollapser to-upper-collapser
  "A collapser that dispatches to to-upper-batcher"
  (collapse [arg-lists]
    (instantiate #'to-upper-batcher (mapv first arg-lists)))
  (map [arg-lists uppered]
    uppered))

(deftest test-defd-collapser
  (testing "that it actually works"
    (let [single-call      (to-upper-collapser "v") ; just to make sure collapser works as a fn
          n 100
          inputs           (mapv #(str "xyx" %) (range n))
          expected-results (to-upper-batcher inputs)
          to-upper         (partial queue #'to-upper-collapser)
          queued           (doall (map (fn [x]
                                         (Thread/sleep 1)
                                         (to-upper x))
                                       inputs))
          results          (doall (map deref queued))]
      (is (= "V" single-call))
      (is (= n (count expected-results) (count results)))
      (is (= expected-results results)))))


================================================
FILE: hystrix-contrib/hystrix-codahale-metrics-publisher/README.md
================================================
# hystrix-codahale-metrics-publisher

This is an implementation of [HystrixMetricsPublisher](http://netflix.github.com/Hystrix/javadoc/index.html?com/netflix/hystrix/strategy/metrics/HystrixMetricsPublisher.html) that publishes metrics using [Coda Hale Metrics](http://metrics.codahale.com) version 3. If you are using Yammer Metrics version 2, please use the [hystrix-yammer-metrics-publisher](../hystrix-yammer-metrics-publisher) module instead.

See the [Metrics & Monitoring](https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring) Wiki for more information.

# Binaries

Binaries and dependency information for Maven, Ivy, Gradle and others can be found at [http://search.maven.org](http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22hystrix-codahale-metrics-publisher%22).

Example for Maven:

```xml
<dependency>
    <groupId>com.netflix.hystrix</groupId>
    <artifactId>hystrix-codahale-metrics-publisher</artifactId>
    <version>1.1.2</version>
</dependency>
```

and for Ivy:

```xml
<dependency org="com.netflix.hystrix" name="hystrix-codahale-metrics-publisher" rev="1.1.2" />
```

Example usage (make it work/plug it in):

      HystrixPlugins.getInstance().registerMetricsPublisher(new HystrixCodahaleMetricsPublisher(yourMetricRegistry));


================================================
FILE: hystrix-contrib/hystrix-codahale-metrics-publisher/build.gradle
================================================
dependencies {
    api project(':hystrix-core')
    api 'io.dropwizard.metrics:metrics-core:3.2.2'
    testImplementation 'junit:junit-dep:4.10'
    testImplementation 'org.mockito:mockito-all:1.9.5'
}


================================================
FILE: hystrix-contrib/hystrix-codahale-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/codahalemetricspublisher/ConfigurableCodaHaleMetricFilter.java
================================================
/**
 * Copyright 2013 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.contrib.codahalemetricspublisher;

import com.codahale.metrics.Metric;
import com.codahale.metrics.MetricFilter;
import com.netflix.config.DynamicPropertyFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * An implementation of @MetricFilter based upon an Archaius DynamicPropertyFactory
 *
 * To enable this filter, the property 'filter.graphite.metrics' must be set to TRUE
 *
 * If this is the case, metrics will be filtered unless METRIC_NAME = true is set in
 * the properties
 *
 *
 *  eg HystrixCommand.IndiciaService.GetIndicia.countFailure = true
 *
 *
 * For detail on how the metric names are constructed, refer to the source of the
 *
 * {@link HystrixCodaHaleMetricsPublisherCommand}
 *
 * and
 *
 * {@link HystrixCodaHaleMetricsPublisherThreadPool}
 *
 * classes.
 *
 *  @author Simon Irving
 */
public class ConfigurableCodaHaleMetricFilter implements MetricFilter{

    private static final Logger LOGGER = LoggerFactory.getLogger(ConfigurableCodaHaleMetricFilter.class);

    private DynamicPropertyFactory archaiusPropertyFactory;


    public ConfigurableCodaHaleMetricFilter(DynamicPropertyFactory archaiusPropertyFactory)
    {
        this.archaiusPropertyFactory = archaiusPropertyFactory;
    }

    @Override
    public boolean matches(String s, Metric metric) {

        if (!isFilterEnabled())
        {
            return true;
        }

        boolean matchesFilter = archaiusPropertyFactory.getBooleanProperty(s, false).get();

        LOGGER.debug("Does metric [{}] match filter? [{}]",s,matchesFilter);

        return matchesFilter;
    }

    protected boolean isFilterEnabled() {

        boolean filterEnabled = archaiusPropertyFactory.getBooleanProperty("filter.graphite.metrics", false).get();

        LOGGER.debug("Is filter enabled? [{}]", filterEnabled);

        return filterEnabled;
    }


}


================================================
FILE: hystrix-contrib/hystrix-codahale-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/codahalemetricspublisher/HystrixCodaHaleMetricsPublisher.java
================================================
/**
 * Copyright 2015 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.
 * 
Download .txt
gitextract_j1n9dj5j/

├── .github/
│   └── workflows/
│       ├── nebula-ci.yml
│       ├── nebula-publish.yml
│       └── nebula-snapshot.yml
├── .gitignore
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE-2.0.txt
├── OSSMETADATA
├── README.md
├── build.gradle
├── codequality/
│   └── checkstyle.xml
├── gradle/
│   ├── javadocStyleSheet.css
│   └── wrapper/
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── hystrix-contrib/
│   ├── README.md
│   ├── hystrix-clj/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── clojure/
│   │       │       └── com/
│   │       │           └── netflix/
│   │       │               └── hystrix/
│   │       │                   └── core.clj
│   │       └── test/
│   │           └── clojure/
│   │               └── com/
│   │                   └── netflix/
│   │                       └── hystrix/
│   │                           └── core_test.clj
│   ├── hystrix-codahale-metrics-publisher/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── com/
│   │       │           └── netflix/
│   │       │               └── hystrix/
│   │       │                   └── contrib/
│   │       │                       └── codahalemetricspublisher/
│   │       │                           ├── ConfigurableCodaHaleMetricFilter.java
│   │       │                           ├── HystrixCodaHaleMetricsPublisher.java
│   │       │                           ├── HystrixCodaHaleMetricsPublisherCollapser.java
│   │       │                           ├── HystrixCodaHaleMetricsPublisherCommand.java
│   │       │                           └── HystrixCodaHaleMetricsPublisherThreadPool.java
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── netflix/
│   │                       └── hystrix/
│   │                           └── contrib/
│   │                               └── codahalemetricspublisher/
│   │                                   ├── ConfigurableCodaHaleMetricFilterTest.java
│   │                                   └── HystrixCodaHaleMetricsPublisherCommandTest.java
│   ├── hystrix-javanica/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── ajcTest/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── netflix/
│   │       │   │           └── hystrix/
│   │       │   │               └── contrib/
│   │       │   │                   └── javanica/
│   │       │   │                       └── test/
│   │       │   │                           └── aspectj/
│   │       │   │                               ├── cache/
│   │       │   │                               │   └── CacheTest.java
│   │       │   │                               ├── collapser/
│   │       │   │                               │   └── CollapserTest.java
│   │       │   │                               ├── command/
│   │       │   │                               │   └── CommandTest.java
│   │       │   │                               ├── configuration/
│   │       │   │                               │   ├── collapser/
│   │       │   │                               │   │   └── CollapserPropertiesTest.java
│   │       │   │                               │   └── command/
│   │       │   │                               │       └── CommandPropertiesTest.java
│   │       │   │                               ├── error/
│   │       │   │                               │   ├── ErrorPropagationTest.java
│   │       │   │                               │   └── ObservableErrorPropagationTest.java
│   │       │   │                               ├── fallback/
│   │       │   │                               │   └── CommandFallbackTest.java
│   │       │   │                               └── observable/
│   │       │   │                                   └── ObservableTest.java
│   │       │   └── resources/
│   │       │       ├── dummy.txt
│   │       │       └── log4j.properties
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── netflix/
│   │       │   │           └── hystrix/
│   │       │   │               └── contrib/
│   │       │   │                   └── javanica/
│   │       │   │                       ├── annotation/
│   │       │   │                       │   ├── DefaultProperties.java
│   │       │   │                       │   ├── HystrixCollapser.java
│   │       │   │                       │   ├── HystrixCommand.java
│   │       │   │                       │   ├── HystrixException.java
│   │       │   │                       │   ├── HystrixProperty.java
│   │       │   │                       │   └── ObservableExecutionMode.java
│   │       │   │                       ├── aop/
│   │       │   │                       │   └── aspectj/
│   │       │   │                       │       ├── HystrixCacheAspect.java
│   │       │   │                       │       ├── HystrixCommandAspect.java
│   │       │   │                       │       └── WeavingMode.java
│   │       │   │                       ├── cache/
│   │       │   │                       │   ├── CacheInvocationContext.java
│   │       │   │                       │   ├── CacheInvocationContextFactory.java
│   │       │   │                       │   ├── CacheInvocationParameter.java
│   │       │   │                       │   ├── DefaultHystrixGeneratedCacheKey.java
│   │       │   │                       │   ├── HystrixCacheKeyGenerator.java
│   │       │   │                       │   ├── HystrixGeneratedCacheKey.java
│   │       │   │                       │   ├── HystrixRequestCacheManager.java
│   │       │   │                       │   └── annotation/
│   │       │   │                       │       ├── CacheKey.java
│   │       │   │                       │       ├── CacheRemove.java
│   │       │   │                       │       └── CacheResult.java
│   │       │   │                       ├── collapser/
│   │       │   │                       │   └── CommandCollapser.java
│   │       │   │                       ├── command/
│   │       │   │                       │   ├── AbstractHystrixCommand.java
│   │       │   │                       │   ├── AsyncResult.java
│   │       │   │                       │   ├── BatchHystrixCommand.java
│   │       │   │                       │   ├── ClosureCommand.java
│   │       │   │                       │   ├── CommandAction.java
│   │       │   │                       │   ├── CommandActions.java
│   │       │   │                       │   ├── CommandExecutionAction.java
│   │       │   │                       │   ├── CommandExecutor.java
│   │       │   │                       │   ├── ExecutionType.java
│   │       │   │                       │   ├── GenericCommand.java
│   │       │   │                       │   ├── GenericObservableCommand.java
│   │       │   │                       │   ├── GenericSetterBuilder.java
│   │       │   │                       │   ├── HystrixCommandBuilder.java
│   │       │   │                       │   ├── HystrixCommandBuilderFactory.java
│   │       │   │                       │   ├── HystrixCommandFactory.java
│   │       │   │                       │   ├── LazyCommandExecutionAction.java
│   │       │   │                       │   ├── MetaHolder.java
│   │       │   │                       │   ├── MethodExecutionAction.java
│   │       │   │                       │   └── closure/
│   │       │   │                       │       ├── AbstractClosureFactory.java
│   │       │   │                       │       ├── AsyncClosureFactory.java
│   │       │   │                       │       ├── Closure.java
│   │       │   │                       │       └── ClosureFactory.java
│   │       │   │                       ├── conf/
│   │       │   │                       │   └── HystrixPropertiesManager.java
│   │       │   │                       ├── exception/
│   │       │   │                       │   ├── CommandActionExecutionException.java
│   │       │   │                       │   ├── ExceptionUtils.java
│   │       │   │                       │   ├── FallbackDefinitionException.java
│   │       │   │                       │   ├── FallbackInvocationException.java
│   │       │   │                       │   ├── HystrixCacheKeyGenerationException.java
│   │       │   │                       │   ├── HystrixCachingException.java
│   │       │   │                       │   └── HystrixPropertyException.java
│   │       │   │                       └── utils/
│   │       │   │                           ├── AopUtils.java
│   │       │   │                           ├── CommonUtils.java
│   │       │   │                           ├── EnvUtils.java
│   │       │   │                           ├── FallbackMethod.java
│   │       │   │                           ├── FutureDecorator.java
│   │       │   │                           ├── MethodProvider.java
│   │       │   │                           ├── TypeHelper.java
│   │       │   │                           └── ajc/
│   │       │   │                               └── AjcUtils.java
│   │       │   └── resources/
│   │       │       └── dummy.txt
│   │       └── test/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── netflix/
│   │           │           └── hystrix/
│   │           │               └── contrib/
│   │           │                   └── javanica/
│   │           │                       ├── cache/
│   │           │                       │   ├── CacheInvocationContextFactoryTest.java
│   │           │                       │   ├── CacheInvocationParameterTest.java
│   │           │                       │   └── HystrixCacheKeyGeneratorTest.java
│   │           │                       ├── command/
│   │           │                       │   └── ExecutionTypeTest.java
│   │           │                       ├── test/
│   │           │                       │   ├── common/
│   │           │                       │   │   ├── BasicHystrixTest.java
│   │           │                       │   │   ├── CommonUtils.java
│   │           │                       │   │   ├── cache/
│   │           │                       │   │   │   └── BasicCacheTest.java
│   │           │                       │   │   ├── collapser/
│   │           │                       │   │   │   └── BasicCollapserTest.java
│   │           │                       │   │   ├── command/
│   │           │                       │   │   │   └── BasicCommandTest.java
│   │           │                       │   │   ├── configuration/
│   │           │                       │   │   │   ├── collapser/
│   │           │                       │   │   │   │   └── BasicCollapserPropertiesTest.java
│   │           │                       │   │   │   ├── command/
│   │           │                       │   │   │   │   ├── BasicCommandDefaultPropertiesTest.java
│   │           │                       │   │   │   │   └── BasicCommandPropertiesTest.java
│   │           │                       │   │   │   └── fallback/
│   │           │                       │   │   │       └── BasicFallbackDefaultPropertiesTest.java
│   │           │                       │   │   ├── domain/
│   │           │                       │   │   │   ├── Domain.java
│   │           │                       │   │   │   ├── Profile.java
│   │           │                       │   │   │   └── User.java
│   │           │                       │   │   ├── error/
│   │           │                       │   │   │   ├── BasicDefaultIgnoreExceptionsTest.java
│   │           │                       │   │   │   ├── BasicDefaultRaiseHystrixExceptionsTest.java
│   │           │                       │   │   │   ├── BasicErrorPropagationTest.java
│   │           │                       │   │   │   └── BasicObservableErrorPropagationTest.java
│   │           │                       │   │   ├── fallback/
│   │           │                       │   │   │   ├── BasicCommandFallbackTest.java
│   │           │                       │   │   │   ├── BasicDefaultFallbackTest.java
│   │           │                       │   │   │   └── BasicGenericFallbackTest.java
│   │           │                       │   │   └── observable/
│   │           │                       │   │       └── BasicObservableTest.java
│   │           │                       │   └── spring/
│   │           │                       │       ├── cache/
│   │           │                       │       │   └── CacheTest.java
│   │           │                       │       ├── collapser/
│   │           │                       │       │   └── CollapserTest.java
│   │           │                       │       ├── command/
│   │           │                       │       │   ├── CommandTest.java
│   │           │                       │       │   ├── cglib/
│   │           │                       │       │   │   └── CommandCGlibProxyTest.java
│   │           │                       │       │   └── jdk/
│   │           │                       │       │       └── CommandJdkProxyTest.java
│   │           │                       │       ├── conf/
│   │           │                       │       │   ├── AopCglibConfig.java
│   │           │                       │       │   ├── AopJdkConfig.java
│   │           │                       │       │   ├── AopLoadTimeWeavingConfig.java
│   │           │                       │       │   └── SpringApplicationContext.java
│   │           │                       │       ├── configuration/
│   │           │                       │       │   ├── collapser/
│   │           │                       │       │   │   └── CollapserPropertiesTest.java
│   │           │                       │       │   ├── command/
│   │           │                       │       │   │   ├── CommandDefaultPropertiesTest.java
│   │           │                       │       │   │   └── CommandPropertiesTest.java
│   │           │                       │       │   └── fallback/
│   │           │                       │       │       └── FallbackDefaultPropertiesTest.java
│   │           │                       │       ├── error/
│   │           │                       │       │   ├── DefaultIgnoreExceptionsTest.java
│   │           │                       │       │   ├── DefaultRaiseHystrixExceptionsTest.java
│   │           │                       │       │   ├── ErrorPropagationTest.java
│   │           │                       │       │   └── ObservableErrorPropagationTest.java
│   │           │                       │       ├── fallback/
│   │           │                       │       │   ├── CommandFallbackTest.java
│   │           │                       │       │   ├── DefaultFallbackTest.java
│   │           │                       │       │   ├── GenericFallbackTest.java
│   │           │                       │       │   └── InheritedFallbackTest.java
│   │           │                       │       └── observable/
│   │           │                       │           └── ObservableTest.java
│   │           │                       └── util/
│   │           │                           ├── FallbackMethodTest.java
│   │           │                           ├── FallbackMethodValidationTest.java
│   │           │                           ├── GetMethodTest.java
│   │           │                           └── bridge/
│   │           │                               ├── Child.java
│   │           │                               ├── GenericInterface.java
│   │           │                               ├── GenericInterfaceImpl.java
│   │           │                               ├── Parent.java
│   │           │                               ├── SubChild.java
│   │           │                               └── UnbridgeMethodTest.java
│   │           └── resources/
│   │               ├── dummy.txt
│   │               └── log4j.properties
│   ├── hystrix-junit/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── com/
│   │       │           └── hystrix/
│   │       │               └── junit/
│   │       │                   └── HystrixRequestContextRule.java
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── hystrix/
│   │                       └── junit/
│   │                           └── HystrixRequestContextRuleTest.java
│   ├── hystrix-metrics-event-stream/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── com/
│   │       │           └── netflix/
│   │       │               └── hystrix/
│   │       │                   └── contrib/
│   │       │                       ├── metrics/
│   │       │                       │   └── eventstream/
│   │       │                       │       ├── HystrixMetricsPoller.java
│   │       │                       │       └── HystrixMetricsStreamServlet.java
│   │       │                       ├── requests/
│   │       │                       │   └── stream/
│   │       │                       │       ├── HystrixRequestEventsJsonStream.java
│   │       │                       │       └── HystrixRequestEventsSseServlet.java
│   │       │                       └── sample/
│   │       │                           └── stream/
│   │       │                               ├── HystrixConfigSseServlet.java
│   │       │                               ├── HystrixConfigurationJsonStream.java
│   │       │                               ├── HystrixSampleSseServlet.java
│   │       │                               ├── HystrixUtilizationJsonStream.java
│   │       │                               └── HystrixUtilizationSseServlet.java
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── netflix/
│   │                       └── hystrix/
│   │                           └── contrib/
│   │                               ├── metrics/
│   │                               │   └── eventstream/
│   │                               │       ├── HystrixMetricsPollerTest.java
│   │                               │       └── HystrixMetricsStreamServletUnitTest.java
│   │                               └── sample/
│   │                                   └── stream/
│   │                                       ├── HystrixConfigSseServletTest.java
│   │                                       └── HystrixSampleSseServletTest.java
│   ├── hystrix-metrics-event-stream-jaxrs/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── com/
│   │       │           └── netflix/
│   │       │               └── hystrix/
│   │       │                   └── contrib/
│   │       │                       └── metrics/
│   │       │                           ├── HystrixStream.java
│   │       │                           ├── HystrixStreamFeature.java
│   │       │                           ├── HystrixStreamingOutputProvider.java
│   │       │                           └── controller/
│   │       │                               ├── AbstractHystrixStreamController.java
│   │       │                               ├── HystrixConfigSseController.java
│   │       │                               ├── HystrixMetricsStreamController.java
│   │       │                               ├── HystrixRequestEventsSseController.java
│   │       │                               └── HystrixUtilizationSseController.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── netflix/
│   │           │           └── hystrix/
│   │           │               └── contrib/
│   │           │                   └── metrics/
│   │           │                       └── controller/
│   │           │                           ├── HystricsMetricsControllerTest.java
│   │           │                           ├── HystrixConfigControllerTest.java
│   │           │                           ├── HystrixUtilizationControllerTest.java
│   │           │                           └── StreamingOutputProviderTest.java
│   │           └── resources/
│   │               └── test.properties
│   ├── hystrix-network-auditor-agent/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── com/
│   │                   └── netflix/
│   │                       └── hystrix/
│   │                           └── contrib/
│   │                               └── networkauditor/
│   │                                   ├── HystrixNetworkAuditorAgent.java
│   │                                   ├── HystrixNetworkAuditorEventListener.java
│   │                                   └── NetworkClassTransform.java
│   ├── hystrix-request-servlet/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── com/
│   │                   └── netflix/
│   │                       └── hystrix/
│   │                           └── contrib/
│   │                               └── requestservlet/
│   │                                   ├── HystrixRequestContextServletFilter.java
│   │                                   ├── HystrixRequestLogViaLoggerServletFilter.java
│   │                                   └── HystrixRequestLogViaResponseHeaderServletFilter.java
│   ├── hystrix-rx-netty-metrics-stream/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── com/
│   │       │           └── netflix/
│   │       │               └── hystrix/
│   │       │                   └── contrib/
│   │       │                       └── rxnetty/
│   │       │                           └── metricsstream/
│   │       │                               └── HystrixMetricsStreamHandler.java
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── netflix/
│   │                       └── hystrix/
│   │                           ├── HystrixCommandMetricsSamples.java
│   │                           └── contrib/
│   │                               └── rxnetty/
│   │                                   └── metricsstream/
│   │                                       └── HystrixMetricsStreamHandlerTest.java
│   ├── hystrix-servo-metrics-publisher/
│   │   ├── README.md
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── com/
│   │       │           └── netflix/
│   │       │               └── hystrix/
│   │       │                   └── contrib/
│   │       │                       └── servopublisher/
│   │       │                           ├── HystrixServoMetricsPublisher.java
│   │       │                           ├── HystrixServoMetricsPublisherAbstract.java
│   │       │                           ├── HystrixServoMetricsPublisherCollapser.java
│   │       │                           ├── HystrixServoMetricsPublisherCommand.java
│   │       │                           └── HystrixServoMetricsPublisherThreadPool.java
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── netflix/
│   │                       └── hystrix/
│   │                           └── contrib/
│   │                               └── servopublisher/
│   │                                   └── HystrixServoMetricsPublisherCommandTest.java
│   └── hystrix-yammer-metrics-publisher/
│       ├── README.md
│       ├── build.gradle
│       └── src/
│           └── main/
│               └── java/
│                   └── com/
│                       └── netflix/
│                           └── hystrix/
│                               └── contrib/
│                                   └── yammermetricspublisher/
│                                       ├── HystrixYammerMetricsPublisher.java
│                                       ├── HystrixYammerMetricsPublisherCollapser.java
│                                       ├── HystrixYammerMetricsPublisherCommand.java
│                                       └── HystrixYammerMetricsPublisherThreadPool.java
├── hystrix-core/
│   ├── README.md
│   ├── build.gradle
│   └── src/
│       ├── jmh/
│       │   └── java/
│       │       └── com/
│       │           └── netflix/
│       │               └── hystrix/
│       │                   └── perf/
│       │                       ├── CollapserPerfTest.java
│       │                       ├── CommandConstructionPerfTest.java
│       │                       ├── CommandExecutionAndConcurrentMetricsReadPerfTest.java
│       │                       ├── CommandExecutionPerfTest.java
│       │                       ├── ObservableCollapserPerfTest.java
│       │                       ├── RollingMaxPerfTest.java
│       │                       ├── RollingNumberPerfTest.java
│       │                       └── RollingPercentilePerfTest.java
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── netflix/
│       │               └── hystrix/
│       │                   ├── AbstractCommand.java
│       │                   ├── ExecutionResult.java
│       │                   ├── Hystrix.java
│       │                   ├── HystrixCachedObservable.java
│       │                   ├── HystrixCircuitBreaker.java
│       │                   ├── HystrixCollapser.java
│       │                   ├── HystrixCollapserKey.java
│       │                   ├── HystrixCollapserMetrics.java
│       │                   ├── HystrixCollapserProperties.java
│       │                   ├── HystrixCommand.java
│       │                   ├── HystrixCommandGroupKey.java
│       │                   ├── HystrixCommandKey.java
│       │                   ├── HystrixCommandMetrics.java
│       │                   ├── HystrixCommandProperties.java
│       │                   ├── HystrixCommandResponseFromCache.java
│       │                   ├── HystrixCounters.java
│       │                   ├── HystrixEventType.java
│       │                   ├── HystrixExecutable.java
│       │                   ├── HystrixInvokable.java
│       │                   ├── HystrixInvokableInfo.java
│       │                   ├── HystrixKey.java
│       │                   ├── HystrixMetrics.java
│       │                   ├── HystrixObservable.java
│       │                   ├── HystrixObservableCollapser.java
│       │                   ├── HystrixObservableCommand.java
│       │                   ├── HystrixRequestCache.java
│       │                   ├── HystrixRequestLog.java
│       │                   ├── HystrixThreadPool.java
│       │                   ├── HystrixThreadPoolKey.java
│       │                   ├── HystrixThreadPoolMetrics.java
│       │                   ├── HystrixThreadPoolProperties.java
│       │                   ├── HystrixTimerThreadPoolProperties.java
│       │                   ├── collapser/
│       │                   │   ├── CollapsedRequestSubject.java
│       │                   │   ├── CollapserTimer.java
│       │                   │   ├── HystrixCollapserBridge.java
│       │                   │   ├── README.txt
│       │                   │   ├── RealCollapserTimer.java
│       │                   │   ├── RequestBatch.java
│       │                   │   ├── RequestCollapser.java
│       │                   │   └── RequestCollapserFactory.java
│       │                   ├── config/
│       │                   │   ├── HystrixCollapserConfiguration.java
│       │                   │   ├── HystrixCommandConfiguration.java
│       │                   │   ├── HystrixConfiguration.java
│       │                   │   ├── HystrixConfigurationStream.java
│       │                   │   └── HystrixThreadPoolConfiguration.java
│       │                   ├── exception/
│       │                   │   ├── ExceptionNotWrappedByHystrix.java
│       │                   │   ├── HystrixBadRequestException.java
│       │                   │   ├── HystrixRuntimeException.java
│       │                   │   ├── HystrixTimeoutException.java
│       │                   │   └── package-info.java
│       │                   ├── metric/
│       │                   │   ├── CachedValuesHistogram.java
│       │                   │   ├── HystrixCollapserEvent.java
│       │                   │   ├── HystrixCollapserEventStream.java
│       │                   │   ├── HystrixCommandCompletion.java
│       │                   │   ├── HystrixCommandCompletionStream.java
│       │                   │   ├── HystrixCommandEvent.java
│       │                   │   ├── HystrixCommandExecutionStarted.java
│       │                   │   ├── HystrixCommandStartStream.java
│       │                   │   ├── HystrixEvent.java
│       │                   │   ├── HystrixEventStream.java
│       │                   │   ├── HystrixRequestEvents.java
│       │                   │   ├── HystrixRequestEventsStream.java
│       │                   │   ├── HystrixThreadEventStream.java
│       │                   │   ├── HystrixThreadPoolCompletionStream.java
│       │                   │   ├── HystrixThreadPoolStartStream.java
│       │                   │   ├── consumer/
│       │                   │   │   ├── BucketedCounterStream.java
│       │                   │   │   ├── BucketedCumulativeCounterStream.java
│       │                   │   │   ├── BucketedRollingCounterStream.java
│       │                   │   │   ├── CumulativeCollapserEventCounterStream.java
│       │                   │   │   ├── CumulativeCommandEventCounterStream.java
│       │                   │   │   ├── CumulativeThreadPoolEventCounterStream.java
│       │                   │   │   ├── HealthCountsStream.java
│       │                   │   │   ├── HystrixDashboardStream.java
│       │                   │   │   ├── RollingCollapserBatchSizeDistributionStream.java
│       │                   │   │   ├── RollingCollapserEventCounterStream.java
│       │                   │   │   ├── RollingCommandEventCounterStream.java
│       │                   │   │   ├── RollingCommandLatencyDistributionStream.java
│       │                   │   │   ├── RollingCommandMaxConcurrencyStream.java
│       │                   │   │   ├── RollingCommandUserLatencyDistributionStream.java
│       │                   │   │   ├── RollingConcurrencyStream.java
│       │                   │   │   ├── RollingDistributionStream.java
│       │                   │   │   ├── RollingThreadPoolEventCounterStream.java
│       │                   │   │   └── RollingThreadPoolMaxConcurrencyStream.java
│       │                   │   └── sample/
│       │                   │       ├── HystrixCommandUtilization.java
│       │                   │       ├── HystrixThreadPoolUtilization.java
│       │                   │       ├── HystrixUtilization.java
│       │                   │       └── HystrixUtilizationStream.java
│       │                   ├── package-info.java
│       │                   ├── strategy/
│       │                   │   ├── HystrixArchaiusHelper.java
│       │                   │   ├── HystrixPlugins.java
│       │                   │   ├── concurrency/
│       │                   │   │   ├── HystrixConcurrencyStrategy.java
│       │                   │   │   ├── HystrixConcurrencyStrategyDefault.java
│       │                   │   │   ├── HystrixContextCallable.java
│       │                   │   │   ├── HystrixContextRunnable.java
│       │                   │   │   ├── HystrixContextScheduler.java
│       │                   │   │   ├── HystrixContextSchedulerAction.java
│       │                   │   │   ├── HystrixLifecycleForwardingRequestVariable.java
│       │                   │   │   ├── HystrixRequestContext.java
│       │                   │   │   ├── HystrixRequestVariable.java
│       │                   │   │   ├── HystrixRequestVariableDefault.java
│       │                   │   │   ├── HystrixRequestVariableHolder.java
│       │                   │   │   ├── HystrixRequestVariableLifecycle.java
│       │                   │   │   └── package-info.java
│       │                   │   ├── eventnotifier/
│       │                   │   │   ├── HystrixEventNotifier.java
│       │                   │   │   ├── HystrixEventNotifierDefault.java
│       │                   │   │   └── package-info.java
│       │                   │   ├── executionhook/
│       │                   │   │   ├── HystrixCommandExecutionHook.java
│       │                   │   │   ├── HystrixCommandExecutionHookDefault.java
│       │                   │   │   └── package-info.java
│       │                   │   ├── metrics/
│       │                   │   │   ├── HystrixMetricsPublisher.java
│       │                   │   │   ├── HystrixMetricsPublisherCollapser.java
│       │                   │   │   ├── HystrixMetricsPublisherCollapserDefault.java
│       │                   │   │   ├── HystrixMetricsPublisherCommand.java
│       │                   │   │   ├── HystrixMetricsPublisherCommandDefault.java
│       │                   │   │   ├── HystrixMetricsPublisherDefault.java
│       │                   │   │   ├── HystrixMetricsPublisherFactory.java
│       │                   │   │   ├── HystrixMetricsPublisherThreadPool.java
│       │                   │   │   ├── HystrixMetricsPublisherThreadPoolDefault.java
│       │                   │   │   └── package-info.java
│       │                   │   ├── package-info.java
│       │                   │   └── properties/
│       │                   │       ├── HystrixDynamicProperties.java
│       │                   │       ├── HystrixDynamicPropertiesSystemProperties.java
│       │                   │       ├── HystrixDynamicProperty.java
│       │                   │       ├── HystrixPropertiesChainedArchaiusProperty.java
│       │                   │       ├── HystrixPropertiesChainedProperty.java
│       │                   │       ├── HystrixPropertiesCollapserDefault.java
│       │                   │       ├── HystrixPropertiesCommandDefault.java
│       │                   │       ├── HystrixPropertiesFactory.java
│       │                   │       ├── HystrixPropertiesStrategy.java
│       │                   │       ├── HystrixPropertiesStrategyDefault.java
│       │                   │       ├── HystrixPropertiesThreadPoolDefault.java
│       │                   │       ├── HystrixPropertiesTimerThreadPoolDefault.java
│       │                   │       ├── HystrixProperty.java
│       │                   │       ├── archaius/
│       │                   │       │   └── HystrixDynamicPropertiesArchaius.java
│       │                   │       └── package-info.java
│       │                   └── util/
│       │                       ├── ExceptionThreadingUtility.java
│       │                       ├── Exceptions.java
│       │                       ├── HystrixRollingNumber.java
│       │                       ├── HystrixRollingNumberEvent.java
│       │                       ├── HystrixRollingPercentile.java
│       │                       ├── HystrixTimer.java
│       │                       ├── InternMap.java
│       │                       ├── LongAdder.java
│       │                       ├── LongMaxUpdater.java
│       │                       ├── PlatformSpecific.java
│       │                       ├── Striped64.java
│       │                       └── package-info.java
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── netflix/
│           │           └── hystrix/
│           │               ├── AbstractTestHystrixCommand.java
│           │               ├── CommonHystrixCommandTests.java
│           │               ├── HystrixCircuitBreakerTest.java
│           │               ├── HystrixCollapserTest.java
│           │               ├── HystrixCommandMetricsTest.java
│           │               ├── HystrixCommandPropertiesTest.java
│           │               ├── HystrixCommandTest.java
│           │               ├── HystrixCommandTestWithCustomConcurrencyStrategy.java
│           │               ├── HystrixCommandTimeoutConcurrencyTesting.java
│           │               ├── HystrixObservableCollapserTest.java
│           │               ├── HystrixObservableCommandTest.java
│           │               ├── HystrixRequestCacheTest.java
│           │               ├── HystrixRequestLogTest.java
│           │               ├── HystrixSubclassCommandTest.java
│           │               ├── HystrixTest.java
│           │               ├── HystrixThreadPoolMetricsTest.java
│           │               ├── HystrixThreadPoolPropertiesTest.java
│           │               ├── HystrixThreadPoolTest.java
│           │               ├── InspectableBuilder.java
│           │               ├── NotWrappedByHystrixTestException.java
│           │               ├── NotWrappedByHystrixTestRuntimeException.java
│           │               ├── TestHystrixCommand.java
│           │               ├── TestHystrixObservableCommand.java
│           │               ├── TestableExecutionHook.java
│           │               ├── UnsubscribedTasksRequestCacheTest.java
│           │               ├── collapser/
│           │               │   └── CollapsedRequestSubjectTest.java
│           │               ├── config/
│           │               │   └── HystrixConfigurationStreamTest.java
│           │               ├── metric/
│           │               │   ├── CommandStreamTest.java
│           │               │   ├── HystrixCommandCompletionStreamTest.java
│           │               │   ├── HystrixThreadEventStreamTest.java
│           │               │   ├── consumer/
│           │               │   │   ├── CumulativeCollapserEventCounterStreamTest.java
│           │               │   │   ├── CumulativeCommandEventCounterStreamTest.java
│           │               │   │   ├── CumulativeThreadPoolEventCounterStreamTest.java
│           │               │   │   ├── HealthCountsStreamTest.java
│           │               │   │   ├── HystrixDashboardStreamTest.java
│           │               │   │   ├── RollingCollapserBatchSizeDistributionStreamTest.java
│           │               │   │   ├── RollingCollapserEventCounterStreamTest.java
│           │               │   │   ├── RollingCommandEventCounterStreamTest.java
│           │               │   │   ├── RollingCommandLatencyDistributionStreamTest.java
│           │               │   │   ├── RollingCommandMaxConcurrencyStreamTest.java
│           │               │   │   ├── RollingThreadPoolEventCounterStreamTest.java
│           │               │   │   └── RollingThreadPoolMaxConcurrencyStreamTest.java
│           │               │   └── sample/
│           │               │       └── HystrixUtilizationStreamTest.java
│           │               ├── strategy/
│           │               │   ├── HystrixPluginsTest.java
│           │               │   ├── concurrency/
│           │               │   │   ├── HystrixConcurrencyStrategyTest.java
│           │               │   │   └── HystrixContextSchedulerTest.java
│           │               │   ├── metrics/
│           │               │   │   └── HystrixMetricsPublisherFactoryTest.java
│           │               │   └── properties/
│           │               │       ├── HystrixPropertiesChainedArchaiusPropertyTest.java
│           │               │       └── HystrixPropertyTest.java
│           │               └── util/
│           │                   ├── ExceptionsTest.java
│           │                   ├── HystrixRollingNumberTest.java
│           │                   ├── HystrixRollingPercentileTest.java
│           │                   └── HystrixTimerTest.java
│           └── resources/
│               └── FAKE_META_INF_SERVICES/
│                   ├── com.netflix.hystrix.strategy.properties.HystrixDynamicProperties
│                   └── com.netflix.hystrix.strategy.properties.HystrixDynamicPropertiesFail
├── hystrix-examples/
│   ├── README.md
│   ├── build.gradle
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── netflix/
│                       └── hystrix/
│                           └── examples/
│                               ├── basic/
│                               │   ├── CommandCollapserGetValueForKey.java
│                               │   ├── CommandFacadeWithPrimarySecondary.java
│                               │   ├── CommandHelloFailure.java
│                               │   ├── CommandHelloWorld.java
│                               │   ├── CommandThatFailsFast.java
│                               │   ├── CommandThatFailsSilently.java
│                               │   ├── CommandUsingRequestCache.java
│                               │   ├── CommandUsingRequestCacheInvalidation.java
│                               │   ├── CommandUsingSemaphoreIsolation.java
│                               │   ├── CommandWithFallbackViaNetwork.java
│                               │   ├── CommandWithStubbedFallback.java
│                               │   ├── ObservableCollapserGetWordForNumber.java
│                               │   └── ObservableCommandNumbersToWords.java
│                               └── demo/
│                                   ├── CreditCardAuthorizationResult.java
│                                   ├── CreditCardCommand.java
│                                   ├── GetOrderCommand.java
│                                   ├── GetPaymentInformationCommand.java
│                                   ├── GetUserAccountCommand.java
│                                   ├── HystrixCommandAsyncDemo.java
│                                   ├── HystrixCommandDemo.java
│                                   ├── Order.java
│                                   ├── PaymentInformation.java
│                                   └── UserAccount.java
├── hystrix-examples-webapp/
│   ├── README.md
│   ├── build.gradle
│   └── src/
│       └── main/
│           └── webapp/
│               ├── WEB-INF/
│               │   ├── classes/
│               │   │   └── log4j.properties
│               │   └── web.xml
│               └── index.jsp
├── hystrix-serialization/
│   ├── build.gradle
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── netflix/
│       │               └── hystrix/
│       │                   └── serial/
│       │                       ├── SerialHystrixConfiguration.java
│       │                       ├── SerialHystrixDashboardData.java
│       │                       ├── SerialHystrixMetric.java
│       │                       ├── SerialHystrixRequestEvents.java
│       │                       └── SerialHystrixUtilization.java
│       └── test/
│           └── java/
│               └── com/
│                   └── netflix/
│                       └── hystrix/
│                           └── serial/
│                               └── SerialHystrixRequestEventsTest.java
└── settings.gradle
Download .txt
Showing preview only (500K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5261 symbols across 395 files)

FILE: hystrix-contrib/hystrix-codahale-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/codahalemetricspublisher/ConfigurableCodaHaleMetricFilter.java
  class ConfigurableCodaHaleMetricFilter (line 49) | public class ConfigurableCodaHaleMetricFilter implements MetricFilter{
    method ConfigurableCodaHaleMetricFilter (line 56) | public ConfigurableCodaHaleMetricFilter(DynamicPropertyFactory archaiu...
    method matches (line 61) | @Override
    method isFilterEnabled (line 76) | protected boolean isFilterEnabled() {

FILE: hystrix-contrib/hystrix-codahale-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/codahalemetricspublisher/HystrixCodaHaleMetricsPublisher.java
  class HystrixCodaHaleMetricsPublisher (line 38) | public class HystrixCodaHaleMetricsPublisher extends HystrixMetricsPubli...
    method HystrixCodaHaleMetricsPublisher (line 42) | public HystrixCodaHaleMetricsPublisher(MetricRegistry metricRegistry) {
    method HystrixCodaHaleMetricsPublisher (line 46) | public HystrixCodaHaleMetricsPublisher(String metricsRootNode, MetricR...
    method getMetricsPublisherForCommand (line 51) | @Override
    method getMetricsPublisherForThreadPool (line 56) | @Override
    method getMetricsPublisherForCollapser (line 61) | @Override

FILE: hystrix-contrib/hystrix-codahale-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/codahalemetricspublisher/HystrixCodaHaleMetricsPublisherCollapser.java
  class HystrixCodaHaleMetricsPublisherCollapser (line 32) | public class HystrixCodaHaleMetricsPublisherCollapser implements Hystrix...
    method HystrixCodaHaleMetricsPublisherCollapser (line 41) | public HystrixCodaHaleMetricsPublisherCollapser(HystrixCollapserKey co...
    method initialize (line 55) | @Override
    method createMetricName (line 229) | protected String createMetricName(String name) {
    method createCumulativeCountForEvent (line 233) | protected void createCumulativeCountForEvent(final String name, final ...
    method safelyCreateCumulativeCountForEvent (line 242) | protected void safelyCreateCumulativeCountForEvent(final String name, ...
    method createRollingCountForEvent (line 256) | protected void createRollingCountForEvent(final String name, final Hys...
    method safelyCreateRollingCountForEvent (line 265) | protected void safelyCreateRollingCountForEvent(final String name, fin...

FILE: hystrix-contrib/hystrix-codahale-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/codahalemetricspublisher/HystrixCodaHaleMetricsPublisherCommand.java
  class HystrixCodaHaleMetricsPublisherCommand (line 31) | public class HystrixCodaHaleMetricsPublisherCommand implements HystrixMe...
    method HystrixCodaHaleMetricsPublisherCommand (line 44) | public HystrixCodaHaleMetricsPublisherCommand(String metricsRootNode, ...
    method initialize (line 62) | @Override
    method createMetricName (line 510) | protected String createMetricName(String name) {
    method createCumulativeCountForEvent (line 514) | protected void createCumulativeCountForEvent(final String name, final ...
    method safelyCreateCumulativeCountForEvent (line 523) | protected void safelyCreateCumulativeCountForEvent(final String name, ...
    method createRollingCountForEvent (line 537) | protected void createRollingCountForEvent(final String name, final Hys...
    method safelyCreateRollingCountForEvent (line 546) | protected void safelyCreateRollingCountForEvent(final String name, fin...

FILE: hystrix-contrib/hystrix-codahale-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/codahalemetricspublisher/HystrixCodaHaleMetricsPublisherThreadPool.java
  class HystrixCodaHaleMetricsPublisherThreadPool (line 31) | public class HystrixCodaHaleMetricsPublisherThreadPool implements Hystri...
    method HystrixCodaHaleMetricsPublisherThreadPool (line 42) | public HystrixCodaHaleMetricsPublisherThreadPool(String metricsRootNod...
    method initialize (line 58) | @Override
    method createMetricName (line 187) | protected String createMetricName(String name) {

FILE: hystrix-contrib/hystrix-codahale-metrics-publisher/src/test/java/com/netflix/hystrix/contrib/codahalemetricspublisher/ConfigurableCodaHaleMetricFilterTest.java
  class ConfigurableCodaHaleMetricFilterTest (line 39) | public class ConfigurableCodaHaleMetricFilterTest {
    method initialiseMocks (line 48) | @BeforeClass
    method assertMetricsNotTouched (line 57) | @After
    method testMetricConfiguredInFilterWithFilterEnabled (line 63) | @Test
    method testMetricConfiguredInFilterWithFilterDisabled (line 71) | @Test
    method testMetricNotConfiguredInFilterWithFilterEnabled (line 79) | @Test
    method testMetricNotConfiguredInFilterWithFilterDisabled (line 87) | @Test

FILE: hystrix-contrib/hystrix-codahale-metrics-publisher/src/test/java/com/netflix/hystrix/contrib/codahalemetricspublisher/HystrixCodaHaleMetricsPublisherCommandTest.java
  class HystrixCodaHaleMetricsPublisherCommandTest (line 15) | public class HystrixCodaHaleMetricsPublisherCommandTest {
    method setup (line 18) | @Before
    method testCommandSuccess (line 23) | @Test
    class Command (line 35) | private static class Command extends HystrixCommand<Void> {
      method Command (line 40) | Command() {
      method run (line 44) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/cache/CacheTest.java
  class CacheTest (line 24) | public class CacheTest extends BasicCacheTest {
    method setUpEnv (line 25) | @BeforeClass
    method createUserService (line 30) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/collapser/CollapserTest.java
  class CollapserTest (line 24) | public class CollapserTest extends BasicCollapserTest {
    method setUpEnv (line 25) | @BeforeClass
    method createUserService (line 30) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/command/CommandTest.java
  class CommandTest (line 23) | public class CommandTest extends BasicCommandTest {
    method setUpEnv (line 25) | @BeforeClass
    method createUserService (line 30) | @Override
    method createAdvancedUserServiceService (line 35) | @Override
    method createGenericUserService (line 40) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/configuration/collapser/CollapserPropertiesTest.java
  class CollapserPropertiesTest (line 24) | public class CollapserPropertiesTest extends BasicCollapserPropertiesTest {
    method setUpEnv (line 26) | @BeforeClass
    method createUserService (line 31) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/configuration/command/CommandPropertiesTest.java
  class CommandPropertiesTest (line 24) | public class CommandPropertiesTest extends BasicCommandPropertiesTest {
    method setUpEnv (line 26) | @BeforeClass
    method createUserService (line 31) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/error/ErrorPropagationTest.java
  class ErrorPropagationTest (line 24) | public class ErrorPropagationTest extends BasicErrorPropagationTest {
    method setUpEnv (line 26) | @BeforeClass
    method createUserService (line 31) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/error/ObservableErrorPropagationTest.java
  class ObservableErrorPropagationTest (line 25) | public class ObservableErrorPropagationTest extends BasicObservableError...
    method setUpEnv (line 27) | @BeforeClass
    method createUserService (line 32) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/fallback/CommandFallbackTest.java
  class CommandFallbackTest (line 24) | public class CommandFallbackTest extends BasicCommandFallbackTest {
    method setUpEnv (line 26) | @BeforeClass
    method createUserService (line 31) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/observable/ObservableTest.java
  class ObservableTest (line 24) | public class ObservableTest extends BasicObservableTest {
    method setUpEnv (line 26) | @BeforeClass
    method createUserService (line 31) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/annotation/HystrixException.java
  type HystrixException (line 6) | public enum HystrixException {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/annotation/ObservableExecutionMode.java
  type ObservableExecutionMode (line 30) | public enum ObservableExecutionMode {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/aop/aspectj/HystrixCacheAspect.java
  class HystrixCacheAspect (line 43) | @Aspect
    method cacheRemoveAnnotationPointcut (line 46) | @Pointcut("@annotation(com.netflix.hystrix.contrib.javanica.cache.anno...
    method methodsAnnotatedWithCacheRemove (line 50) | @Around("cacheRemoveAnnotationPointcut()")

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/aop/aspectj/HystrixCommandAspect.java
  class HystrixCommandAspect (line 65) | @Aspect
    method hystrixCommandAnnotationPointcut (line 77) | @Pointcut("@annotation(com.netflix.hystrix.contrib.javanica.annotation...
    method hystrixCollapserAnnotationPointcut (line 82) | @Pointcut("@annotation(com.netflix.hystrix.contrib.javanica.annotation...
    method methodsAnnotatedWithHystrixCommand (line 86) | @Around("hystrixCommandAnnotationPointcut() || hystrixCollapserAnnotat...
    method executeObservable (line 115) | private Object executeObservable(HystrixInvokable invokable, Execution...
    method mapObservable (line 131) | private Object mapObservable(Observable observable, final MetaHolder m...
    method hystrixRuntimeExceptionToThrowable (line 140) | private Throwable hystrixRuntimeExceptionToThrowable(MetaHolder metaHo...
    method getCause (line 147) | private Throwable getCause(HystrixRuntimeException e) {
    class MetaHolderFactory (line 171) | private static abstract class MetaHolderFactory {
      method create (line 172) | public MetaHolder create(final ProceedingJoinPoint joinPoint) {
      method create (line 180) | public abstract MetaHolder create(Object proxy, Method method, Objec...
      method metaHolderBuilder (line 182) | MetaHolder.Builder metaHolderBuilder(Object proxy, Method method, Ob...
    class CollapserMetaHolderFactory (line 193) | private static class CollapserMetaHolderFactory extends MetaHolderFact...
      method create (line 195) | @Override
    class CommandMetaHolderFactory (line 264) | private static class CommandMetaHolderFactory extends MetaHolderFactory {
      method create (line 265) | @Override
    type HystrixPointcutType (line 282) | private enum HystrixPointcutType {
      method of (line 286) | static HystrixPointcutType of(Method method) {
    method getAjcMethodFromTarget (line 298) | private static Method getAjcMethodFromTarget(JoinPoint joinPoint) {
    method getFirstGenericParameter (line 303) | private static Class<?> getFirstGenericParameter(Type type) {
    method getFirstGenericParameter (line 307) | private static Class<?> getFirstGenericParameter(final Type type, fina...
    method setDefaultProperties (line 325) | private static MetaHolder.Builder setDefaultProperties(MetaHolder.Buil...
    method setFallbackMethod (line 341) | private static MetaHolder.Builder setFallbackMethod(MetaHolder.Builder...

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/aop/aspectj/WeavingMode.java
  type WeavingMode (line 21) | public enum WeavingMode {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/CacheInvocationContext.java
  class CacheInvocationContext (line 36) | public class CacheInvocationContext<A extends Annotation> {
    method CacheInvocationContext (line 56) | public CacheInvocationContext(A cacheAnnotation, MethodExecutionAction...
    method getMethod (line 92) | public Method getMethod() {
    method getTarget (line 101) | public Object getTarget() {
    method getCacheAnnotation (line 105) | public A getCacheAnnotation() {
    method getAllParameters (line 114) | public List<CacheInvocationParameter> getAllParameters() {
    method getKeyParameters (line 134) | public List<CacheInvocationParameter> getKeyParameters() {
    method hasKeyParameters (line 143) | public boolean hasKeyParameters() {
    method getCacheKeyMethodName (line 152) | public String getCacheKeyMethodName() {
    method getCacheKeyMethod (line 161) | public MethodExecutionAction getCacheKeyMethod() {
    method getExecutionType (line 170) | public ExecutionType getExecutionType() {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/CacheInvocationContextFactory.java
  class CacheInvocationContextFactory (line 34) | public class CacheInvocationContextFactory {
    method createCacheResultInvocationContext (line 42) | public static CacheInvocationContext<CacheResult> createCacheResultInv...
    method createCacheRemoveInvocationContext (line 58) | public static CacheInvocationContext<CacheRemove> createCacheRemoveInv...
    method createCacheKeyAction (line 68) | private static MethodExecutionAction createCacheKeyAction(String metho...

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/CacheInvocationParameter.java
  class CacheInvocationParameter (line 33) | public class CacheInvocationParameter {
    method CacheInvocationParameter (line 41) | public CacheInvocationParameter(Class<?> rawType, Object value, Annota...
    method getAnnotations (line 54) | public Set<Annotation> getAnnotations() {
    method getCacheKeyAnnotation (line 63) | public CacheKey getCacheKeyAnnotation() {
    method hasCacheKeyAnnotation (line 72) | public boolean hasCacheKeyAnnotation() {
    method getRawType (line 81) | public Class<?> getRawType() {
    method getValue (line 90) | public Object getValue() {
    method getPosition (line 99) | public int getPosition() {
    method cacheKeyAnnotation (line 103) | private Annotation cacheKeyAnnotation() {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/DefaultHystrixGeneratedCacheKey.java
  class DefaultHystrixGeneratedCacheKey (line 25) | public class DefaultHystrixGeneratedCacheKey implements HystrixGenerated...
    method DefaultHystrixGeneratedCacheKey (line 34) | public DefaultHystrixGeneratedCacheKey(String cacheKey) {
    method getCacheKey (line 38) | @Override
    method hashCode (line 43) | @Override
    method equals (line 48) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/HystrixCacheKeyGenerator.java
  class HystrixCacheKeyGenerator (line 39) | public class HystrixCacheKeyGenerator {
    method getInstance (line 43) | public static HystrixCacheKeyGenerator getInstance() {
    method generateCacheKey (line 47) | public HystrixGeneratedCacheKey generateCacheKey(CacheInvocationContex...
    method appendPropertyValue (line 73) | private Object appendPropertyValue(StringBuilder cacheKeyBuilder, List...
    method getPropertyValue (line 85) | private Object getPropertyValue(String name, Object obj) throws Hystri...

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/HystrixGeneratedCacheKey.java
  type HystrixGeneratedCacheKey (line 23) | public interface HystrixGeneratedCacheKey  {
    method getCacheKey (line 36) | String getCacheKey();

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/HystrixRequestCacheManager.java
  class HystrixRequestCacheManager (line 29) | public final class HystrixRequestCacheManager {
    method HystrixRequestCacheManager (line 33) | private HystrixRequestCacheManager() {
    method getInstance (line 36) | public static HystrixRequestCacheManager getInstance() {
    method clearCache (line 46) | public void clearCache(CacheInvocationContext<CacheRemove> context) {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/collapser/CommandCollapser.java
  class CommandCollapser (line 33) | public class CommandCollapser extends HystrixCollapser<List<Object>, Obj...
    method CommandCollapser (line 47) | public CommandCollapser(MetaHolder metaHolder) {
    method getRequestArgument (line 55) | @Override
    method createCommand (line 63) | @Override
    method mapResponseToRequests (line 72) | @Override
    method createMessage (line 84) | private String createMessage(Collection<CollapsedRequest<Object, Objec...

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/AbstractHystrixCommand.java
  class AbstractHystrixCommand (line 39) | @ThreadSafe
    method AbstractHystrixCommand (line 50) | protected AbstractHystrixCommand(HystrixCommandBuilder builder) {
    method getCommandAction (line 65) | protected CommandAction getCommandAction() {
    method getFallbackAction (line 74) | protected CommandAction getFallbackAction() {
    method getCollapsedRequests (line 83) | protected Collection<HystrixCollapser.CollapsedRequest<Object, Object>...
    method getIgnoreExceptions (line 92) | protected List<Class<? extends Throwable>> getIgnoreExceptions() {
    method getExecutionType (line 96) | protected ExecutionType getExecutionType() {
    method getCacheKey (line 103) | @Override
    method isIgnorable (line 120) | boolean isIgnorable(Throwable throwable) {
    method process (line 142) | Object process(Action action) throws Exception {
    method run (line 167) | @Override
    method flushCache (line 173) | protected void flushCache() {
    class Action (line 182) | abstract class Action {
      method execute (line 189) | abstract Object execute() throws CommandActionExecutionException;
    class FallbackErrorMessageBuilder (line 196) | static class FallbackErrorMessageBuilder {
      method create (line 199) | static FallbackErrorMessageBuilder create() {
      method append (line 203) | public FallbackErrorMessageBuilder append(CommandAction action, Thro...
      method commandAction (line 207) | private FallbackErrorMessageBuilder commandAction(CommandAction acti...
      method exception (line 217) | private FallbackErrorMessageBuilder exception(Throwable throwable) {
      method build (line 228) | public String build() {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/AsyncResult.java
  class AsyncResult (line 28) | public abstract class AsyncResult<T> implements Future<T>, ClosureComman...
    method cancel (line 32) | @Override
    method isCancelled (line 37) | @Override
    method isDone (line 42) | @Override
    method get (line 47) | @Override
    method get (line 52) | @Override
    method invoke (line 60) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/BatchHystrixCommand.java
  class BatchHystrixCommand (line 35) | @ThreadSafe
    method BatchHystrixCommand (line 40) | public BatchHystrixCommand(HystrixCommandBuilder builder) {
    method run (line 47) | @Override
    method process (line 54) | private Object process(final Object[] args) throws Exception {
    method getFallback (line 64) | @Override
    method toArgs (line 91) | private Object[] toArgs(Collection<HystrixCollapser.CollapsedRequest<O...
    method collect (line 95) | private List<Object> collect(Collection<HystrixCollapser.CollapsedRequ...

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/ClosureCommand.java
  type ClosureCommand (line 23) | public interface ClosureCommand<T> {
    method invoke (line 30) | T invoke();

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/CommandAction.java
  type CommandAction (line 23) | public interface CommandAction {
    method getMetaHolder (line 25) | MetaHolder getMetaHolder();
    method execute (line 34) | Object execute(ExecutionType executionType) throws CommandActionExecut...
    method executeWithArgs (line 44) | Object executeWithArgs(ExecutionType executionType, Object[] args) thr...
    method getActionName (line 51) | String getActionName();

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/CommandActions.java
  class CommandActions (line 23) | public class CommandActions {
    method CommandActions (line 28) | public CommandActions(Builder builder) {
    method builder (line 33) | public static Builder builder() {
    method getCommandAction (line 37) | public CommandAction getCommandAction() {
    method getFallbackAction (line 41) | public CommandAction getFallbackAction() {
    method hasFallbackAction (line 45) | public boolean hasFallbackAction() {
    class Builder (line 49) | public static class Builder {
      method commandAction (line 53) | public Builder commandAction(CommandAction pCommandAction) {
      method fallbackAction (line 58) | public Builder fallbackAction(CommandAction pFallbackAction) {
      method build (line 63) | public CommandActions build() {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/CommandExecutionAction.java
  class CommandExecutionAction (line 25) | public class CommandExecutionAction implements CommandAction {
    method CommandExecutionAction (line 35) | public CommandExecutionAction(HystrixInvokable hystrixCommand, MetaHol...
    method getMetaHolder (line 40) | @Override
    method execute (line 45) | @Override
    method executeWithArgs (line 50) | @Override
    method getActionName (line 58) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/CommandExecutor.java
  class CommandExecutor (line 36) | public class CommandExecutor {
    method execute (line 46) | public static Object execute(HystrixInvokable invokable, ExecutionType...
    method castToExecutable (line 71) | private static HystrixExecutable castToExecutable(HystrixInvokable inv...
    method castToObservable (line 78) | private static HystrixObservable castToObservable(HystrixInvokable inv...

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/ExecutionType.java
  type ExecutionType (line 29) | public enum ExecutionType {
    method getExecutionType (line 54) | public static ExecutionType getExecutionType(Class<?> type) {
    method isRxType (line 64) | private static boolean isRxType(Class<?> cl) {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/GenericCommand.java
  class GenericCommand (line 30) | @ThreadSafe
    method GenericCommand (line 35) | public GenericCommand(HystrixCommandBuilder builder) {
    method run (line 42) | @Override
    method getFallback (line 66) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/GenericObservableCommand.java
  class GenericObservableCommand (line 44) | @ThreadSafe
    method GenericObservableCommand (line 56) | public GenericObservableCommand(HystrixCommandBuilder builder) {
    method construct (line 68) | @Override
    method resumeWithFallback (line 97) | @Override
    method getCacheKey (line 130) | @Override
    method flushCache (line 144) | protected void flushCache() {
    method isIgnorable (line 156) | boolean isIgnorable(Throwable throwable) {
    method toObservable (line 168) | private Observable toObservable(Object obj) {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/GenericSetterBuilder.java
  class GenericSetterBuilder (line 40) | @Immutable
    method GenericSetterBuilder (line 52) | public GenericSetterBuilder(Builder builder) {
    method builder (line 63) | public static Builder builder(){
    method build (line 73) | public HystrixCommand.Setter build() throws HystrixPropertyException {
    method buildObservableCommandSetter (line 94) | public HystrixObservableCommand.Setter buildObservableCommandSetter() {
    method buildCollapserCommandSetter (line 106) | public HystrixCollapser.Setter buildCollapserCommandSetter(){
    method getInfo (line 112) | private String getInfo() {
    class Builder (line 117) | public static class Builder {
      method groupKey (line 127) | public Builder groupKey(String pGroupKey) {
      method groupKey (line 132) | public Builder groupKey(String pGroupKey, String def) {
      method commandKey (line 137) | public Builder commandKey(String pCommandKey) {
      method commandKey (line 142) | @Deprecated
      method collapserKey (line 148) | public Builder collapserKey(String pCollapserKey) {
      method scope (line 153) | public Builder scope(HystrixCollapser.Scope pScope) {
      method collapserProperties (line 158) | public Builder collapserProperties(List<HystrixProperty> properties) {
      method commandProperties (line 163) | public Builder commandProperties(List<HystrixProperty> properties) {
      method threadPoolProperties (line 169) | public Builder threadPoolProperties(List<HystrixProperty> properties) {
      method threadPoolKey (line 174) | public Builder threadPoolKey(String pThreadPoolKey) {
      method build (line 179) | public GenericSetterBuilder build(){

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/HystrixCommandBuilder.java
  class HystrixCommandBuilder (line 34) | @Immutable
    method HystrixCommandBuilder (line 45) | public HystrixCommandBuilder(Builder builder) {
    method builder (line 55) | public static <ResponseType> Builder builder() {
    method getSetterBuilder (line 59) | public GenericSetterBuilder getSetterBuilder() {
    method getCommandActions (line 63) | public CommandActions getCommandActions() {
    method getCacheResultInvocationContext (line 67) | public CacheInvocationContext<CacheResult> getCacheResultInvocationCon...
    method getCacheRemoveInvocationContext (line 71) | public CacheInvocationContext<CacheRemove> getCacheRemoveInvocationCon...
    method getCollapsedRequests (line 75) | public Collection<HystrixCollapser.CollapsedRequest<Object, Object>> g...
    method getIgnoreExceptions (line 79) | public List<Class<? extends Throwable>> getIgnoreExceptions() {
    method getExecutionType (line 83) | public ExecutionType getExecutionType() {
    class Builder (line 88) | public static class Builder<ResponseType> {
      method setterBuilder (line 103) | public Builder setterBuilder(GenericSetterBuilder pSetterBuilder) {
      method commandActions (line 114) | public Builder commandActions(CommandActions pCommandActions) {
      method cacheResultInvocationContext (line 125) | public Builder cacheResultInvocationContext(CacheInvocationContext<C...
      method cacheRemoveInvocationContext (line 136) | public Builder cacheRemoveInvocationContext(CacheInvocationContext<C...
      method collapsedRequests (line 147) | public Builder collapsedRequests(Collection<HystrixCollapser.Collaps...
      method ignoreExceptions (line 158) | public Builder ignoreExceptions(List<Class<? extends Throwable>> pIg...
      method executionType (line 169) | public Builder executionType(ExecutionType pExecutionType) {
      method build (line 179) | public HystrixCommandBuilder build() {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/HystrixCommandBuilderFactory.java
  class HystrixCommandBuilderFactory (line 36) | public class HystrixCommandBuilderFactory {
    method getInstance (line 42) | public static HystrixCommandBuilderFactory getInstance() {
    method HystrixCommandBuilderFactory (line 46) | private HystrixCommandBuilderFactory() {
    method create (line 50) | public HystrixCommandBuilder create(MetaHolder metaHolder) {
    method create (line 54) | public <ResponseType> HystrixCommandBuilder create(MetaHolder metaHold...
    method validateMetaHolder (line 68) | private void validateMetaHolder(MetaHolder metaHolder) {
    method createGenericSetterBuilder (line 73) | private GenericSetterBuilder createGenericSetterBuilder(MetaHolder met...
    method createCommandActions (line 88) | private CommandActions createCommandActions(MetaHolder metaHolder) {
    method createCommandAction (line 95) | private CommandAction createCommandAction(MetaHolder metaHolder) {
    method createFallbackAction (line 99) | private CommandAction createFallbackAction(MetaHolder metaHolder) {
    method getAjcMethod (line 151) | private Method getAjcMethod(Object target, Method fallback) {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/HystrixCommandFactory.java
  class HystrixCommandFactory (line 24) | public class HystrixCommandFactory {
    method HystrixCommandFactory (line 28) | private HystrixCommandFactory() {
    method getInstance (line 32) | public static HystrixCommandFactory getInstance() {
    method create (line 36) | public HystrixInvokable create(MetaHolder metaHolder) {
    method createDelayed (line 48) | public HystrixInvokable createDelayed(MetaHolder metaHolder) {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/LazyCommandExecutionAction.java
  class LazyCommandExecutionAction (line 26) | public class LazyCommandExecutionAction implements CommandAction {
    method LazyCommandExecutionAction (line 31) | public LazyCommandExecutionAction(MetaHolder metaHolder) {
    method getMetaHolder (line 35) | @Override
    method execute (line 43) | @Override
    method executeWithArgs (line 52) | @Override
    method getActionName (line 61) | @Override
    method createCopy (line 69) | private MetaHolder createCopy(MetaHolder source, ExecutionType executi...
    method createCopy (line 90) | private MetaHolder createCopy(MetaHolder source, ExecutionType executi...

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/MetaHolder.java
  class MetaHolder (line 39) | @Immutable
    method apply (line 70) | @Nullable
    method MetaHolder (line 77) | private MetaHolder(Builder builder) {
    method builder (line 105) | public static Builder builder() {
    method getHystrixCollapser (line 109) | public HystrixCollapser getHystrixCollapser() {
    method getHystrixCommand (line 113) | public HystrixCommand getHystrixCommand() {
    method getMethod (line 117) | public Method getMethod() {
    method getCacheKeyMethod (line 121) | public Method getCacheKeyMethod() {
    method getAjcMethod (line 125) | public Method getAjcMethod() {
    method getObj (line 129) | public Object getObj() {
    method getProxyObj (line 133) | public Object getProxyObj() {
    method getClosure (line 137) | public Closure getClosure() {
    method getExecutionType (line 141) | public ExecutionType getExecutionType() {
    method getCollapserExecutionType (line 145) | public ExecutionType getCollapserExecutionType() {
    method getArgs (line 149) | public Object[] getArgs() {
    method getCommandGroupKey (line 153) | public String getCommandGroupKey() {
    method getDefaultGroupKey (line 157) | public String getDefaultGroupKey() {
    method getDefaultThreadPoolKey (line 161) | public String getDefaultThreadPoolKey() {
    method getCollapserKey (line 165) | public String getCollapserKey() {
    method getCommandKey (line 169) | public String getCommandKey() {
    method getThreadPoolKey (line 173) | public String getThreadPoolKey() {
    method getDefaultCommandKey (line 177) | public String getDefaultCommandKey() {
    method getDefaultCollapserKey (line 181) | public String getDefaultCollapserKey() {
    method hasDefaultProperties (line 185) | public boolean hasDefaultProperties() {
    method getDefaultProperties (line 189) | public Optional<DefaultProperties> getDefaultProperties() {
    method getParameterTypes (line 193) | public Class<?>[] getParameterTypes() {
    method isCollapserAnnotationPresent (line 197) | public boolean isCollapserAnnotationPresent() {
    method isCommandAnnotationPresent (line 201) | public boolean isCommandAnnotationPresent() {
    method getJoinPoint (line 205) | public JoinPoint getJoinPoint() {
    method getFallbackMethod (line 209) | public Method getFallbackMethod() {
    method hasFallbackMethod (line 213) | public boolean hasFallbackMethod() {
    method isExtendedParentFallback (line 217) | public boolean isExtendedParentFallback() {
    method hasFallbackMethodCommand (line 221) | public boolean hasFallbackMethodCommand() {
    method isFallback (line 225) | public boolean isFallback() {
    method isExtendedFallback (line 229) | public boolean isExtendedFallback() {
    method isDefaultFallback (line 233) | public boolean isDefaultFallback() {
    method getCommandIgnoreExceptions (line 237) | @SuppressWarnings("unchecked")
    method getFallbackExecutionType (line 255) | public ExecutionType getFallbackExecutionType() {
    method getCommandProperties (line 259) | public List<HystrixProperty> getCommandProperties() {
    method getCollapserProperties (line 276) | public List<HystrixProperty> getCollapserProperties() {
    method getThreadPoolProperties (line 280) | public List<HystrixProperty> getThreadPoolProperties() {
    method isObservable (line 297) | public boolean isObservable() {
    method getObservableExecutionMode (line 301) | public ObservableExecutionMode getObservableExecutionMode() {
    method raiseHystrixExceptionsContains (line 305) | public boolean raiseHystrixExceptionsContains(HystrixException hystrix...
    method getRaiseHystrixExceptions (line 309) | public List<HystrixException> getRaiseHystrixExceptions() {
    method get (line 326) | private String get(String key, String defaultKey) {
    method nonEmptyList (line 330) | private <T> Predicate<List<T>> nonEmptyList() {
    method getOrDefault (line 339) | @SuppressWarnings("unchecked")
    method getOrDefault (line 344) | private <T> T getOrDefault(Supplier<T> source, Supplier<T> defaultChoi...
    class Builder (line 352) | public static final class Builder {
      method hystrixCollapser (line 382) | public Builder hystrixCollapser(HystrixCollapser hystrixCollapser) {
      method hystrixCommand (line 387) | public Builder hystrixCommand(HystrixCommand hystrixCommand) {
      method method (line 392) | public Builder method(Method method) {
      method cacheKeyMethod (line 397) | public Builder cacheKeyMethod(Method cacheKeyMethod) {
      method fallbackMethod (line 402) | public Builder fallbackMethod(Method fallbackMethod) {
      method fallbackExecutionType (line 407) | public Builder fallbackExecutionType(ExecutionType fallbackExecution...
      method fallback (line 412) | public Builder fallback(boolean fallback) {
      method extendedParentFallback (line 417) | public Builder extendedParentFallback(boolean extendedParentFallback) {
      method defaultFallback (line 422) | public Builder defaultFallback(boolean defaultFallback) {
      method ajcMethod (line 427) | public Builder ajcMethod(Method ajcMethod) {
      method obj (line 432) | public Builder obj(Object obj) {
      method proxyObj (line 437) | public Builder proxyObj(Object proxy) {
      method args (line 442) | public Builder args(Object[] args) {
      method closure (line 447) | public Builder closure(Closure closure) {
      method executionType (line 452) | public Builder executionType(ExecutionType executionType) {
      method collapserExecutionType (line 457) | public Builder collapserExecutionType(ExecutionType collapserExecuti...
      method defaultGroupKey (line 462) | public Builder defaultGroupKey(String defGroupKey) {
      method defaultCommandKey (line 467) | public Builder defaultCommandKey(String defCommandKey) {
      method defaultThreadPoolKey (line 472) | public Builder defaultThreadPoolKey(String defaultThreadPoolKey) {
      method defaultCollapserKey (line 477) | public Builder defaultCollapserKey(String defCollapserKey) {
      method defaultProperties (line 482) | public Builder defaultProperties(@Nullable DefaultProperties default...
      method joinPoint (line 487) | public Builder joinPoint(JoinPoint joinPoint) {
      method extendedFallback (line 492) | public Builder extendedFallback(boolean extendedFallback) {
      method observable (line 497) | public Builder observable(boolean observable) {
      method observableExecutionMode (line 502) | public Builder observableExecutionMode(ObservableExecutionMode obser...
      method build (line 507) | public MetaHolder build() {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/MethodExecutionAction.java
  class MethodExecutionAction (line 35) | public class MethodExecutionAction implements CommandAction {
    method MethodExecutionAction (line 45) | public MethodExecutionAction(Object object, Method method, MetaHolder ...
    method MethodExecutionAction (line 52) | public MethodExecutionAction(Object object, Method method, Object[] ar...
    method getObject (line 59) | public Object getObject() {
    method getMethod (line 63) | public Method getMethod() {
    method getArgs (line 67) | public Object[] getArgs() {
    method getMetaHolder (line 71) | @Override
    method execute (line 76) | @Override
    method executeWithArgs (line 86) | @Override
    method getActionName (line 99) | @Override
    method execute (line 109) | private Object execute(Object o, Method m, Object... args) throws Comm...
    method executeClj (line 126) | private Object executeClj(Object o, Method m, Object... args){
    method propagateCause (line 144) | private void propagateCause(Throwable throwable) throws CommandActionE...

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/closure/AbstractClosureFactory.java
  class AbstractClosureFactory (line 32) | public abstract class AbstractClosureFactory implements ClosureFactory {
    method createClosure (line 37) | @Override
    method createClosure (line 63) | Closure createClosure(String rootMethodName, final Object closureObj) ...
    method isClosureCommand (line 78) | abstract boolean isClosureCommand(final Object closureObj);
    method getClosureCommandType (line 85) | abstract Class<? extends ClosureCommand> getClosureCommandType();

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/closure/AsyncClosureFactory.java
  class AsyncClosureFactory (line 24) | public class AsyncClosureFactory extends AbstractClosureFactory {
    method AsyncClosureFactory (line 28) | private AsyncClosureFactory() {
    method getInstance (line 31) | public static AsyncClosureFactory getInstance() {
    method isClosureCommand (line 38) | @Override
    method getClosureCommandType (line 46) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/closure/Closure.java
  class Closure (line 24) | public class Closure {
    method Closure (line 29) | public Closure() {
    method Closure (line 34) | public Closure(Method closureMethod, Object closureObj) {
    method getClosureMethod (line 39) | public Method getClosureMethod() {
    method getClosureObj (line 43) | public Object getClosureObj() {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/closure/ClosureFactory.java
  type ClosureFactory (line 25) | public interface ClosureFactory {
    method createClosure (line 36) | Closure createClosure(final MetaHolder metaHolder, final Method method...

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/conf/HystrixPropertiesManager.java
  class HystrixPropertiesManager (line 32) | public final class HystrixPropertiesManager {
    method HystrixPropertiesManager (line 34) | private HystrixPropertiesManager() {
    method initializeCommandProperties (line 100) | public static HystrixCommandProperties.Setter initializeCommandPropert...
    method initializeThreadPoolProperties (line 109) | public static HystrixThreadPoolProperties.Setter initializeThreadPoolP...
    method initializeCollapserProperties (line 118) | public static HystrixCollapserProperties.Setter initializeCollapserPro...
    method initializeProperties (line 122) | private static <S> S initializeProperties(S setter, List<HystrixProper...
    method validate (line 136) | private static void validate(HystrixProperty hystrixProperty) throws I...
    method set (line 143) | @Override
    method set (line 150) | @Override
    method set (line 156) | @Override
    method set (line 162) | @Override
    method set (line 168) | @Override
    method set (line 174) | @Override
    method set (line 180) | @Override
    method set (line 186) | @Override
    method set (line 192) | @Override
    method set (line 198) | @Override
    method set (line 204) | @Override
    method set (line 210) | @Override
    method set (line 216) | @Override
    method set (line 222) | @Override
    method set (line 228) | @Override
    method set (line 234) | @Override
    method set (line 240) | @Override
    method set (line 246) | @Override
    method set (line 252) | @Override
    method set (line 258) | @Override
    method set (line 264) | @Override
    method set (line 270) | @Override
    method set (line 281) | @Override
    method set (line 287) | @Override
    method set (line 294) | @Override
    method set (line 301) | @Override
    method set (line 307) | @Override
    method set (line 314) | @Override
    method set (line 321) | @Override
    method set (line 328) | @Override
    method set (line 340) | @Override
    method set (line 346) | @Override
    method set (line 353) | @Override
    method set (line 359) | @Override
    method set (line 365) | @Override
    method set (line 371) | @Override
    method set (line 377) | @Override
    method set (line 383) | @Override
    method set (line 389) | @Override
    type PropSetter (line 397) | private interface PropSetter<S, V> {
      method set (line 398) | void set(S setter, V value) throws IllegalArgumentException;
    method toEnum (line 401) | private static <E extends Enum<E>> E toEnum(String propName, String pr...
    method toInt (line 411) | private static int toInt(String propName, String propValue) throws Ill...
    method toBoolean (line 419) | private static boolean toBoolean(String propValue) {
    method createBadEnumError (line 423) | private static IllegalArgumentException createBadEnumError(String prop...

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/exception/CommandActionExecutionException.java
  class CommandActionExecutionException (line 21) | public class CommandActionExecutionException extends RuntimeException {
    method CommandActionExecutionException (line 28) | public CommandActionExecutionException(Throwable cause) {
    method CommandActionExecutionException (line 35) | public CommandActionExecutionException() {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/exception/ExceptionUtils.java
  class ExceptionUtils (line 23) | public class ExceptionUtils {
    method propagateCause (line 30) | public static void propagateCause(Throwable throwable) throws CommandA...
    method wrapCause (line 39) | public static CommandActionExecutionException wrapCause(Throwable thro...
    method unwrapCause (line 49) | public static Throwable unwrapCause(Throwable e) {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/exception/FallbackDefinitionException.java
  class FallbackDefinitionException (line 19) | public class FallbackDefinitionException extends RuntimeException {
    method FallbackDefinitionException (line 21) | public FallbackDefinitionException() {
    method FallbackDefinitionException (line 24) | public FallbackDefinitionException(String message, Throwable cause) {
    method FallbackDefinitionException (line 28) | public FallbackDefinitionException(Throwable cause) {
    method FallbackDefinitionException (line 32) | public FallbackDefinitionException(String message) {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/exception/FallbackInvocationException.java
  class FallbackInvocationException (line 21) | public class FallbackInvocationException extends RuntimeException {
    method FallbackInvocationException (line 23) | public FallbackInvocationException() {
    method FallbackInvocationException (line 26) | public FallbackInvocationException(String message, Throwable cause) {
    method FallbackInvocationException (line 30) | public FallbackInvocationException(Throwable cause) {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/exception/HystrixCacheKeyGenerationException.java
  class HystrixCacheKeyGenerationException (line 23) | public class HystrixCacheKeyGenerationException extends RuntimeException {
    method HystrixCacheKeyGenerationException (line 25) | public HystrixCacheKeyGenerationException() {
    method HystrixCacheKeyGenerationException (line 28) | public HystrixCacheKeyGenerationException(String message) {
    method HystrixCacheKeyGenerationException (line 32) | public HystrixCacheKeyGenerationException(String message, Throwable ca...
    method HystrixCacheKeyGenerationException (line 36) | public HystrixCacheKeyGenerationException(Throwable cause) {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/exception/HystrixCachingException.java
  class HystrixCachingException (line 23) | public class HystrixCachingException extends RuntimeException {
    method HystrixCachingException (line 25) | public HystrixCachingException() {
    method HystrixCachingException (line 28) | public HystrixCachingException(String message) {
    method HystrixCachingException (line 32) | public HystrixCachingException(String message, Throwable cause) {
    method HystrixCachingException (line 36) | public HystrixCachingException(Throwable cause) {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/exception/HystrixPropertyException.java
  class HystrixPropertyException (line 21) | public class HystrixPropertyException extends RuntimeException {
    method HystrixPropertyException (line 23) | public HystrixPropertyException() {
    method HystrixPropertyException (line 26) | public HystrixPropertyException(String message, Throwable cause) {
    method HystrixPropertyException (line 30) | public HystrixPropertyException(Throwable cause) {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/AopUtils.java
  class AopUtils (line 33) | public final class AopUtils {
    method AopUtils (line 35) | private AopUtils() {
    method getMethodFromTarget (line 46) | public static Method getMethodFromTarget(JoinPoint joinPoint) {
    method getMethodFromTarget (line 63) | public static Method getMethodFromTarget(JoinPoint joinPoint, String m...
    method getParameterTypes (line 75) | public static Class[] getParameterTypes(JoinPoint joinPoint) {
    method getDeclaredMethod (line 89) | public static Method getDeclaredMethod(Class<?> type, String methodNam...
    method getAnnotation (line 109) | public static <T extends Annotation> Optional<T> getAnnotation(JoinPoi...
    method getAnnotation (line 113) | public static <T extends Annotation> Optional<T> getAnnotation(Class<?...
    method getMethodInfo (line 128) | public static String getMethodInfo(Method m) {
    method getAccessLevel (line 191) | private static String getAccessLevel(int modifiers) {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/CommonUtils.java
  class CommonUtils (line 26) | public final class CommonUtils {
    method CommonUtils (line 28) | private CommonUtils(){
    method createArgsForFallback (line 32) | public static Object[] createArgsForFallback(MetaHolder metaHolder, Th...
    method createArgsForFallback (line 36) | public static Object[] createArgsForFallback(Object[] args, MetaHolder...

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/EnvUtils.java
  class EnvUtils (line 25) | public final class EnvUtils {
    method EnvUtils (line 33) | private EnvUtils(){
    method getWeavingMode (line 37) | public static WeavingMode getWeavingMode() {
    method isCompileWeaving (line 45) | public static boolean isCompileWeaving() {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/FallbackMethod.java
  class FallbackMethod (line 48) | public class FallbackMethod {
    method FallbackMethod (line 58) | public FallbackMethod(Method method) {
    method FallbackMethod (line 62) | public FallbackMethod(Method method, boolean extended, boolean default...
    method isCommand (line 71) | public boolean isCommand() {
    method isPresent (line 75) | public boolean isPresent() {
    method getMethod (line 79) | public Method getMethod() {
    method getExecutionType (line 83) | public ExecutionType getExecutionType() {
    method isExtended (line 87) | public boolean isExtended() {
    method isDefault (line 91) | public boolean isDefault() {
    method validateReturnType (line 95) | public void validateReturnType(Method commandMethod) throws FallbackDe...
    method getFirstParametrizedType (line 144) | private Type getFirstParametrizedType(Method m) {
    method validateCompletableReturnType (line 154) | private void validateCompletableReturnType(Method commandMethod, Class...
    method validateReturnType (line 160) | private void validateReturnType(Method commandMethod, Method fallbackM...
    method validatePlainReturnType (line 186) | private void validatePlainReturnType(Method commandMethod, Method fall...
    method validatePlainReturnType (line 190) | private void validatePlainReturnType(Class<?> commandReturnType, Class...
    method validateParametrizedType (line 197) | private void validateParametrizedType(Type commandReturnType, Type fal...
    method createErrorMsg (line 204) | private String createErrorMsg(Method commandMethod, Method fallbackMet...
    method equalsParametrizedTypes (line 211) | private Result equalsParametrizedTypes(List<Type> commandParametrizedT...
    method equals (line 234) | private static Result equals(Type commandType, Type fallbackType) {
    method regularEquals (line 283) | private static Result regularEquals(final Type commandType, final Type...
    method getParentKind (line 295) | private static Optional<Type> getParentKind(Type type, List<Type> type...
    method positionAsString (line 301) | private static String positionAsString(Type type, List<Type> types) {
    method position (line 309) | private static int position(Type type, List<Type> types) {
    method boundsError (line 315) | private static Error boundsError(Type t1, Type[] b1, String boundType,...
    method equals (line 324) | private static Result equals(Type[] t1, Type[] t2) {
    class Result (line 339) | private static class Result {
      method isSuccess (line 343) | boolean isSuccess() {
      method isFailure (line 347) | boolean isFailure() {
      method of (line 351) | static Result of(boolean res, Supplier<List<Error>> errors) {
      method success (line 356) | static Result success() {
      method failure (line 360) | static Result failure() {
      method failure (line 364) | static Result failure(Error... errors) {
      method failure (line 368) | static Result failure(List<Error> errors) {
      method combine (line 372) | Result combine(Result r) {
      method andThen (line 376) | Result andThen(Supplier<Result> resultSupplier) {
      method append (line 381) | Result append(List<Error> errors) {
      method append (line 386) | Result append(Supplier<List<Error>> errors) {
      method merge (line 391) | static List<Error> merge(@Nonnull List<Error> e1, @Nonnull List<Erro...
      method Result (line 398) | Result(boolean success, List<Error> errors) {
      method Result (line 404) | Result(boolean success) {
    class Error (line 410) | private static class Error {
      method Error (line 417) | Error(String reason) {
      method Error (line 421) | Error(Type commandType, String reason, Type fallbackType) {

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/FutureDecorator.java
  class FutureDecorator (line 24) | public class FutureDecorator implements Future {
    method FutureDecorator (line 28) | public FutureDecorator(Future origin) {
    method cancel (line 32) | @Override
    method isCancelled (line 37) | @Override
    method isDone (line 42) | @Override
    method get (line 47) | @Override
    method get (line 56) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/MethodProvider.java
  class MethodProvider (line 42) | public final class MethodProvider {
    method MethodProvider (line 44) | private MethodProvider() {
    method getInstance (line 50) | public static MethodProvider getInstance() {
    method getFallbackMethod (line 58) | public FallbackMethod getFallbackMethod(Class<?> type, Method commandM...
    method getFallbackMethod (line 71) | public FallbackMethod getFallbackMethod(Class<?> enclosingType, Method...
    method getDefaultFallback (line 78) | private void getDefaultFallback(){
    method getClassLevelFallback (line 82) | private String getClassLevelFallback(Class<?> enclosingClass) {
    class SpecificFallback (line 89) | private static class SpecificFallback extends FallbackMethodFinder {
      method SpecificFallback (line 91) | public SpecificFallback(FallbackMethodFinder next) {
      method isSpecific (line 95) | @Override
      method getFallbackName (line 100) | @Override
      method canHandle (line 105) | @Override
    class DefaultCallback (line 111) | private static class DefaultCallback extends FallbackMethodFinder {
      method isDefault (line 112) | @Override
      method getFallbackName (line 117) | @Override
      method canHandle (line 131) | @Override
    class FallbackMethodFinder (line 137) | private static abstract class FallbackMethodFinder {
      method FallbackMethodFinder (line 140) | public FallbackMethodFinder() {
      method FallbackMethodFinder (line 143) | public FallbackMethodFinder(FallbackMethodFinder next) {
      method isDefault (line 147) | boolean isDefault() {
      method isSpecific (line 151) | boolean isSpecific(){
      method getFallbackName (line 155) | public abstract String getFallbackName(Class<?> enclosingType, Metho...
      method find (line 157) | public FallbackMethod find(Class<?> enclosingType, Method commandMet...
      method canHandle (line 167) | abstract boolean canHandle(Class<?> enclosingType, Method commandMet...
      method doFind (line 169) | private FallbackMethod doFind(Class<?> enclosingType, Method command...
    method getMethod (line 207) | public static Optional<Method> getMethod(Class<?> type, String name, C...
    method unbride (line 232) | public Method unbride(final Method bridgeMethod, Class<?> aClass) thro...
    method getParameterCount (line 259) | private static int getParameterCount(String desc) {
    method parseParams (line 263) | private static String[] parseParams(String desc) {
    class MethodSignature (line 271) | private static class MethodSignature {
      method getParameterTypes (line 275) | public Class<?>[] getParameterTypes() throws ClassNotFoundException {
    class MethodFinder (line 290) | private static class MethodFinder extends MethodVisitor {
      method MethodFinder (line 293) | public MethodFinder(MethodSignature methodSignature) {
      method visitMethodInsn (line 298) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/TypeHelper.java
  class TypeHelper (line 37) | public final class TypeHelper {
    method TypeHelper (line 38) | private TypeHelper() {
    method isGenericReturnType (line 42) | public static boolean isGenericReturnType(Method method) {
    method isReturnTypeParametrized (line 52) | public static boolean isReturnTypeParametrized(Method method) {
    method isParametrizedType (line 56) | public static boolean isParametrizedType(Type t) {
    method isTypeVariable (line 60) | public static boolean isTypeVariable(Type t) {
    method isWildcardType (line 64) | public static boolean isWildcardType(Type t) {
    method flattenTypeVariables (line 83) | @ParametersAreNonnullByDefault

FILE: hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/ajc/AjcUtils.java
  class AjcUtils (line 28) | public final class AjcUtils {
    method AjcUtils (line 30) | private AjcUtils() {
    method getAjcMethod (line 35) | public static Method getAjcMethod(final Class<?> target, final String ...
    method getAjcMethodAroundAdvice (line 66) | public static Method getAjcMethodAroundAdvice(final Class<?> target, f...
    method getAjcMethodAroundAdvice (line 71) | public static Method getAjcMethodAroundAdvice(Class<?> target, MethodS...
    method getAjcMethodAroundAdvice (line 76) | public static Method getAjcMethodAroundAdvice(Class<?> target, Method ...
    method invokeAjcMethod (line 81) | public static Object invokeAjcMethod(Method method, Object target, Met...
    method removeAspectjArgs (line 90) | private static Class<?>[] removeAspectjArgs(Class<?>[] parameterTypes) {
    type AdviceType (line 96) | public enum AdviceType {
      method AdviceType (line 100) | AdviceType(String postfix) {
      method getPostfix (line 104) | public String getPostfix() {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/cache/CacheInvocationContextFactoryTest.java
  class CacheInvocationContextFactoryTest (line 39) | public class CacheInvocationContextFactoryTest {
    method testCreateCacheResultInvocationContext_givenMethodAnnotatedWithCacheResult_shouldCreateCorrectCacheKeyInvocationContext (line 41) | @Test
    method testCreateCacheRemoveInvocationContext_givenMethodAnnotatedWithCacheRemove_shouldCreateCorrectCacheKeyInvocationContext (line 70) | @Test
    method testCacheResultMethodWithWrongCacheKeyMethodSignature_givenWrongCacheKeyMethod_shouldThrowException (line 92) | @Test(expected = HystrixCachingException.class)
    method testCacheResultMethodWithCacheKeyMethodWithWrongReturnType_givenCacheKeyMethodWithWrongReturnType_shouldThrowException (line 106) | @Test(expected = HystrixCachingException.class)
    class TestCacheClass (line 121) | public static class TestCacheClass {
      method cacheResultMethod (line 123) | @CacheResult
      method cacheRemoveMethod (line 128) | @CacheRemove(commandKey = "test")
      method cacheResultMethodWithWrongCacheKeyMethodSignature (line 133) | @CacheResult(cacheKeyMethod = "cacheKeyMethodSignature")
      method cacheKeyMethodSignature (line 138) | private String cacheKeyMethodSignature(String param1, String param2) {
      method cacheResultMethodWithCacheKeyMethodWithWrongReturnType (line 142) | @CacheResult(cacheKeyMethod = "cacheKeyMethodWithWrongReturnType")
      method cacheKeyMethodWithWrongReturnType (line 147) | private Long cacheKeyMethodWithWrongReturnType(String param1, String...
    method isAnnotationPresent (line 152) | private static boolean isAnnotationPresent(CacheInvocationParameter pa...

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/cache/CacheInvocationParameterTest.java
  class CacheInvocationParameterTest (line 29) | public class CacheInvocationParameterTest {
    method testCacheInvocationParameterConstructor (line 31) | @Test
    method stabMethod (line 57) | private static void stabMethod(@CacheKey String val) {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/cache/HystrixCacheKeyGeneratorTest.java
  class HystrixCacheKeyGeneratorTest (line 26) | public class HystrixCacheKeyGeneratorTest {
    method testGenerateCacheKey_givenUser_shouldReturnCorrectCacheKey (line 28) | @Test
    method testGenerateCacheKey_givenUserWithNullProfile_shouldReturnCorrectCacheKey (line 50) | @Test
    method testGenerateCacheKey_givenCacheKeyMethodWithNoArguments_shouldReturnEmptyCacheKey (line 71) | @Test
    class TestCacheClass (line 87) | public static class TestCacheClass {
      method cacheResultMethod (line 89) | @CacheResult
      method cacheResultMethod (line 94) | @CacheResult
    class User (line 101) | public static class User {
      method getId (line 105) | public String getId() {
      method setId (line 109) | public void setId(String id) {
      method getProfile (line 113) | public Profile getProfile() {
      method setProfile (line 117) | public void setProfile(Profile profile) {
    class Profile (line 122) | public static class Profile {
      method Profile (line 125) | public Profile() {
      method Profile (line 128) | public Profile(String name) {
      method getName (line 132) | public String getName() {
      method setName (line 136) | public void setName(String name) {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/command/ExecutionTypeTest.java
  class ExecutionTypeTest (line 34) | @RunWith(Parameterized.class)
    method data (line 37) | @Parameterized.Parameters
    method should_return_correct_execution_type (line 52) | @Test
    method shouldHaveExecutionType (line 58) | private static ExecutionType shouldHaveExecutionType(final ExecutionTy...
    method returnType (line 62) | private static Class<?> returnType(final Class<?> aClass) {
    method ExecutionTypeTest (line 69) | public ExecutionTypeTest(final Class<?> methodReturnType, final Execut...

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/BasicHystrixTest.java
  class BasicHystrixTest (line 31) | public abstract class BasicHystrixTest {
    method getHystrixContext (line 35) | protected final HystrixRequestContext getHystrixContext() {
    method resetContext (line 39) | protected void resetContext() {
    method getThreadPoolProperties (line 43) | protected final HystrixThreadPoolProperties getThreadPoolProperties(Hy...

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/CommonUtils.java
  class CommonUtils (line 34) | public class CommonUtils {
    method getMetrics (line 36) | public HystrixCommandMetrics getMetrics(String commandKey) {
    method getLastExecutedCommand (line 41) | public static HystrixInvokableInfo<?> getLastExecutedCommand() {
    method assertExecutedCommands (line 47) | public static void assertExecutedCommands(String... commands) {
    method getExecutedCommandsKeys (line 58) | public static List<String> getExecutedCommandsKeys() {
    method getExecutedCommandsKeys (line 65) | public static List<String> getExecutedCommandsKeys(List<HystrixInvokab...
    method getHystrixCommandByKey (line 75) | public static HystrixInvokableInfo getHystrixCommandByKey(String key) {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/cache/BasicCacheTest.java
  class BasicCacheTest (line 45) | public abstract class BasicCacheTest extends BasicHystrixTest {
    method setUp (line 49) | @Before
    method createUserService (line 54) | protected abstract UserService createUserService();
    method testGetSetGetUserCache_givenTwoCommands (line 75) | @Test
    method testGetSetGetUserCache_givenGetUserByEmailAndUpdateProfile (line 119) | @Test
    method testGetSetGetUserCache_givenOneCommandAndOneMethodAnnotatedWithCacheRemove (line 165) | @Test
    method testGetUser_givenWrongCacheKeyMethodReturnType_shouldThrowException (line 208) | @Test(expected = HystrixCachingException.class)
    method testGetUserByName_givenNonexistentCacheKeyMethod_shouldThrowException (line 218) | @Test(expected = HystrixCachingException.class)
    class UserService (line 228) | public static class UserService {
      method init (line 231) | @PostConstruct
      method getUserById (line 240) | @CacheResult
      method getUserByName (line 246) | @CacheResult(cacheKeyMethod = "getUserByNameCacheKey")
      method getUserByNameCacheKey (line 252) | private Long getUserByNameCacheKey() {
      method getUser (line 256) | @CacheResult(cacheKeyMethod = "nonexistent")
      method getUserByEmail (line 262) | @CacheResult(cacheKeyMethod = "getUserByEmailCacheKey")
      method getUserByEmailCacheKey (line 273) | private String getUserByEmailCacheKey(String email) {
      method update (line 277) | @CacheRemove(commandKey = "getUserById")
      method updateProfile (line 283) | @CacheRemove(commandKey = "getUserByEmail")
      method updateName (line 289) | @CacheRemove(commandKey = "getUserById")

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/collapser/BasicCollapserTest.java
  class BasicCollapserTest (line 46) | public abstract class BasicCollapserTest extends BasicHystrixTest {
    method createUserService (line 48) | protected abstract UserService createUserService();
    method setUp (line 52) | @Before
    method testGetUserById (line 58) | @Test
    method testReactive (line 85) | @Test
    method testGetUserByIdWithFallback (line 112) | @Test
    method testGetUserByIdWithFallbackWithThrowableParam (line 136) | @Test
    method testGetUserByIdWrongBatchMethodArgType (line 166) | @Test(expected = IllegalStateException.class)
    method testGetUserByIdWrongBatchMethodReturnType (line 171) | @Test(expected = IllegalStateException.class)
    method testGetUserByIdWrongCollapserMethodReturnType (line 176) | @Test(expected = IllegalStateException.class)
    method testGetUserByIdWrongCollapserMultipleArgs (line 181) | @Test(expected = IllegalStateException.class)
    method testGetUserByIdWrongCollapserNoArgs (line 186) | @Test(expected = IllegalStateException.class)
    class UserService (line 191) | public static class UserService {
      method getUserById (line 197) | @HystrixCollapser(batchMethod = "getUserByIds",
      method getUserByIdWithFallback (line 203) | @HystrixCollapser(batchMethod = "getUserByIdsWithFallback",
      method getUserByIdReactive (line 209) | @HystrixCollapser(batchMethod = "getUserByIds",
      method getUserByIdWithFallbackWithThrowableParam (line 215) | @HystrixCollapser(batchMethod = "getUserByIdsThrowsException",
      method getUserByIdsThrowsException (line 221) | @HystrixCommand(
      method getUserByIdsFallbackWithThrowableParam1 (line 230) | @HystrixCommand(fallbackMethod = "getUserByIdsFallbackWithThrowableP...
      method getUserByIdsFallbackWithThrowableParam2 (line 242) | @HystrixCommand(fallbackMethod = "getUserByIdsFallbackWithThrowableP...
      method getUserByIdsFallbackWithThrowableParam3 (line 247) | @HystrixCommand
      method getUserByIds (line 259) | @HystrixCommand(commandProperties = {
      method getUserByIdsWithFallback (line 271) | @HystrixCommand(fallbackMethod = "getUserByIdsFallback",
      method getUserByIdsFallback (line 280) | @HystrixCommand
      method getUserByIdWrongCollapserMethodReturnType (line 290) | @HystrixCollapser(batchMethod = "getUserByIds")
      method getUserByIdWrongCollapserMultipleArgs (line 295) | @HystrixCollapser(batchMethod = "getUserByIds")
      method getUserByIdWrongCollapserNoArgs (line 300) | @HystrixCollapser(batchMethod = "getUserByIds")
      method getUserByIdWrongBatchMethodArgType (line 305) | @HystrixCollapser(batchMethod = "getUserByIdsWrongBatchMethodArgType")
      method getUserByIdsWrongBatchMethodArgType (line 311) | @HystrixCommand
      method getUserByIdWrongBatchMethodReturnType (line 316) | @HystrixCollapser(batchMethod = "getUserByIdsWrongBatchMethodReturnT...
      method getUserByIdsWrongBatchMethodReturnType (line 322) | @HystrixCommand

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/command/BasicCommandTest.java
  class BasicCommandTest (line 35) | public abstract class BasicCommandTest extends BasicHystrixTest {
    method setUp (line 41) | @Before
    method testGetUserAsync (line 48) | @Test
    method testGetUserSync (line 65) | @Test
    method shouldWorkWithInheritedMethod (line 71) | @Test
    method should_work_with_parameterized_method (line 77) | @Test
    method should_work_with_parameterized_asyncMethod (line 85) | @Test
    method should_work_with_genericClass_fallback (line 93) | @Test
    method assertGetUserSnycCommandExecuted (line 109) | private void assertGetUserSnycCommandExecuted(User u1) {
    method getCommand (line 119) | private com.netflix.hystrix.HystrixInvokableInfo<?> getCommand() {
    method createUserService (line 123) | protected abstract UserService createUserService();
    method createAdvancedUserServiceService (line 124) | protected abstract AdvancedUserService createAdvancedUserServiceServic...
    method createGenericUserService (line 125) | protected abstract GenericService<String, Long, User> createGenericUse...
    type GenericService (line 127) | public interface GenericService<K1, K2, V> {
      method getByKey (line 128) | V getByKey(K1 key1, K2 key2);
      method getByKeyForceFail (line 129) | V getByKeyForceFail(K1 key, K2 key2);
      method fallback (line 130) | V fallback(K1 key, K2 key2);
    class GenericUserService (line 133) | public static class GenericUserService implements GenericService<Strin...
      method getByKey (line 135) | @HystrixCommand(fallbackMethod = "fallback")
      method getByKeyForceFail (line 141) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 147) | @Override
    class UserService (line 154) | public static class UserService {
      method getUserAsync (line 156) | @HystrixCommand(commandKey = "GetUserCommand", threadPoolKey = "Comm...
      method getUserSync (line 166) | @HystrixCommand(groupKey = "UserGroup")
      method echo (line 171) | @HystrixCommand
      method echoAsync (line 176) | @HystrixCommand
    class AdvancedUserService (line 188) | public static class AdvancedUserService extends UserService {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/configuration/collapser/BasicCollapserPropertiesTest.java
  class BasicCollapserPropertiesTest (line 41) | public abstract class BasicCollapserPropertiesTest extends BasicHystrixT...
    method createUserService (line 45) | protected abstract UserService createUserService();
    method setUp (line 47) | @Before
    method testCollapser (line 52) | @Test
    class UserService (line 74) | public static class UserService {
      method getUser (line 76) | @HystrixCollapser(
      method getUsers (line 86) | @HystrixCommand

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/configuration/command/BasicCommandDefaultPropertiesTest.java
  class BasicCommandDefaultPropertiesTest (line 19) | public abstract class BasicCommandDefaultPropertiesTest extends BasicHys...
    method createService (line 23) | protected abstract Service createService();
    method setUp (line 25) | @Before
    method testCommandInheritsDefaultGroupKey (line 30) | @Test
    method testCommandOverridesDefaultGroupKey (line 38) | @Test
    method testCommandInheritsDefaultThreadPoolKey (line 46) | @Test
    method testCommandOverridesDefaultThreadPoolKey (line 54) | @Test
    method testCommandInheritsDefaultCommandProperties (line 62) | @Test
    method testCommandOverridesDefaultCommandProperties (line 70) | @Test
    method testCommandInheritsThreadPollProperties (line 78) | @Test
    method testCommandOverridesDefaultThreadPollProperties (line 89) | @Test
    class Service (line 100) | @DefaultProperties(groupKey = "DefaultGroupKey", threadPoolKey = "Defa...
      method commandInheritsDefaultProperties (line 110) | @HystrixCommand
      method commandOverridesGroupKey (line 115) | @HystrixCommand(groupKey = "SpecificGroupKey")
      method commandOverridesThreadPoolKey (line 120) | @HystrixCommand(threadPoolKey = "SpecificThreadPoolKey")
      method commandOverridesDefaultCommandProperties (line 125) | @HystrixCommand(commandProperties = {
      method commandOverridesDefaultThreadPoolProperties (line 132) | @HystrixCommand(threadPoolProperties = {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/configuration/command/BasicCommandPropertiesTest.java
  class BasicCommandPropertiesTest (line 58) | public abstract class BasicCommandPropertiesTest extends BasicHystrixTest {
    method createUserService (line 62) | protected abstract UserService createUserService();
    method setUp (line 64) | @Before
    method testGetUser (line 69) | @Test
    method testGetUserDefaultPropertiesValues (line 96) | @Test
    method testGetUserDefGroupKeyWithSpecificThreadPoolKey (line 109) | @Test
    method testHystrixCommandProperties (line 122) | @Test
    class UserService (line 155) | public static class UserService {
      method getUser (line 157) | @HystrixCommand(commandKey = "GetUserCommand", groupKey = "UserGroup...
      method getUserDefProperties (line 176) | @HystrixCommand
      method getUserDefGroupKeyWithSpecificThreadPoolKey (line 181) | @HystrixCommand(threadPoolKey = "CustomThreadPool")
      method getUsingAllCommandProperties (line 186) | @HystrixCommand(

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/configuration/fallback/BasicFallbackDefaultPropertiesTest.java
  class BasicFallbackDefaultPropertiesTest (line 16) | public abstract class BasicFallbackDefaultPropertiesTest extends BasicHy...
    method createService (line 20) | protected abstract Service createService();
    method setUp (line 22) | @Before
    method testFallbackInheritsDefaultGroupKey (line 27) | @Test
    method testFallbackInheritsDefaultThreadPoolKey (line 34) | @Test
    method testFallbackInheritsDefaultCommandProperties (line 41) | @Test
    method testFallbackInheritsThreadPollProperties (line 48) | @Test
    method testFallbackOverridesDefaultGroupKey (line 58) | @Test
    method testFallbackOverridesDefaultThreadPoolKey (line 65) | @Test
    method testFallbackOverridesDefaultCommandProperties (line 72) | @Test
    method testFallbackOverridesThreadPollProperties (line 79) | @Test
    method testCommandOverridesDefaultPropertiesWithFallbackInheritsDefaultProperties (line 89) | @Test
    class Service (line 100) | @DefaultProperties(groupKey = "DefaultGroupKey",
      method commandWithFallbackInheritsDefaultProperties (line 110) | @HystrixCommand(fallbackMethod = "fallbackInheritsDefaultProperties")
      method commandWithFallbackOverridesDefaultProperties (line 115) | @HystrixCommand(fallbackMethod = "fallbackOverridesDefaultProperties")
      method commandOverridesDefaultPropertiesWithFallbackInheritsDefaultProperties (line 120) | @HystrixCommand(groupKey = "CommandGroupKey",
      method fallbackInheritsDefaultProperties (line 132) | @HystrixCommand
      method fallbackOverridesDefaultProperties (line 137) | @HystrixCommand(groupKey = "FallbackGroupKey",

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/domain/Domain.java
  class Domain (line 19) | public class Domain {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/domain/Profile.java
  class Profile (line 21) | public class Profile {
    method getEmail (line 24) | public String getEmail() {
    method setEmail (line 28) | public void setEmail(String email) {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/domain/User.java
  class User (line 21) | public class User extends Domain{
    method User (line 28) | public User() {
    method User (line 31) | public User(String id, String name) {
    method getId (line 36) | public String getId() {
    method setId (line 40) | public void setId(String id) {
    method getName (line 44) | public String getName() {
    method setName (line 48) | public void setName(String name) {
    method getProfile (line 52) | public Profile getProfile() {
    method setProfile (line 56) | public void setProfile(Profile profile) {
    method toString (line 60) | @Override
    method equals (line 69) | @Override
    method hashCode (line 90) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/error/BasicDefaultIgnoreExceptionsTest.java
  class BasicDefaultIgnoreExceptionsTest (line 16) | public abstract class BasicDefaultIgnoreExceptionsTest {
    method setUp (line 19) | @Before
    method createService (line 24) | protected abstract Service createService();
    method testDefaultIgnoreException (line 26) | @Test(expected = BadRequestException.class)
    method testCommandOverridesDefaultIgnoreExceptions (line 31) | @Test(expected = SpecificException.class)
    method testCommandOverridesDefaultIgnoreExceptions_nonIgnoreExceptionShouldBePropagated (line 36) | @Test(expected = BadRequestException.class)
    method testFallbackCommandInheritsDefaultIgnoreException (line 42) | @Ignore // https://github.com/Netflix/Hystrix/issues/993#issuecomment-...
    method testFallbackCommandOverridesDefaultIgnoreExceptions (line 48) | @Ignore // https://github.com/Netflix/Hystrix/issues/993#issuecomment-...
    method testFallbackCommandOverridesDefaultIgnoreExceptions_nonIgnoreExceptionShouldBePropagated (line 54) | @Test(expected = BadRequestException.class)
    class Service (line 59) | @DefaultProperties(ignoreExceptions = BadRequestException.class)
      method commandInheritsDefaultIgnoreExceptions (line 61) | @HystrixCommand
      method commandOverridesDefaultIgnoreExceptions (line 67) | @HystrixCommand(ignoreExceptions = SpecificException.class)
      method commandWithFallbackInheritsDefaultIgnoreExceptions (line 77) | @HystrixCommand(fallbackMethod = "fallbackInheritsDefaultIgnoreExcep...
      method fallbackInheritsDefaultIgnoreExceptions (line 83) | @HystrixCommand
      method commandWithFallbackOverridesDefaultIgnoreExceptions (line 89) | @HystrixCommand(fallbackMethod = "fallbackOverridesDefaultIgnoreExce...
      method fallbackOverridesDefaultIgnoreExceptions (line 95) | @HystrixCommand(ignoreExceptions = SpecificException.class)
    class BadRequestException (line 106) | public static final class BadRequestException extends RuntimeException {
      method BadRequestException (line 107) | public BadRequestException() {
      method BadRequestException (line 110) | public BadRequestException(String message) {
    class SpecificException (line 115) | public static final class SpecificException extends RuntimeException {
      method SpecificException (line 116) | public SpecificException() {
      method SpecificException (line 119) | public SpecificException(String message) {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/error/BasicDefaultRaiseHystrixExceptionsTest.java
  class BasicDefaultRaiseHystrixExceptionsTest (line 19) | public abstract class BasicDefaultRaiseHystrixExceptionsTest {
    method setUp (line 23) | @Before
    method createService (line 28) | protected abstract Service createService();
    method testDefaultIgnoreException (line 30) | @Test(expected = BadRequestException.class)
    method testCommandOverridesDefaultIgnoreExceptions (line 35) | @Test(expected = SpecificException.class)
    method testCommandOverridesDefaultIgnoreExceptions_nonIgnoreExceptionShouldBePropagated (line 40) | @Test(expected = HystrixRuntimeException.class)
    method testFallbackCommandInheritsDefaultIgnoreException (line 46) | @Ignore // https://github.com/Netflix/Hystrix/issues/993#issuecomment-...
    method testFallbackCommandOverridesDefaultIgnoreExceptions (line 52) | @Ignore // https://github.com/Netflix/Hystrix/issues/993#issuecomment-...
    method testFallbackCommandOverridesDefaultIgnoreExceptions_nonIgnoreExceptionShouldBePropagated (line 58) | @Test(expected = HystrixRuntimeException.class)
    method testRaiseHystrixRuntimeException (line 63) | @Test(expected = HystrixRuntimeException.class)
    method testObservableRaiseHystrixRuntimeException (line 68) | @Test
    class Service (line 75) | @DefaultProperties(ignoreExceptions = BadRequestException.class, raise...
      method commandShouldRaiseHystrixRuntimeException (line 77) | @HystrixCommand
      method observableCommandShouldRaiseHystrixRuntimeException (line 82) | @HystrixCommand
      method commandInheritsDefaultIgnoreExceptions (line 87) | @HystrixCommand
      method commandOverridesDefaultIgnoreExceptions (line 93) | @HystrixCommand(ignoreExceptions = SpecificException.class)
      method commandWithFallbackInheritsDefaultIgnoreExceptions (line 103) | @HystrixCommand(fallbackMethod = "fallbackInheritsDefaultIgnoreExcep...
      method fallbackInheritsDefaultIgnoreExceptions (line 109) | @HystrixCommand
      method commandWithFallbackOverridesDefaultIgnoreExceptions (line 115) | @HystrixCommand(fallbackMethod = "fallbackOverridesDefaultIgnoreExce...
      method fallbackOverridesDefaultIgnoreExceptions (line 121) | @HystrixCommand(ignoreExceptions = SpecificException.class)
    class BadRequestException (line 132) | public static final class BadRequestException extends RuntimeException {
      method BadRequestException (line 133) | public BadRequestException() {
      method BadRequestException (line 136) | public BadRequestException(String message) {
    class SpecificException (line 141) | public static final class SpecificException extends RuntimeException {
      method SpecificException (line 142) | public SpecificException() {
      method SpecificException (line 145) | public SpecificException(String message) {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/error/BasicErrorPropagationTest.java
  class BasicErrorPropagationTest (line 44) | public abstract class BasicErrorPropagationTest extends BasicHystrixTest {
    method createUserService (line 62) | protected abstract UserService createUserService();
    method setUp (line 64) | @Before
    method testGetUserByBadId (line 71) | @Test(expected = BadRequestException.class)
    method testGetNonExistentUser (line 86) | @Test(expected = NotFoundException.class)
    method testActivateUser (line 100) | @Test // don't expect any exceptions because fallback must be triggered
    method testBlockUser (line 115) | @Test(expected = RuntimeOperationException.class)
    method testPropagateCauseException (line 128) | @Test(expected = NotFoundException.class)
    method testUserExceptionThrownFromCommand (line 133) | @Test(expected = UserException.class)
    method testHystrixExceptionThrownFromCommand (line 138) | @Test
    method testUserExceptionThrownFromFallback (line 149) | @Test
    method testUserExceptionThrownFromFallbackCommand (line 160) | @Test
    method testCommandAndFallbackErrorsComposition (line 171) | @Test
    method testCommandWithFallbackThatFailsByTimeOut (line 190) | @Test
    method testCommandWithNotWrappedExceptionAndNoFallback (line 201) | @Test
    method testCommandWithNotWrappedExceptionAndFallback (line 220) | @Test
    class UserService (line 235) | public static class UserService {
      method setFailoverService (line 239) | public void setFailoverService(FailoverService failoverService) {
      method deleteUser (line 243) | @HystrixCommand
      method getUserById (line 248) | @HystrixCommand(
      method activateUser (line 264) | @HystrixCommand(
      method blockUser (line 276) | @HystrixCommand(
      method fallback (line 288) | private User fallback(String id) {
      method activateFallback (line 292) | private void activateFallback(String id) {
      method blockUserFallback (line 296) | @HystrixCommand(ignoreExceptions = {RuntimeException.class})
      method validate (line 301) | private void validate(String val) throws BadRequestException {
      method throwNotWrappedCheckedExceptionWithoutFallback (line 307) | @HystrixCommand
      method throwNotWrappedCheckedExceptionWithFallback (line 312) | @HystrixCommand(fallbackMethod = "voidFallback")
      method voidFallback (line 317) | private void voidFallback(){
      method userFailureWithoutFallback (line 323) | @HystrixCommand
      method timedOutWithoutFallback (line 328) | @HystrixCommand(commandProperties = {@HystrixProperty(name = "execut...
      method userFailureWithFallback (line 335) | @HystrixCommand(fallbackMethod = "userFailureWithFallback_f_0")
      method userFailureWithFallback_f_0 (line 340) | String userFailureWithFallback_f_0() {
      method userFailureWithFallbackCommand (line 346) | @HystrixCommand(fallbackMethod = "userFailureWithFallbackCommand_f_0")
      method userFailureWithFallbackCommand_f_0 (line 351) | @HystrixCommand(fallbackMethod = "userFailureWithFallbackCommand_f_1")
      method userFailureWithFallbackCommand_f_1 (line 356) | @HystrixCommand
      method commandAndFallbackErrorsComposition (line 363) | @HystrixCommand(fallbackMethod = "commandAndFallbackErrorsCompositio...
      method commandAndFallbackErrorsComposition_f_0 (line 369) | String commandAndFallbackErrorsComposition_f_0(Throwable commandErro...
      method commandWithFallbackThatFailsByTimeOut (line 375) | @HystrixCommand(fallbackMethod = "commandWithFallbackThatFailsByTime...
      method commandWithFallbackThatFailsByTimeOut_f_0 (line 380) | @HystrixCommand(commandProperties = {@HystrixProperty(name = "execut...
    class FailoverService (line 386) | private class FailoverService {
      method getDefUser (line 387) | public User getDefUser() {
      method activate (line 391) | public void activate() {
    class NotFoundException (line 396) | private static class NotFoundException extends Exception {
      method NotFoundException (line 397) | private NotFoundException(String message) {
    class BadRequestException (line 402) | private static class BadRequestException extends RuntimeException {
      method BadRequestException (line 403) | private BadRequestException(String message) {
    class ActivationException (line 408) | private static class ActivationException extends Exception {
      method ActivationException (line 409) | private ActivationException(String message) {
    class OperationException (line 414) | private static class OperationException extends Throwable {
      method OperationException (line 415) | private OperationException(String message) {
    class RuntimeOperationException (line 420) | private static class RuntimeOperationException extends RuntimeException {
      method RuntimeOperationException (line 421) | private RuntimeOperationException(String message) {
    class NotWrappedCheckedException (line 426) | private static class NotWrappedCheckedException extends Exception impl...
    class UserException (line 429) | static class UserException extends RuntimeException {
      method UserException (line 432) | public UserException() {
      method UserException (line 436) | public UserException(int level) {
    class HystrixFlowException (line 441) | static class HystrixFlowException extends RuntimeException {
      method HystrixFlowException (line 445) | public HystrixFlowException(Throwable commandException, Throwable fa...

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/error/BasicObservableErrorPropagationTest.java
  class BasicObservableErrorPropagationTest (line 39) | public abstract class BasicObservableErrorPropagationTest extends BasicH...
    method createUserService (line 57) | protected abstract UserService createUserService();
    method setUp (line 59) | @Before
    method testGetUserByBadId (line 66) | @Test
    method testGetNonExistentUser (line 85) | @Test
    method testActivateUser (line 103) | @Test // don't expect any exceptions because fallback must be triggered
    method testBlockUser (line 118) | @Test
    method testPropagateCauseException (line 137) | @Test
    class UserService (line 146) | public static class UserService {
      method setFailoverService (line 150) | public void setFailoverService(FailoverService failoverService) {
      method deleteUser (line 154) | @HystrixCommand
      method getUserById (line 159) | @HystrixCommand(
      method activateUser (line 175) | @HystrixCommand(
      method blockUser (line 187) | @HystrixCommand(
      method fallback (line 199) | private Observable<User> fallback(String id) {
      method activateFallback (line 203) | private Observable<Void> activateFallback(String id) {
      method blockUserFallback (line 207) | @HystrixCommand(ignoreExceptions = {RuntimeException.class})
      method validate (line 212) | private void validate(String val) throws BadRequestException {
    class FailoverService (line 219) | private class FailoverService {
      method getDefUser (line 220) | public Observable<User> getDefUser() {
      method activate (line 224) | public Observable<Void> activate() {
    class NotFoundException (line 230) | private static class NotFoundException extends Exception {
      method NotFoundException (line 231) | private NotFoundException(String message) {
    class BadRequestException (line 236) | private static class BadRequestException extends RuntimeException {
      method BadRequestException (line 237) | private BadRequestException(String message) {
    class ActivationException (line 242) | private static class ActivationException extends Exception {
      method ActivationException (line 243) | private ActivationException(String message) {
    class OperationException (line 248) | private static class OperationException extends Throwable {
      method OperationException (line 249) | private OperationException(String message) {
    class RuntimeOperationException (line 254) | private static class RuntimeOperationException extends RuntimeException {
      method RuntimeOperationException (line 255) | private RuntimeOperationException(String message) {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/fallback/BasicCommandFallbackTest.java
  class BasicCommandFallbackTest (line 43) | public abstract class BasicCommandFallbackTest extends BasicHystrixTest {
    method createUserService (line 47) | protected abstract UserService createUserService();
    method setUp (line 49) | @Before
    method testGetUserAsyncWithFallback (line 54) | @Test
    method testGetUserSyncWithFallback (line 71) | @Test
    method testGetUserAsyncWithFallbackCommand (line 94) | @Test
    method testGetUserAsyncFallbackAsyncCommand (line 115) | @Test
    method testGetUserSyncWithFallbackCommand (line 139) | @Test
    method testAsyncCommandWithAsyncFallbackCommand (line 159) | @Test
    method testAsyncCommandWithAsyncFallback (line 174) | @Test(expected = FallbackDefinitionException.class)
    method testCommandWithWrongFallbackReturnType (line 179) | @Test(expected = FallbackDefinitionException.class)
    method testAsyncCommandWithWrongFallbackReturnType (line 184) | @Test(expected = FallbackDefinitionException.class)
    method testCommandWithWrongFallbackParams (line 189) | @Test(expected = FallbackDefinitionException.class)
    method testCommandWithFallbackReturnSuperType (line 194) | @Test(expected = FallbackDefinitionException.class)
    method testCommandWithFallbackReturnSubType (line 199) | @Test
    method testCommandWithFallbackWithAdditionalParameter (line 205) | @Test
    method testCommandThrowsHystrixBadRequestExceptionWithNoCause (line 211) | @Test(expected = HystrixBadRequestException.class)
    method testFallbackMissing (line 221) | @Test
    class UserService (line 231) | public static class UserService {
      method getUserWithoutFallback (line 233) | @HystrixCommand
      method getUserAsync (line 239) | @HystrixCommand(fallbackMethod = "fallback")
      method getUserSync (line 251) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 257) | private User fallback(String id, String name) {
      method getUserAsyncFallbackCommand (line 261) | @HystrixCommand(fallbackMethod = "firstFallbackCommand")
      method getUserSyncFallbackCommand (line 273) | @HystrixCommand(fallbackMethod = "firstFallbackCommand")
      method firstFallbackCommand (line 282) | @HystrixCommand(fallbackMethod = "secondFallbackCommand")
      method secondFallbackCommand (line 288) | @HystrixCommand(fallbackMethod = "staticFallback")
      method getUserAsyncFallbackAsyncCommand (line 294) | @HystrixCommand(fallbackMethod = "firstAsyncFallbackCommand")
      method firstAsyncFallbackCommand (line 304) | @HystrixCommand(fallbackMethod = "secondAsyncFallbackCommand")
      method secondAsyncFallbackCommand (line 314) | @HystrixCommand(fallbackMethod = "thirdAsyncFallbackCommand")
      method thirdAsyncFallbackCommand (line 327) | @HystrixCommand(fallbackMethod = "fallbackWithAdditionalParam")
      method fallbackWithAdditionalParam (line 337) | private User fallbackWithAdditionalParam(final String id, final Stri...
      method asyncCommandWithAsyncFallbackCommand (line 344) | @HystrixCommand(fallbackMethod = "asyncFallbackCommand", commandProp...
      method asyncCommandWithAsyncFallback (line 357) | @HystrixCommand(fallbackMethod = "asyncFallback", commandProperties = {
      method asyncFallback (line 370) | public Future<User> asyncFallback(final String id, final String name) {
      method asyncFallbackCommand (line 374) | @HystrixCommand
      method commandWithFallbackWithAdditionalParameter (line 384) | @HystrixCommand(fallbackMethod = "fallbackWithAdditionalParameter")
      method fallbackWithAdditionalParameter (line 390) | public User fallbackWithAdditionalParameter(final String id, final S...
      method commandWithWrongFallbackReturnType (line 397) | @HystrixCommand(fallbackMethod = "fallbackWithStringReturnType")
      method asyncCommandWithWrongFallbackReturnType (line 403) | @HystrixCommand(fallbackMethod = "fallbackWithStringReturnType")
      method commandWithWrongFallbackParams (line 413) | @HystrixCommand(fallbackMethod = "fallbackWithoutParameters")
      method commandWithFallbackReturnSubType (line 418) | @HystrixCommand(fallbackMethod = "fallbackReturnSubTypeOfDomain")
      method commandWithFallbackReturnSuperType (line 424) | @HystrixCommand(fallbackMethod = "fallbackReturnSuperTypeOfDomain")
      method commandThrowsHystrixBadRequestExceptionWithNoCause (line 430) | @HystrixCommand(fallbackMethod = "staticFallback")
      method fallbackReturnSubTypeOfDomain (line 435) | private User fallbackReturnSubTypeOfDomain(final String id, final St...
      method fallbackReturnSuperTypeOfDomain (line 439) | private Domain fallbackReturnSuperTypeOfDomain(final String id, fina...
      method fallbackWithStringReturnType (line 443) | private String fallbackWithStringReturnType(final String id, final S...
      method fallbackWithoutParameters (line 447) | private User fallbackWithoutParameters() {
      method staticFallback (line 451) | private User staticFallback(String id, String name) {
      method validate (line 455) | private void validate(String id, String name) {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/fallback/BasicDefaultFallbackTest.java
  class BasicDefaultFallbackTest (line 20) | public abstract class BasicDefaultFallbackTest extends BasicHystrixTest {
    method createServiceWithDefaultFallback (line 25) | protected abstract ServiceWithDefaultFallback createServiceWithDefault...
    method serviceWithDefaultCommandFallback (line 27) | protected abstract ServiceWithDefaultCommandFallback serviceWithDefaul...
    method setUp (line 29) | @Before
    method testClassScopeDefaultFallback (line 35) | @Test
    method testSpecificCommandFallbackOverridesDefault (line 50) | @Test
    method testCommandScopeDefaultFallback (line 66) | @Test
    method testClassScopeCommandDefaultFallback (line 81) | @Test
    method testCommandScopeCommandDefaultFallback (line 99) | @Test
    class ServiceWithDefaultFallback (line 118) | @DefaultProperties(defaultFallback = "classDefaultFallback")
      method requestString (line 122) | @HystrixCommand
      method classDefaultFallback (line 127) | public String classDefaultFallback() {
      method commandWithDefaultFallback (line 131) | @HystrixCommand(defaultFallback = "defaultCommandFallback")
      method defaultCommandFallback (line 136) | Long defaultCommandFallback(){
      method commandWithSpecificFallback (line 140) | @HystrixCommand(fallbackMethod = "specificFallback")
      method specificFallback (line 145) | Integer specificFallback(String str) {
    class ServiceWithDefaultCommandFallback (line 151) | @DefaultProperties(defaultFallback = "classDefaultFallback")
      method requestString (line 155) | @HystrixCommand
      method classDefaultFallback (line 160) | @HystrixCommand
      method commandWithDefaultFallback (line 165) | @HystrixCommand(defaultFallback = "defaultCommandFallback")
      method defaultCommandFallback (line 170) | @HystrixCommand(fallbackMethod = "defaultCommandFallback")

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/fallback/BasicGenericFallbackTest.java
  class BasicGenericFallbackTest (line 31) | @RunWith(JUnitParamsRunner.class)
    method createProxy (line 39) | protected abstract <T> T createProxy(Class<T> t);
    method methodGenericDefinitionSuccess (line 42) | public Object[] methodGenericDefinitionSuccess() {
    method methodGenericDefinitionFailure (line 55) | public Object[] methodGenericDefinitionFailure() {
    method classGenericDefinitionSuccess (line 73) | public Object[] classGenericDefinitionSuccess() {
    method classGenericDefinitionFailure (line 81) | public Object[] classGenericDefinitionFailure() {
    method testMethodGenericDefinitionSuccess (line 88) | @Test
    method testMethodGenericDefinitionFailure (line 94) | @Test(expected = FallbackDefinitionException.class)
    method testClassGenericDefinitionSuccess (line 101) | @Test
    method testClassGenericDefinitionFailure (line 107) | @Test(expected = FallbackDefinitionException.class)
    method testXKindGenericDefinitionSuccess (line 114) | private void testXKindGenericDefinitionSuccess(Class<?> type) {
    class MethodGenericDefinitionSuccessCase0 (line 133) | public static class MethodGenericDefinitionSuccessCase0 {
      method command (line 134) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 136) | private <T> T fallback() { return null; }
    class MethodGenericDefinitionSuccessCase1 (line 139) | public static class MethodGenericDefinitionSuccessCase1 {
      method command (line 140) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 142) | private <T extends Serializable> T fallback() { return null; }
    class MethodGenericDefinitionSuccessCase2 (line 145) | public static class MethodGenericDefinitionSuccessCase2 {
      method command (line 146) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 148) | private <T extends Serializable, T1 extends T> T1 fallback() { retur...
    class MethodGenericDefinitionSuccessCase3 (line 151) | public static class MethodGenericDefinitionSuccessCase3 {
      method command (line 152) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 154) | private <T extends Serializable, T1 extends T> GenericEntity<? exten...
    class MethodGenericDefinitionSuccessCase4 (line 157) | public static class MethodGenericDefinitionSuccessCase4 {
      method command (line 158) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 160) | private <T extends Serializable & Comparable, T1 extends T> GenericE...
    class MethodGenericDefinitionSuccessCase5 (line 163) | public static class MethodGenericDefinitionSuccessCase5 {
      method command (line 164) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 166) | private <T extends Serializable & Comparable, T1 extends GenericEnti...
    class MethodGenericDefinitionSuccessCase6 (line 169) | public static class MethodGenericDefinitionSuccessCase6 {
      method command (line 170) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 172) | private <T> GenericEntity<T> fallback() { return new GenericEntity<T...
    class MethodGenericDefinitionSuccessCase7 (line 175) | public static class MethodGenericDefinitionSuccessCase7 {
      method command (line 176) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 178) | private GenericEntity<? super Serializable> fallback() { return null; }
    class MethodGenericDefinitionFailureCase0 (line 186) | public static class MethodGenericDefinitionFailureCase0 {
      method command (line 187) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 189) | private String fallback() { return null; }
    class MethodGenericDefinitionFailureCase1 (line 192) | public static class MethodGenericDefinitionFailureCase1 {
      method command (line 193) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 195) | private <T> T fallback() { return null; }
    class MethodGenericDefinitionFailureCase2 (line 198) | public static class MethodGenericDefinitionFailureCase2 {
      method command (line 199) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 201) | private <T extends Comparable> T fallback() { return null; }
    class MethodGenericDefinitionFailureCase3 (line 204) | public static class MethodGenericDefinitionFailureCase3 {
      method command (line 205) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 207) | private <T extends Serializable, T1 extends T> GenericEntity<T1> fal...
    class MethodGenericDefinitionFailureCase4 (line 210) | public static class MethodGenericDefinitionFailureCase4 {
      method command (line 211) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 213) | private <T extends Serializable, T1 extends T> GenericEntity<? exten...
    class MethodGenericDefinitionFailureCase5 (line 216) | public static class MethodGenericDefinitionFailureCase5 {
      method command (line 217) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 219) | private <T extends Serializable & Comparable, T1 extends GenericEnti...
    class MethodGenericDefinitionFailureCase6 (line 222) | public static class MethodGenericDefinitionFailureCase6 {
      method command (line 223) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 225) | private GenericEntity<String> fallback() { return new GenericEntity<...
    class MethodGenericDefinitionFailureCase7 (line 228) | public static class MethodGenericDefinitionFailureCase7 {
      method command (line 229) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 231) | private <T> List<T> fallback() { return null; }
    class MethodGenericDefinitionFailureCase8 (line 234) | public static class MethodGenericDefinitionFailureCase8 {
      method command (line 235) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 237) | private <T> GenericEntity<List<T>> fallback() { return null; }
    class MethodGenericDefinitionFailureCase9 (line 240) | public static class MethodGenericDefinitionFailureCase9 {
      method command (line 241) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 243) | private <T> GenericEntity<List<List<T>>> fallback() { return null; }
    class MethodGenericDefinitionFailureCase10 (line 246) | public static class MethodGenericDefinitionFailureCase10 {
      method command (line 247) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 249) | private GenericEntity<? super Comparable> fallback() { return null; }
    class MethodGenericDefinitionFailureCase11 (line 252) | public static class MethodGenericDefinitionFailureCase11 {
      method command (line 253) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 255) | private void fallback() { return; }
    class ClassGenericDefinitionSuccessCase0 (line 262) | public static class ClassGenericDefinitionSuccessCase0<T> {
      method command (line 263) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 265) | private GenericEntity<T> fallback() { return new GenericEntity<T>(); }
    class ClassGenericDefinitionSuccessCase1 (line 268) | public static class ClassGenericDefinitionSuccessCase1<T extends Seria...
      method command (line 269) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 271) | private GenericEntity<T> fallback() { return new GenericEntity<T>(); }
    class ClassGenericDefinitionFailureCase0 (line 278) | public static class ClassGenericDefinitionFailureCase0<T> {
      method command (line 279) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 281) | private <T> GenericEntity<T> fallback() { return new GenericEntity<T...
    class ClassGenericDefinitionFailureCase1 (line 284) | public static class ClassGenericDefinitionFailureCase1<T extends Seria...
      method command (line 285) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 287) | private <T extends Serializable> GenericEntity<T> fallback() { retur...
    class GenericEntity (line 290) | public static class GenericEntity<T> {
    method executeCommand (line 293) | private static Object executeCommand(Object proxy) {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/observable/BasicObservableTest.java
  class BasicObservableTest (line 42) | public abstract class BasicObservableTest extends BasicHystrixTest {
    method createUserService (line 47) | protected abstract UserService createUserService();
    method setUp (line 49) | @Before
    method testGetUserByIdSuccess (line 54) | @Test
    method testGetCompletableUser (line 95) | @Test
    method testGetCompletableUserWithRegularFallback (line 102) | @Test
    method testGetCompletableUserWithRxFallback (line 116) | @Test
    method testGetSingleUser (line 130) | @Test
    method testGetSingleUserWithRegularFallback (line 144) | @Test
    method testGetSingleUserWithRxFallback (line 158) | @Test
    method testGetUserWithRegularFallback (line 172) | @Test
    method testGetUserWithRxFallback (line 186) | @Test
    method testGetUserWithRxCommandFallback (line 200) | @Test
    class UserService (line 218) | public static class UserService {
      method regularFallback (line 220) | private User regularFallback(String id, String name) {
      method rxFallback (line 224) | private Observable<User> rxFallback(String id, String name) {
      method rxCommandFallback (line 228) | @HystrixCommand(observableExecutionMode = ObservableExecutionMode.EA...
      method getUser (line 238) | @HystrixCommand
      method getCompletableUser (line 244) | @HystrixCommand
      method getCompletableUserWithRegularFallback (line 250) | @HystrixCommand(fallbackMethod = "completableUserRegularFallback")
      method getCompletableUserWithRxFallback (line 255) | @HystrixCommand(fallbackMethod = "completableUserRxFallback")
      method completableUserRegularFallback (line 260) | public User completableUserRegularFallback(final String id, final St...
      method completableUserRxFallback (line 264) | public Completable completableUserRxFallback(final String id, final ...
      method getSingleUser (line 273) | @HystrixCommand
      method getSingleUserWithRegularFallback (line 279) | @HystrixCommand(fallbackMethod = "singleUserRegularFallback")
      method getSingleUserWithRxFallback (line 284) | @HystrixCommand(fallbackMethod = "singleUserRxFallback")
      method singleUserRegularFallback (line 289) | User singleUserRegularFallback(final String id, final String name) {
      method singleUserRxFallback (line 293) | Single<User> singleUserRxFallback(final String id, final String name) {
      method getUserRegularFallback (line 297) | @HystrixCommand(fallbackMethod = "regularFallback", observableExecut...
      method getUserRxFallback (line 303) | @HystrixCommand(fallbackMethod = "rxFallback")
      method getUserRxCommandFallback (line 309) | @HystrixCommand(fallbackMethod = "rxCommandFallback", observableExec...
      method createObservable (line 316) | private Observable<User> createObservable(final String id, final Str...
      method validate (line 332) | private void validate(String id, String name, String errorMsg) {
      class GetUserException (line 338) | private static final class GetUserException extends RuntimeException {
        method GetUserException (line 339) | public GetUserException(String message) {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/cache/CacheTest.java
  class CacheTest (line 35) | @RunWith(SpringJUnit4ClassRunner.class)
    method createUserService (line 43) | @Override
    class CacheTestConfig (line 51) | @Configurable
      method userService (line 53) | @Bean
      method hystrixCacheAspect (line 59) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/collapser/CollapserTest.java
  class CollapserTest (line 32) | @RunWith(SpringJUnit4ClassRunner.class)
    method createUserService (line 39) | @Override
    class CollapserTestConfig (line 48) | @Configurable
      method userService (line 51) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/command/CommandTest.java
  class CommandTest (line 31) | public abstract class CommandTest extends BasicCommandTest {
    method createUserService (line 37) | @Override
    method createAdvancedUserServiceService (line 42) | @Override
    method createGenericUserService (line 47) | @Override
    class CommandTestConfig (line 52) | @Configurable
      method userService (line 55) | @Bean
      method advancedUserService (line 60) | @Bean
      method genericUserService (line 65) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/command/cglib/CommandCGlibProxyTest.java
  class CommandCGlibProxyTest (line 24) | @RunWith(SpringJUnit4ClassRunner.class)

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/command/jdk/CommandJdkProxyTest.java
  class CommandJdkProxyTest (line 25) | @RunWith(SpringJUnit4ClassRunner.class)

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/conf/AopCglibConfig.java
  class AopCglibConfig (line 22) | @Configurable

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/conf/AopJdkConfig.java
  class AopJdkConfig (line 22) | @Configurable

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/conf/AopLoadTimeWeavingConfig.java
  class AopLoadTimeWeavingConfig (line 23) | @Configurable

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/conf/SpringApplicationContext.java
  class SpringApplicationContext (line 23) | @Configurable
    method hystrixAspect (line 27) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/configuration/collapser/CollapserPropertiesTest.java
  class CollapserPropertiesTest (line 27) | @RunWith(SpringJUnit4ClassRunner.class)
    method createUserService (line 34) | @Override
    class CollapserPropertiesTestConfig (line 40) | @Configurable
      method userService (line 43) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/configuration/command/CommandDefaultPropertiesTest.java
  class CommandDefaultPropertiesTest (line 16) | @RunWith(SpringJUnit4ClassRunner.class)
    method createService (line 23) | @Override
    class Config (line 28) | @Configurable
      method service (line 30) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/configuration/command/CommandPropertiesTest.java
  class CommandPropertiesTest (line 27) | @RunWith(SpringJUnit4ClassRunner.class)
    method createUserService (line 34) | @Override
    class CommandPropertiesTestConfig (line 40) | @Configurable
      method userService (line 43) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/configuration/fallback/FallbackDefaultPropertiesTest.java
  class FallbackDefaultPropertiesTest (line 12) | @RunWith(SpringJUnit4ClassRunner.class)
    method createService (line 19) | @Override
    class Config (line 24) | @Configurable
      method service (line 26) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/error/DefaultIgnoreExceptionsTest.java
  class DefaultIgnoreExceptionsTest (line 15) | @RunWith(SpringJUnit4ClassRunner.class)
    method createService (line 23) | @Override
    class DefaultIgnoreExceptionsTestConfig (line 28) | @Configurable
      method userService (line 31) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/error/DefaultRaiseHystrixExceptionsTest.java
  class DefaultRaiseHystrixExceptionsTest (line 16) | @RunWith(SpringJUnit4ClassRunner.class)
    method createService (line 23) | @Override
    class DefaultRaiseHystrixExceptionsTestConfig (line 28) | @Configurable
      method userService (line 31) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/error/ErrorPropagationTest.java
  class ErrorPropagationTest (line 32) | @RunWith(SpringJUnit4ClassRunner.class)
    method createUserService (line 40) | @Override
    class ErrorPropagationTestConfig (line 46) | @Configurable
      method userService (line 49) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/error/ObservableErrorPropagationTest.java
  class ObservableErrorPropagationTest (line 32) | @RunWith(SpringJUnit4ClassRunner.class)
    method createUserService (line 40) | @Override
    class ErrorPropagationTestConfig (line 46) | @Configurable
      method userService (line 49) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/fallback/CommandFallbackTest.java
  class CommandFallbackTest (line 32) | @RunWith(SpringJUnit4ClassRunner.class)
    method createUserService (line 39) | @Override
    class CommandTestConfig (line 44) | @Configurable
      method userService (line 46) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/fallback/DefaultFallbackTest.java
  class DefaultFallbackTest (line 15) | @RunWith(SpringJUnit4ClassRunner.class)
    method createServiceWithDefaultFallback (line 25) | @Override
    method serviceWithDefaultCommandFallback (line 30) | @Override
    class Config (line 35) | @Configurable
      method serviceWithDefaultFallback (line 37) | @Bean
      method serviceWithDefaultCommandFallback (line 42) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/fallback/GenericFallbackTest.java
  class GenericFallbackTest (line 13) | @ContextConfiguration(classes = {AopCglibConfig.class})
    method createProxy (line 19) | @Override

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/fallback/InheritedFallbackTest.java
  class InheritedFallbackTest (line 15) | @RunWith(SpringJUnit4ClassRunner.class)
    method createUserService (line 22) | @Override
    class CommandTestConfig (line 27) | @Configurable
      method userService (line 29) | @Bean
    class SubClass (line 35) | public static class SubClass extends BasicCommandFallbackTest.UserServ...

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/observable/ObservableTest.java
  class ObservableTest (line 31) | @RunWith(SpringJUnit4ClassRunner.class)
    method createUserService (line 38) | @Override
    class ObservableTestConfig (line 43) | @Configurable
      method userService (line 46) | @Bean

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/FallbackMethodTest.java
  class FallbackMethodTest (line 34) | @RunWith(DataProviderRunner.class)
    method testGetExtendedFallback (line 37) | @Test
    method testGetFallbackForExtendedCommand (line 47) | @Test
    method testGetFallbackForExtendedCommandV2 (line 58) | public void testGetFallbackForExtendedCommandV2() throws NoSuchMethodE...
    method testGetFallbackForExtendedCommandV2_extendedParameterFalse (line 67) | public void testGetFallbackForExtendedCommandV2_extendedParameterFalse...
    method assertParamsTypes (line 77) | private static void assertParamsTypes(Method method, Class<?>... expec...
    class Common (line 83) | private static class Common {
      method fallback (line 84) | private String fallback(String s, Integer i) {
      method fallbackV2 (line 88) | private String fallbackV2(String s, Integer i) {
    class Service (line 93) | private static class Service extends Common{
      method command (line 95) | @HystrixCommand(fallbackMethod = "fallback")
      method extCommand (line 100) | @HystrixCommand(fallbackMethod = "fallback")
      method extCommandV2 (line 106) | @HystrixCommand(fallbackMethod = "fallbackV2")
      method fallback (line 112) | public String fallback(String s, Integer i, Throwable throwable) {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/FallbackMethodValidationTest.java
  class FallbackMethodValidationTest (line 35) | @RunWith(DataProviderRunner.class)
    method fail (line 39) | @DataProvider
    method success (line 71) | @DataProvider
    method testValidateBadFallbackReturnType (line 97) | @Test(expected = FallbackDefinitionException.class)
    method testValidateCorrectFallbackReturnType (line 103) | @UseDataProvider("success")
    method getMethod (line 108) | private static Method getMethod(String name) {
    class Service (line 117) | private static class Service {
      method commandReturnPlainTypeParent (line 119) | public Parent commandReturnPlainTypeParent() {return null;}
      method commandReturnPlainTypeChild (line 120) | public Child commandReturnPlainTypeChild() {return null;}
      method fallbackReturnPlainTypeParent (line 121) | public Parent fallbackReturnPlainTypeParent() {return null;}
      method fallbackReturnPlainTypeChild (line 122) | public Child fallbackReturnPlainTypeChild() {return null;}
      method commandReturnPlainTypeLong (line 123) | public Long commandReturnPlainTypeLong() {return null;}
      method fallbackReturnPlainTypeLong (line 124) | public Long fallbackReturnPlainTypeLong() {return null;}
      method fallbackReturnPlainTypeString (line 125) | public String fallbackReturnPlainTypeString() {return null;}
      method commandReturnGenericTypeParent (line 126) | public GType<Parent> commandReturnGenericTypeParent() {return null;}
      method commandReturnGenericTypeChild (line 127) | public GType<Child> commandReturnGenericTypeChild() {return null;}
      method fallbackReturnGenericTypeParent (line 128) | public GType<Parent> fallbackReturnGenericTypeParent() {return null;}
      method fallbackReturnGenericTypeChild (line 129) | public GType<Child> fallbackReturnGenericTypeChild() {return null;}
      method commandReturnGenericTypeParentChild (line 130) | public GDoubleType<Parent, Child> commandReturnGenericTypeParentChil...
      method commandReturnGenericTypeChildParent (line 131) | public GDoubleType<Child, Parent> commandReturnGenericTypeChildParen...
      method fallbackReturnGenericTypeParentChild (line 132) | public GDoubleType<Parent, Child> fallbackReturnGenericTypeParentChi...
      method fallbackReturnGenericTypeChildParent (line 133) | public GDoubleType<Child, Parent> fallbackReturnGenericTypeChildPare...
      method commandReturnGenericNestedTypeParentChildParent (line 134) | public GType<GType<GDoubleType<GType<GDoubleType<Parent, Child>>, Pa...
      method commandReturnGenericNestedTypeParentParentParent (line 135) | public GType<GType<GDoubleType<GType<GDoubleType<Parent, Parent>>, P...
      method fallbackReturnGenericNestedTypeParentChildParent (line 136) | public GType<GType<GDoubleType<GType<GDoubleType<Parent, Child>>, Pa...
      method commandReturnFutureParent (line 139) | Future<Parent> commandReturnFutureParent() {return null;}
      method commandReturnParent (line 140) | Parent commandReturnParent() {return null;}
      method fallbackReturnParent (line 142) | Parent fallbackReturnParent() {return null;}
      method fallbackReturnChild (line 143) | Child fallbackReturnChild() {return null;}
      method fallbackReturnFutureParent (line 144) | Future<Parent> fallbackReturnFutureParent() {return null;}
      method fallbackReturnFutureChild (line 145) | Future<Child> fallbackReturnFutureChild() {return null;}
      method fallbackCommandReturnParent (line 147) | @HystrixCommand Parent fallbackCommandReturnParent() {return null;}
      method fallbackCommandReturnChild (line 148) | @HystrixCommand Child fallbackCommandReturnChild() {return null;}
      method fallbackCommandReturnFutureParent (line 149) | @HystrixCommand Future<Parent> fallbackCommandReturnFutureParent() {...
      method fallbackCommandReturnFutureChild (line 150) | @HystrixCommand Future<Child> fallbackCommandReturnFutureChild() {re...
      method commandReturnObservableParent (line 153) | Observable<Parent> commandReturnObservableParent() {return null;}
      method fallbackReturnObservableParent (line 155) | Observable<Parent> fallbackReturnObservableParent() {return null;}
      method fallbackReturnObservableChild (line 156) | Observable<Child> fallbackReturnObservableChild() {return null;}
      method fallbackCommandReturnObservableParent (line 158) | @HystrixCommand Observable<Parent> fallbackCommandReturnObservablePa...
      method fallbackCommandReturnObservableChild (line 159) | @HystrixCommand Observable<Child> fallbackCommandReturnObservableChi...
    type GType (line 166) | private interface GType<T> {
    type GDoubleType (line 169) | private interface GDoubleType<T1, T2> {
    class Parent (line 173) | private static class Parent {
    class Child (line 177) | private static class Child extends Parent {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/GetMethodTest.java
  class GetMethodTest (line 19) | @RunWith(Parameterized.class)
    method data (line 25) | @Parameterized.Parameters
    method GetMethodTest (line 33) | public GetMethodTest(String methodName, Class<?>[] parametersTypes) {
    method testGetMethodFoo (line 38) | @Test
    class A (line 47) | public static class A { void foo(String  in) {} }
      method foo (line 47) | void foo(String  in) {}
    class B (line 48) | public static class B extends A { void bar(Integer in) {} }
      method bar (line 48) | void bar(Integer in) {}
    class C (line 49) | public static class C extends B{ }

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/bridge/Child.java
  class Child (line 21) | public class Child extends Parent {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/bridge/GenericInterface.java
  type GenericInterface (line 21) | public interface GenericInterface<P1, R extends Parent> {
    method foo (line 24) | R foo(P1 p1);

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/bridge/GenericInterfaceImpl.java
  class GenericInterfaceImpl (line 21) | public class GenericInterfaceImpl implements GenericInterface<Child, Par...
    method foo (line 24) | public Child foo(SubChild c) {
    method foo (line 28) | @Override
    method foo (line 33) | public Child foo(Parent c) {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/bridge/Parent.java
  class Parent (line 19) | public class Parent {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/bridge/SubChild.java
  class SubChild (line 21) | public class SubChild extends Child {

FILE: hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/bridge/UnbridgeMethodTest.java
  class UnbridgeMethodTest (line 31) | public class UnbridgeMethodTest {
    method testUnbridgeFoo (line 33) | @Test
    method getBridgeMethod (line 46) | private static Method getBridgeMethod(Class<?> type, String methodName) {
    method assertReturnType (line 55) | private static void assertReturnType(Class<?> expected, Method method) {
    method assertParamsTypes (line 59) | private static void assertParamsTypes(Method method, Class<?>... expec...

FILE: hystrix-contrib/hystrix-junit/src/main/java/com/hystrix/junit/HystrixRequestContextRule.java
  class HystrixRequestContextRule (line 35) | public final class HystrixRequestContextRule extends ExternalResource {
    method before (line 38) | @Override
    method after (line 44) | @Override
    method context (line 52) | public HystrixRequestContext context() {
    method reset (line 56) | public void reset() {

FILE: hystrix-contrib/hystrix-junit/src/test/java/com/hystrix/junit/HystrixRequestContextRuleTest.java
  class HystrixRequestContextRuleTest (line 8) | public final class HystrixRequestContextRuleTest {
    method initsContext (line 12) | @Test
    method manuallyShutdownContextDontBreak (line 17) | @Test

FILE: hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/HystrixStream.java
  class HystrixStream (line 26) | public final class HystrixStream {
    method HystrixStream (line 31) | public HystrixStream(Observable<String> sampleStream, int pausePollerT...
    method getSampleStream (line 37) | public Observable<String> getSampleStream() {
    method getPausePollerThreadDelayInMs (line 41) | public int getPausePollerThreadDelayInMs() {
    method getConcurrentConnections (line 45) | public AtomicInteger getConcurrentConnections() {

FILE: hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/HystrixStreamFeature.java
  class HystrixStreamFeature (line 30) | public class HystrixStreamFeature implements Feature {
    method configure (line 32) | @Override

FILE: hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/HystrixStreamingOutputProvider.java
  class HystrixStreamingOutputProvider (line 44) | @Provider
    method isWriteable (line 49) | @Override
    method getSize (line 54) | @Override
    method writeTo (line 59) | @Override

FILE: hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/controller/AbstractHystrixStreamController.java
  class AbstractHystrixStreamController (line 37) | public abstract class AbstractHystrixStreamController {
    method AbstractHystrixStreamController (line 47) | protected AbstractHystrixStreamController(Observable<String> sampleStr...
    method AbstractHystrixStreamController (line 51) | protected AbstractHystrixStreamController(Observable<String> sampleStr...
    method getMaxNumberConcurrentConnectionsAllowed (line 56) | protected abstract int getMaxNumberConcurrentConnectionsAllowed();
    method getCurrentConnections (line 58) | protected abstract AtomicInteger getCurrentConnections();
    method handleRequest (line 65) | protected Response handleRequest() {

FILE: hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/controller/HystrixConfigSseController.java
  class HystrixConfigSseController (line 49) | @Path("/hystrix/config.stream")
    method HystrixConfigSseController (line 55) | public HystrixConfigSseController() {
    method getStream (line 64) | @GET
    method getMaxNumberConcurrentConnectionsAllowed (line 69) | @Override
    method getCurrentConnections (line 74) | @Override

FILE: hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/controller/HystrixMetricsStreamController.java
  class HystrixMetricsStreamController (line 49) | @Path("/hystrix.stream")
    method HystrixMetricsStreamController (line 55) | public HystrixMetricsStreamController() {
    method getStream (line 64) | @GET
    method getMaxNumberConcurrentConnectionsAllowed (line 69) | @Override
    method getCurrentConnections (line 73) | @Override

FILE: hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/controller/HystrixRequestEventsSseController.java
  class HystrixRequestEventsSseController (line 50) | @Path("/hystrix/request.stream")
    method HystrixRequestEventsSseController (line 56) | public HystrixRequestEventsSseController() {
    method getStream (line 65) | @GET
    method getMaxNumberConcurrentConnectionsAllowed (line 70) | @Override
    method getCurrentConnections (line 75) | @Override

FILE: hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/controller/HystrixUtilizationSseController.java
  class HystrixUtilizationSseController (line 49) | @Path("/hystrix/utilization.stream")
    method HystrixUtilizationSseController (line 55) | public HystrixUtilizationSseController() {
    method getStream (line 64) | @GET
    method getMaxNumberConcurrentConnectionsAllowed (line 69) | @Override
    method getCurrentConnections (line 74) | @Override

FILE: hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/test/java/com/netflix/hystrix/contrib/metrics/controller/HystricsMetricsControllerTest.java
  class HystricsMetricsControllerTest (line 52) | @Path("/hystrix")
    method command (line 56) | @POST
    method configure (line 64) | @Override
    method getPath (line 83) | protected String getPath() {
    method isStreamValid (line 87) | protected boolean isStreamValid(String data) {
    method testInfiniteStream (line 91) | @Test
    method testConcurrency (line 108) | @Test
    method executeHystrixCommand (line 148) | private void executeHystrixCommand() throws Exception {
    method getStream (line 155) | private EventInput getStream() throws Exception {
    method getStreamFailFast (line 168) | private EventInput getStreamFailFast() throws Exception {
    method validateStream (line 172) | private void validateStream(EventInput eventInput, long waitTime) {
    class TestHystrixCommand (line 189) | public static class TestHystrixCommand extends HystrixCommand<Void> {
      method TestHystrixCommand (line 191) | protected TestHystrixCommand() {
      method run (line 195) | @Override

FILE: hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/test/java/com/netflix/hystrix/contrib/metrics/controller/HystrixConfigControllerTest.java
  class HystrixConfigControllerTest (line 22) | public class HystrixConfigControllerTest extends HystricsMetricsControll...
    method getPath (line 24) | @Override
    method isStreamValid (line 29) | @Override

FILE: hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/test/java/com/netflix/hystrix/contrib/metrics/controller/HystrixUtilizationControllerTest.java
  class HystrixUtilizationControllerTest (line 22) | public class HystrixUtilizationControllerTest extends HystricsMetricsCon...
    method getPath (line 24) | @Override
    method isStreamValid (line 29) | @Override

FILE: hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/test/java/com/netflix/hystrix/contrib/metrics/controller/StreamingOutputProviderTest.java
  class StreamingOutputProviderTest (line 45) | public class StreamingOutputProviderTest {
    method call (line 48) | @Override
    method call (line 55) | @Override
    method call (line 69) | @Override
    method getMaxNumberConcurrentConnectionsAllowed (line 84) | @Override
    method getCurrentConnections (line 88) | @Override
    method concurrencyTest (line 95) | @Test
    method testInfiniteOnNextStream (line 117) | @Test
    method testOnError (line 138) | @Test
    method testOnComplete (line 143) | @Test
    method hasNoMoreConcurrentConnections (line 149) | private static boolean hasNoMoreConcurrentConnections(AtomicInteger co...
    method testStreamOnce (line 162) | private void testStreamOnce(Observable<String> observable) throws Exce...
    method startStreamingThread (line 180) | private static Thread startStreamingThread(final HystrixStream stream,...
    method verifyStream (line 196) | private static void verifyStream(final InputStream is, final AtomicInt...

FILE: hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/metrics/eventstream/HystrixMetricsPoller.java
  class HystrixMetricsPoller (line 57) | @Deprecated //since 1.5.4
    method HystrixMetricsPoller (line 79) | public HystrixMetricsPoller(MetricsAsJsonPollerListener listener, int ...
    method start (line 96) | public synchronized void start() {
    method pause (line 113) | public synchronized void pause() {
    method shutdown (line 128) | public synchronized void shutdown() {
    method isRunning (line 133) | public boolean isRunning() {
    method finalize (line 142) | protected void finalize() throws Throwable {
    type MetricsAsJsonPollerListener (line 154) | public static interface MetricsAsJsonPollerListener {
      method handleJsonMetric (line 155) | public void handleJsonMetric(String json);
    class MetricsPoller (line 158) | private class MetricsPoller implements Runnable {
      method MetricsPoller (line 163) | public MetricsPoller(MetricsAsJsonPollerListener listener) {
      method run (line 167) | @Override
      method safelyWriteNumberField (line 195) | private void safelyWriteNumberField(JsonGenerator json, String name,...
      method getCommandJson (line 204) | private String getCommandJson(final HystrixCommandMetrics commandMet...
      method hasExecutedCommandsOnThread (line 399) | private boolean hasExecutedCommandsOnThread(HystrixThreadPoolMetrics...
      method getThreadPoolJson (line 403) | private String getThreadPoolJson(final HystrixThreadPoolMetrics thre...
      method getCollapserJson (line 446) | private String getCollapserJson(final HystrixCollapserMetrics collap...
    class MetricsPollerThreadFactory (line 515) | private static class MetricsPollerThreadFactory implements ThreadFacto...
      method newThread (line 520) | public Thread newThread(Runnable r) {

FILE: hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/metrics/eventstream/HystrixMetricsStreamServlet.java
  class HystrixMetricsStreamServlet (line 49) | public class HystrixMetricsStreamServlet extends HystrixSampleSseServlet {
    method HystrixMetricsStreamServlet (line 58) | public HystrixMetricsStreamServlet() {
    method HystrixMetricsStreamServlet (line 62) | HystrixMetricsStreamServlet(Observable<HystrixDashboardStream.Dashboar...
    method getMaxNumberConcurrentConnectionsAllowed (line 71) | @Override
    method getNumberCurrentConnections (line 76) | @Override
    method incrementAndGetCurrentConcurrentConnections (line 81) | @Override
    method decrementCurrentConcurrentConnections (line 86) | @Override

FILE: hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/requests/stream/HystrixRequestEventsJsonStream.java
  class HystrixRequestEventsJsonStream (line 38) | @Deprecated //since 1.5.4
    method getStream (line 42) | public Observable<HystrixRequestEvents> getStream() {
    method convertRequestsToJson (line 47) | public static String convertRequestsToJson(Collection<HystrixRequestEv...
    method convertRequestToJson (line 60) | public static String convertRequestToJson(HystrixRequestEvents request...
    method writeRequestAsJson (line 69) | private static void writeRequestAsJson(JsonGenerator json, HystrixRequ...
    method convertExecutionToJson (line 79) | private static void convertExecutionToJson(JsonGenerator json, Hystrix...

FILE: hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/requests/stream/HystrixRequestEventsSseServlet.java
  class HystrixRequestEventsSseServlet (line 31) | public class HystrixRequestEventsSseServlet extends HystrixSampleSseServ...
    method HystrixRequestEventsSseServlet (line 40) | public HystrixRequestEventsSseServlet() {
    method HystrixRequestEventsSseServlet (line 44) | HystrixRequestEventsSseServlet(Observable<HystrixRequestEvents> sample...
    method getMaxNumberConcurrentConnectionsAllowed (line 53) | @Override
    method getNumberCurrentConnections (line 58) | @Override
    method incrementAndGetCurrentConcurrentConnections (line 63) | @Override
    method decrementCurrentConcurrentConnections (line 68) | @Override

FILE: hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/sample/stream/HystrixConfigSseServlet.java
  class HystrixConfigSseServlet (line 49) | public class HystrixConfigSseServlet extends HystrixSampleSseServlet {
    method HystrixConfigSseServlet (line 57) | public HystrixConfigSseServlet() {
    method HystrixConfigSseServlet (line 61) | HystrixConfigSseServlet(Observable<HystrixConfiguration> sampleStream,...
    method getMaxNumberConcurrentConnectionsAllowed (line 70) | @Override
    method getNumberCurrentConnections (line 75) | @Override
    method incrementAndGetCurrentConcurrentConnections (line 80) | @Override
    method decrementCurrentConcurrentConnections (line 85) | @Override

FILE: hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/sample/stream/HystrixConfigurationJsonStream.java
  class HystrixConfigurationJsonStream (line 46) | @Deprecated //since 1.5.4
    method HystrixConfigurationJsonStream (line 52) | @Deprecated //since 1.5.4
    method HystrixConfigurationJsonStream (line 62) | @Deprecated //since 1.5.4
    method call (line 68) | @Override
    method writeCommandConfigJson (line 78) | private static void writeCommandConfigJson(JsonGenerator json, Hystrix...
    method writeThreadPoolConfigJson (line 116) | private static void writeThreadPoolConfigJson(JsonGenerator json, Hyst...
    method writeCollapserConfigJson (line 130) | private static void writeCollapserConfigJson(JsonGenerator json, Hystr...
    method convertToString (line 146) | public static String convertToString(HystrixConfiguration config) thro...
    method observe (line 188) | @Deprecated //deprecated in 1.5.4
    method observeJson (line 200) | @Deprecated //deprecated in 1.5.4

FILE: hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/sample/stream/HystrixSampleSseServlet.java
  class HystrixSampleSseServlet (line 35) | public abstract class HystrixSampleSseServlet extends HttpServlet {
    method HystrixSampleSseServlet (line 51) | protected HystrixSampleSseServlet(Observable<String> sampleStream) {
    method HystrixSampleSseServlet (line 56) | protected HystrixSampleSseServlet(Observable<String> sampleStream, int...
    method getMaxNumberConcurrentConnectionsAllowed (line 61) | protected abstract int getMaxNumberConcurrentConnectionsAllowed();
    method getNumberCurrentConnections (line 63) | protected abstract int getNumberCurrentConnections();
    method incrementAndGetCurrentConcurrentConnections (line 65) | protected abstract int incrementAndGetCurrentConcurrentConnections();
    method decrementCurrentConcurrentConnections (line 67) | protected abstract void decrementCurrentConcurrentConnections();
    method doGet (line 72) | @Override
    method shutdown (line 86) | public static void shutdown() {
    method init (line 90) | @Override
    method destroy (line 98) | @Override
    method handleRequest (line 115) | private void handleRequest(HttpServletRequest request, final HttpServl...

FILE: hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/sample/stream/HystrixUtilizationJsonStream.java
  class HystrixUtilizationJsonStream (line 42) | @Deprecated //since 1.5.4
    method call (line 49) | @Override
    method HystrixUtilizationJsonStream (line 59) | @Deprecated //since 1.5.4
    method HystrixUtilizationJsonStream (line 69) | @Deprecated //since 1.5.4
    method writeCommandUtilizationJson (line 74) | private static void writeCommandUtilizationJson(JsonGenerator json, Hy...
    method writeThreadPoolUtilizationJson (line 80) | private static void writeThreadPoolUtilizationJson(JsonGenerator json,...
    method convertToJson (line 89) | protected static String convertToJson(HystrixUtilization utilization) ...
    method observe (line 123) | @Deprecated //deprecated as of 1.5.4
    method observeJson (line 135) | public Observable<String> observeJson(int delay) {

FILE: hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/sample/stream/HystrixUtilizationSseServlet.java
  class HystrixUtilizationSseServlet (line 49) | public class HystrixUtilizationSseServlet extends HystrixSampleSseServlet {
    method HystrixUtilizationSseServlet (line 58) | public HystrixUtilizationSseServlet() {
    method HystrixUtilizationSseServlet (line 62) | HystrixUtilizationSseServlet(Observable<HystrixUtilization> sampleStre...
    method getMaxNumberConcurrentConnectionsAllowed (line 71) | @Override
    method getNumberCurrentConnections (line 76) | @Override
    method incrementAndGetCurrentConcurrentConnections (line 81) | @Override
    method decrementCurrentConcurrentConnections (line 86) | @Override

FILE: hystrix-contrib/hystrix-metrics-event-stream/src/test/java/com/netflix/hystrix/contrib/metrics/eventstream/HystrixMetricsPollerTest.java
  class HystrixMetricsPollerTest (line 32) | public class HystrixMetricsPollerTest {
    method testStartStopStart (line 34) | @Test

FILE: hystrix-contrib/hystrix-metrics-event-stream/src/test/java/com/netflix/hystrix/contrib/metrics/eventstream/HystrixMetricsStreamServletUnitTest.java
  class HystrixMetricsStreamServletUnitTest (line 39) | public class HystrixMetricsStreamServletUnitTest {
    method call (line 50) | @Override
    method init (line 57) | @Before
    method tearDown (line 63) | @After
    method shutdownServletShouldRejectRequests (line 69) | @Test

FILE: hystrix-contrib/hystrix-metrics-event-stream/src/test/java/com/netflix/hystrix/contrib/sample/stream/HystrixConfigSseServletTest.java
  class HystrixConfigSseServletTest (line 44) | public class HystrixConfigSseServletTest {
    method call (line 54) | @Override
    method call (line 61) | @Override
    method call (line 75) | @Override
    method init (line 88) | @Before
    method tearDown (line 93) | @After
    method shutdownServletShouldRejectRequests (line 99) | @Test
    method testConfigDataWithInfiniteOnNextStream (line 115) | @Test
    method testConfigDataWithStreamOnError (line 177) | @Test
    method testConfigDataWithStreamOnCompleted (line 230) | @Test
    method testConfigDataWithIoExceptionOnWrite (line 283) | @Test

FILE: hystrix-contrib/hystrix-metrics-event-stream/src/test/java/com/netflix/hystrix/contrib/sample/stream/HystrixSampleSseServletTest.java
  class HystrixSampleSseServletTest (line 50) | public class HystrixSampleSseServletTest {
    method init (line 61) | @Before
    method tearDown (line 66) | @After
    method testNoConcurrentResponseWrites (line 72) | @Test
    class TestHystrixConfigSseServlet (line 147) | private static class TestHystrixConfigSseServlet extends HystrixSample...
      method TestHystrixConfigSseServlet (line 152) | public TestHystrixConfigSseServlet() {
      method TestHystrixConfigSseServlet (line 156) | TestHystrixConfigSseServlet(Observable<HystrixConfiguration> sampleS...
      method getMaxNumberConcurrentConnectionsAllowed (line 165) | @Override
      method getNumberCurrentConnections (line 170) | @Override
      method incrementAndGetCurrentConcurrentConnections (line 175) | @Override
      method decrementCurrentConcurrentConnections (line 180) | @Override

FILE: hystrix-contrib/hystrix-network-auditor-agent/src/main/java/com/netflix/hystrix/contrib/networkauditor/HystrixNetworkAuditorAgent.java
  class HystrixNetworkAuditorAgent (line 23) | public class HystrixNetworkAuditorAgent {
    method handleNetworkEvent (line 27) | @Override
    method premain (line 35) | public static void premain(String agentArgs, Instrumentation inst) {
    method notifyOfNetworkEvent (line 42) | public static void notifyOfNetworkEvent() {
    method registerEventListener (line 52) | public static void registerEventListener(HystrixNetworkAuditorEventLis...

FILE: hystrix-contrib/hystrix-network-auditor-agent/src/main/java/com/netflix/hystrix/contrib/networkauditor/HystrixNetworkAuditorEventListener.java
  type HystrixNetworkAuditorEventListener (line 22) | public interface HystrixNetworkAuditorEventListener {
    method handleNetworkEvent (line 43) | public void handleNetworkEvent();

FILE: hystrix-contrib/hystrix-network-auditor-agent/src/main/java/com/netflix/hystrix/contrib/networkauditor/NetworkClassTransform.java
  class NetworkClassTransform (line 33) | public class NetworkClassTransform implements ClassFileTransformer {
    method transform (line 35) | @Override
    method wrapConstructorsOfClass (line 71) | private byte[] wrapConstructorsOfClass(String className) throws NotFou...
    method wrapClass (line 84) | private byte[] wrapClass(String className, boolean wrapConstructors, S...

FILE: hystrix-contrib/hystrix-request-servlet/src/main/java/com/netflix/hystrix/contrib/requestservlet/HystrixRequestContextServletFilter.java
  class HystrixRequestContextServletFilter (line 49) | public class HystrixRequestContextServletFilter implements Filter {
    method doFilter (line 50) | public void doFilter(ServletRequest request, ServletResponse response,...
    method init (line 59) | @Override
    method destroy (line 64) | @Override

FILE: hystrix-contrib/hystrix-request-servlet/src/main/java/com/netflix/hystrix/contrib/requestservlet/HystrixRequestLogViaLoggerServletFilter.java
  class HystrixRequestLogViaLoggerServletFilter (line 64) | public class HystrixRequestLogViaLoggerServletFilter implements Filter {
    method doFilter (line 67) | public void doFilter(ServletRequest request, ServletResponse response,...
    method init (line 92) | @Override
    method destroy (line 97) | @Override

FILE: hystrix-contrib/hystrix-request-servlet/src/main/java/com/netflix/hystrix/contrib/requestservlet/HystrixRequestLogViaResponseHeaderServletFilter.java
  class HystrixRequestLogViaResponseHeaderServletFilter (line 58) | public class HystrixRequestLogViaResponseHeaderServletFilter implements ...
    method doFilter (line 61) | public void doFilter(ServletRequest request, ServletResponse response,...
    method init (line 79) | @Override
    method destroy (line 84) | @Override

FILE: hystrix-contrib/hystrix-rx-netty-metrics-stream/src/main/java/com/netflix/hystrix/contrib/rxnetty/metricsstream/HystrixMetricsStreamHandler.java
  class HystrixMetricsStreamHandler (line 50) | public class HystrixMetricsStreamHandler<I, O> implements RequestHandler...
    method HystrixMetricsStreamHandler (line 64) | public HystrixMetricsStreamHandler(RequestHandler<I, O> appHandler) {
    method HystrixMetricsStreamHandler (line 68) | HystrixMetricsStreamHandler(String hystrixPrefix, long interval, Reque...
    method handle (line 74) | @Override
    method handleHystrixRequest (line 82) | private Observable<Void> handleHystrixRequest(final HttpServerResponse...
    method writeHeaders (line 114) | private void writeHeaders(HttpServerResponse<O> response) {
    method writeMetric (line 120) | @SuppressWarnings("unchecked")

FILE: hystrix-contrib/hystrix-rx-netty-metrics-stream/src/test/java/com/netflix/hystrix/HystrixCommandMetricsSamples.java
  class HystrixCommandMetricsSamples (line 27) | public class HystrixCommandMetricsSamples {
    class MyHystrixCommandKey (line 31) | private static class MyHystrixCommandKey implements HystrixCommandKey {
      method name (line 32) | @Override
    class MyHystrixCommandGroupKey (line 38) | private static class MyHystrixCommandGroupKey implements HystrixComman...
      method name (line 39) | @Override
    class MyHystrixThreadPoolKey (line 45) | private static class MyHystrixThreadPoolKey implements HystrixThreadPo...
      method name (line 46) | @Override
    class MyHystrixCommandProperties (line 52) | private static class MyHystrixCommandProperties extends HystrixCommand...
      method MyHystrixCommandProperties (line 53) | protected MyHystrixCommandProperties(HystrixCommandKey key) {

FILE: hystrix-contrib/hystrix-rx-netty-metrics-stream/src/test/java/com/netflix/hystrix/contrib/rxnetty/metricsstream/HystrixMetricsStreamHandlerTest.java
  class HystrixMetricsStreamHandlerTest (line 55) | @RunWith(PowerMockRunner.class)
    method setUp (line 68) | @Before
    method tearDown (line 81) | @After
    method testMetricsAreDeliveredAsSseStream (line 91) | @Test
    method createServer (line 112) | private HttpServer<ByteBuf, ByteBuf> createServer() {

FILE: hystrix-contrib/hystrix-servo-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/servopublisher/HystrixServoMetricsPublisher.java
  class HystrixServoMetricsPublisher (line 39) | public class HystrixServoMetricsPublisher extends HystrixMetricsPublisher {
    method getInstance (line 43) | public static HystrixServoMetricsPublisher getInstance() {
    method createInstance (line 51) | private static synchronized HystrixServoMetricsPublisher createInstanc...
    method HystrixServoMetricsPublisher (line 59) | private HystrixServoMetricsPublisher() {
    method getMetricsPublisherForCommand (line 62) | @Override
    method getMetricsPublisherForThreadPool (line 67) | @Override
    method getMetricsPublisherForCollapser (line 72) | @Override

FILE: hystrix-contrib/hystrix-servo-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/servopublisher/HystrixServoMetricsPublisherAbstract.java
  class HystrixServoMetricsPublisherAbstract (line 32) | abstract class HystrixServoMetricsPublisherAbstract {
    method getServoTypeTag (line 34) | protected abstract Tag getServoTypeTag();
    method getServoInstanceTag (line 36) | protected abstract Tag getServoInstanceTag();
    class InformationalMetric (line 38) | protected abstract class InformationalMetric<K> extends AbstractMonito...
      method InformationalMetric (line 39) | public InformationalMetric(MonitorConfig config) {
      method getValue (line 43) | @Override
      method getValue (line 48) | @Override
    class CounterMetric (line 52) | protected abstract class CounterMetric extends AbstractMonitor<Number>...
      method CounterMetric (line 53) | public CounterMetric(MonitorConfig config) {
      method getValue (line 57) | @Override
      method getValue (line 62) | @Override
      method increment (line 65) | @Override
      method increment (line 70) | @Override
    class GaugeMetric (line 76) | protected abstract class GaugeMetric extends AbstractMonitor<Number> i...
      method GaugeMetric (line 77) | public GaugeMetric(MonitorConfig config) {
      method getValue (line 81) | @Override
      method getValue (line 86) | @Override
    method getCumulativeCountForEvent (line 90) | protected Monitor<?> getCumulativeCountForEvent(String name, final Hys...
    method getRollingCountForEvent (line 100) | protected Monitor<?> getRollingCountForEvent(String name, final Hystri...

FILE: hystrix-contrib/hystrix-servo-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/servopublisher/HystrixServoMetricsPublisherCollapser.java
  class HystrixServoMetricsPublisherCollapser (line 42) | public class HystrixServoMetricsPublisherCollapser extends HystrixServoM...
    method HystrixServoMetricsPublisherCollapser (line 52) | public HystrixServoMetricsPublisherCollapser(HystrixCollapserKey threa...
    method initialize (line 95) | @Override
    method getServoTypeTag (line 110) | @Override
    method getServoInstanceTag (line 115) | @Override
    method getCumulativeMonitor (line 120) | protected Monitor<Number> getCumulativeMonitor(final String name, fina...
    method safelyGetCumulativeMonitor (line 129) | protected Monitor<Number> safelyGetCumulativeMonitor(final String name...
    method getRollingMonitor (line 143) | protected Monitor<Number> getRollingMonitor(final String name, final H...
    method safelyGetRollingMonitor (line 152) | protected Monitor<Number> safelyGetRollingMonitor(final String name, f...
    method getBatchSizeMeanMonitor (line 166) | protected Monitor<Number> getBatchSizeMeanMonitor(final String name) {
    method getBatchSizePercentileMonitor (line 175) | protected Monitor<Number> getBatchSizePercentileMonitor(final String n...
    method getShardSizeMeanMonitor (line 184) | protected Monitor<Number> getShardSizeMeanMonitor(final String name) {
    method getShardSizePercentileMonitor (line 193) | protected Monitor<Number> getShardSizePercentileMonitor(final String n...
    method getServoMonitors (line 210) | private List<Monitor<?>> getServoMonitors() {

FILE: hystrix-contrib/hystrix-servo-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/servopublisher/HystrixServoMetricsPublisherCommand.java
  class HystrixServoMetricsPublisherCommand (line 51) | public class HystrixServoMetricsPublisherCommand extends HystrixServoMet...
    method HystrixServoMetricsPublisherCommand (line 63) | public HystrixServoMetricsPublisherCommand(HystrixCommandKey commandKe...
    method initialize (line 107) | @Override
    method getServoTypeTag (line 124) | @Override
    method getServoInstanceTag (line 129) | @Override
    method call (line 135) | @Override
    method call (line 142) | @Override
    method call (line 149) | @Override
    method call (line 156) | @Override
    method getRollingNumberTypeFromEventType (line 168) | @Deprecated
    method getCumulativeMonitor (line 173) | protected Monitor<Number> getCumulativeMonitor(final String name, fina...
    method safelyGetCumulativeMonitor (line 182) | protected Monitor<Number> safelyGetCumulativeMonitor(final String name...
    method getRollingMonitor (line 197) | protected Monitor<Number> getRollingMonitor(final String name, final H...
    method safelyGetRollingMonitor (line 206) | protected Monitor<Number> safelyGetRollingMonitor(final String name, f...
    method getExecutionLatencyMeanMonitor (line 221) | protected Monitor<Number> getExecutionLatencyMeanMonitor(final String ...
    method getExecutionLatencyPercentileMonitor (line 230) | protected Monitor<Number> getExecutionLatencyPercentileMonitor(final S...
    method getTotalLatencyMeanMonitor (line 239) | protected Monitor<Number> getTotalLatencyMeanMonitor(final String name) {
    method getTotalLatencyPercentileMonitor (line 248) | protected Monitor<Number> getTotalLatencyPercentileMonitor(final Strin...
    method getCurrentValueMonitor (line 257) | protected Monitor<Number> getCurrentValueMonitor(final String name, fi...
    method getCurrentValueMonitor (line 266) | protected Monitor<Number> getCurrentValueMonitor(final String name, fi...
    method getServoMonitors (line 284) | private List<Monitor<?>> getServoMonitors() {

FILE: hystrix-contrib/hystrix-servo-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/servopublisher/HystrixServoMetricsPublisherThreadPool.java
  class HystrixServoMetricsPublisherThreadPool (line 42) | public class HystrixServoMetricsPublisherThreadPool extends HystrixServo...
    method HystrixServoMetricsPublisherThreadPool (line 52) | public HystrixServoMetricsPublisherThreadPool(HystrixThreadPoolKey thr...
    method initialize (line 95) | @Override
    method getServoTypeTag (line 110) | @Override
    method getServoInstanceTag (line 115) | @Override
    method safelyGetCumulativeMonitor (line 120) | protected Monitor<Number> safelyGetCumulativeMonitor(final String name...
    method safelyGetRollingMonitor (line 135) | protected Monitor<Number> safelyGetRollingMonitor(final String name, f...
    method getServoMonitors (line 157) | private List<Monitor<?>> getServoMonitors() {

FILE: hystrix-contrib/hystrix-servo-metrics-publisher/src/test/java/com/netflix/hystrix/contrib/servopublisher/HystrixServoMetricsPublisherCommandTest.java
  class HystrixServoMetricsPublisherCommandTest (line 37) | public class HystrixServoMetricsPublisherCommandTest {
    method testCumulativeCounters (line 49) | @Test
    method testRollingCounters (line 85) | @Test
    method testRollingLatencies (line 129) | @Test
    class SampleCommand (line 224) | static class SampleCommand extends HystrixCommand<Integer> {
      method SampleCommand (line 228) | protected SampleCommand(HystrixCommandKey key, boolean shouldFail, i...
      method run (line 234) | @Override
      method getFallback (line 244) | @Override
    class SuccessCommand (line 250) | static class SuccessCommand extends SampleCommand {
      method SuccessCommand (line 251) | protected SuccessCommand(HystrixCommandKey key) {
      method SuccessCommand (line 255) | public SuccessCommand(HystrixCommandKey key, int latencyToAdd) {
    class FailureCommand (line 260) | static class FailureCommand extends SampleCommand {
      method FailureCommand (line 261) | protected FailureCommand(HystrixCommandKey key) {
      method FailureCommand (line 265) | public FailureCommand(HystrixCommandKey key, int latencyToAdd) {
    class TimeoutCommand (line 270) | static class TimeoutCommand extends SampleCommand {
      method TimeoutCommand (line 271) | protected TimeoutCommand(HystrixCommandKey key) {

FILE: hystrix-contrib/hystrix-yammer-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/yammermetricspublisher/HystrixYammerMetricsPublisher.java
  class HystrixYammerMetricsPublisher (line 39) | public class HystrixYammerMetricsPublisher extends HystrixMetricsPublish...
    method HystrixYammerMetricsPublisher (line 42) | public HystrixYammerMetricsPublisher() {
    method HystrixYammerMetricsPublisher (line 46) | public HystrixYammerMetricsPublisher(MetricsRegistry metricsRegistry) {
    method getMetricsPublisherForCommand (line 50) | @Override
    method getMetricsPublisherForThreadPool (line 55) | @Override
    method getMetricsPublisherForCollapser (line 60) | @Override

FILE: hystrix-contrib/hystrix-yammer-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/yammermetricspublisher/HystrixYammerMetricsPublisherCollapser.java
  class HystrixYammerMetricsPublisherCollapser (line 39) | public class HystrixYammerMetricsPublisherCollapser implements HystrixMe...
    method HystrixYammerMetricsPublisherCollapser (line 48) | public HystrixYammerMetricsPublisherCollapser(HystrixCollapserKey coll...
    method initialize (line 56) | @Override
    method createMetricName (line 224) | protected MetricName createMetricName(String name) {
    method createCumulativeCountForEvent (line 228) | protected void createCumulativeCountForEvent(final String name, final ...
    method safelyCreateCumulativeCountForEvent (line 237) | protected void safelyCreateCumulativeCountForEvent(final String name, ...
    method createRollingCountForEvent (line 251) | protected void createRollingCountForEvent(final String name, final Hys...
    method safelyCreateRollingCountForEvent (line 260) | protected void safelyCreateRollingCountForEvent(final String name, fin...

FILE: hystrix-contrib/hystrix-yammer-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/yammermetricspublisher/HystrixYammerMetricsPublisherCommand.java
  class HystrixYammerMetricsPublisherCommand (line 42) | public class HystrixYammerMetricsPublisherCommand implements HystrixMetr...
    method HystrixYammerMetricsPublisherCommand (line 54) | public HystrixYammerMetricsPublisherCommand(HystrixCommandKey commandK...
    method initialize (line 65) | @Override
    method createMetricName (line 388) | protected MetricName createMetricName(String name) {
    method createCumulativeCountForEvent (line 392) | @Deprecated
    method createCumulativeGauge (line 402) | protected void createCumulativeGauge(final String name, final HystrixE...
    method safelyCreateCumulativeGauge (line 411) | protected void safelyCreateCumulativeGauge(final String name, final Fu...
    method createRollingGauge (line 426) | @Deprecated
    method createRollingGauge (line 436) | protected void createRollingGauge(final String name, final HystrixEven...
    method safelyCreateRollingGauge (line 445) | protected void safelyCreateRollingGauge(final String name, final Func0...
    method createExecutionLatencyMeanGauge (line 460) | protected void createExecutionLatencyMeanGauge(final String name) {
    method createExecutionLatencyPercentileGauge (line 469) | protected void createExecutionLatencyPercentileGauge(final String name...
    method createTotalLatencyMeanGauge (line 478) | protected void createTotalLatencyMeanGauge(final String name) {
    method createTotalLatencyPercentileGauge (line 487) | protected void createTotalLatencyPercentileGauge(final String name, fi...
    method call (line 497) | @Override
    method call (line 504) | @Override
    method call (line 511) | @Override
    method createCurrentValueGauge (line 517) | protected void createCurrentValueGauge(final String name, final Func0<...

FILE: hystrix-contrib/hystrix-yammer-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/yammermetricspublisher/HystrixYammerMetricsPublisherThreadPool.java
  class HystrixYammerMetricsPublisherThreadPool (line 32) | public class HystrixYammerMetricsPublisherThreadPool implements HystrixM...
    method HystrixYammerMetricsPublisherThreadPool (line 43) | public HystrixYammerMetricsPublisherThreadPool(HystrixThreadPoolKey th...
    method initialize (line 52) | @Override
    method createMetricName (line 181) | protected MetricName createMetricName(String name) {

FILE: hystrix-core/src/jmh/java/com/netflix/hystrix/perf/CollapserPerfTest.java
  class CollapserPerfTest (line 46) | public class CollapserPerfTest {
    class ThreadPoolState (line 47) | @State(Scope.Benchmark)
      method setUp (line 51) | @Setup
      method tearDown (line 58) | @TearDown
    class CollapserState (line 64) | @State(Scope.Thread)
      method setUp (line 75) | @Setup(Level.Invocation)
      method tearDown (line 89) | @TearDown(Level.Invocation)
    class IdentityCollapser (line 96) | private static class IdentityCollapser extends HystrixCollapser<List<S...
      method IdentityCollapser (line 101) | IdentityCollapser(int arg, int blackholeConsumption) {
      method getRequestArgument (line 107) | @Override
      method createCommand (line 112) | @Override
      method mapResponseToRequests (line 121) | @Override
    class BatchCommand (line 137) | private static class BatchCommand extends HystrixCommand<List<String>> {
      method BatchCommand (line 141) | BatchCommand(List<String> inputArgs, int blackholeConsumption) {
      method run (line 147) | @Override
    method observeCollapsedAndWait (line 158) | @Benchmark

FILE: hystrix-core/src/jmh/java/com/netflix/hystrix/perf/CommandConstructionPerfTest.java
  class CommandConstructionPerfTest (line 27) | public class CommandConstructionPerfTest {
    method constructHystrixCommandByGroupKeyOnly (line 31) | @Benchmark

FILE: hystrix-core/src/jmh/java/com/netflix/hystrix/perf/CommandExecutionAndConcurrentMetricsReadPerfTest.java
  class CommandExecutionAndConcurrentMetricsReadPerfTest (line 38) | public class CommandExecutionAndConcurrentMetricsReadPerfTest {
    class CommandState (line 39) | @State(Scope.Thread)
      method setUp (line 47) | @Setup(Level.Invocation)
    method writeHeavyCommandExecution (line 77) | @Benchmark
    method writeHeavyReadMetrics (line 86) | @Benchmark
    method evenSplitOfWritesAndReadsCommandExecution (line 102) | @Benchmark
    method evenSplitOfWritesAndReadsReadMetrics (line 111) | @Benchmark
    method readHeavyCommandExecution (line 127) | @Benchmark
    method readHeavyReadMetrics (line 136) | @Benchmark

FILE: hystrix-core/src/jmh/java/com/netflix/hystrix/perf/CommandExecutionPerfTest.java
  class CommandExecutionPerfTest (line 52) | public class CommandExecutionPerfTest {
    method getCommandSetter (line 87) | private static HystrixCommandProperties.Setter getCommandSetter(Hystri...
    class BlackholeState (line 104) | @State(Scope.Thread)
    class CommandState (line 111) | @State(Scope.Thread)
      method setUp (line 129) | @Setup(Level.Invocation)
      method tearDown (line 153) | @TearDown(Level.Invocation)
    class ObservableCommandState (line 161) | @State(Scope.Thread)
      method setUp (line 176) | @Setup(Level.Invocation)
      method tearDown (line 199) | @TearDown(Level.Invocation)
    class ExecutorState (line 207) | @State(Scope.Benchmark)
      method setUp (line 211) | @Setup
      method tearDown (line 216) | @TearDown
    class ThreadPoolState (line 222) | @State(Scope.Benchmark)
      method setUp (line 226) | @Setup
      method tearDown (line 233) | @TearDown
    method baselineExecute (line 239) | @Benchmark
    method baselineQueue (line 247) | @Benchmark
    method baselineSyncObserve (line 264) | @Benchmark
    method baselineAsyncComputationObserve (line 283) | @Benchmark
    method baselineAsyncCustomThreadPoolObserve (line 302) | @Benchmark
    method hystrixExecute (line 320) | @Benchmark
    method hystrixObserve (line 327) | @Benchmark

FILE: hystrix-core/src/jmh/java/com/netflix/hystrix/perf/ObservableCollapserPerfTest.java
  class ObservableCollapserPerfTest (line 57) | public class ObservableCollapserPerfTest {
    class CollapserState (line 59) | @State(Scope.Thread)
      method setUp (line 73) | @Setup(Level.Invocation)
      method tearDown (line 87) | @TearDown(Level.Invocation)
    class TestCollapserWithMultipleResponses (line 95) | private static class TestCollapserWithMultipleResponses extends Hystri...
      method TestCollapserWithMultipleResponses (line 108) | public TestCollapserWithMultipleResponses(int arg, int numResponsePe...
      method getRequestArgument (line 129) | @Override
      method createCommand (line 134) | @Override
      method getBatchReturnTypeKeySelector (line 153) | @Override
      method getRequestArgumentKeySelector (line 159) | @Override
      method onMissingResponse (line 171) | @Override
      method getBatchReturnTypeToResponseTypeMapper (line 177) | @Override
    class TestCollapserCommandWithMultipleResponsePerArgument (line 190) | private static class TestCollapserCommandWithMultipleResponsePerArgume...
      method TestCollapserCommandWithMultipleResponsePerArgument (line 196) | TestCollapserCommandWithMultipleResponsePerArgument(List<Integer> ar...
      method construct (line 203) | @Override
    method observeCollapsedAndWait (line 225) | @Benchmark

FILE: hystrix-core/src/jmh/java/com/netflix/hystrix/perf/RollingMaxPerfTest.java
  class RollingMaxPerfTest (line 34) | public class RollingMaxPerfTest {
    class CounterState (line 35) | @State(Scope.Thread)
      method setUp (line 39) | @Setup(Level.Iteration)
    class ValueState (line 45) | @State(Scope.Thread)
      method setUp (line 51) | @Setup(Level.Invocation)
    method writeOnly (line 57) | @Benchmark
    method readOnly (line 65) | @Benchmark
    method writeHeavyUpdateMax (line 73) | @Benchmark
    method writeHeavyReadMetrics (line 83) | @Benchmark
    method evenSplitUpdateMax (line 93) | @Benchmark
    method evenSplitReadMetrics (line 103) | @Benchmark
    method readHeavyUpdateMax (line 113) | @Benchmark
    method readHeavyReadMetrics (line 123) | @Benchmark

FILE: hystrix-core/src/jmh/java/com/netflix/hystrix/perf/RollingNumberPerfTest.java
  class RollingNumberPerfTest (line 34) | public class RollingNumberPerfTest {
    class CounterState (line 35) | @State(Scope.Thread)
      method setUp (line 39) | @Setup(Level.Iteration)
    class ValueState (line 45) | @State(Scope.Thread)
      method setUp (line 52) | @Setup(Level.Invocation)
    method writeOnly (line 71) | @Benchmark
    method readOnly (line 79) | @Benchmark
    method writeHeavyCounterAdd (line 92) | @Benchmark
    method writeHeavyReadMetrics (line 102) | @Benchmark
    method evenSplitCounterAdd (line 117) | @Benchmark
    method evenSplitReadMetrics (line 127) | @Benchmark
    method readHeavyCounterAdd (line 142) | @Benchmark
    method readHeavyReadMetrics (line 152) | @Benchmark

FILE: hystrix-core/src/jmh/java/com/netflix/hystrix/perf/RollingPercentilePerfTest.java
  class RollingPercentilePerfTest (line 35) | public class RollingPercentilePerfTest {
    class PercentileState (line 36) | @State(Scope.Thread)
      method setUp (line 43) | @Setup(Level.Iteration)
    class LatencyState (line 49) | @State(Scope.Thread)
      method setUp (line 55) | @Setup(Level.Invocation)
    method writeOnly (line 61) | @Benchmark
    method readOnly (line 69) | @Benchmark
    method writeHeavyLatencyAdd (line 85) | @Benchmark
    method writeHeavyReadMetrics (line 95) | @Benchmark
    method evenSplitLatencyAdd (line 113) | @Benchmark
    method evenSplitReadMetrics (line 123) | @Benchmark
    method readHeavyLatencyAdd (line 141) | @Benchmark
    method readHeavyReadMetrics (line 151) | @Benchmark

FILE: hystrix-core/src/main/java/com/netflix/hystrix/AbstractCommand.java
  class AbstractCommand (line 60) | abstract class AbstractCommand<R> implements HystrixInvokableInfo<R>, Hy...
    type TimedOutStatus (line 67) | protected enum TimedOutStatus {
    type CommandState (line 71) | protected enum CommandState {
    type ThreadState (line 75) | protected enum ThreadState {
    method getDefaultNameFromClass (line 140) | static String getDefaultNameFromClass(Class<?> cls) {
    method AbstractCommand (line 157) | protected AbstractCommand(HystrixCommandGroupKey group, HystrixCommand...
    method initGroupKey (line 186) | private static HystrixCommandGroupKey initGroupKey(final HystrixComman...
    method initCommandKey (line 194) | private static HystrixCommandKey initCommandKey(final HystrixCommandKe...
    method initCommandProperties (line 203) | private static HystrixCommandProperties initCommandProperties(HystrixC...
    method initThreadPoolKey (line 221) | private static HystrixThreadPoolKey initThreadPoolKey(HystrixThreadPoo...
    method initMetrics (line 236) | private static HystrixCommandMetrics initMetrics(HystrixCommandMetrics...
    method initCircuitBreaker (line 246) | private static HystrixCircuitBreaker initCircuitBreaker(boolean enable...
    method initExecutionHook (line 261) | private static HystrixCommandExecutionHook initExecutionHook(HystrixCo...
    method initThreadPool (line 274) | private static HystrixThreadPool initThreadPool(HystrixThreadPool from...
    method initRequestLog (line 283) | private static HystrixRequestLog initRequestLog(boolean enabled, Hystr...
    method markAsCollapsedCommand (line 297) | void markAsCollapsedCommand(HystrixCollapserKey collapserKey, int size...
    method observe (line 324) | public Observable<R> observe() {
    method getExecutionObservable (line 338) | protected abstract Observable<R> getExecutionObservable();
    method getFallbackObservable (line 340) | protected abstract Observable<R> getFallbackObservable();
    method toObservable (line 364) | public Observable<R> toObservable() {
    method applyHystrixSemantics (line 518) | private Observable<R> applyHystrixSemantics(final AbstractCommand<R> _...
    method commandIsScalar (line 562) | abstract protected boolean commandIsScalar();
    method executeCommandAndObserve (line 569) | private Observable<R> executeCommandAndObserve(final AbstractCommand<R...
    method executeCommandWithSpecifiedIsolation (line 649) | private Observable<R> executeCommandWithSpecifiedIsolation(final Abstr...
    method getFallbackOrThrowException (line 758) | private Observable<R> getFallbackOrThrowException(final AbstractComman...
    method getUserExecutionObservable (line 884) | private Observable<R> getUserExecutionObservable(final AbstractCommand...
    method handleRequestCacheHitAndEmitValues (line 900) | private Observable<R> handleRequestCacheHitAndEmitValues(final Hystrix...
    method cleanUpAfterResponseFromCache (line 930) | private void cleanUpAfterResponseFromCache(boolean commandExecutionSta...
    method handleCommandEnd (line 947) | private void handleCommandEnd(boolean commandExecutionStarted) {
    method handleSemaphoreRejectionViaFallback (line 966) | private Observable<R> handleSemaphoreRejectionViaFallback() {
    method handleShortCircuitViaFallback (line 976) | private Observable<R> handleShortCircuitViaFallback() {
    method handleThreadPoolRejectionViaFallback (line 990) | private Observable<R> handleThreadPoolRejectionViaFallback(Exception u...
    method handleTimeoutViaFallback (line 997) | private Observable<R> handleTimeoutViaFallback() {
    method handleBadRequestByEmittingError (line 1001) | private Observable<R> handleBadRequestByEmittingError(Exception underl...
    method handleFailureViaFallback (line 1024) | private Observable<R> handleFailureViaFallback(Exception underlying) {
    method handleFallbackRejectionByEmittingError (line 1038) | private Observable<R> handleFallbackRejectionByEmittingError() {
    method handleFallbackDisabledByEmittingError (line 1047) | private Observable<R> handleFallbackDisabledByEmittingError(Exception ...
    method shouldNotBeWrapped (line 1057) | protected boolean shouldNotBeWrapped(Throwable underlying) {
    method isUnrecoverable (line 1077) | private boolean isUnrecoverable(Throwable t) {
    method isRecoverableError (line 1093) | private boolean isRecoverableError(Throwable t) {
    method handleThreadEnd (line 1103) | protected void handleThreadEnd(AbstractCommand<R> _cmd) {
    method shouldOutputOnNextEvents (line 1118) | protected boolean shouldOutputOnNextEvents() {
    class HystrixObservableTimeoutOperator (line 1122) | private static class HystrixObservableTimeoutOperator<R> implements Op...
      method HystrixObservableTimeoutOperator (line 1126) | public HystrixObservableTimeoutOperator(final AbstractCommand<R> ori...
      method call (line 1130) | @Override
    method setRequestContextIfNeeded (line 1223) | private static void setRequestContextIfNeeded(final HystrixRequestCont...
    method getFallbackSemaphore (line 1235) | protected TryableSemaphore getFallbackSemaphore() {
    method getExecutionSemaphore (line 1256) | protected TryableSemaphore getExecutionSemaphore() {
    method getFallbackMethodName (line 1283) | @Deprecated
    method isFallbackUserDefined (line 1286) | protected abstract boolean isFallbackUserDefined();
    method getCommandGroup (line 1294) | public HystrixCommandGroupKey getCommandGroup() {
    method getCommandKey (line 1301) | public HystrixCommandKey getCommandKey() {
    method getThreadPoolKey (line 1309) | public HystrixThreadPoolKey getThreadPoolKey() {
    method getCircuitBreaker (line 1313) | HystrixCircuitBreaker getCircuitBreaker() {
    method getMetrics (line 1322) | public HystrixCommandMetrics getMetrics() {
    method getProperties (line 1331) | public HystrixCommandProperties getProperties() {
    class ExecutionHookApplication (line 1341) | private class ExecutionHookApplication implements Operator<R, R> {
      method ExecutionHookApplication (line 1344) | ExecutionHookApplication(HystrixInvokable<R> cmd) {
      method call (line 1348) | @Override
    class FallbackHookApplication (line 1376) | private class FallbackHookApplication implements Operator<R, R> {
      method FallbackHookApplication (line 1379) | FallbackHookApplication(HystrixInvokable<R> cmd) {
      method call (line 1383) | @Override
    class DeprecatedOnRunHookApplication (line 1411) | @Deprecated //separated out to make it cleanly removable
      method DeprecatedOnRunHookApplication (line 1416) | DeprecatedOnRunHookApplication(HystrixInvokable<R> cmd) {
      method call (line 1420) | @Override
    class DeprecatedOnFallbackHookApplication (line 1454) | @Deprecated //separated out to make it cleanly removable
      method DeprecatedOnFallbackHookApplication (line 1459) | DeprecatedOnFallbackHookApplication(HystrixInvokable<R> cmd) {
      method call (line 1463) | @Override
    method wrapWithOnExecutionErrorHook (line 1491) | private Exception wrapWithOnExecutionErrorHook(Throwable t) {
    method wrapWithOnFallbackErrorHook (line 1501) | private Exception wrapWithOnFallbackErrorHook(Throwable t) {
    method wrapWithOnErrorHook (line 1515) | private Exception wrapWithOnErrorHook(FailureType failureType, Throwab...
    method wrapWithOnExecutionEmitHook (line 1525) | private R wrapWithOnExecutionEmitHook(R r) {
    method wrapWithOnFallbackEmitHook (line 1534) | private R wrapWithOnFallbackEmitHook(R r) {
    method wrapWithOnEmitHook (line 1543) | private R wrapWithOnEmitHook(R r) {
    method decomposeException (line 1561) | protected Throwable decomposeException(Exception e) {
    class TryableSemaphoreActual (line 1609) | static class TryableSemaphoreActual implements TryableSemaphore {
      method TryableSemaphoreActual (line 1613) | public TryableSemaphoreActual(HystrixProperty<Integer> numberOfPermi...
      method tryAcquire (line 1617) | @Override
      method release (line 1628) | @Override
      method getNumberOfPermitsUsed (line 1633) | @Override
    class TryableSemaphoreNoOp (line 1640) | static class TryableSemaphoreNoOp implements TryableSemaphore {
      method tryAcquire (line 1644) | @Override
      method release (line 1649) | @Override
      method getNumberOfPermitsUsed (line 1654) | @Override
    type TryableSemaphore (line 1661) | static interface TryableSemaphore {
      method tryAcquire (line 1679) | public abstract boolean tryAcquire();
      method release (line 1695) | public abstract void release();
      method getNumberOfPermitsUsed (line 1697) | public abstract int getNumberOfPermitsUsed();
    method getCacheKey (line 1718) | protected String getCacheKey() {
    method getPublicCacheKey (line 1722) | public String getPublicCacheKey() {
    method isRequestCachingEnabled (line 1726) | protected boolean isRequestCachingEnabled() {
    method getLogMessagePrefix (line 1730) | protected String getLogMessagePrefix() {
    method isCircuitBreakerOpen (line 1751) | public boolean isCircuitBreakerOpen() {
    method isExecutionComplete (line 1760) | public boolean isExecutionComplete() {
    method isExecutedInThread (line 1773) | public boolean isExecutedInThread() {
    method isSuccessfulExecution (line 1782) | public boolean isSuccessfulExecution() {
    method isFailedExecution (line 1791) | public boolean isFailedExecution() {
    method getFailedExecutionException (line 1804) | public Throwable getFailedExecutionException() {
    method getExecutionException (line 1824) | public Throwable getExecutionException() {
    method isResponseFromFallback (line 1834) | public boolean isResponseFromFallback() {
    method isResponseTimedOut (line 1844) | public boolean isResponseTimedOut() {
    method isResponseShortCircuited (line 1854) | public boolean isResponseShortCircuited() {
    method isResponseFromCache (line 1863) | public boolean isResponseFromCache() {
    method isResponseSemaphoreRejected (line 1872) | public boolean isResponseSemaphoreRejected() {
    method isResponseThreadPoolRejected (line 1881) | public boolean isResponseThreadPoolRejected() {
    method isResponseRejected (line 1890) | public boolean isResponseRejected() {
    method getExecutionEvents (line 1901) | public List<HystrixEventType> getExecutionEvents() {
    method getCommandResult (line 1905) | private ExecutionResult getCommandResult() {
    method getNumberEmissions (line 1924) | @Override
    method getNumberFallbackEmissions (line 1933) | @Override
    method getNumberCollapsed (line 1938) | @Override
    method getOriginatingCollapserKey (line 1943) | @Override
    method getExecutionTimeInMilliseconds (line 1953) | public int getExecutionTimeInMilliseconds() {
    method getCommandRunStartTimeInNanos (line 1963) | public long getCommandRunStartTimeInNanos() {
    method getEventCounts (line 1967) | @Override
    method getExceptionFromThrowable (line 1972) | protected Exception getExceptionFromThrowable(Throwable t) {
    class ExecutionHookDeprecationWrapper (line 1983) | private static class ExecutionHookDeprecationWrapper extends HystrixCo...
      method ExecutionHookDeprecationWrapper (line 1987) | ExecutionHookDeprecationWrapper(HystrixCommandExecutionHook actual) {
      method onEmit (line 1991) | @Override
      method onSuccess (line 1996) | @Override
      method onExecutionStart (line 2001) | @Override
      method onExecutionEmit (line 2006) | @Override
      method onExecutionError (line 2011) | @Override
      method onExecutionSuccess (line 2016) | @Override
      method onFallbackEmit (line 2021) | @Override
      method onFallbackSuccess (line 2026) | @Override
      method onRunStart (line 2031) | @Override
      method onRunStart (line 2037) | @Override
      method onRunSuccess (line 2046) | @Override
      method onRunSuccess (line 2052) | @Override
      method onRunError (line 2062) | @Override
      method onRunError (line 2068) | @Override
      method onFallbackStart (line 2078) | @Override
      method onFallbackStart (line 2084) | @Override
      method onFallbackSuccess (line 2093) | @Override
      method onFallbackSuccess (line 2099) | @Override
      method onFallbackError (line 2109) | @Override
      method onFallbackError (line 2115) | @Override
      method onStart (line 2124) | @Override
      method onStart (line 2130) | @Override
      method onComplete (line 2139) | @Override
      method onComplete (line 2145) | @Override
      method onError (line 2155) | @Override
      method onError (line 2161) | @Override
      method onThreadStart (line 2170) | @Override
      method onThreadStart (line 2176) | @Override
      method onThreadComplete (line 2185) | @Override
      method onThreadComplete (line 2191) | @Override
      method onCacheHit (line 2200) | @Override
      method onUnsubscribe (line 2205) | @Override
      method getHystrixCommandFromAbstractIfApplicable (line 2210) | @SuppressWarnings({ "unchecked", "rawtypes" })

FILE: hystrix-core/src/main/java/com/netflix/hystrix/ExecutionResult.java
  class ExecutionResult (line 32) | public class ExecutionResult {
    class EventCounts (line 58) | public static class EventCounts {
      method EventCounts (line 64) | EventCounts() {
      method EventCounts (line 71) | EventCounts(BitSet events, int numEmissions, int numFallbackEmission...
      method EventCounts (line 78) | EventCounts(HystrixEventType... eventTypes) {
      method plus (line 108) | EventCounts plus(HystrixEventType eventType) {
      method plus (line 112) | EventCounts plus(HystrixEventType eventType, int count) {
      method contains (line 137) | public boolean contains(HystrixEventType eventType) {
      method containsAnyOf (line 141) | public boolean containsAnyOf(BitSet other) {
      method getCount (line 145) | public int getCount(HystrixEventType eventType) {
      method equals (line 155) | @Override
      method hashCode (line 169) | @Override
      method toString (line 178) | @Override
    method ExecutionResult (line 189) | private ExecutionResult(EventCounts eventCounts, long startTimestamp, ...
    method from (line 206) | public static ExecutionResult from(HystrixEventType... eventTypes) {
    method didExecutionOccur (line 216) | private static boolean didExecutionOccur(HystrixEventType eventType) {
    method setExecutionOccurred (line 227) | public ExecutionResult setExecutionOccurred() {
    method setExecutionLatency (line 232) | public ExecutionResult setExecutionLatency(int executionLatency) {
    method setException (line 237) | public ExecutionResult setException(Exception e) {
    method setExecutionException (line 242) | public ExecutionResult setExecutionException(Exception executionExcept...
    method setInvocationStartTime (line 247) | public ExecutionResult setInvocationStartTime(long startTimestamp) {
    method setExecutedInThread (line 252) | public ExecutionResult setExecutedInThread() {
    method setNotExecutedInThread (line 257) | public ExecutionResult setNotExecutedInThread() {
    method markCollapsed (line 262) | public ExecutionResult markCollapsed(HystrixCollapserKey collapserKey,...
    method markUserThreadCompletion (line 267) | public ExecutionResult markUserThreadCompletion(long userThreadLatency) {
    method addEvent (line 283) | public ExecutionResult addEvent(HystrixEventType eventType) {
    method addEvent (line 289) | public ExecutionResult addEvent(int executionLatency, HystrixEventType...
    method getEventCounts (line 299) | public EventCounts getEventCounts() {
    method getStartTimestamp (line 303) | public long getStartTimestamp() {
    method getExecutionLatency (line 307) | public int getExecutionLatency() {
    method getUserThreadLatency (line 311) | public int getUserThreadLatency() {
    method getCommandRunStartTimeInNanos (line 315) | public long getCommandRunStartTimeInNanos() {
    method getException (line 319) | public Exception getException() {
    method getExecutionException (line 323) | public Exception getExecutionException() {
    method getCollapserKey (line 327) | public HystrixCollapserKey getCollapserKey() {
    method isResponseSemaphoreRejected (line 331) | public boolean isResponseSemaphoreRejected() {
    method isResponseThreadPoolRejected (line 335) | public boolean isResponseThreadPoolRejected() {
    method isResponseRejected (line 339) | public boolean isResponseRejected() {
    method getOrderedList (line 343) | public List<HystrixEventType> getOrderedList() {
    method isExecutedInThread (line 353) | public boolean isExecutedInThread() {
    method executionOccurred (line 357) | public boolean executionOccurred() {
    method containsTerminalEvent (line 361) | public boolean containsTerminalEvent() {
    method toString (line 365) | @Override

FILE: hystrix-core/src/main/java/com/netflix/hystrix/Hystrix.java
  class Hystrix (line 32) | public class Hystrix {
    method reset (line 42) | public static void reset() {
    method reset (line 59) | public static void reset(long time, TimeUnit unit) {
    method _reset (line 68) | private static void _reset() {
    method initialValue (line 83) | @Override
    method getCurrentThreadExecutingCommand (line 98) | public static HystrixCommandKey getCurrentThreadExecutingCommand() {
    method startCurrentThreadExecutingCommand (line 110) | static Action0 startCurrentThreadExecutingCommand(HystrixCommandKey ke...
    method endCurrentThreadExecutingCommand (line 127) | static void endCurrentThreadExecutingCommand() {
    method endCurrentThreadExecutingCommand (line 131) | private static void endCurrentThreadExecutingCommand(ConcurrentStack<H...
    method getCommandCount (line 144) | static int getCommandCount() {
    class ConcurrentStack (line 152) | private static class ConcurrentStack<E> {
      method push (line 155) | public void push(E item) {
      method pop (line 164) | public E pop() {
      method isEmpty (line 177) | public boolean isEmpty() {
      method size (line 181) | public int size() {
      method peek (line 191) | public E peek() {
      class Node (line 200) | private class Node<E> {
        method Node (line 204) | public Node(E item) {

FILE: hystrix-core/src/main/java/com/netflix/hystrix/HystrixCachedObservable.java
  class HystrixCachedObservable (line 8) | public class HystrixCachedObservable<R> {
    method HystrixCachedObservable (line 13) | protected HystrixCachedObservable(final Observable<R> originalObservab...
    method from (line 36) | public static <R> HystrixCachedObservable<R> from(Observable<R> o, Abs...
    method from (line 40) | public static <R> HystrixCachedObservable<R> from(Observable<R> o) {
    method toObservable (line 44) | public Observable<R> toObservable() {
    method unsubscribe (line 48) | public void unsubscribe() {

FILE: hystrix-core/src/main/java/com/netflix/hystrix/HystrixCircuitBreaker.java
  type HystrixCircuitBreaker (line 32) | public interface HystrixCircuitBreaker {
    method allowRequest (line 41) | boolean allowRequest();
    method isOpen (line 48) | boolean isOpen();
    method markSuccess (line 53) | void markSuccess();
    method markNonSuccess (line 58) | void markNonSuccess();
    method attemptExecution (line 64) | boolean attemptExecution();
    class Factory (line 70) | class Factory {
      method getInstance (line 89) | public static HystrixCircuitBreaker getInstance(HystrixCommandKey ke...
      method getInstance (line 119) | public static HystrixCircuitBreaker getInstance(HystrixCommandKey ke...
      method reset (line 126) | static void reset() {
    class HystrixCircuitBreakerImpl (line 138) | class HystrixCircuitBreakerImpl implements HystrixCircuitBreaker {
      type Status (line 142) | enum Status {
      method HystrixCircuitBreakerImpl (line 150) | protected HystrixCircuitBreakerImpl(HystrixCommandKey key, HystrixCo...
      method subscribeToStream (line 159) | private Subscription subscribeToStream() {
      method markSuccess (line 203) | @Override
      method markNonSuccess (line 218) | @Override
      method isOpen (line 226) | @Override
      method allowRequest (line 237) | @Override
      method isAfterSleepWindow (line 256) | private boolean isAfterSleepWindow() {
      method attemptExecution (line 263) | @Override
    class NoOpCircuitBreaker (line 296) | static class NoOpCircuitBreaker implements HystrixCircuitBreaker {
      method allowRequest (line 298) | @Override
      method isOpen (line 303) | @Override
      method markSuccess (line 308) | @Override
      method markNonSuccess (line 313) | @Override
      method attemptExecution (line 318) | @Override

FILE: hystrix-core/src/main/java/com/netflix/hystrix/HystrixCollapser.java
  class HystrixCollapser (line 65) | public abstract class HystrixCollapser<BatchReturnType, ResponseType, Re...
    type Scope (line 84) | public static enum Scope implements RequestCollapserFactory.Scope {
    method HystrixCollapser (line 91) | protected HystrixCollapser() {
    method HystrixCollapser (line 101) | protected HystrixCollapser(HystrixCollapserKey collapserKey) {
    method HystrixCollapser (line 114) | protected HystrixCollapser(Setter setter) {
    method HystrixCollapser (line 118) | HystrixCollapser(HystrixCollapserKey collapserKey, Scope scope, Collap...
    method HystrixCollapser (line 122) | HystrixCollapser(HystrixCollapserKey collapserKey, Scope scope, Collap...
    method getProperties (line 184) | private HystrixCollapserProperties getProperties() {
    method getCollapserKey (line 193) | public HystrixCollapserKey getCollapserKey() {
    method getScope (line 212) | public Scope getScope() {
    method getMetrics (line 220) | public HystrixCollapserMetrics getMetrics() {
    method getRequestArgument (line 233) | public abstract RequestArgumentType getRequestArgument();
    method createCommand (line 250) | protected abstract HystrixCommand<BatchReturnType> createCommand(Colle...
    method shardRequests (line 267) | protected Collection<Collection<CollapsedRequest<ResponseType, Request...
    method mapResponseToRequests (line 315) | protected abstract void mapResponseToRequests(BatchReturnType batchRes...
    method observe (line 336) | public Observable<ResponseType> observe() {
    method toObservable (line 365) | public Observable<ResponseType> toObservable() {
    method toObservable (line 381) | public Observable<ResponseType> toObservable(Scheduler observeOn) {
    method execute (line 426) | public ResponseType execute() {
    method queue (line 456) | public Future<ResponseType> queue() {
    method getCacheKey (line 473) | protected String getCacheKey() {
    method reset (line 480) | static void reset() {
    method getDefaultNameFromClass (line 484) | private static String getDefaultNameFromClass(@SuppressWarnings("rawty...
    type CollapsedRequest (line 504) | public interface CollapsedRequest<ResponseType, RequestArgumentType> {
      method getArgument (line 510) | RequestArgumentType getArgument();
      method setResponse (line 520) | void setResponse(ResponseType response);
      method emitResponse (line 528) | void emitResponse(ResponseType response);
      method setException (line 537) | void setException(Exception exception);
      method setComplete (line 546) | void setComplete();
    class Setter (line 562) | public static class Setter {
      method Setter (line 567) | private Setter(HystrixCollapserKey collapserKey) {
      method withCollapserKey (line 580) | public static Setter withCollapserKey(HystrixCollapserKey collapserK...
      method andScope (line 591) | public Setter andScope(Scope scope) {
      method andCollapserPropertiesDefaults (line 605) | public Setter andCollapserPropertiesDefaults(HystrixCollapserPropert...

FILE: hystrix-core/src/main/java/com/netflix/hystrix/HystrixCollapserKey.java
  type HystrixCollapserKey (line 25) | public interface HystrixCollapserKey {
    method name (line 32) | public String name();
    class Factory (line 34) | public static class Factory {
      method Factory (line 36) | private Factory() {
      method asKey (line 48) | public static HystrixCollapserKey asKey(String name) {
      class HystrixCollapserKeyDefault (line 56) | private static class HystrixCollapserKeyDefault implements HystrixCo...
        method HystrixCollapserKeyDefault (line 60) | private HystrixCollapserKeyDefault(String name) {
        method name (line 64) | @Override
        method toString (line 69) | @Override

FILE: hystrix-core/src/main/java/com/netflix/hystrix/HystrixCollapserMetrics.java
  class HystrixCollapserMetrics (line 37) | public class HystrixCollapserMetrics extends HystrixMetrics {
    method getInstance (line 54) | public static HystrixCollapserMetrics getInstance(HystrixCollapserKey ...
    method getInstances (line 78) | public static Collection<HystrixCollapserMetrics> getInstances() {
    method call (line 85) | @Override
    method call (line 95) | @Override
    method reset (line 107) | static void reset() {
    method HystrixCollapserMetrics (line 118) | HystrixCollapserMetrics(HystrixCollapserKey key, HystrixCollapserPrope...
    method getCollapserKey (line 133) | public HystrixCollapserKey getCollapserKey() {
    method getProperties (line 137) | public HystrixCollapserProperties getProperties() {
    method getRollingCount (line 141) | public long getRollingCount(HystrixEventType.Collapser collapserEventT...
    method getCumulativeCount (line 145) | public long getCumulativeCount(HystrixEventType.Collapser collapserEve...
    method getCumulativeCount (line 149) | @Override
    method getRollingCount (line 154) | @Override
    method getBatchSizePercentile (line 168) | public int getBatchSizePercentile(double percentile) {
    method getBatchSizeMean (line 172) | public int getBatchSizeMean() {
    method getShardSizePercentile (line 185) | public int getShardSizePercentile(double percentile) {
    method getShardSizeMean (line 190) | public int getShardSizeMean() {
    method markRequestBatched (line 195) | public void markRequestBatched() {
    method markResponseFromCache (line 198) | public void markResponseFromCache() {
    method markBatch (line 202) | public void markBatch(int batchSize) {
    method markShards (line 206) | public void markShards(int numShards) {

FILE: hystrix-core/src/main/java/com/netflix/hystrix/HystrixCollapserProperties.java
  class HystrixCollapserProperties (line 32) | public abstract class HystrixCollapserProperties {
    method HystrixCollapserProperties (line 55) | protected HystrixCollapserProperties(HystrixCollapserKey collapserKey) {
    method HystrixCollapserProperties (line 59) | protected HystrixCollapserProperties(HystrixCollapserKey collapserKey,...
    method HystrixCollapserProperties (line 63) | protected HystrixCollapserProperties(HystrixCollapserKey key, Setter b...
    method getProperty (line 75) | private static HystrixProperty<Integer> getProperty(String propertyPre...
    method getProperty (line 84) | private static HystrixProperty<Boolean> getProperty(String propertyPre...
    method requestCachingEnabled (line 98) | @Deprecated
    method requestCacheEnabled (line 108) | public HystrixProperty<Boolean> requestCacheEnabled() {
    method maxRequestsInBatch (line 117) | public HystrixProperty<Integer> maxRequestsInBatch() {
    method timerDelayInMilliseconds (line 126) | public HystrixProperty<Integer> timerDelayInMilliseconds() {
    method metricsRollingStatisticalWindowInMilliseconds (line 135) | public HystrixProperty<Integer> metricsRollingStatisticalWindowInMilli...
    method metricsRollingStatisticalWindowBuckets (line 144) | public HystrixProperty<Integer> metricsRollingStatisticalWindowBuckets...
    method metricsRollingPercentileEnabled (line 153) | public HystrixProperty<Boolean> metricsRollingPercentileEnabled() {
    method metricsRollingPercentileWindowInMilliseconds (line 162) | public HystrixProperty<Integer> metricsRollingPercentileWindowInMillis...
    method metricsRollingPercentileWindowBuckets (line 171) | public HystrixProperty<Integer> metricsRollingPercentileWindowBuckets() {
    method metricsRollingPercentileBucketSize (line 180) | public HystrixProperty<Integer> metricsRollingPercentileBucketSize() {
    method Setter (line 187) | public static Setter Setter() {
      method Setter (line 227) | private Setter() {
      method getCollapsingEnabled (line 233) | @Deprecated
      method getMaxRequestsInBatch (line 238) | public Integer getMaxRequestsInBatch() {
      method getTimerDelayInMilliseconds (line 242) | public Integer getTimerDelayInMilliseconds() {
      method getRequestCacheEnabled (line 246) | public Boolean getRequestCacheEnabled() {
      method getMetricsRollingStatisticalWindowInMilliseconds (line 250) | public Integer getMetricsRollingStatisticalWindowInMilliseconds() {
      method getMetricsRollingStatisticalWindowBuckets (line 254) | public Integer getMetricsRollingStatisticalWindowBuckets() {
      method getMet
Condensed preview — 470 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,875K chars).
[
  {
    "path": ".github/workflows/nebula-ci.yml",
    "chars": 1324,
    "preview": "name: \"CI\"\non:\n  push:\n    branches:\n      - '*'\n    tags-ignore:\n      - '*'\n  pull_request:\n\njobs:\n  build:\n    runs-o"
  },
  {
    "path": ".github/workflows/nebula-publish.yml",
    "chars": 2001,
    "preview": "name: \"Publish candidate/release to NetflixOSS and Maven Central\"\non:\n  push:\n    tags:\n      - v*.*.*\n      - v*.*.*-rc"
  },
  {
    "path": ".github/workflows/nebula-snapshot.yml",
    "chars": 1145,
    "preview": "name: \"Publish snapshot to NetflixOSS and Maven Central\"\n\non:\n  push:\n    branches:\n      - master\n\njobs:\n  build:\n    r"
  },
  {
    "path": ".gitignore",
    "chars": 751,
    "preview": "# Compiled source #\n###################\n*.com\n*.class\n*.dll\n*.exe\n*.o\n*.so\n\n# Packages #\n############\n# it's better to u"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 94262,
    "preview": "# Hystrix Releases #\n\n### Version 1.5.13 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix."
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1184,
    "preview": "# Contributing to Hystrix\n\nIf you would like to contribute code you can do so through GitHub by forking the repository a"
  },
  {
    "path": "LICENSE-2.0.txt",
    "chars": 11344,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "OSSMETADATA",
    "chars": 25,
    "preview": "osslifecycle=maintenance\n"
  },
  {
    "path": "README.md",
    "chars": 11162,
    "preview": "<img src=\"https://netflix.github.io/Hystrix/images/hystrix-logo-tagline-850.png\">\n\n# Hystrix: Latency and Fault Toleranc"
  },
  {
    "path": "build.gradle",
    "chars": 376,
    "preview": "plugins {\n    id \"com.netflix.nebula.netflixoss\" version \"11.3.1\"\n    id \"me.champeau.jmh\" version \"0.7.1\"\n}\n\nallproject"
  },
  {
    "path": "codequality/checkstyle.xml",
    "chars": 7664,
    "preview": "<?xml version=\"1.0\"?>\n<!DOCTYPE module PUBLIC\n    \"-//Puppy Crawl//DTD Check Configuration 1.2//EN\"\n    \"http://www.pupp"
  },
  {
    "path": "gradle/javadocStyleSheet.css",
    "chars": 2171,
    "preview": "# originally from http://sensemaya.org/files/stylesheet.css and then modified\n# http://sensemaya.org/maya/2009/07/10/mak"
  },
  {
    "path": "gradle/wrapper/gradle-wrapper.properties",
    "chars": 233,
    "preview": "#Mon Jun 19 21:27:38 CEST 2017\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER"
  },
  {
    "path": "gradle.properties",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "gradlew",
    "chars": 5296,
    "preview": "#!/usr/bin/env sh\n\n##############################################################################\n##\n##  Gradle start up"
  },
  {
    "path": "gradlew.bat",
    "chars": 2260,
    "preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
  },
  {
    "path": "hystrix-contrib/README.md",
    "chars": 1037,
    "preview": "## hystrix-contrib\n\nThis is the parent of all \"contrib\" submodules to Hystrix. \n\nExamples of what makes sense as a contr"
  },
  {
    "path": "hystrix-contrib/hystrix-clj/README.md",
    "chars": 1293,
    "preview": "# Hystrix Clojure Bindings\n\nThis module contains idiomatic Clojure bindings for Hystrix.\n\n# Binaries\n\nBinaries and depen"
  },
  {
    "path": "hystrix-contrib/hystrix-clj/build.gradle",
    "chars": 1664,
    "preview": "buildscript {\n    repositories {\n        jcenter()\n        maven{\n          name 'clojars'\n          url 'https://clojar"
  },
  {
    "path": "hystrix-contrib/hystrix-clj/src/main/clojure/com/netflix/hystrix/core.clj",
    "chars": 29337,
    "preview": ";;\n;; Copyright 2015 Netflix, Inc.\n;;\n;; Licensed under the Apache License, Version 2.0 (the \"License\");\n;; you may not "
  },
  {
    "path": "hystrix-contrib/hystrix-clj/src/test/clojure/com/netflix/hystrix/core_test.clj",
    "chars": 17359,
    "preview": ";\n; Copyright 2016 Netflix, Inc.\n;\n; Licensed under the Apache License, Version 2.0 (the \"License\");\n; you may not use t"
  },
  {
    "path": "hystrix-contrib/hystrix-codahale-metrics-publisher/README.md",
    "chars": 1263,
    "preview": "# hystrix-codahale-metrics-publisher\n\nThis is an implementation of [HystrixMetricsPublisher](http://netflix.github.com/H"
  },
  {
    "path": "hystrix-contrib/hystrix-codahale-metrics-publisher/build.gradle",
    "chars": 202,
    "preview": "dependencies {\n    api project(':hystrix-core')\n    api 'io.dropwizard.metrics:metrics-core:3.2.2'\n    testImplementatio"
  },
  {
    "path": "hystrix-contrib/hystrix-codahale-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/codahalemetricspublisher/ConfigurableCodaHaleMetricFilter.java",
    "chars": 2484,
    "preview": "/**\n * Copyright 2013 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-codahale-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/codahalemetricspublisher/HystrixCodaHaleMetricsPublisher.java",
    "chars": 3265,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-codahale-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/codahalemetricspublisher/HystrixCodaHaleMetricsPublisherCollapser.java",
    "chars": 11422,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-codahale-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/codahalemetricspublisher/HystrixCodaHaleMetricsPublisherCommand.java",
    "chars": 25111,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-codahale-metrics-publisher/src/main/java/com/netflix/hystrix/contrib/codahalemetricspublisher/HystrixCodaHaleMetricsPublisherThreadPool.java",
    "chars": 7545,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-codahale-metrics-publisher/src/test/java/com/netflix/hystrix/contrib/codahalemetricspublisher/ConfigurableCodaHaleMetricFilterTest.java",
    "chars": 3923,
    "preview": "/**\n * Copyright 2013 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-codahale-metrics-publisher/src/test/java/com/netflix/hystrix/contrib/codahalemetricspublisher/HystrixCodaHaleMetricsPublisherCommandTest.java",
    "chars": 1902,
    "preview": "package com.netflix.hystrix.contrib.codahalemetricspublisher;\n\nimport com.codahale.metrics.MetricRegistry;\nimport com.ne"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/README.md",
    "chars": 35775,
    "preview": "# hystrix-javanica\n\nJava language has a great advantages over other languages such as reflection and annotations.\nAll mo"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/build.gradle",
    "chars": 4059,
    "preview": "configurations {\n    ajtools\n    ajcTestImplementation.extendsFrom testCompileClasspath\n    ajcTestRuntimeOnly.extendsFr"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/cache/CacheTest.java",
    "chars": 1147,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/collapser/CollapserTest.java",
    "chars": 1092,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/command/CommandTest.java",
    "chars": 1393,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/configuration/collapser/CollapserPropertiesTest.java",
    "chars": 1151,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/configuration/command/CommandPropertiesTest.java",
    "chars": 1145,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/error/ErrorPropagationTest.java",
    "chars": 1107,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/error/ObservableErrorPropagationTest.java",
    "chars": 1226,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/fallback/CommandFallbackTest.java",
    "chars": 1109,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/ajcTest/java/com/netflix/hystrix/contrib/javanica/test/aspectj/observable/ObservableTest.java",
    "chars": 1098,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/ajcTest/resources/dummy.txt",
    "chars": 605,
    "preview": "====\n    Copyright 2016 Netflix, Inc.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may n"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/ajcTest/resources/log4j.properties",
    "chars": 948,
    "preview": "#\n# Copyright 2016 Netflix, Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use t"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/annotation/DefaultProperties.java",
    "chars": 3299,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/annotation/HystrixCollapser.java",
    "chars": 3136,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/annotation/HystrixCommand.java",
    "chars": 4341,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/annotation/HystrixException.java",
    "chars": 147,
    "preview": "package com.netflix.hystrix.contrib.javanica.annotation;\n\n/**\n * Created by Mike Cowan\n */\npublic enum HystrixException "
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/annotation/HystrixProperty.java",
    "chars": 1272,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/annotation/ObservableExecutionMode.java",
    "chars": 1397,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/aop/aspectj/HystrixCacheAspect.java",
    "chars": 3021,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/aop/aspectj/HystrixCommandAspect.java",
    "chars": 17971,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/aop/aspectj/WeavingMode.java",
    "chars": 752,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/CacheInvocationContext.java",
    "chars": 6823,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/CacheInvocationContextFactory.java",
    "chars": 4311,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/CacheInvocationParameter.java",
    "chars": 3348,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/DefaultHystrixGeneratedCacheKey.java",
    "chars": 1658,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/HystrixCacheKeyGenerator.java",
    "chars": 3987,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/HystrixGeneratedCacheKey.java",
    "chars": 1305,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/HystrixRequestCacheManager.java",
    "chars": 2127,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/annotation/CacheKey.java",
    "chars": 1821,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/annotation/CacheRemove.java",
    "chars": 2083,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/cache/annotation/CacheResult.java",
    "chars": 1974,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/collapser/CommandCollapser.java",
    "chars": 3302,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/AbstractHystrixCommand.java",
    "chars": 8696,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/AsyncResult.java",
    "chars": 2092,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/BatchHystrixCommand.java",
    "chars": 3657,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/ClosureCommand.java",
    "chars": 940,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/CommandAction.java",
    "chars": 1843,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/CommandActions.java",
    "chars": 1907,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/CommandExecutionAction.java",
    "chars": 2193,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/CommandExecutor.java",
    "chars": 3873,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/ExecutionType.java",
    "chars": 1986,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/GenericCommand.java",
    "chars": 3538,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/GenericObservableCommand.java",
    "chars": 7240,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/GenericSetterBuilder.java",
    "chars": 7302,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/HystrixCommandBuilder.java",
    "chars": 7171,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/HystrixCommandBuilderFactory.java",
    "chars": 7732,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/HystrixCommandFactory.java",
    "chars": 2057,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/LazyCommandExecutionAction.java",
    "chars": 4770,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/MetaHolder.java",
    "chars": 17056,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/MethodExecutionAction.java",
    "chars": 4799,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/closure/AbstractClosureFactory.java",
    "chars": 3323,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/closure/AsyncClosureFactory.java",
    "chars": 1449,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/closure/Closure.java",
    "chars": 1337,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/command/closure/ClosureFactory.java",
    "chars": 1346,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/conf/HystrixPropertiesManager.java",
    "chars": 26427,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/exception/CommandActionExecutionException.java",
    "chars": 1152,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/exception/ExceptionUtils.java",
    "chars": 1909,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/exception/FallbackDefinitionException.java",
    "chars": 1059,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/exception/FallbackInvocationException.java",
    "chars": 1036,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/exception/HystrixCacheKeyGenerationException.java",
    "chars": 1202,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/exception/HystrixCachingException.java",
    "chars": 1134,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/exception/HystrixPropertyException.java",
    "chars": 992,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/AopUtils.java",
    "chars": 7924,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/CommonUtils.java",
    "chars": 1674,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/EnvUtils.java",
    "chars": 1486,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/FallbackMethod.java",
    "chars": 18642,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * <p>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/FutureDecorator.java",
    "chars": 1848,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/MethodProvider.java",
    "chars": 11870,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/TypeHelper.java",
    "chars": 3768,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/java/com/netflix/hystrix/contrib/javanica/utils/ajc/AjcUtils.java",
    "chars": 4113,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/main/resources/dummy.txt",
    "chars": 605,
    "preview": "====\n    Copyright 2016 Netflix, Inc.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may n"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/cache/CacheInvocationContextFactoryTest.java",
    "chars": 7091,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/cache/CacheInvocationParameterTest.java",
    "chars": 2233,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/cache/HystrixCacheKeyGeneratorTest.java",
    "chars": 4923,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/command/ExecutionTypeTest.java",
    "chars": 2969,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/BasicHystrixTest.java",
    "chars": 2151,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/CommonUtils.java",
    "chars": 3311,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/cache/BasicCacheTest.java",
    "chars": 11796,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/collapser/BasicCollapserTest.java",
    "chars": 14911,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/command/BasicCommandTest.java",
    "chars": 7386,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/configuration/collapser/BasicCollapserPropertiesTest.java",
    "chars": 3700,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/configuration/command/BasicCommandDefaultPropertiesTest.java",
    "chars": 5401,
    "preview": "package com.netflix.hystrix.contrib.javanica.test.common.configuration.command;\n\nimport com.netflix.hystrix.HystrixInvok"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/configuration/command/BasicCommandPropertiesTest.java",
    "chars": 14692,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/configuration/fallback/BasicFallbackDefaultPropertiesTest.java",
    "chars": 6962,
    "preview": "package com.netflix.hystrix.contrib.javanica.test.common.configuration.fallback;\n\nimport com.netflix.hystrix.HystrixThre"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/domain/Domain.java",
    "chars": 689,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/domain/Profile.java",
    "chars": 893,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/domain/User.java",
    "chars": 2262,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/error/BasicDefaultIgnoreExceptionsTest.java",
    "chars": 5643,
    "preview": "package com.netflix.hystrix.contrib.javanica.test.common.error;\n\nimport com.netflix.hystrix.contrib.javanica.annotation."
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/error/BasicDefaultRaiseHystrixExceptionsTest.java",
    "chars": 6796,
    "preview": "package com.netflix.hystrix.contrib.javanica.test.common.error;\n\nimport org.junit.Before;\nimport org.junit.Ignore;\nimpor"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/error/BasicErrorPropagationTest.java",
    "chars": 16910,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/error/BasicObservableErrorPropagationTest.java",
    "chars": 10078,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/fallback/BasicCommandFallbackTest.java",
    "chars": 20526,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/fallback/BasicDefaultFallbackTest.java",
    "chars": 7572,
    "preview": "package com.netflix.hystrix.contrib.javanica.test.common.fallback;\n\nimport com.netflix.hystrix.HystrixEventType;\nimport "
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/fallback/BasicGenericFallbackTest.java",
    "chars": 14081,
    "preview": "package com.netflix.hystrix.contrib.javanica.test.common.fallback;\n\nimport com.netflix.hystrix.HystrixEventType;\nimport "
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/common/observable/BasicObservableTest.java",
    "chars": 14522,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/cache/CacheTest.java",
    "chars": 2209,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/collapser/CollapserTest.java",
    "chars": 1915,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/command/CommandTest.java",
    "chars": 2397,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/command/cglib/CommandCGlibProxyTest.java",
    "chars": 1185,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/command/jdk/CommandJdkProxyTest.java",
    "chars": 1178,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/conf/AopCglibConfig.java",
    "chars": 984,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/conf/AopJdkConfig.java",
    "chars": 957,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/conf/AopLoadTimeWeavingConfig.java",
    "chars": 1124,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/conf/SpringApplicationContext.java",
    "chars": 1150,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/configuration/collapser/CollapserPropertiesTest.java",
    "chars": 1830,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/configuration/command/CommandDefaultPropertiesTest.java",
    "chars": 1319,
    "preview": "package com.netflix.hystrix.contrib.javanica.test.spring.configuration.command;\n\nimport com.netflix.hystrix.contrib.java"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/configuration/command/CommandPropertiesTest.java",
    "chars": 1798,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/configuration/fallback/FallbackDefaultPropertiesTest.java",
    "chars": 1204,
    "preview": "package com.netflix.hystrix.contrib.javanica.test.spring.configuration.fallback;\n\nimport com.netflix.hystrix.contrib.jav"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/error/DefaultIgnoreExceptionsTest.java",
    "chars": 1318,
    "preview": "package com.netflix.hystrix.contrib.javanica.test.spring.error;\n\nimport com.netflix.hystrix.contrib.javanica.test.common"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/error/DefaultRaiseHystrixExceptionsTest.java",
    "chars": 1377,
    "preview": "package com.netflix.hystrix.contrib.javanica.test.spring.error;\n\nimport org.junit.runner.RunWith;\nimport org.springframe"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/error/ErrorPropagationTest.java",
    "chars": 1909,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/error/ObservableErrorPropagationTest.java",
    "chars": 1919,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/fallback/CommandFallbackTest.java",
    "chars": 1875,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/fallback/DefaultFallbackTest.java",
    "chars": 1678,
    "preview": "package com.netflix.hystrix.contrib.javanica.test.spring.fallback;\n\nimport com.netflix.hystrix.contrib.javanica.test.com"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/fallback/GenericFallbackTest.java",
    "chars": 931,
    "preview": "package com.netflix.hystrix.contrib.javanica.test.spring.fallback;\n\nimport com.netflix.hystrix.contrib.javanica.test.com"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/fallback/InheritedFallbackTest.java",
    "chars": 1267,
    "preview": "package com.netflix.hystrix.contrib.javanica.test.spring.fallback;\n\nimport com.netflix.hystrix.contrib.javanica.test.com"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/test/spring/observable/ObservableTest.java",
    "chars": 1873,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/FallbackMethodTest.java",
    "chars": 4236,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/FallbackMethodValidationTest.java",
    "chars": 8870,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/GetMethodTest.java",
    "chars": 1450,
    "preview": "package com.netflix.hystrix.contrib.javanica.util;\n\nimport com.google.common.base.Optional;\nimport com.netflix.hystrix.c"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/bridge/Child.java",
    "chars": 729,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/bridge/GenericInterface.java",
    "chars": 770,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/bridge/GenericInterfaceImpl.java",
    "chars": 971,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/bridge/Parent.java",
    "chars": 682,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/bridge/SubChild.java",
    "chars": 731,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/java/com/netflix/hystrix/contrib/javanica/util/bridge/UnbridgeMethodTest.java",
    "chars": 2250,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/resources/dummy.txt",
    "chars": 605,
    "preview": "====\n    Copyright 2016 Netflix, Inc.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may n"
  },
  {
    "path": "hystrix-contrib/hystrix-javanica/src/test/resources/log4j.properties",
    "chars": 963,
    "preview": "#\n# Copyright 2016 Netflix, Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use t"
  },
  {
    "path": "hystrix-contrib/hystrix-junit/build.gradle",
    "chars": 73,
    "preview": "dependencies {\n  api project(':hystrix-core')\n  api \"junit:junit:4.11\"\n}\n"
  },
  {
    "path": "hystrix-contrib/hystrix-junit/src/main/java/com/hystrix/junit/HystrixRequestContextRule.java",
    "chars": 1612,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-junit/src/test/java/com/hystrix/junit/HystrixRequestContextRuleTest.java",
    "chars": 638,
    "preview": "package com.hystrix.junit;\n\nimport org.hamcrest.CoreMatchers;\nimport org.hamcrest.MatcherAssert;\nimport org.junit.Rule;\n"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/README.md",
    "chars": 7650,
    "preview": "# hystrix-metrics-event-stream\n\nThis module exposes metrics in a [text/event-stream](https://developer.mozilla.org/en-US"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/build.gradle",
    "chars": 304,
    "preview": "dependencies {\n    api project(':hystrix-core')\n\timplementation project(':hystrix-serialization')\n    compileOnly 'javax"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/metrics/eventstream/HystrixMetricsPoller.java",
    "chars": 27715,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/metrics/eventstream/HystrixMetricsStreamServlet.java",
    "chars": 3425,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/requests/stream/HystrixRequestEventsJsonStream.java",
    "chars": 4830,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/requests/stream/HystrixRequestEventsSseServlet.java",
    "chars": 2771,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/sample/stream/HystrixConfigSseServlet.java",
    "chars": 3271,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/sample/stream/HystrixConfigurationJsonStream.java",
    "chars": 11564,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/sample/stream/HystrixSampleSseServlet.java",
    "chars": 8466,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/sample/stream/HystrixUtilizationJsonStream.java",
    "chars": 6077,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * <p/>\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you ma"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/src/main/java/com/netflix/hystrix/contrib/sample/stream/HystrixUtilizationSseServlet.java",
    "chars": 3317,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/src/test/java/com/netflix/hystrix/contrib/metrics/eventstream/HystrixMetricsPollerTest.java",
    "chars": 2895,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/src/test/java/com/netflix/hystrix/contrib/metrics/eventstream/HystrixMetricsStreamServletUnitTest.java",
    "chars": 2589,
    "preview": "/**\n * Copyright 2015 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/src/test/java/com/netflix/hystrix/contrib/sample/stream/HystrixConfigSseServletTest.java",
    "chars": 11240,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream/src/test/java/com/netflix/hystrix/contrib/sample/stream/HystrixSampleSseServletTest.java",
    "chars": 6432,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/README.md",
    "chars": 5227,
    "preview": "# hystrix-metrics-event-stream-jaxrs\n\nThis module is a JAX-RS implementation of [hystrix-metrics-event-stream](https://g"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/build.gradle",
    "chars": 390,
    "preview": "dependencies {\n    api project(':hystrix-core')\n\timplementation project(':hystrix-serialization')\n    compileOnly 'javax"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/HystrixStream.java",
    "chars": 1469,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/HystrixStreamFeature.java",
    "chars": 1528,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/HystrixStreamingOutputProvider.java",
    "chars": 3189,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/controller/AbstractHystrixStreamController.java",
    "chars": 3334,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/controller/HystrixConfigSseController.java",
    "chars": 2519,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/controller/HystrixMetricsStreamController.java",
    "chars": 2553,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/controller/HystrixRequestEventsSseController.java",
    "chars": 2530,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/main/java/com/netflix/hystrix/contrib/metrics/controller/HystrixUtilizationSseController.java",
    "chars": 2535,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/test/java/com/netflix/hystrix/contrib/metrics/controller/HystricsMetricsControllerTest.java",
    "chars": 6361,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/test/java/com/netflix/hystrix/contrib/metrics/controller/HystrixConfigControllerTest.java",
    "chars": 967,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/test/java/com/netflix/hystrix/contrib/metrics/controller/HystrixUtilizationControllerTest.java",
    "chars": 981,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/test/java/com/netflix/hystrix/contrib/metrics/controller/StreamingOutputProviderTest.java",
    "chars": 7422,
    "preview": "/**\n * Copyright 2016 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  },
  {
    "path": "hystrix-contrib/hystrix-metrics-event-stream-jaxrs/src/test/resources/test.properties",
    "chars": 201,
    "preview": "hystrix.stream.utilization.intervalInMilliseconds=10\nhystrix.stream.dashboard.intervalInMilliseconds=10\nhystrix.stream.c"
  },
  {
    "path": "hystrix-contrib/hystrix-network-auditor-agent/README.md",
    "chars": 3544,
    "preview": "# Hystrix Network Auditor Agent\n\nOriginal Issue: https://github.com/Netflix/Hystrix/issues/116\n\nThis is a [Java Agent](h"
  },
  {
    "path": "hystrix-contrib/hystrix-network-auditor-agent/build.gradle",
    "chars": 720,
    "preview": "dependencies {\n    api 'org.javassist:javassist:3.19+'\n\n    jar {\n        // make a fatjar otherwise it's painful gettin"
  },
  {
    "path": "hystrix-contrib/hystrix-network-auditor-agent/src/main/java/com/netflix/hystrix/contrib/networkauditor/HystrixNetworkAuditorAgent.java",
    "chars": 2039,
    "preview": "/**\n * Copyright 2013 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-network-auditor-agent/src/main/java/com/netflix/hystrix/contrib/networkauditor/HystrixNetworkAuditorEventListener.java",
    "chars": 2029,
    "preview": "/**\n * Copyright 2013 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-network-auditor-agent/src/main/java/com/netflix/hystrix/contrib/networkauditor/NetworkClassTransform.java",
    "chars": 4898,
    "preview": "/**\n * Copyright 2013 Netflix, Inc.\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may no"
  },
  {
    "path": "hystrix-contrib/hystrix-request-servlet/README.md",
    "chars": 4114,
    "preview": "# Hystrix Request Servlet Filters\n\nThis module contains functional examples for a J2EE/Servlet environment that initiali"
  },
  {
    "path": "hystrix-contrib/hystrix-request-servlet/build.gradle",
    "chars": 98,
    "preview": "dependencies {\n    api project(':hystrix-core')\n    compileOnly 'javax.servlet:servlet-api:2.5'\n}\n"
  },
  {
    "path": "hystrix-contrib/hystrix-request-servlet/src/main/java/com/netflix/hystrix/contrib/requestservlet/HystrixRequestContextServletFilter.java",
    "chars": 2207,
    "preview": "/**\n * Copyright 2012 Netflix, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not"
  }
]

// ... and 270 more files (download for full content)

About this extraction

This page contains the full source code of the Netflix/Hystrix GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 470 files (3.5 MB), approximately 963.0k tokens, and a symbol index with 5261 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!