master fb2079c338db cached
710 files
2.6 MB
731.3k tokens
3280 symbols
1 requests
Download .txt
Showing preview only (2,913K chars total). Download the full file or copy to clipboard to get everything.
Repository: dyc87112/SpringCloud-Learning
Branch: master
Commit: fb2079c338db
Files: 710
Total size: 2.6 MB

Directory structure:
gitextract__j33z0th/

├── .gitignore
├── 1-Brixton版教程示例/
│   ├── Chapter1-1-1/
│   │   ├── compute-service/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── com/
│   │   │       │   │       └── didispace/
│   │   │       │   │           ├── ComputeServiceApplication.java
│   │   │       │   │           └── web/
│   │   │       │   │               └── ComputeController.java
│   │   │       │   └── resources/
│   │   │       │       └── application.properties
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── didispace/
│   │   │                       └── ApplicationTests.java
│   │   └── eureka-server/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── didispace/
│   │               │           └── Application.java
│   │               └── resources/
│   │                   └── application.properties
│   ├── Chapter1-1-2/
│   │   ├── eureka-feign/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           ├── FeignApplication.java
│   │   │           │           ├── service/
│   │   │           │           │   └── ComputeClient.java
│   │   │           │           └── web/
│   │   │           │               └── ConsumerController.java
│   │   │           └── resources/
│   │   │               └── application.properties
│   │   └── eureka-ribbon/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── didispace/
│   │               │           ├── RibbonApplication.java
│   │               │           └── web/
│   │               │               └── ConsumerController.java
│   │               └── resources/
│   │                   └── application.properties
│   ├── Chapter1-1-3/
│   │   ├── compute-service/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── com/
│   │   │       │   │       └── didispace/
│   │   │       │   │           ├── ComputeServiceApplication.java
│   │   │       │   │           └── web/
│   │   │       │   │               └── ComputeController.java
│   │   │       │   └── resources/
│   │   │       │       └── application.properties
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── didispace/
│   │   │                       └── ApplicationTests.java
│   │   ├── eureka-feign/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── didispace/
│   │   │                       ├── FeignApplication.java
│   │   │                       ├── service/
│   │   │                       │   ├── ComputeClient.java
│   │   │                       │   └── ComputeClientHystrix.java
│   │   │                       └── web/
│   │   │                           └── ConsumerController.java
│   │   ├── eureka-ribbon/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── didispace/
│   │   │                       ├── RibbonApplication.java
│   │   │                       ├── service/
│   │   │                       │   └── ComputeService.java
│   │   │                       └── web/
│   │   │                           └── ConsumerController.java
│   │   └── eureka-server/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── didispace/
│   │               │           └── Application.java
│   │               └── resources/
│   │                   └── application.properties
│   ├── Chapter1-1-4/
│   │   ├── config-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           ├── Application.java
│   │   │           │           └── web/
│   │   │           │               └── TestController.java
│   │   │           └── resources/
│   │   │               └── bootstrap.properties
│   │   ├── config-repo/
│   │   │   ├── didispace-dev.properties
│   │   │   ├── didispace-prod.properties
│   │   │   ├── didispace-test.properties
│   │   │   └── didispace.properties
│   │   └── config-server/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── didispace/
│   │               │           └── Application.java
│   │               └── resources/
│   │                   ├── application.properties
│   │                   ├── didispace-dev.properties
│   │                   ├── didispace-prod.properties
│   │                   ├── didispace-test.properties
│   │                   └── didispace.properties
│   ├── Chapter1-1-5/
│   │   ├── api-gateway/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           ├── Application.java
│   │   │           │           └── filter/
│   │   │           │               └── AccessFilter.java
│   │   │           └── resources/
│   │   │               └── application.properties
│   │   ├── eureka-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           └── Application.java
│   │   │           └── resources/
│   │   │               └── application.properties
│   │   ├── service-A/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── com/
│   │   │       │   │       └── didispace/
│   │   │       │   │           ├── ComputeServiceApplication.java
│   │   │       │   │           └── web/
│   │   │       │   │               └── ComputeController.java
│   │   │       │   └── resources/
│   │   │       │       └── application.properties
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── didispace/
│   │   │                       └── ApplicationTests.java
│   │   └── service-B/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── com/
│   │           │   │       └── didispace/
│   │           │   │           ├── ComputeServiceApplication.java
│   │           │   │           └── web/
│   │           │   │               └── ComputeController.java
│   │           │   └── resources/
│   │           │       └── application.properties
│   │           └── test/
│   │               └── java/
│   │                   └── com/
│   │                       └── didispace/
│   │                           └── ApplicationTests.java
│   ├── Chapter1-1-6/
│   │   ├── compute-service/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── com/
│   │   │       │   │       └── didispace/
│   │   │       │   │           ├── ComputeServiceApplication.java
│   │   │       │   │           └── web/
│   │   │       │   │               └── ComputeController.java
│   │   │       │   └── resources/
│   │   │       │       └── application.properties
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── didispace/
│   │   │                       └── ApplicationTests.java
│   │   └── eureka-server/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── didispace/
│   │               │           └── Application.java
│   │               └── resources/
│   │                   ├── application-peer1.properties
│   │                   └── application-peer2.properties
│   ├── Chapter1-1-7/
│   │   ├── config-client-eureka/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           ├── Application.java
│   │   │           │           └── web/
│   │   │           │               └── TestController.java
│   │   │           └── resources/
│   │   │               └── bootstrap.properties
│   │   ├── config-client-eureka-kafka/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           ├── Application.java
│   │   │           │           └── web/
│   │   │           │               └── TestController.java
│   │   │           └── resources/
│   │   │               └── bootstrap.properties
│   │   ├── config-repo/
│   │   │   ├── didispace-dev.properties
│   │   │   ├── didispace-prod.properties
│   │   │   ├── didispace-test.properties
│   │   │   └── didispace.properties
│   │   ├── config-server-eureka/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           └── Application.java
│   │   │           └── resources/
│   │   │               ├── application.properties
│   │   │               ├── didispace-dev.properties
│   │   │               ├── didispace-prod.properties
│   │   │               ├── didispace-test.properties
│   │   │               └── didispace.properties
│   │   └── config-server-eureka-kafka/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── didispace/
│   │               │           └── Application.java
│   │               └── resources/
│   │                   ├── application.properties
│   │                   ├── didispace-dev.properties
│   │                   ├── didispace-prod.properties
│   │                   ├── didispace-test.properties
│   │                   └── didispace.properties
│   ├── Chapter1-1-8/
│   │   ├── config-client-eureka/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           ├── Application.java
│   │   │           │           └── web/
│   │   │           │               └── TestController.java
│   │   │           └── resources/
│   │   │               └── bootstrap.properties
│   │   ├── config-repo/
│   │   │   ├── didispace-dev.properties
│   │   │   ├── didispace-prod.properties
│   │   │   ├── didispace-test.properties
│   │   │   └── didispace.properties
│   │   └── config-server-eureka/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── didispace/
│   │               │           └── Application.java
│   │               └── resources/
│   │                   ├── application.properties
│   │                   ├── didispace-dev.properties
│   │                   ├── didispace-prod.properties
│   │                   ├── didispace-test.properties
│   │                   └── didispace.properties
│   └── README.md
├── 2-Dalston版教程示例/
│   ├── README.md
│   ├── api-gateway/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── Application.java
│   │           └── resources/
│   │               └── application.yaml
│   ├── api-gateway-with-eureka/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── AccessFilter.java
│   │           │           └── Application.java
│   │           └── resources/
│   │               └── application.yaml
│   ├── config-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── Application.java
│   │           └── resources/
│   │               └── bootstrap.yml
│   ├── config-server-git/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── Application.java
│   │           └── resources/
│   │               └── application.yml
│   ├── consul-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── consul-consumer/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-consumer/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-consumer-feign/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           ├── DcClient.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-consumer-feign-hystrix/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           ├── DcClient.java
│   │           │           ├── DcClientFallback.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-consumer-ribbon/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-consumer-ribbon-hystrix/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-feign-api/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── com/
│   │                   └── didispace/
│   │                       └── api/
│   │                           └── HelloService.java
│   ├── eureka-feign-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── api/
│   │           │               └── impl/
│   │           │                   └── Application.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-feign-consumer/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── api/
│   │           │               └── consumer/
│   │           │                   └── Application.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-feign-upload-client/
│   │   ├── pom.xml
│   │   ├── src/
│   │   │   ├── main/
│   │   │   │   ├── java/
│   │   │   │   │   └── com/
│   │   │   │   │       └── didispace/
│   │   │   │   │           └── api/
│   │   │   │   │               └── consumer/
│   │   │   │   │                   ├── Application.java
│   │   │   │   │                   └── UploadService.java
│   │   │   │   └── resources/
│   │   │   │       └── application.properties
│   │   │   └── test/
│   │   │       └── java/
│   │   │           └── com/
│   │   │               └── didispace/
│   │   │                   └── api/
│   │   │                       └── consumer/
│   │   │                           └── UploadTester.java
│   │   └── upload.txt
│   ├── eureka-feign-upload-server/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── api/
│   │           │               └── consumer/
│   │           │                   └── Application.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-server/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── Application.java
│   │           └── resources/
│   │               ├── application-peer1.properties
│   │               ├── application-peer2.properties
│   │               └── application.properties
│   ├── hystrix-collapser-consumer/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── didispace/
│   │       │   │           ├── Application.java
│   │       │   │           └── UserService.java
│   │       │   └── resources/
│   │       │       └── application.properties
│   │       └── test/
│   │           └── java/
│   │               └── CollapserTest.java
│   ├── hystrix-collapser-provider/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           └── UserController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── hystrix-dashboard/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── HystrixDashboardApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── pom.xml
│   ├── stream-consumer-group/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── didispace/
│   │       │   │           └── stream/
│   │       │   │               ├── ExampleApplication.java
│   │       │   │               ├── ExampleBinder.java
│   │       │   │               └── ExampleReceiver.java
│   │       │   └── resources/
│   │       │       └── application.properties
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── didispace/
│   │                       └── ExampleApplicationTests.java
│   ├── stream-consumer-self/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── stream/
│   │           │               ├── TestApplication.java
│   │           │               ├── TestController.java
│   │           │               ├── TestListener.java
│   │           │               └── TestTopic.java
│   │           └── resources/
│   │               └── application.properties
│   ├── stream-hello/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── didispace/
│   │       │   │           └── stream/
│   │       │   │               ├── SinkApplication.java
│   │       │   │               └── SinkReceiver.java
│   │       │   └── resources/
│   │       │       └── application.properties
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── didispace/
│   │                       └── SinkApplicationTests.java
│   ├── swagger-api-gateway/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── Application.java
│   │           └── resources/
│   │               └── application.yaml
│   ├── swagger-service-a/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── Application.java
│   │           └── resources/
│   │               └── application.properties
│   ├── swagger-service-b/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── Application.java
│   │           └── resources/
│   │               └── application.properties
│   ├── trace-1/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── TraceApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── trace-2/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── TraceApplication.java
│   │           └── resources/
│   │               ├── application.properties
│   │               └── logback-spring.xml
│   ├── turbine/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── TurbineApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── turbine-amqp/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── TurbineApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── zipkin-server/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── ZipkinApplication.java
│   │           └── resources/
│   │               └── application.properties
│   └── zipkin-server-stream/
│       ├── pom.xml
│       └── src/
│           └── main/
│               ├── java/
│               │   └── com/
│               │       └── didispace/
│               │           └── ZipkinApplication.java
│               └── resources/
│                   └── application.properties
├── 3-Edgware/
│   ├── README.md
│   ├── config-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── config/
│   │           │               └── client/
│   │           │                   └── ConfigClientApplication.java
│   │           └── resources/
│   │               └── bootstrap.properties
│   ├── config-server-db/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── config/
│   │           │               └── server/
│   │           │                   └── db/
│   │           │                       └── ConfigServerBootstrap.java
│   │           └── resources/
│   │               ├── application.properties
│   │               └── schema/
│   │                   └── V1__Base_version.sql
│   └── pom.xml
├── 4-Finchley/
│   ├── README.md
│   ├── alibaba-dubbo-api/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── com/
│   │                   └── didispace/
│   │                       └── alibaba/
│   │                           └── dubbo/
│   │                               └── api/
│   │                                   └── HelloService.java
│   ├── alibaba-dubbo-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── dubbo/
│   │           │                   └── client/
│   │           │                       └── DubboClientApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-dubbo-server/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── dubbo/
│   │           │                   └── server/
│   │           │                       ├── DubboServerApplication.java
│   │           │                       └── HelloServiceImpl.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-nacos-config-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── nacos/
│   │           │                   └── config/
│   │           │                       └── client/
│   │           │                           └── TestApplication.java
│   │           └── resources/
│   │               └── bootstrap.properties
│   ├── alibaba-nacos-discovery-client-common/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── nacos/
│   │           │                   └── discovery/
│   │           │                       └── client/
│   │           │                           └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-nacos-discovery-client-feign/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── nacos/
│   │           │                   └── discovery/
│   │           │                       └── client/
│   │           │                           └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-nacos-discovery-client-resttemplate/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── nacos/
│   │           │                   └── discovery/
│   │           │                       └── client/
│   │           │                           └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-nacos-discovery-client-webclient/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── nacos/
│   │           │                   └── discovery/
│   │           │                       └── client/
│   │           │                           └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-nacos-discovery-server/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── nacos/
│   │           │                   └── discovery/
│   │           │                       └── server/
│   │           │                           └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-sentinel-annotation/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── sentinel/
│   │           │                   ├── TestApplication.java
│   │           │                   ├── service/
│   │           │                   │   └── TestService.java
│   │           │                   └── web/
│   │           │                       └── TestController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-sentinel-dashboard-apollo/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── alibaba/
│   │       │   │           └── csp/
│   │       │   │               └── sentinel/
│   │       │   │                   └── dashboard/
│   │       │   │                       ├── DashboardApplication.java
│   │       │   │                       ├── auth/
│   │       │   │                       │   ├── AuthService.java
│   │       │   │                       │   ├── FakeAuthServiceImpl.java
│   │       │   │                       │   └── SimpleWebAuthServiceImpl.java
│   │       │   │                       ├── client/
│   │       │   │                       │   ├── CommandFailedException.java
│   │       │   │                       │   ├── CommandNotFoundException.java
│   │       │   │                       │   └── SentinelApiClient.java
│   │       │   │                       ├── config/
│   │       │   │                       │   ├── DashboardConfig.java
│   │       │   │                       │   └── WebConfig.java
│   │       │   │                       ├── controller/
│   │       │   │                       │   ├── AppController.java
│   │       │   │                       │   ├── AuthController.java
│   │       │   │                       │   ├── AuthorityRuleController.java
│   │       │   │                       │   ├── DegradeController.java
│   │       │   │                       │   ├── DemoController.java
│   │       │   │                       │   ├── FlowControllerV1.java
│   │       │   │                       │   ├── MachineRegistryController.java
│   │       │   │                       │   ├── MetricController.java
│   │       │   │                       │   ├── ParamFlowRuleController.java
│   │       │   │                       │   ├── ResourceController.java
│   │       │   │                       │   ├── SystemController.java
│   │       │   │                       │   ├── cluster/
│   │       │   │                       │   │   ├── ClusterAssignController.java
│   │       │   │                       │   │   └── ClusterConfigController.java
│   │       │   │                       │   └── v2/
│   │       │   │                       │       └── FlowControllerV2.java
│   │       │   │                       ├── datasource/
│   │       │   │                       │   └── entity/
│   │       │   │                       │       ├── ApplicationEntity.java
│   │       │   │                       │       ├── MachineEntity.java
│   │       │   │                       │       ├── MetricEntity.java
│   │       │   │                       │       ├── MetricPositionEntity.java
│   │       │   │                       │       ├── SentinelVersion.java
│   │       │   │                       │       └── rule/
│   │       │   │                       │           ├── AbstractRuleEntity.java
│   │       │   │                       │           ├── AuthorityRuleEntity.java
│   │       │   │                       │           ├── DegradeRuleEntity.java
│   │       │   │                       │           ├── FlowRuleEntity.java
│   │       │   │                       │           ├── ParamFlowRuleEntity.java
│   │       │   │                       │           ├── RuleEntity.java
│   │       │   │                       │           └── SystemRuleEntity.java
│   │       │   │                       ├── discovery/
│   │       │   │                       │   ├── AppInfo.java
│   │       │   │                       │   ├── AppManagement.java
│   │       │   │                       │   ├── MachineDiscovery.java
│   │       │   │                       │   ├── MachineInfo.java
│   │       │   │                       │   └── SimpleMachineDiscovery.java
│   │       │   │                       ├── domain/
│   │       │   │                       │   ├── ResourceTreeNode.java
│   │       │   │                       │   ├── Result.java
│   │       │   │                       │   ├── cluster/
│   │       │   │                       │   │   ├── ClusterAppAssignResultVO.java
│   │       │   │                       │   │   ├── ClusterAppFullAssignRequest.java
│   │       │   │                       │   │   ├── ClusterAppSingleServerAssignRequest.java
│   │       │   │                       │   │   ├── ClusterClientInfoVO.java
│   │       │   │                       │   │   ├── ClusterGroupEntity.java
│   │       │   │                       │   │   ├── ClusterStateSingleVO.java
│   │       │   │                       │   │   ├── ConnectionDescriptorVO.java
│   │       │   │                       │   │   ├── ConnectionGroupVO.java
│   │       │   │                       │   │   ├── config/
│   │       │   │                       │   │   │   ├── ClusterClientConfig.java
│   │       │   │                       │   │   │   ├── ServerFlowConfig.java
│   │       │   │                       │   │   │   └── ServerTransportConfig.java
│   │       │   │                       │   │   ├── request/
│   │       │   │                       │   │   │   ├── ClusterAppAssignMap.java
│   │       │   │                       │   │   │   ├── ClusterClientModifyRequest.java
│   │       │   │                       │   │   │   ├── ClusterModifyRequest.java
│   │       │   │                       │   │   │   └── ClusterServerModifyRequest.java
│   │       │   │                       │   │   └── state/
│   │       │   │                       │   │       ├── AppClusterClientStateWrapVO.java
│   │       │   │                       │   │       ├── AppClusterServerStateWrapVO.java
│   │       │   │                       │   │       ├── ClusterClientStateVO.java
│   │       │   │                       │   │       ├── ClusterRequestLimitVO.java
│   │       │   │                       │   │       ├── ClusterServerStateVO.java
│   │       │   │                       │   │       ├── ClusterStateSimpleEntity.java
│   │       │   │                       │   │       ├── ClusterUniversalStatePairVO.java
│   │       │   │                       │   │       └── ClusterUniversalStateVO.java
│   │       │   │                       │   └── vo/
│   │       │   │                       │       ├── MachineInfoVo.java
│   │       │   │                       │       ├── MetricVo.java
│   │       │   │                       │       └── ResourceVo.java
│   │       │   │                       ├── filter/
│   │       │   │                       │   └── AuthFilter.java
│   │       │   │                       ├── metric/
│   │       │   │                       │   └── MetricFetcher.java
│   │       │   │                       ├── repository/
│   │       │   │                       │   ├── metric/
│   │       │   │                       │   │   ├── InMemoryMetricsRepository.java
│   │       │   │                       │   │   └── MetricsRepository.java
│   │       │   │                       │   └── rule/
│   │       │   │                       │       ├── InMemAuthorityRuleStore.java
│   │       │   │                       │       ├── InMemDegradeRuleStore.java
│   │       │   │                       │       ├── InMemFlowRuleStore.java
│   │       │   │                       │       ├── InMemParamFlowRuleStore.java
│   │       │   │                       │       ├── InMemSystemRuleStore.java
│   │       │   │                       │       ├── InMemoryRuleRepositoryAdapter.java
│   │       │   │                       │       └── RuleRepository.java
│   │       │   │                       ├── rule/
│   │       │   │                       │   ├── DynamicRuleProvider.java
│   │       │   │                       │   ├── DynamicRulePublisher.java
│   │       │   │                       │   ├── FlowRuleApiProvider.java
│   │       │   │                       │   ├── FlowRuleApiPublisher.java
│   │       │   │                       │   └── apollo/
│   │       │   │                       │       ├── ApolloConfig.java
│   │       │   │                       │       ├── FlowRuleApolloProvider.java
│   │       │   │                       │       └── FlowRuleApolloPublisher.java
│   │       │   │                       ├── service/
│   │       │   │                       │   ├── ClusterAssignService.java
│   │       │   │                       │   ├── ClusterAssignServiceImpl.java
│   │       │   │                       │   └── ClusterConfigService.java
│   │       │   │                       └── util/
│   │       │   │                           ├── AsyncUtils.java
│   │       │   │                           ├── ClusterEntityUtils.java
│   │       │   │                           ├── MachineUtils.java
│   │       │   │                           └── VersionUtils.java
│   │       │   ├── resources/
│   │       │   │   └── application.properties
│   │       │   └── webapp/
│   │       │       └── resources/
│   │       │           ├── .gitignore
│   │       │           ├── .jshintrc
│   │       │           ├── README.md
│   │       │           ├── README_zh.md
│   │       │           ├── app/
│   │       │           │   ├── scripts/
│   │       │           │   │   ├── app.js
│   │       │           │   │   ├── controllers/
│   │       │           │   │   │   ├── authority.js
│   │       │           │   │   │   ├── cluster_app_assign_manage.js
│   │       │           │   │   │   ├── cluster_app_server_list.js
│   │       │           │   │   │   ├── cluster_app_server_manage.js
│   │       │           │   │   │   ├── cluster_app_server_monitor.js
│   │       │           │   │   │   ├── cluster_app_token_client_list.js
│   │       │           │   │   │   ├── cluster_single.js
│   │       │           │   │   │   ├── degrade.js
│   │       │           │   │   │   ├── flow_v1.js
│   │       │           │   │   │   ├── flow_v2.js
│   │       │           │   │   │   ├── home.js
│   │       │           │   │   │   ├── identity.js
│   │       │           │   │   │   ├── login.js
│   │       │           │   │   │   ├── machine.js
│   │       │           │   │   │   ├── main.js
│   │       │           │   │   │   ├── metric.js
│   │       │           │   │   │   ├── param_flow.js
│   │       │           │   │   │   └── system.js
│   │       │           │   │   ├── directives/
│   │       │           │   │   │   ├── header/
│   │       │           │   │   │   │   ├── header.html
│   │       │           │   │   │   │   └── header.js
│   │       │           │   │   │   └── sidebar/
│   │       │           │   │   │       ├── sidebar-search/
│   │       │           │   │   │       │   ├── sidebar-search.html
│   │       │           │   │   │       │   └── sidebar-search.js
│   │       │           │   │   │       ├── sidebar.html
│   │       │           │   │   │       └── sidebar.js
│   │       │           │   │   ├── filters/
│   │       │           │   │   │   └── filters.js
│   │       │           │   │   ├── libs/
│   │       │           │   │   │   └── treeTable.js
│   │       │           │   │   └── services/
│   │       │           │   │       ├── appservice.js
│   │       │           │   │       ├── auth_service.js
│   │       │           │   │       ├── authority_service.js
│   │       │           │   │       ├── cluster_state_service.js
│   │       │           │   │       ├── degradeservice.js
│   │       │           │   │       ├── flow_service_v1.js
│   │       │           │   │       ├── flow_service_v2.js
│   │       │           │   │       ├── identityservice.js
│   │       │           │   │       ├── machineservice.js
│   │       │           │   │       ├── metricservice.js
│   │       │           │   │       ├── param_flow_service.js
│   │       │           │   │       └── systemservice.js
│   │       │           │   ├── styles/
│   │       │           │   │   ├── main.css
│   │       │           │   │   ├── page.css
│   │       │           │   │   └── timeline.css
│   │       │           │   └── views/
│   │       │           │       ├── authority.html
│   │       │           │       ├── cluster/
│   │       │           │       │   ├── client.html
│   │       │           │       │   └── server.html
│   │       │           │       ├── cluster_app_assign_manage.html
│   │       │           │       ├── cluster_app_client_list.html
│   │       │           │       ├── cluster_app_server_list.html
│   │       │           │       ├── cluster_app_server_overview.html
│   │       │           │       ├── cluster_single_config.html
│   │       │           │       ├── dashboard/
│   │       │           │       │   ├── home.html
│   │       │           │       │   └── main.html
│   │       │           │       ├── degrade.html
│   │       │           │       ├── dialog/
│   │       │           │       │   ├── authority-rule-dialog.html
│   │       │           │       │   ├── cluster/
│   │       │           │       │   │   ├── cluster-client-config-dialog.html
│   │       │           │       │   │   ├── cluster-server-assign-dialog.html
│   │       │           │       │   │   └── cluster-server-connection-detail-dialog.html
│   │       │           │       │   ├── confirm-dialog.html
│   │       │           │       │   ├── degrade-rule-dialog.html
│   │       │           │       │   ├── flow-rule-dialog.html
│   │       │           │       │   ├── param-flow-rule-dialog.html
│   │       │           │       │   └── system-rule-dialog.html
│   │       │           │       ├── flow_v1.html
│   │       │           │       ├── flow_v2.html
│   │       │           │       ├── identity.html
│   │       │           │       ├── login.html
│   │       │           │       ├── machine.html
│   │       │           │       ├── metric.html
│   │       │           │       ├── pagination.tpl.html
│   │       │           │       ├── param_flow.html
│   │       │           │       └── system.html
│   │       │           ├── dist/
│   │       │           │   ├── css/
│   │       │           │   │   └── app.css
│   │       │           │   └── js/
│   │       │           │       ├── app.js
│   │       │           │       └── app.vendor.js
│   │       │           ├── gulpfile.js
│   │       │           ├── index.htm
│   │       │           ├── index_dev.htm
│   │       │           ├── license-stat.csv
│   │       │           └── package.json
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── alibaba/
│   │                       └── csp/
│   │                           └── sentinel/
│   │                               └── dashboard/
│   │                                   ├── config/
│   │                                   │   └── DashboardConfigTest.java
│   │                                   ├── datasource/
│   │                                   │   └── entity/
│   │                                   │       └── SentinelVersionTest.java
│   │                                   ├── discovery/
│   │                                   │   ├── AppInfoTest.java
│   │                                   │   └── MachineInfoTest.java
│   │                                   ├── repository/
│   │                                   │   └── metric/
│   │                                   │       └── InMemoryMetricsRepositoryTest.java
│   │                                   ├── rule/
│   │                                   │   ├── apollo/
│   │                                   │   │   ├── ApolloConfig.java
│   │                                   │   │   ├── ApolloConfigUtil.java
│   │                                   │   │   ├── FlowRuleApolloProvider.java
│   │                                   │   │   └── FlowRuleApolloPublisher.java
│   │                                   │   └── nacos/
│   │                                   │       ├── FlowRuleNacosProvider.java
│   │                                   │       ├── FlowRuleNacosPublisher.java
│   │                                   │       ├── NacosConfig.java
│   │                                   │       └── NacosConfigUtil.java
│   │                                   └── util/
│   │                                       └── VersionUtilsTest.java
│   ├── alibaba-sentinel-dashboard-nacos/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── alibaba/
│   │       │   │           └── csp/
│   │       │   │               └── sentinel/
│   │       │   │                   └── dashboard/
│   │       │   │                       ├── DashboardApplication.java
│   │       │   │                       ├── auth/
│   │       │   │                       │   ├── AuthService.java
│   │       │   │                       │   ├── FakeAuthServiceImpl.java
│   │       │   │                       │   └── SimpleWebAuthServiceImpl.java
│   │       │   │                       ├── client/
│   │       │   │                       │   ├── CommandFailedException.java
│   │       │   │                       │   ├── CommandNotFoundException.java
│   │       │   │                       │   └── SentinelApiClient.java
│   │       │   │                       ├── config/
│   │       │   │                       │   ├── DashboardConfig.java
│   │       │   │                       │   └── WebConfig.java
│   │       │   │                       ├── controller/
│   │       │   │                       │   ├── AppController.java
│   │       │   │                       │   ├── AuthController.java
│   │       │   │                       │   ├── AuthorityRuleController.java
│   │       │   │                       │   ├── DegradeController.java
│   │       │   │                       │   ├── DemoController.java
│   │       │   │                       │   ├── FlowControllerV1.java
│   │       │   │                       │   ├── MachineRegistryController.java
│   │       │   │                       │   ├── MetricController.java
│   │       │   │                       │   ├── ParamFlowRuleController.java
│   │       │   │                       │   ├── ResourceController.java
│   │       │   │                       │   ├── SystemController.java
│   │       │   │                       │   ├── cluster/
│   │       │   │                       │   │   ├── ClusterAssignController.java
│   │       │   │                       │   │   └── ClusterConfigController.java
│   │       │   │                       │   └── v2/
│   │       │   │                       │       └── FlowControllerV2.java
│   │       │   │                       ├── datasource/
│   │       │   │                       │   └── entity/
│   │       │   │                       │       ├── ApplicationEntity.java
│   │       │   │                       │       ├── MachineEntity.java
│   │       │   │                       │       ├── MetricEntity.java
│   │       │   │                       │       ├── MetricPositionEntity.java
│   │       │   │                       │       ├── SentinelVersion.java
│   │       │   │                       │       └── rule/
│   │       │   │                       │           ├── AbstractRuleEntity.java
│   │       │   │                       │           ├── AuthorityRuleEntity.java
│   │       │   │                       │           ├── DegradeRuleEntity.java
│   │       │   │                       │           ├── FlowRuleEntity.java
│   │       │   │                       │           ├── ParamFlowRuleEntity.java
│   │       │   │                       │           ├── RuleEntity.java
│   │       │   │                       │           └── SystemRuleEntity.java
│   │       │   │                       ├── discovery/
│   │       │   │                       │   ├── AppInfo.java
│   │       │   │                       │   ├── AppManagement.java
│   │       │   │                       │   ├── MachineDiscovery.java
│   │       │   │                       │   ├── MachineInfo.java
│   │       │   │                       │   └── SimpleMachineDiscovery.java
│   │       │   │                       ├── domain/
│   │       │   │                       │   ├── ResourceTreeNode.java
│   │       │   │                       │   ├── Result.java
│   │       │   │                       │   ├── cluster/
│   │       │   │                       │   │   ├── ClusterAppAssignResultVO.java
│   │       │   │                       │   │   ├── ClusterAppFullAssignRequest.java
│   │       │   │                       │   │   ├── ClusterAppSingleServerAssignRequest.java
│   │       │   │                       │   │   ├── ClusterClientInfoVO.java
│   │       │   │                       │   │   ├── ClusterGroupEntity.java
│   │       │   │                       │   │   ├── ClusterStateSingleVO.java
│   │       │   │                       │   │   ├── ConnectionDescriptorVO.java
│   │       │   │                       │   │   ├── ConnectionGroupVO.java
│   │       │   │                       │   │   ├── config/
│   │       │   │                       │   │   │   ├── ClusterClientConfig.java
│   │       │   │                       │   │   │   ├── ServerFlowConfig.java
│   │       │   │                       │   │   │   └── ServerTransportConfig.java
│   │       │   │                       │   │   ├── request/
│   │       │   │                       │   │   │   ├── ClusterAppAssignMap.java
│   │       │   │                       │   │   │   ├── ClusterClientModifyRequest.java
│   │       │   │                       │   │   │   ├── ClusterModifyRequest.java
│   │       │   │                       │   │   │   └── ClusterServerModifyRequest.java
│   │       │   │                       │   │   └── state/
│   │       │   │                       │   │       ├── AppClusterClientStateWrapVO.java
│   │       │   │                       │   │       ├── AppClusterServerStateWrapVO.java
│   │       │   │                       │   │       ├── ClusterClientStateVO.java
│   │       │   │                       │   │       ├── ClusterRequestLimitVO.java
│   │       │   │                       │   │       ├── ClusterServerStateVO.java
│   │       │   │                       │   │       ├── ClusterStateSimpleEntity.java
│   │       │   │                       │   │       ├── ClusterUniversalStatePairVO.java
│   │       │   │                       │   │       └── ClusterUniversalStateVO.java
│   │       │   │                       │   └── vo/
│   │       │   │                       │       ├── MachineInfoVo.java
│   │       │   │                       │       ├── MetricVo.java
│   │       │   │                       │       └── ResourceVo.java
│   │       │   │                       ├── filter/
│   │       │   │                       │   └── AuthFilter.java
│   │       │   │                       ├── metric/
│   │       │   │                       │   └── MetricFetcher.java
│   │       │   │                       ├── repository/
│   │       │   │                       │   ├── metric/
│   │       │   │                       │   │   ├── InMemoryMetricsRepository.java
│   │       │   │                       │   │   └── MetricsRepository.java
│   │       │   │                       │   └── rule/
│   │       │   │                       │       ├── InMemAuthorityRuleStore.java
│   │       │   │                       │       ├── InMemDegradeRuleStore.java
│   │       │   │                       │       ├── InMemFlowRuleStore.java
│   │       │   │                       │       ├── InMemParamFlowRuleStore.java
│   │       │   │                       │       ├── InMemSystemRuleStore.java
│   │       │   │                       │       ├── InMemoryRuleRepositoryAdapter.java
│   │       │   │                       │       └── RuleRepository.java
│   │       │   │                       ├── rule/
│   │       │   │                       │   ├── DynamicRuleProvider.java
│   │       │   │                       │   ├── DynamicRulePublisher.java
│   │       │   │                       │   ├── FlowRuleApiProvider.java
│   │       │   │                       │   ├── FlowRuleApiPublisher.java
│   │       │   │                       │   └── nacos/
│   │       │   │                       │       ├── FlowRuleNacosProvider.java
│   │       │   │                       │       ├── FlowRuleNacosPublisher.java
│   │       │   │                       │       └── NacosConfig.java
│   │       │   │                       ├── service/
│   │       │   │                       │   ├── ClusterAssignService.java
│   │       │   │                       │   ├── ClusterAssignServiceImpl.java
│   │       │   │                       │   └── ClusterConfigService.java
│   │       │   │                       └── util/
│   │       │   │                           ├── AsyncUtils.java
│   │       │   │                           ├── ClusterEntityUtils.java
│   │       │   │                           ├── MachineUtils.java
│   │       │   │                           └── VersionUtils.java
│   │       │   ├── resources/
│   │       │   │   └── application.properties
│   │       │   └── webapp/
│   │       │       └── resources/
│   │       │           ├── .gitignore
│   │       │           ├── .jshintrc
│   │       │           ├── README.md
│   │       │           ├── README_zh.md
│   │       │           ├── app/
│   │       │           │   ├── scripts/
│   │       │           │   │   ├── app.js
│   │       │           │   │   ├── controllers/
│   │       │           │   │   │   ├── authority.js
│   │       │           │   │   │   ├── cluster_app_assign_manage.js
│   │       │           │   │   │   ├── cluster_app_server_list.js
│   │       │           │   │   │   ├── cluster_app_server_manage.js
│   │       │           │   │   │   ├── cluster_app_server_monitor.js
│   │       │           │   │   │   ├── cluster_app_token_client_list.js
│   │       │           │   │   │   ├── cluster_single.js
│   │       │           │   │   │   ├── degrade.js
│   │       │           │   │   │   ├── flow_v1.js
│   │       │           │   │   │   ├── flow_v2.js
│   │       │           │   │   │   ├── home.js
│   │       │           │   │   │   ├── identity.js
│   │       │           │   │   │   ├── login.js
│   │       │           │   │   │   ├── machine.js
│   │       │           │   │   │   ├── main.js
│   │       │           │   │   │   ├── metric.js
│   │       │           │   │   │   ├── param_flow.js
│   │       │           │   │   │   └── system.js
│   │       │           │   │   ├── directives/
│   │       │           │   │   │   ├── header/
│   │       │           │   │   │   │   ├── header.html
│   │       │           │   │   │   │   └── header.js
│   │       │           │   │   │   └── sidebar/
│   │       │           │   │   │       ├── sidebar-search/
│   │       │           │   │   │       │   ├── sidebar-search.html
│   │       │           │   │   │       │   └── sidebar-search.js
│   │       │           │   │   │       ├── sidebar.html
│   │       │           │   │   │       └── sidebar.js
│   │       │           │   │   ├── filters/
│   │       │           │   │   │   └── filters.js
│   │       │           │   │   ├── libs/
│   │       │           │   │   │   └── treeTable.js
│   │       │           │   │   └── services/
│   │       │           │   │       ├── appservice.js
│   │       │           │   │       ├── auth_service.js
│   │       │           │   │       ├── authority_service.js
│   │       │           │   │       ├── cluster_state_service.js
│   │       │           │   │       ├── degradeservice.js
│   │       │           │   │       ├── flow_service_v1.js
│   │       │           │   │       ├── flow_service_v2.js
│   │       │           │   │       ├── identityservice.js
│   │       │           │   │       ├── machineservice.js
│   │       │           │   │       ├── metricservice.js
│   │       │           │   │       ├── param_flow_service.js
│   │       │           │   │       └── systemservice.js
│   │       │           │   ├── styles/
│   │       │           │   │   ├── main.css
│   │       │           │   │   ├── page.css
│   │       │           │   │   └── timeline.css
│   │       │           │   └── views/
│   │       │           │       ├── authority.html
│   │       │           │       ├── cluster/
│   │       │           │       │   ├── client.html
│   │       │           │       │   └── server.html
│   │       │           │       ├── cluster_app_assign_manage.html
│   │       │           │       ├── cluster_app_client_list.html
│   │       │           │       ├── cluster_app_server_list.html
│   │       │           │       ├── cluster_app_server_overview.html
│   │       │           │       ├── cluster_single_config.html
│   │       │           │       ├── dashboard/
│   │       │           │       │   ├── home.html
│   │       │           │       │   └── main.html
│   │       │           │       ├── degrade.html
│   │       │           │       ├── dialog/
│   │       │           │       │   ├── authority-rule-dialog.html
│   │       │           │       │   ├── cluster/
│   │       │           │       │   │   ├── cluster-client-config-dialog.html
│   │       │           │       │   │   ├── cluster-server-assign-dialog.html
│   │       │           │       │   │   └── cluster-server-connection-detail-dialog.html
│   │       │           │       │   ├── confirm-dialog.html
│   │       │           │       │   ├── degrade-rule-dialog.html
│   │       │           │       │   ├── flow-rule-dialog.html
│   │       │           │       │   ├── param-flow-rule-dialog.html
│   │       │           │       │   └── system-rule-dialog.html
│   │       │           │       ├── flow_v1.html
│   │       │           │       ├── flow_v2.html
│   │       │           │       ├── identity.html
│   │       │           │       ├── login.html
│   │       │           │       ├── machine.html
│   │       │           │       ├── metric.html
│   │       │           │       ├── pagination.tpl.html
│   │       │           │       ├── param_flow.html
│   │       │           │       └── system.html
│   │       │           ├── dist/
│   │       │           │   ├── css/
│   │       │           │   │   └── app.css
│   │       │           │   └── js/
│   │       │           │       ├── app.js
│   │       │           │       └── app.vendor.js
│   │       │           ├── gulpfile.js
│   │       │           ├── index.htm
│   │       │           ├── index_dev.htm
│   │       │           ├── license-stat.csv
│   │       │           └── package.json
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── alibaba/
│   │                       └── csp/
│   │                           └── sentinel/
│   │                               └── dashboard/
│   │                                   ├── config/
│   │                                   │   └── DashboardConfigTest.java
│   │                                   ├── datasource/
│   │                                   │   └── entity/
│   │                                   │       └── SentinelVersionTest.java
│   │                                   ├── discovery/
│   │                                   │   ├── AppInfoTest.java
│   │                                   │   └── MachineInfoTest.java
│   │                                   ├── repository/
│   │                                   │   └── metric/
│   │                                   │       └── InMemoryMetricsRepositoryTest.java
│   │                                   ├── rule/
│   │                                   │   ├── apollo/
│   │                                   │   │   ├── ApolloConfig.java
│   │                                   │   │   ├── ApolloConfigUtil.java
│   │                                   │   │   ├── FlowRuleApolloProvider.java
│   │                                   │   │   └── FlowRuleApolloPublisher.java
│   │                                   │   └── nacos/
│   │                                   │       ├── FlowRuleNacosProvider.java
│   │                                   │       ├── FlowRuleNacosPublisher.java
│   │                                   │       ├── NacosConfig.java
│   │                                   │       └── NacosConfigUtil.java
│   │                                   └── util/
│   │                                       └── VersionUtilsTest.java
│   ├── alibaba-sentinel-datasource-apollo/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── sentinel/
│   │           │                   └── TestApplication.java
│   │           └── resources/
│   │               ├── apollo-env.properties
│   │               └── application.properties
│   ├── alibaba-sentinel-datasource-nacos/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── sentinel/
│   │           │                   └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-sentinel-rate-limiting/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── sentinel/
│   │           │                   └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── pom.xml
│   ├── stream-consumer-self/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── stream/
│   │           │               ├── TestApplication.java
│   │           │               ├── TestController.java
│   │           │               ├── TestListener.java
│   │           │               └── TestTopic.java
│   │           └── resources/
│   │               └── application.properties
│   ├── stream-content-route/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── stream/
│   │           │               └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── stream-delayed-message/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── stream/
│   │           │               └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── stream-exception-handler-1/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── stream/
│   │           │               └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── stream-exception-handler-2/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── stream/
│   │           │               └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── stream-exception-handler-3/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── stream/
│   │           │               └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   └── stream-exception-handler-4/
│       ├── pom.xml
│       └── src/
│           └── main/
│               ├── java/
│               │   └── com/
│               │       └── didispace/
│               │           └── stream/
│               │               └── TestApplication.java
│               └── resources/
│                   └── application.properties
├── README.md
└── README_zh.md

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

================================================
FILE: .gitignore
================================================
*.class

# Package Files #
*.jar
*.war
*.ear

# idea Files
.idea
*.iml
target

# log Files
*.log

2-Dalston版教程示例/trace-2/build/bootstrap.json
2-Dalston版教程示例/trace-2/build/springAppName_IS_UNDEFINED.json
2-Dalston版教程示例/trace-2/build/trace-2.json


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-1/compute-service/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>compute-service</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>compute-service</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-1/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class ComputeServiceApplication {

	public static void main(String[] args) {
		new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-1/compute-service/src/main/java/com/didispace/web/ComputeController.java
================================================
package com.didispace.web;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ComputeController {

    private final Logger logger = Logger.getLogger(getClass());

    @Autowired
    private DiscoveryClient client;

    @RequestMapping(value = "/add" ,method = RequestMethod.GET)
    public Integer add(@RequestParam Integer a, @RequestParam Integer b) {
        ServiceInstance instance = client.getLocalServiceInstance();
        Integer r = a + b;
        logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
        return r;
    }

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-1/compute-service/src/main/resources/application.properties
================================================
spring.application.name=compute-service

server.port=2222

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/



================================================
FILE: 1-Brixton版教程示例/Chapter1-1-1/compute-service/src/test/java/com/didispace/ApplicationTests.java
================================================
package com.didispace;

import com.didispace.web.ComputeController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;


@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MockServletContext.class)
@WebAppConfiguration
public class ApplicationTests {

	private MockMvc mvc;

	@Before
	public void setUp() throws Exception {
		mvc = MockMvcBuilders.standaloneSetup(new ComputeController()).build();
	}

	@Test
	public void getHello() throws Exception {
		mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
				.andExpect(status().isOk())
				.andExpect(content().string(equalTo("Hello World")));
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-1/eureka-server/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-server</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-server</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka-server</artifactId>
		</dependency>

	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-1/eureka-server/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-1/eureka-server/src/main/resources/application.properties
================================================
server.port=1111
#eureka.instance.hostname=localhost

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-2/eureka-feign/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-feign</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-feign</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-feign</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/FeignApplication.java
================================================
package com.didispace;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class FeignApplication {

	public static void main(String[] args) {
		SpringApplication.run(FeignApplication.class, args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/service/ComputeClient.java
================================================
package com.didispace.service;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient("compute-service")
public interface ComputeClient {

    @RequestMapping(method = RequestMethod.GET, value = "/add")
    Integer add(@RequestParam(value = "a") Integer a, @RequestParam(value = "b") Integer b);

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/web/ConsumerController.java
================================================
package com.didispace.web;

import com.didispace.service.ComputeClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConsumerController {

    @Autowired
    ComputeClient computeClient;

    @RequestMapping(value = "/add", method = RequestMethod.GET)
    public Integer add() {
        return computeClient.add(10, 20);
    }

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/resources/application.properties
================================================
spring.application.name=feign-consumer
server.port=3333

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/



================================================
FILE: 1-Brixton版教程示例/Chapter1-1-2/eureka-ribbon/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-ribbon</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-ribbon</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-ribbon</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-2/eureka-ribbon/src/main/java/com/didispace/RibbonApplication.java
================================================
package com.didispace;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient
public class RibbonApplication {

	@Bean
	@LoadBalanced
	RestTemplate restTemplate() {
		return new RestTemplate();
	}

	public static void main(String[] args) {
		SpringApplication.run(RibbonApplication.class, args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-2/eureka-ribbon/src/main/java/com/didispace/web/ConsumerController.java
================================================
package com.didispace.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class ConsumerController {

    @Autowired
    RestTemplate restTemplate;

    @RequestMapping(value = "/add", method = RequestMethod.GET)
    public String add() {
        return restTemplate.getForEntity("http://COMPUTE-SERVICE/add?a=10&b=20", String.class).getBody();
    }


}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-2/eureka-ribbon/src/main/resources/application.properties
================================================
spring.application.name=ribbon-consumer
server.port=3333

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/



================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/compute-service/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>compute-service</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>compute-service</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class ComputeServiceApplication {

	public static void main(String[] args) {
		new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/compute-service/src/main/java/com/didispace/web/ComputeController.java
================================================
package com.didispace.web;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ComputeController {

    private final Logger logger = Logger.getLogger(getClass());

    @Autowired
    private DiscoveryClient client;

    @RequestMapping(value = "/add" ,method = RequestMethod.GET)
    public Integer add(@RequestParam Integer a, @RequestParam Integer b) {
        ServiceInstance instance = client.getLocalServiceInstance();
        Integer r = a + b;
        logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
        return r;
    }

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/compute-service/src/main/resources/application.properties
================================================
spring.application.name=compute-service

server.port=2222

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/



================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/compute-service/src/test/java/com/didispace/ApplicationTests.java
================================================
package com.didispace;

import com.didispace.web.ComputeController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;


@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MockServletContext.class)
@WebAppConfiguration
public class ApplicationTests {

	private MockMvc mvc;

	@Before
	public void setUp() throws Exception {
		mvc = MockMvcBuilders.standaloneSetup(new ComputeController()).build();
	}

	@Test
	public void getHello() throws Exception {
		mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
				.andExpect(status().isOk())
				.andExpect(content().string(equalTo("Hello World")));
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-feign/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-feign</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-feign</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<!--<dependency>-->
			<!--<groupId>org.springframework.cloud</groupId>-->
			<!--<artifactId>spring-cloud-starter-hystrix</artifactId>-->
		<!--</dependency>-->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-feign</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/FeignApplication.java
================================================
package com.didispace;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class FeignApplication {

	public static void main(String[] args) {
		SpringApplication.run(FeignApplication.class, args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/service/ComputeClient.java
================================================
package com.didispace.service;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient(value = "compute-service", fallback = ComputeClientHystrix.class)
public interface ComputeClient {

    @RequestMapping(method = RequestMethod.GET, value = "/add")
    Integer add(@RequestParam(value = "a") Integer a, @RequestParam(value = "b") Integer b);

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/service/ComputeClientHystrix.java
================================================
package com.didispace.service;

import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestParam;

@Component
public class ComputeClientHystrix implements ComputeClient {

    @Override
    public Integer add(@RequestParam(value = "a") Integer a, @RequestParam(value = "b") Integer b) {
        return -9999;
    }

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/web/ConsumerController.java
================================================
package com.didispace.web;

import com.didispace.service.ComputeClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConsumerController {

    @Autowired
    ComputeClient computeClient;

    @RequestMapping(value = "/add", method = RequestMethod.GET)
    public Integer add() {
        return computeClient.add(10, 20);
    }

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-ribbon/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-ribbon</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-ribbon</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-hystrix</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-ribbon</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/RibbonApplication.java
================================================
package com.didispace;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
public class RibbonApplication {

	@Bean
	@LoadBalanced
	RestTemplate restTemplate() {
		return new RestTemplate();
	}

	public static void main(String[] args) {
		SpringApplication.run(RibbonApplication.class, args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/service/ComputeService.java
================================================
package com.didispace.service;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

@Service
public class ComputeService {

    @Autowired
    RestTemplate restTemplate;

    @HystrixCommand(fallbackMethod = "addServiceFallback")
    public String addService() {
        return restTemplate.getForEntity("http://COMPUTE-SERVICE/add?a=10&b=20", String.class).getBody();
    }

    public String addServiceFallback() {
        return "error";
    }

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/web/ConsumerController.java
================================================
package com.didispace.web;

import com.didispace.service.ComputeService;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.Map;

@RestController
public class ConsumerController {

    @Autowired
    private ComputeService computeService;

    @RequestMapping(value = "/add", method = RequestMethod.GET)
    public String add() {
        return computeService.addService();
    }

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-server/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-server</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-server</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka-server</artifactId>
		</dependency>

	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-server/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-server/src/main/resources/application.properties
================================================
server.port=1111
#eureka.instance.hostname=localhost

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-client/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>config-client</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>config-client</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>

	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-client/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;

@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-client/src/main/java/com/didispace/web/TestController.java
================================================
package com.didispace.web;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RefreshScope
@RestController
class TestController {

    @Value("${from}")
    private String from;

    @RequestMapping("/from")
    public String from() {

        return this.from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

    public String getFrom() {
        return from;
    }

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-client/src/main/resources/bootstrap.properties
================================================
spring.application.name=didispace
spring.cloud.config.profile=dev
spring.cloud.config.uri=http://localhost:7001/

server.port=7002







================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-repo/didispace-dev.properties
================================================
from=git-dev-1.0

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-repo/didispace-prod.properties
================================================
from=git-prod-1.0

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-repo/didispace-test.properties
================================================
from=git-test-1.0

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-repo/didispace.properties
================================================
from=git-default-1.0


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-server/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>config-server</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>config-server</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-config-server</artifactId>
		</dependency>

	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.config.server.EnableConfigServer;

@EnableConfigServer
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/application.properties
================================================
spring.application.name=config-server
server.port=7001

# git
spring.cloud.config.server.git.uri=http://git.oschina.net/didispace/SpringBoot-Learning/
spring.cloud.config.server.git.searchPaths=Chapter9-1-4/config-repo
spring.cloud.config.server.git.username=username
spring.cloud.config.server.git.password=password

# 
spring.profiles.active=native






================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/didispace-dev.properties
================================================
from=local-dev

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/didispace-prod.properties
================================================
from=local-prod

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/didispace-test.properties
================================================
from=local-test

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/didispace.properties
================================================
from=local

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/api-gateway/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>api-gateway</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>api-gateway</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-zuul</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>

	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/api-gateway/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import com.didispace.filter.AccessFilter;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;

@EnableZuulProxy
@SpringCloudApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

	@Bean
	public AccessFilter accessFilter() {
		return new AccessFilter();
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/api-gateway/src/main/java/com/didispace/filter/AccessFilter.java
================================================
package com.didispace.filter;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.http.HttpServletRequest;

public class AccessFilter extends ZuulFilter  {

    private static Logger log = LoggerFactory.getLogger(AccessFilter.class);

    @Override
    public String filterType() {
        return "pre";
    }

    @Override
    public int filterOrder() {
        return 0;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        HttpServletRequest request = ctx.getRequest();

        log.info(String.format("%s request to %s", request.getMethod(), request.getRequestURL().toString()));

        Object accessToken = request.getParameter("accessToken");
        if(accessToken == null) {
            log.warn("access token is empty");
            ctx.setSendZuulResponse(false);
            ctx.setResponseStatusCode(401);
            return null;
        }
        log.info("access token ok");
        return null;
    }

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/api-gateway/src/main/resources/application.properties
================================================
spring.application.name=api-gateway
server.port=5555

# routes to serviceId
zuul.routes.api-a.path=/api-a/**
zuul.routes.api-a.serviceId=service-A

zuul.routes.api-b.path=/api-b/**
zuul.routes.api-b.serviceId=service-B

# routes to url
zuul.routes.api-a-url.path=/api-a-url/**
zuul.routes.api-a-url.url=http://localhost:2222/

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/eureka-server/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-server</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-server</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka-server</artifactId>
		</dependency>

	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/eureka-server/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/eureka-server/src/main/resources/application.properties
================================================
server.port=1111
#eureka.instance.hostname=localhost

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/service-A/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>service-A</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>service-A</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/service-A/src/main/java/com/didispace/ComputeServiceApplication.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class ComputeServiceApplication {

	public static void main(String[] args) {
		new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/service-A/src/main/java/com/didispace/web/ComputeController.java
================================================
package com.didispace.web;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ComputeController {

    private final Logger logger = Logger.getLogger(getClass());

    @Autowired
    private DiscoveryClient client;

    @RequestMapping(value = "/add" ,method = RequestMethod.GET)
    public String add(@RequestParam Integer a, @RequestParam Integer b) {
        ServiceInstance instance = client.getLocalServiceInstance();
        Integer r = a + b;
        logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
        return "From Service-A, Result is " + r;
    }

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/service-A/src/main/resources/application.properties
================================================
spring.application.name=service-A

server.port=2222

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/



================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/service-A/src/test/java/com/didispace/ApplicationTests.java
================================================
package com.didispace;

import com.didispace.web.ComputeController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;


@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MockServletContext.class)
@WebAppConfiguration
public class ApplicationTests {

	private MockMvc mvc;

	@Before
	public void setUp() throws Exception {
		mvc = MockMvcBuilders.standaloneSetup(new ComputeController()).build();
	}

	@Test
	public void getHello() throws Exception {
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/service-B/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>service-B</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>service-B</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/service-B/src/main/java/com/didispace/ComputeServiceApplication.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class ComputeServiceApplication {

	public static void main(String[] args) {
		new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/service-B/src/main/java/com/didispace/web/ComputeController.java
================================================
package com.didispace.web;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ComputeController {

    private final Logger logger = Logger.getLogger(getClass());

    @Autowired
    private DiscoveryClient client;

    @RequestMapping(value = "/add" ,method = RequestMethod.GET)
    public String add(@RequestParam Integer a, @RequestParam Integer b) {
        ServiceInstance instance = client.getLocalServiceInstance();
        Integer r = a + b;
        logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
        return "From Service-B, Result is " + r;
    }

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/service-B/src/main/resources/application.properties
================================================
spring.application.name=service-B

server.port=3333

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/



================================================
FILE: 1-Brixton版教程示例/Chapter1-1-5/service-B/src/test/java/com/didispace/ApplicationTests.java
================================================
package com.didispace;

import com.didispace.web.ComputeController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;


@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MockServletContext.class)
@WebAppConfiguration
public class ApplicationTests {

	private MockMvc mvc;

	@Before
	public void setUp() throws Exception {
		mvc = MockMvcBuilders.standaloneSetup(new ComputeController()).build();
	}

	@Test
	public void getHello() throws Exception {
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-6/compute-service/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>compute-service</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>compute-service</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-6/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class ComputeServiceApplication {

	public static void main(String[] args) {
		new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-6/compute-service/src/main/java/com/didispace/web/ComputeController.java
================================================
package com.didispace.web;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ComputeController {

    private final Logger logger = Logger.getLogger(getClass());

    @Autowired
    private DiscoveryClient client;

    @RequestMapping(value = "/add" ,method = RequestMethod.GET)
    public Integer add(@RequestParam Integer a, @RequestParam Integer b) {
        ServiceInstance instance = client.getLocalServiceInstance();
        Integer r = a + b;
        logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
        return r;
    }

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-6/compute-service/src/main/resources/application.properties
================================================
spring.application.name=compute-service

server.port=2222

eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-6/compute-service/src/test/java/com/didispace/ApplicationTests.java
================================================
package com.didispace;

import com.didispace.web.ComputeController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;


@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MockServletContext.class)
@WebAppConfiguration
public class ApplicationTests {

	private MockMvc mvc;

	@Before
	public void setUp() throws Exception {
		mvc = MockMvcBuilders.standaloneSetup(new ComputeController()).build();
	}

	@Test
	public void getHello() throws Exception {
		mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
				.andExpect(status().isOk())
				.andExpect(content().string(equalTo("Hello World")));
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-6/eureka-server/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-server</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-server</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka-server</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.SR5</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-6/eureka-server/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-6/eureka-server/src/main/resources/application-peer1.properties
================================================
spring.application.name=eureka-server
server.port=1111
eureka.instance.hostname=peer1

eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-6/eureka-server/src/main/resources/application-peer2.properties
================================================
spring.application.name=eureka-server
server.port=1112
eureka.instance.hostname=peer2

eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-client-eureka/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>config-client-eureka</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>config-client-eureka</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.7.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.retry</groupId>
			<artifactId>spring-retry</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-aop</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-bus-amqp</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.SR5</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-client-eureka/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-client-eureka/src/main/java/com/didispace/web/TestController.java
================================================
package com.didispace.web;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RefreshScope
@RestController
public class TestController {

    @Value("${from}")
    private String from;

    @RequestMapping("/from")
    public String from() {
        return this.from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

    public String getFrom() {
        return from;
    }

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-client-eureka/src/main/resources/bootstrap.properties
================================================
spring.application.name=didispace
server.port=7002

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server
spring.cloud.config.profile=dev

spring.cloud.config.failFast=true

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=springcloud
spring.rabbitmq.password=123456

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-client-eureka-kafka/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>config-client-eureka-kafka</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>config-client-eureka-kafka</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.7.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.retry</groupId>
			<artifactId>spring-retry</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-aop</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-bus-kafka</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.SR5</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-client-eureka-kafka/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-client-eureka-kafka/src/main/java/com/didispace/web/TestController.java
================================================
package com.didispace.web;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RefreshScope
@RestController
public class TestController {

    @Value("${from}")
    private String from;

    @RequestMapping("/from")
    public String from() {
        return this.from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

    public String getFrom() {
        return from;
    }

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-client-eureka-kafka/src/main/resources/bootstrap.properties
================================================
spring.application.name=didispace
server.port=7002

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server
spring.cloud.config.profile=dev

spring.cloud.config.failFast=true

#kafka
spring.cloud.stream.kafka.binder.zk-nodes=localhost:2181
spring.cloud.stream.kafka.binder.brokers=localhost:9092

spring.cloud.bus.trace.enabled=true

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-repo/didispace-dev.properties
================================================
from=git-dev-3.0

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-repo/didispace-prod.properties
================================================
from=git-prod-1.0

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-repo/didispace-test.properties
================================================
from=git-test-1.0

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-repo/didispace.properties
================================================
from=git-default-1.0


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>config-server-eureka</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>config-server-eureka</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.7.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-config-server</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-bus-amqp</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.SR5</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.config.server.EnableConfigServer;

@EnableDiscoveryClient
@EnableConfigServer
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/application.properties
================================================
spring.application.name=config-server
server.port=7001

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

# git
spring.cloud.config.server.git.uri=http://git.oschina.net/didispace/SpringCloud-Learning/
spring.cloud.config.server.git.searchPaths=Chapter1-1-8/config-repo
spring.cloud.config.server.git.username=username
spring.cloud.config.server.git.password=password


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/didispace-dev.properties
================================================
from=local-dev

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/didispace-prod.properties
================================================
from=local-prod

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/didispace-test.properties
================================================
from=local-test

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/didispace.properties
================================================
from=local

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>config-server-eureka-kafka</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>config-server-eureka-kafka</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.7.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-config-server</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-bus-kafka</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.SR5</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.config.server.EnableConfigServer;

@EnableDiscoveryClient
@EnableConfigServer
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/application.properties
================================================
spring.application.name=config-server
server.port=7001

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

# git
spring.cloud.config.server.git.uri=http://git.oschina.net/didispace/SpringCloud-Learning/
spring.cloud.config.server.git.searchPaths=Chapter1-1-7/config-repo
spring.cloud.config.server.git.username=username
spring.cloud.config.server.git.password=password

#kafka
spring.cloud.stream.kafka.binder.zk-nodes=localhost:2181
spring.cloud.stream.kafka.binder.brokers=localhost:9092

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace-dev.properties
================================================
from=local-dev

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace-prod.properties
================================================
from=local-prod

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace-test.properties
================================================
from=local-test

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace.properties
================================================
from=local

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-client-eureka/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>config-client-eureka</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>config-client-eureka</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.7.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.retry</groupId>
			<artifactId>spring-retry</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-aop</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.SR5</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-client-eureka/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-client-eureka/src/main/java/com/didispace/web/TestController.java
================================================
package com.didispace.web;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RefreshScope
@RestController
public class TestController {

    @Value("${from}")
    private String from;

    @RequestMapping("/from")
    public String from() {
        return this.from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

    public String getFrom() {
        return from;
    }

}

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-client-eureka/src/main/resources/bootstrap.properties
================================================
spring.application.name=didispace
server.port=7002

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server
spring.cloud.config.profile=dev

spring.cloud.config.failFast=true

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-repo/didispace-dev.properties
================================================
from=git-dev-1.0

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-repo/didispace-prod.properties
================================================
from=git-prod-1.0

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-repo/didispace-test.properties
================================================
from=git-test-1.0

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-repo/didispace.properties
================================================
from=git-default-1.0


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>config-server-eureka</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>config-server-eureka</name>
	<description>Spring Cloud project</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.7.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-config-server</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.SR5</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.config.server.EnableConfigServer;

@EnableDiscoveryClient
@EnableConfigServer
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/application.properties
================================================
spring.application.name=config-server
server.port=7001

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

# git¹ÜÀíÅäÖÃ
spring.cloud.config.server.git.uri=http://git.oschina.net/didispace/SpringCloud-Learning/
spring.cloud.config.server.git.searchPaths=Chapter1-1-8/config-repo
spring.cloud.config.server.git.username=username
spring.cloud.config.server.git.password=password


================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/didispace-dev.properties
================================================
from=local-dev

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/didispace-prod.properties
================================================
from=local-prod

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/didispace-test.properties
================================================
from=local-test

================================================
FILE: 1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/didispace.properties
================================================
from=local

================================================
FILE: 1-Brixton版教程示例/README.md
================================================
# Spring Cloud教程

本项目内容为Spring Cloud教程的程序样例。如您觉得该项目对您有用,欢迎点击右上方的**Star**按钮,给予支持!!

- 我的博客:http://blog.didispace.com
- **我的小密圈(深度交流与问答):https://t.xiaomiquan.com/zfEiY3v**
- GitHub:https://github.com/dyc87112/SpringCloud-Learning
- Gitee:https://gitee.com/didispace/SpringCloud-Learning
- Spring For All社区:http://www.spring4all.com/
- Spring Boot基础教程:http://blog.didispace.com/Spring-Boot%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/
- Spring Cloud基础教程:http://blog.didispace.com/Spring-Cloud%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/
- **公益调试Eureka:http://eureka.didispace.com**

**优惠云服务推荐**

- [阿里云:ECS云服务器2折起](https://www.aliyun.com/minisite/goods?userCode=wxfqkr0o&share_source=copy_link)
- [腾讯云:3年时长最低265元/年](https://cloud.tencent.com/redirect.php?redirect=1005&cps_key=f6a8af1297bfac40b9d10ffa1270029a)

本项目教程因做了版本更新,所以对目录结构做了调整,根目录下的各个章节为了博文链接兼容暂时保留。

## 教程列表

#### 《Spring Cloud构建微服务架构》系列博文Brixton版示例

- 1-Brixton版教程示例/chapter1-1-1:[Spring Cloud构建微服务架构(一)服务注册与发现](http://blog.didispace.com/springcloud1/)
- 1-Brixton版教程示例/chapter1-1-2:[Spring Cloud构建微服务架构(二)服务消费者](http://blog.didispace.com/springcloud2/)
- 1-Brixton版教程示例/chapter1-1-3:[Spring Cloud构建微服务架构(三)断路器](http://blog.didispace.com/springcloud3/)
- 1-Brixton版教程示例/chapter1-1-4:[Spring Cloud构建微服务架构(四)分布式配置中心](http://blog.didispace.com/springcloud4/)
- 1-Brixton版教程示例/chapter1-1-8:[Spring Cloud构建微服务架构(四)分布式配置中心(续)](http://blog.didispace.com/springcloud4-2/)
- 1-Brixton版教程示例/chapter1-1-5:[Spring Cloud构建微服务架构(五)服务网关](http://blog.didispace.com/springcloud5/)
- 1-Brixton版教程示例/chapter1-1-6:[Spring Cloud构建微服务架构(六)高可用服务注册中心](http://blog.didispace.com/springcloud6/)
- 1-Brixton版教程示例/chapter1-1-7:[Spring Cloud构建微服务架构(七)消息总线(Rabbit)](http://blog.didispace.com/springcloud7/)
- 1-Brixton版教程示例/chapter1-1-7:[Spring Cloud构建微服务架构(七)消息总线(Kafka)](http://blog.didispace.com/springcloud7-2/)

## 我的公众号

![输入图片说明](http://git.oschina.net/uploads/images/2017/0105/082137_85109d07_437188.jpeg "在这里输入图片标题")

## 推荐我的书

![输入图片说明](https://git.oschina.net/uploads/images/2017/0416/233656_dd3bce94_437188.png "在这里输入图片标题")

## 其他推荐

- [Spring Boot基础教程](http://blog.didispace.com/Spring-Boot%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/)
- [Spring Boot 2.0新特性](http://blog.didispace.com/Spring-Boot-2-0-feature/)
- [Spring Cloud基础教程](http://blog.didispace.com/Spring-Cloud%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/)
- [微服务架构专题](http://blog.didispace.com/micro-serivces-arch/)

================================================
FILE: 2-Dalston版教程示例/README.md
================================================
# Spring Cloud教程

本项目内容为Spring Cloud教程的程序样例。如您觉得该项目对您有用,欢迎点击右上方的**Star**按钮,给予支持!!

- 我的博客:http://blog.didispace.com
- **我的小密圈(深度交流与问答):https://t.xiaomiquan.com/zfEiY3v**
- GitHub:https://github.com/dyc87112/SpringCloud-Learning
- Gitee:https://gitee.com/didispace/SpringCloud-Learning
- Spring For All社区:http://www.spring4all.com/
- Spring Boot基础教程:http://blog.didispace.com/Spring-Boot%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/
- Spring Cloud基础教程:http://blog.didispace.com/Spring-Cloud%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/
- **公益调试Eureka:http://eureka.didispace.com**

**优惠云服务推荐**

- [阿里云:ECS云服务器2折起](https://www.aliyun.com/sale-season/2020/procurement-new-members?userCode=wxfqkr0o)
- [腾讯云:3年时长最低265元/年](https://url.cn/5iF8JP2)

## 教程列表

#### 《Spring Cloud构建微服务架构》系列博文Dalston版

- [服务注册与发现(Eureka、Consul)](http://blog.didispace.com/spring-cloud-starter-dalston-1/)
- [服务消费者(基础)](http://blog.didispace.com/spring-cloud-starter-dalston-2-1/)
- [服务消费者(Ribbon)](http://blog.didispace.com/spring-cloud-starter-dalston-2-2/)
- [服务消费者(Feign)](http://blog.didispace.com/spring-cloud-starter-dalston-2-3/)
- [服务消费者(Feign)传文件](http://blog.didispace.com/spring-cloud-starter-dalston-2-4/)
- [分布式配置中心](http://blog.didispace.com/spring-cloud-starter-dalston-3)
- [服务容错保护(Hystrix服务降级)](http://blog.didispace.com/spring-cloud-starter-dalston-4-1)
- [服务容错保护(Hystrix依赖隔离)](http://blog.didispace.com/spring-cloud-starter-dalston-4-2)
- [服务容错保护(Hystrix断路器)](http://blog.didispace.com/spring-cloud-starter-dalston-4-3)
- [Hystrix监控面板](http://blog.didispace.com/spring-cloud-starter-dalston-5-1/)
- [Hystrix监控数据聚合](http://blog.didispace.com/spring-cloud-starter-dalston-5-2/)
- [服务网关(基础)](http://blog.didispace.com/spring-cloud-starter-dalston-6-1/)
- [服务网关(路由配置)](http://blog.didispace.com/spring-cloud-starter-dalston-6-2/)
- [服务网关(过滤器)](http://blog.didispace.com/spring-cloud-starter-dalston-6-3/)
- [服务网关(API文档汇总)](http://blog.didispace.com/Spring-Cloud-Zuul-use-Swagger-API-doc/)
- [消息驱动的微服务(入门)](http://blog.didispace.com/spring-cloud-starter-dalston-7-1/)
- [消息驱动的微服务(核心概念)](http://blog.didispace.com/spring-cloud-starter-dalston-7-2/)
- [消息驱动的微服务(消费组)](http://blog.didispace.com/spring-cloud-starter-dalston-7-3/)
- [消息驱动的微服务(消费组案例:解决消息重复消费)](http://blog.didispace.com/spring-cloud-starter-dalston-7-5/)
- [消息驱动的微服务(消息分区)](http://blog.didispace.com/spring-cloud-starter-dalston-7-4/)
- [分布式服务跟踪(入门)](http://blog.didispace.com/spring-cloud-starter-dalston-8-1/)
- [分布式服务跟踪(跟踪原理)](http://blog.didispace.com/spring-cloud-starter-dalston-8-2/)
- [分布式服务跟踪(整合logstash)](http://blog.didispace.com/spring-cloud-starter-dalston-8-3/)
- [分布式服务跟踪(整合zipkin)](http://blog.didispace.com/spring-cloud-starter-dalston-8-4/)
- [分布式服务跟踪(收集原理)](http://blog.didispace.com/spring-cloud-starter-dalston-8-5/)
- [分布式服务跟踪(抽样收集)](http://blog.didispace.com/spring-cloud-starter-dalston-8-6/)

## 我的公众号

![输入图片说明](http://git.oschina.net/uploads/images/2017/0105/082137_85109d07_437188.jpeg "在这里输入图片标题")

## 推荐我的书

![输入图片说明](https://git.oschina.net/uploads/images/2017/0416/233656_dd3bce94_437188.png "在这里输入图片标题")

## 其他推荐

- [Spring Boot基础教程](http://blog.didispace.com/Spring-Boot%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/)
- [Spring Boot 2.0新特性](http://blog.didispace.com/Spring-Boot-2-0-feature/)
- [Spring Cloud基础教程](http://blog.didispace.com/Spring-Cloud%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/)
- [微服务架构专题](http://blog.didispace.com/micro-serivces-arch/)

================================================
FILE: 2-Dalston版教程示例/api-gateway/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>api-gateway</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>api-gateway</name>
	<description>Spring Cloud In Action</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.4.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-zuul</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 2-Dalston版教程示例/api-gateway/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@EnableZuulProxy
@SpringCloudApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/api-gateway/src/main/resources/application.yaml
================================================
spring:
  application:
    name: api-gateway

server:
  port: 1101

zuul:
  routes:
#  single-instance
    api-a:
      path: /api-a/**
      url: http://localhost:2001/
#  multi-instance
    api-b:
      path: /api-b/**
      serviceId: api-b

api-b:
  ribbon:
    listOfServers: http://localhost:2001/, http://localhost:2002/

================================================
FILE: 2-Dalston版教程示例/api-gateway-with-eureka/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>api-gateway-with-eureka</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>api-gateway-with-eureka</name>
	<description>Spring Cloud In Action</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.4.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-zuul</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 2-Dalston版教程示例/api-gateway-with-eureka/src/main/java/com/didispace/AccessFilter.java
================================================
package com.didispace;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.http.HttpServletRequest;

public class AccessFilter extends ZuulFilter {

    private static Logger log = LoggerFactory.getLogger(AccessFilter.class);

    @Override
    public String filterType() {
        return "pre";
    }

    @Override
    public int filterOrder() {
        return 0;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        HttpServletRequest request = ctx.getRequest();

      	log.info("send {} request to {}", request.getMethod(), request.getRequestURL().toString());

        Object accessToken = request.getParameter("accessToken");
        if(accessToken == null) {
            log.warn("access token is empty");
            ctx.setSendZuulResponse(false);
            ctx.setResponseStatusCode(401);
            return null;
        }
        log.info("access token ok");
        return null;
    }

}

================================================
FILE: 2-Dalston版教程示例/api-gateway-with-eureka/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@EnableZuulProxy
@SpringCloudApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/api-gateway-with-eureka/src/main/resources/application.yaml
================================================
spring:
  application:
    name: api-gateway

server:
  port: 1101

zuul:
  routes:
    api-a:
      path: /api-a/**
      serviceId: eureka-client

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:1001/eureka/


================================================
FILE: 2-Dalston版教程示例/config-client/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>config-client</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>config-client</name>
	<description>Spring Cloud In Action</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.4.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Camden.SR5</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 2-Dalston版教程示例/config-client/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;

//@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/config-client/src/main/resources/bootstrap.yml
================================================
spring:
  application:
    name: config-client
  cloud:
    config:
      uri: http://localhost:1201/
      profile: default
      label: master

server:
  port: 2001



================================================
FILE: 2-Dalston版教程示例/config-server-git/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>config-server-git</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>config-server-git</name>
	<description>Spring Cloud In Action</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.4.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-config-server</artifactId>
		</dependency>
		<!--<dependency>-->
			<!--<groupId>org.springframework.boot</groupId>-->
			<!--<artifactId>spring-boot-starter-security</artifactId>-->
		<!--</dependency>-->
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 2-Dalston版教程示例/config-server-git/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.config.server.EnableConfigServer;

@EnableConfigServer
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/config-server-git/src/main/resources/application.yml
================================================
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: http://git.oschina.net/didispace/config-repo-demo/
#          search-paths: repo
#          username:
#          password:

server:
  port: 1201


================================================
FILE: 2-Dalston版教程示例/consul-client/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>consul-client</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>consul-client</name>
	<description>Spring Cloud In Action</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.4.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-consul-discovery</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 2-Dalston版教程示例/consul-client/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/consul-client/src/main/java/com/didispace/DcController.java
================================================
package com.didispace;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author 翟永超
 * @create 2017/4/15.
 * @blog http://blog.didispace.com
 */
@RestController
public class DcController {

    @Autowired
    DiscoveryClient discoveryClient;

    @GetMapping("/dc")
    public String dc() {
        String services = "Services: " + discoveryClient.getServices();
        System.out.println(services);
        return services;
    }

}


================================================
FILE: 2-Dalston版教程示例/consul-client/src/main/resources/application.properties
================================================
spring.application.name=consul-client
server.port=2001

spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500


================================================
FILE: 2-Dalston版教程示例/consul-consumer/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
    <artifactId>consul-consumer</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>consul-consumer</name>
    <description>Spring Cloud In Action</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

================================================
FILE: 2-Dalston版教程示例/consul-consumer/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	@Bean
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/consul-consumer/src/main/java/com/didispace/DcController.java
================================================
package com.didispace;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * @author 翟永超
 * @create 2017/4/15.
 * @blog http://blog.didispace.com
 */
@RestController
public class DcController {

    @Autowired
    LoadBalancerClient loadBalancerClient;
    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/consumer")
    public String dc() {
        ServiceInstance serviceInstance = loadBalancerClient.choose("consul-client");
        String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/dc";
        System.out.println(url);
        return restTemplate.getForObject(url, String.class);
    }

}


================================================
FILE: 2-Dalston版教程示例/consul-consumer/src/main/resources/application.properties
================================================
spring.application.name=consul-consumer
server.port=2101

spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500

logging.file=${spring.application.name}.log


================================================
FILE: 2-Dalston版教程示例/eureka-client/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-client</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-client</name>
	<description>Spring Cloud In Action</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.4.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!--<dependency>-->
			<!--<groupId>org.springframework.boot</groupId>-->
			<!--<artifactId>spring-boot-starter-actuator</artifactId>-->
		<!--</dependency>-->
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 2-Dalston版教程示例/eureka-client/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/eureka-client/src/main/java/com/didispace/DcController.java
================================================
package com.didispace;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author 翟永超
 * @create 2017/4/15.
 * @blog http://blog.didispace.com
 */
@RestController
public class DcController {

    @Autowired
    DiscoveryClient discoveryClient;

    @GetMapping("/dc")
    public String dc() {
        String services = "Services: " + discoveryClient.getServices();
        System.out.println(services);
        return services;
    }

}


================================================
FILE: 2-Dalston版教程示例/eureka-client/src/main/resources/application.properties
================================================
spring.application.name=eureka-client
server.port=2001

eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
#eureka.client.serviceUrl.defaultZone=http://peer1:1001/eureka/,http://peer2:1002/eureka/

logging.file=${spring.application.name}.log

#eureka.instance.prefer-ip-address=true

# 
#eureka.client.healthcheck.enabled=true

# ˿
#eureka.instance.instance-id=${spring.application.name}:${random.int}
#server.port=0
#server.port=${random.int[10000,19999]}


================================================
FILE: 2-Dalston版教程示例/eureka-consumer/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
    <artifactId>eureka-consumer</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>eureka-consumer</name>
    <description>Spring Cloud In Action</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

================================================
FILE: 2-Dalston版教程示例/eureka-consumer/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	@Bean
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/eureka-consumer/src/main/java/com/didispace/DcController.java
================================================
package com.didispace;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * @author 翟永超
 * @create 2017/4/15.
 * @blog http://blog.didispace.com
 */
@RestController
public class DcController {

    @Autowired
    LoadBalancerClient loadBalancerClient;
    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/consumer")
    public String dc() {
        ServiceInstance serviceInstance = loadBalancerClient.choose("eureka-client");
        String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/dc";
        System.out.println(url);
        return restTemplate.getForObject(url, String.class);
    }

}


================================================
FILE: 2-Dalston版教程示例/eureka-consumer/src/main/resources/application.properties
================================================
spring.application.name=eureka-consumer
server.port=2101

eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/

logging.file=${spring.application.name}.log


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-feign/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
    <artifactId>eureka-consumer-feign</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>eureka-consumer-feign</name>
    <description>Spring Cloud In Action</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

================================================
FILE: 2-Dalston版教程示例/eureka-consumer-feign/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-feign/src/main/java/com/didispace/DcClient.java
================================================
package com.didispace;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

/**
 * @author 翟永超
 * @create 2017/6/24.
 * @blog http://blog.didispace.com
 */
@FeignClient("eureka-client")
public interface DcClient {

    @GetMapping("/dc")
    String consumer();

}


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-feign/src/main/java/com/didispace/DcController.java
================================================
package com.didispace;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author 翟永超
 * @create 2017/4/15.
 * @blog http://blog.didispace.com
 */
@RestController
public class DcController {

    @Autowired
    DcClient dcClient;

    @GetMapping("/consumer")
    public String dc() {
        return dcClient.consumer();
    }

}


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-feign/src/main/resources/application.properties
================================================
spring.application.name=eureka-consumer
server.port=2101

eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/

logging.file=${spring.application.name}.log


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-feign-hystrix/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
    <artifactId>eureka-consumer-feign-hystrix</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>eureka-consumer-feign-hystrix</name>
    <description>Spring Cloud In Action</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

================================================
FILE: 2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/DcClient.java
================================================
package com.didispace;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

/**
 * @author 翟永超
 * @create 2017/6/24.
 * @blog http://blog.didispace.com
 */
@FeignClient(name = "eureka-client", fallback = DcClientFallback.class)
public interface DcClient {

    @GetMapping("/dc")
    String consumer();

}


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/DcClientFallback.java
================================================
package com.didispace;

import org.springframework.stereotype.Component;

/**
 * @author 翟永超
 * @create 2017/6/24.
 * @blog http://blog.didispace.com
 */
@Component
public class DcClientFallback implements DcClient {

    @Override
    public String consumer() {
        return "fallback";
    }
}


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/DcController.java
================================================
package com.didispace;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author 翟永超
 * @create 2017/4/15.
 * @blog http://blog.didispace.com
 */
@RestController
public class DcController {

    @Autowired
    DcClient dcClient;

    @GetMapping("/consumer")
    public String dc() {
        return dcClient.consumer();
    }

}


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/resources/application.properties
================================================
spring.application.name=eureka-consumer
server.port=2101

eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/

feign.hystrix.enabled=true

logging.file=${spring.application.name}.log


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-ribbon/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
    <artifactId>eureka-consumer-ribbon</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>eureka-consumer-ribbon</name>
    <description>Spring Cloud In Action</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

================================================
FILE: 2-Dalston版教程示例/eureka-consumer-ribbon/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	@Bean
	@LoadBalanced
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-ribbon/src/main/java/com/didispace/DcController.java
================================================
package com.didispace;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * @author 翟永超
 * @create 2017/4/15.
 * @blog http://blog.didispace.com
 */
@RestController
public class DcController {

    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/consumer")
    public String dc() {
        return restTemplate.getForObject("http://eureka-client/dc", String.class);
    }

}


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-ribbon/src/main/resources/application.properties
================================================
spring.application.name=eureka-consumer
server.port=2101

eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/

logging.file=${spring.application.name}.log


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-ribbon-hystrix/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
    <artifactId>eureka-consumer-ribbon-hystrix</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>eureka-consumer-ribbon-hystrix</name>
    <description>Spring Cloud In Action</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

================================================
FILE: 2-Dalston版教程示例/eureka-consumer-ribbon-hystrix/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@EnableCircuitBreaker
@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	@Bean
	@LoadBalanced
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-ribbon-hystrix/src/main/java/com/didispace/DcController.java
================================================
package com.didispace;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.ribbon.proxy.annotation.Hystrix;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * @author 翟永超
 * @create 2017/4/15.
 * @blog http://blog.didispace.com
 */
@RestController
public class DcController {

    @Autowired
    ConsumerService consumerService;

    @GetMapping("/consumer")
    public String dc() {
        return consumerService.consumer();
    }

    @Service
    class ConsumerService {

        @Autowired
        RestTemplate restTemplate;

        @HystrixCommand(fallbackMethod = "fallback")
        public String consumer() {
            return restTemplate.getForObject("http://eureka-client/dc", String.class);
        }

        public String fallback() {
            return "fallbck";
        }

    }

}


================================================
FILE: 2-Dalston版教程示例/eureka-consumer-ribbon-hystrix/src/main/resources/application.properties
================================================
spring.application.name=eureka-consumer-ribbon-hystrix
server.port=2101

eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/

logging.file=${spring.application.name}.log


================================================
FILE: 2-Dalston版教程示例/eureka-feign-api/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-feign-api</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-feign-api</name>
	<description>Spring Cloud In Action</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.6.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR2</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
</project>

================================================
FILE: 2-Dalston版教程示例/eureka-feign-api/src/main/java/com/didispace/api/HelloService.java
================================================
package com.didispace.api;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * @author 翟永超
 * @create 2017/8/8.
 * @blog http://blog.didispace.com
 */
public interface HelloService {

    @GetMapping("/hello")
    String hello(@RequestParam(value = "name") String name);

}


================================================
FILE: 2-Dalston版教程示例/eureka-feign-client/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-feign-client</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-feign-client</name>
	<description>Spring Cloud In Action</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.6.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>com.didispace</groupId>
			<artifactId>eureka-feign-api</artifactId>
			<version>1.0.0</version>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR2</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 2-Dalston版教程示例/eureka-feign-client/src/main/java/com/didispace/api/impl/Application.java
================================================
package com.didispace.api.impl;

import com.didispace.api.HelloService;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.RestController;

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	@RestController
	class HelloController implements HelloService {

		@Override
		public String hello(String name) {
			return "hello " + name;
		}

	}

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/eureka-feign-client/src/main/resources/application.properties
================================================
spring.application.name=eureka-feign-client
server.port=2101

eureka.client.serviceUrl.defaultZone=http://eureka.didispace.com/eureka/


================================================
FILE: 2-Dalston版教程示例/eureka-feign-consumer/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-feign-consumer</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-feign-consumer</name>
	<description>Spring Cloud In Action</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.6.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-feign</artifactId>
		</dependency>
		<dependency>
			<groupId>com.didispace</groupId>
			<artifactId>eureka-feign-api</artifactId>
			<version>1.0.0</version>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR2</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 2-Dalston版教程示例/eureka-feign-consumer/src/main/java/com/didispace/api/consumer/Application.java
================================================
package com.didispace.api.consumer;

import com.didispace.api.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	@FeignClient("eureka-feign-client")
	interface HelloServiceClient extends HelloService {

	}

	@RestController
	class TestController {

		@Autowired
		private HelloServiceClient helloServiceClient;

		@GetMapping("/test")
		public String test(String name) {
			return helloServiceClient.hello(name);
		}

	}

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/eureka-feign-consumer/src/main/resources/application.properties
================================================
spring.application.name=eureka-feign-consumer
server.port=2102

eureka.client.serviceUrl.defaultZone=http://eureka.didispace.com/eureka/


================================================
FILE: 2-Dalston版教程示例/eureka-feign-upload-client/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-feign-upload-client</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-feign-upload-client</name>
	<description>Spring Cloud In Action</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.6.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-feign</artifactId>
		</dependency>

		<dependency>
			<groupId>io.github.openfeign.form</groupId>
			<artifactId>feign-form</artifactId>
			<version>3.0.3</version>
		</dependency>
		<dependency>
			<groupId>io.github.openfeign.form</groupId>
			<artifactId>feign-form-spring</artifactId>
			<version>3.0.3</version>
		</dependency>
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.3</version>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.16.20</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR2</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 2-Dalston版教程示例/eureka-feign-upload-client/src/main/java/com/didispace/api/consumer/Application.java
================================================
package com.didispace.api.consumer;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;


@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }

}


================================================
FILE: 2-Dalston版教程示例/eureka-feign-upload-client/src/main/java/com/didispace/api/consumer/UploadService.java
================================================
package com.didispace.api.consumer;

import feign.codec.Encoder;
import feign.form.spring.SpringFormEncoder;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;

@FeignClient(value = "eureka-feign-upload-server", configuration = UploadService.MultipartSupportConfig.class)
public interface UploadService {

    @PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    String handleFileUpload(@RequestPart(value = "file") MultipartFile file);

    @Configuration
    class MultipartSupportConfig {
        @Bean
        public Encoder feignFormEncoder() {
            return new SpringFormEncoder();
        }
    }

}

================================================
FILE: 2-Dalston版教程示例/eureka-feign-upload-client/src/main/resources/application.properties
================================================
spring.application.name=eureka-feign-upload-client
server.port=10002

eureka.client.serviceUrl.defaultZone=http://eureka.didispace.com/eureka/


================================================
FILE: 2-Dalston版教程示例/eureka-feign-upload-client/src/test/java/com/didispace/api/consumer/UploadTester.java
================================================
package com.didispace.api.consumer;

import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;

@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class UploadTester {

    @Autowired
    private UploadService uploadService;

    @Test
    @SneakyThrows
    public void testHandleFileUpload() {

        File file = new File("upload.txt");
        DiskFileItem fileItem = (DiskFileItem) new DiskFileItemFactory().createItem("file",
                MediaType.TEXT_PLAIN_VALUE, true, file.getName());

        try (InputStream input = new FileInputStream(file); OutputStream os = fileItem.getOutputStream()) {
            IOUtils.copy(input, os);
        } catch (Exception e) {
            throw new IllegalArgumentException("Invalid file: " + e, e);
        }

        MultipartFile multi = new CommonsMultipartFile(fileItem);

        log.info(uploadService.handleFileUpload(multi));
    }

}


================================================
FILE: 2-Dalston版教程示例/eureka-feign-upload-client/upload.txt
================================================
aaa
bbb

================================================
FILE: 2-Dalston版教程示例/eureka-feign-upload-server/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-feign-upload-server</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-feign-upload-server</name>
	<description>Spring Cloud In Action</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.6.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-feign</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR2</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 2-Dalston版教程示例/eureka-feign-upload-server/src/main/java/com/didispace/api/consumer/Application.java
================================================
package com.didispace.api.consumer;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class Application {

    @RestController
    public class UploadController {

        @PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
        public String handleFileUpload(@RequestPart(value = "file") MultipartFile file) {
            return file.getName();
        }

    }

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }

}


================================================
FILE: 2-Dalston版教程示例/eureka-feign-upload-server/src/main/resources/application.properties
================================================
spring.application.name=eureka-feign-upload-server
server.port=10001

eureka.client.serviceUrl.defaultZone=http://eureka.didispace.com/eureka/


================================================
FILE: 2-Dalston版教程示例/eureka-server/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>eureka-server</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>eureka-server</name>
	<description>Spring Cloud In Action</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.4.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka-server</artifactId>
		</dependency>

		<!--<dependency>-->
			<!--<groupId>org.springframework.boot</groupId>-->
			<!--<artifactId>spring-boot-starter-actuator</artifactId>-->
		<!--</dependency>-->
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 2-Dalston版教程示例/eureka-server/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/eureka-server/src/main/resources/application-peer1.properties
================================================
spring.application.name=eureka-server
server.port=1001

eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2:1002/eureka/





================================================
FILE: 2-Dalston版教程示例/eureka-server/src/main/resources/application-peer2.properties
================================================
spring.application.name=eureka-server
server.port=1002

eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1:1001/eureka/





================================================
FILE: 2-Dalston版教程示例/eureka-server/src/main/resources/application.properties
================================================
spring.application.name=eureka-server
server.port=1001

eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

logging.file=${spring.application.name}.log

# رձ
#eureka.server.enable-self-preservation=false




================================================
FILE: 2-Dalston版教程示例/hystrix-collapser-consumer/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>hystrix-collapser-consumer</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>hystrix-collapser-consumer</name>
	<description>Spring Cloud In Action</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.4.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!--<dependency>-->
			<!--<groupId>org.springframework.boot</groupId>-->
			<!--<artifactId>spring-boot-starter-actuator</artifactId>-->
		<!--</dependency>-->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-hystrix</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 2-Dalston版教程示例/hystrix-collapser-consumer/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@EnableHystrix
@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	@Bean
	@LoadBalanced
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/hystrix-collapser-consumer/src/main/java/com/didispace/UserService.java
================================================
package com.didispace;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCollapser;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;

/**
 * @author 翟永超
 * @create 2017/7/25.
 * @blog http://blog.didispace.com
 */
@Slf4j
@Service
public class UserService {

    @Autowired
    RestTemplate restTemplate;

    @HystrixCollapser(
            scope = com.netflix.hystrix.HystrixCollapser.Scope.GLOBAL,
            batchMethod = "findByIds",
            collapserProperties = {
                @HystrixProperty(name="timerDelayInMilliseconds", value = "100")
            }
    )
    public Future<String> findById(Long id) {
        log.info("findById : " + id);
        return null;
    }

    @HystrixCommand(commandProperties = @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "5000"))
    public List<String> findByIds(List<Long> ids) {
        log.info("findByIds : " + ids);
        List<String> result = restTemplate.getForObject("http://hystrix-collapser-provider/users?ids={1}",
                List.class, StringUtils.join(ids, ","));
        log.info(result.toString());
        return result;
    }

}


================================================
FILE: 2-Dalston版教程示例/hystrix-collapser-consumer/src/main/resources/application.properties
================================================
spring.application.name=hystrix-collapser-consumer
server.port=2002

eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/




================================================
FILE: 2-Dalston版教程示例/hystrix-collapser-consumer/src/test/java/CollapserTest.java
================================================
import com.didispace.Application;
import com.didispace.UserService;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.concurrent.Future;

/**
 * @author 翟永超
 * @create 2017/7/25.
 * @blog http://blog.didispace.com
 */
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class CollapserTest {

    @Autowired
    UserService userService;

    @Test
    public void test() throws Exception {
        Future<String> u1 = userService.findById(1L);
        Future<String> u2 = userService.findById(2L);
        Future<String> u3 = userService.findById(3L);
        Future<String> u4 = userService.findById(4L);


        log.info(u1.get().toString());
        log.info(u2.get().toString());
        log.info(u3.get().toString());
        log.info(u4.get().toString());


        Assert.assertEquals("aaa",u1.get());
        Assert.assertEquals("bbb",u2.get());
        Assert.assertEquals("ccc",u3.get());
        Assert.assertEquals("ddd",u4.get());
    }

}


================================================
FILE: 2-Dalston版教程示例/hystrix-collapser-provider/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>hystrix-collapser-provider</artifactId>
	<version>1.0.0</version>
	<packaging>jar</packaging>

	<name>hystrix-collapser-provider</name>
	<description>Spring Cloud In Action</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.4.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!--<dependency>-->
			<!--<groupId>org.springframework.boot</groupId>-->
			<!--<artifactId>spring-boot-starter-actuator</artifactId>-->
		<!--</dependency>-->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

================================================
FILE: 2-Dalston版教程示例/hystrix-collapser-provider/src/main/java/com/didispace/Application.java
================================================
package com.didispace;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		new SpringApplicationBuilder(Application.class).web(true).run(args);
	}

}


================================================
FILE: 2-Dalston版教程示例/hystrix-collapser-provider/src/main/java/com/didispace/UserController.java
================================================
package com.didispace;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 翟永超
 * @create 2017/4/15.
 * @blog http://blog.didispace.com
 */
@Slf4j
@RestController
public class UserController {

    private static Map<Long, String> users = new HashMap<>();

    static {
        users.put(1L, "aaa");
        users.put(2L, "bbb");
        users.put(3L, "ccc");
        users.put(4L, "ddd");
        users.put(5L, "eee");
    }

    @RequestMapping(value = "/users/{id}", method = RequestMethod.GET)
    public String findById(@PathVariable Long id) {
        log.info("findById : " + id);
        return users.get(id);
    }

    @RequestMapping(value = "/users", method = RequestMethod.GET)
    public List<String> findByIds(@RequestParam String ids) {
        log.info("findByIds : " + ids);
        List<String> result = new ArrayList<>();
        for(String id : ids.split(",")) {
            if(users.get(Long.valueOf(id)) != null)
                result.add(users.get(Long.valueOf(id)));
        }

        log.info("findByIds : " + result);
        return result;
    }

}


================================================
FILE: 2-Dalston版教程示例/hystrix-collapser-provider/src/main/resources/application.properties
================================================
spring.application.name=hystrix-collapser-provider
server.port=2001

eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/




================================================
FILE: 2-Dalston版教程示例/hystrix-dashboard/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>hystrix-dashboard</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>hystrix-dashboard</name>

	<parent>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-parent</artifactId>
		<version>Dalston.SR1</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-hystrix</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>


================================================
FILE: 2-Dalston版教程示例/hystrix-dashboard/src/main/java/com/didispace/HystrixDashboardApplication.java
================================================
package com.didispace;

import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;

@EnableHystrixDashboard
@SpringCloudApplication
public class HystrixDashboardApplication {

	public static void main(String[] args) {
		SpringApplication.run(HystrixDashboardApplication.class, args);
	}

}


================================================
FILE: 2-Dalston版教程示例/hystrix-dashboard/src/main/resources/application.properties
================================================
spring.application.name=hystrix-dashboard
server.port=1301

================================================
FILE: 2-Dalston版教程示例/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
    <artifactId>spring-cloud-dalston</artifactId>
    <packaging>pom</packaging>
    <version>1.0</version>

    <modules>

        <module>eureka-server</module>
        <module>eureka-client</module>
        <module>consul-client</module>

        <module>eureka-consumer</module>
        <module>consul-consumer</module>

        <!--使用ribbon和feign调用服务接口-->
        <module>eureka-consumer-ribbon</module>
        <module>eureka-consumer-feign</module>

        <!--分布式配置中心-->
        <module>config-server-git</module>
        <module>config-client</module>

        <!--使用hystrix-->
        <module>eureka-consumer-ribbon-hystrix</module>
        <module>eureka-consumer-feign-hystrix</module>

        <module>hystrix-dashboard</module>
        <module>turbine</module>
        <module>turbine-amqp</module>

        <!--使用feign-->
        <module>eureka-feign-api</module>
        <module>eureka-feign-client</module>
        <module>eureka-feign-consumer</module>
        <!--使用feign上传文件-->
        <module>eureka-feign-upload-client</module>
        <module>eureka-feign-upload-server</module>

        <!--hystrix请求合并-->
        <module>hystrix-collapser-provider</module>
        <module>hystrix-collapser-consumer</module>

        <!--api网关-->
        <module>api-gateway</module>
        <module>api-gateway-with-eureka</module>

        <!--使用spring cloud stream-->
        <module>stream-hello</module>
        <module>stream-consumer-group</module> <!-- 负载均衡消费 -->
        <module>stream-consumer-self</module> <!-- 消费自己的消息 -->

        <!--分布式跟踪-->
        <module>trace-1</module>
        <module>trace-2</module>
        <module>zipkin-server</module>
        <module>zipkin-server-stream</module>

        <!--swagger api 文档汇总-->
        <module>swagger-service-a</module>
        <module>swagger-service-b</module>
        <module>swagger-api-gateway</module>

    </modules>

</project>

================================================
FILE: 2-Dalston版教程示例/stream-consumer-group/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>stream-consumer-group</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.9.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR4</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>


================================================
FILE: 2-Dalston版教程示例/stream-consumer-group/src/main/java/com/didispace/stream/ExampleApplication.java
================================================
package com.didispace.stream;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ExampleApplication {

    public static void main(String[] args) {
        SpringApplication.run(ExampleApplication.class, args);
    }

}

================================================
FILE: 2-Dalston版教程示例/stream-consumer-group/src/main/java/com/didispace/stream/ExampleBinder.java
================================================
package com.didispace.stream;

import org.springframework.cloud.stream.annotation.Input;
import org.springframework.messaging.SubscribableChannel;

interface ExampleBinder {

    String NAME = "example-topic";

    @Input(NAME)
    SubscribableChannel input();

}

================================================
FILE: 2-Dalston版教程示例/stream-consumer-group/src/main/java/com/didispace/stream/ExampleReceiver.java
================================================
package com.didispace.stream;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;

@EnableBinding(ExampleBinder.class)
public class ExampleReceiver {

    private static Logger logger = LoggerFactory.getLogger(ExampleReceiver.class);

    @StreamListener(ExampleBinder.NAME)
    public void receive(String payload) {
        logger.info("Received: " + payload);
    }

}

================================================
FILE: 2-Dalston版教程示例/stream-consumer-group/src/main/resources/application.properties
================================================
spring.application.name=stream-consumer-group
server.port=0

spring.cloud.stream.bindings.example-topic.group=aaa


================================================
FILE: 2-Dalston版教程示例/stream-consumer-group/src/test/java/com/didispace/ExampleApplicationTests.java
================================================
package com.didispace;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.Output;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.messaging.MessageChannel;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@EnableBinding(value = {ExampleApplicationTests.ExampleBinder.class})
public class ExampleApplicationTests {

	@Autowired
	private ExampleBinder exampleBinder;

	@Test
	public void exampleBinderTester() {
        exampleBinder.output().send(MessageBuilder.withPayload("Produce a message from : http://blog.didispace.com").build());
	}

	public interface ExampleBinder {

		String NAME = "example-topic";

		@Output(NAME)
		MessageChannel output();

	}

}


================================================
FILE: 2-Dalston版教程示例/stream-consumer-self/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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.didispace</groupId>
	<artifactId>stream-consumer-self</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.9.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.18.2</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Dalston.SR4</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>


================================================
FILE: 2-Dalston版教程示例/stream-consumer-self/src/main/java/com/didispace/stream/TestApplication.java
================================================
package com.didispace.stream;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.stream.annotation.EnableBinding;


@EnableBinding(TestTopic.class)
@SpringBootApplication
public class TestApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }

}

================================================
FILE: 2-Dalston版教程示例/stream-consumer-self/src/main/java/com/didispace/stream/TestController.java
================================================
package com.didispace.stream;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
public class TestController {

    @Autowired
    private TestTopic testTopic;

    @GetMapping("/sendMessage")
    public String messageWithMQ(@RequestParam String message) {
        testTopic.output().send(MessageBuilder.withPayload(message).build());
        return "ok";
    }

}


================================================
FILE: 2-Dalston版教程示例/stream-consumer-self/src/main/java/com/didispace/stream/TestListener.java
================================================
package com.didispace.stream;

import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.stream.annotation.Strea
Download .txt
gitextract__j33z0th/

├── .gitignore
├── 1-Brixton版教程示例/
│   ├── Chapter1-1-1/
│   │   ├── compute-service/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── com/
│   │   │       │   │       └── didispace/
│   │   │       │   │           ├── ComputeServiceApplication.java
│   │   │       │   │           └── web/
│   │   │       │   │               └── ComputeController.java
│   │   │       │   └── resources/
│   │   │       │       └── application.properties
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── didispace/
│   │   │                       └── ApplicationTests.java
│   │   └── eureka-server/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── didispace/
│   │               │           └── Application.java
│   │               └── resources/
│   │                   └── application.properties
│   ├── Chapter1-1-2/
│   │   ├── eureka-feign/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           ├── FeignApplication.java
│   │   │           │           ├── service/
│   │   │           │           │   └── ComputeClient.java
│   │   │           │           └── web/
│   │   │           │               └── ConsumerController.java
│   │   │           └── resources/
│   │   │               └── application.properties
│   │   └── eureka-ribbon/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── didispace/
│   │               │           ├── RibbonApplication.java
│   │               │           └── web/
│   │               │               └── ConsumerController.java
│   │               └── resources/
│   │                   └── application.properties
│   ├── Chapter1-1-3/
│   │   ├── compute-service/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── com/
│   │   │       │   │       └── didispace/
│   │   │       │   │           ├── ComputeServiceApplication.java
│   │   │       │   │           └── web/
│   │   │       │   │               └── ComputeController.java
│   │   │       │   └── resources/
│   │   │       │       └── application.properties
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── didispace/
│   │   │                       └── ApplicationTests.java
│   │   ├── eureka-feign/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── didispace/
│   │   │                       ├── FeignApplication.java
│   │   │                       ├── service/
│   │   │                       │   ├── ComputeClient.java
│   │   │                       │   └── ComputeClientHystrix.java
│   │   │                       └── web/
│   │   │                           └── ConsumerController.java
│   │   ├── eureka-ribbon/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── didispace/
│   │   │                       ├── RibbonApplication.java
│   │   │                       ├── service/
│   │   │                       │   └── ComputeService.java
│   │   │                       └── web/
│   │   │                           └── ConsumerController.java
│   │   └── eureka-server/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── didispace/
│   │               │           └── Application.java
│   │               └── resources/
│   │                   └── application.properties
│   ├── Chapter1-1-4/
│   │   ├── config-client/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           ├── Application.java
│   │   │           │           └── web/
│   │   │           │               └── TestController.java
│   │   │           └── resources/
│   │   │               └── bootstrap.properties
│   │   ├── config-repo/
│   │   │   ├── didispace-dev.properties
│   │   │   ├── didispace-prod.properties
│   │   │   ├── didispace-test.properties
│   │   │   └── didispace.properties
│   │   └── config-server/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── didispace/
│   │               │           └── Application.java
│   │               └── resources/
│   │                   ├── application.properties
│   │                   ├── didispace-dev.properties
│   │                   ├── didispace-prod.properties
│   │                   ├── didispace-test.properties
│   │                   └── didispace.properties
│   ├── Chapter1-1-5/
│   │   ├── api-gateway/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           ├── Application.java
│   │   │           │           └── filter/
│   │   │           │               └── AccessFilter.java
│   │   │           └── resources/
│   │   │               └── application.properties
│   │   ├── eureka-server/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           └── Application.java
│   │   │           └── resources/
│   │   │               └── application.properties
│   │   ├── service-A/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── com/
│   │   │       │   │       └── didispace/
│   │   │       │   │           ├── ComputeServiceApplication.java
│   │   │       │   │           └── web/
│   │   │       │   │               └── ComputeController.java
│   │   │       │   └── resources/
│   │   │       │       └── application.properties
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── didispace/
│   │   │                       └── ApplicationTests.java
│   │   └── service-B/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── com/
│   │           │   │       └── didispace/
│   │           │   │           ├── ComputeServiceApplication.java
│   │           │   │           └── web/
│   │           │   │               └── ComputeController.java
│   │           │   └── resources/
│   │           │       └── application.properties
│   │           └── test/
│   │               └── java/
│   │                   └── com/
│   │                       └── didispace/
│   │                           └── ApplicationTests.java
│   ├── Chapter1-1-6/
│   │   ├── compute-service/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── com/
│   │   │       │   │       └── didispace/
│   │   │       │   │           ├── ComputeServiceApplication.java
│   │   │       │   │           └── web/
│   │   │       │   │               └── ComputeController.java
│   │   │       │   └── resources/
│   │   │       │       └── application.properties
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── didispace/
│   │   │                       └── ApplicationTests.java
│   │   └── eureka-server/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── didispace/
│   │               │           └── Application.java
│   │               └── resources/
│   │                   ├── application-peer1.properties
│   │                   └── application-peer2.properties
│   ├── Chapter1-1-7/
│   │   ├── config-client-eureka/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           ├── Application.java
│   │   │           │           └── web/
│   │   │           │               └── TestController.java
│   │   │           └── resources/
│   │   │               └── bootstrap.properties
│   │   ├── config-client-eureka-kafka/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           ├── Application.java
│   │   │           │           └── web/
│   │   │           │               └── TestController.java
│   │   │           └── resources/
│   │   │               └── bootstrap.properties
│   │   ├── config-repo/
│   │   │   ├── didispace-dev.properties
│   │   │   ├── didispace-prod.properties
│   │   │   ├── didispace-test.properties
│   │   │   └── didispace.properties
│   │   ├── config-server-eureka/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           └── Application.java
│   │   │           └── resources/
│   │   │               ├── application.properties
│   │   │               ├── didispace-dev.properties
│   │   │               ├── didispace-prod.properties
│   │   │               ├── didispace-test.properties
│   │   │               └── didispace.properties
│   │   └── config-server-eureka-kafka/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── didispace/
│   │               │           └── Application.java
│   │               └── resources/
│   │                   ├── application.properties
│   │                   ├── didispace-dev.properties
│   │                   ├── didispace-prod.properties
│   │                   ├── didispace-test.properties
│   │                   └── didispace.properties
│   ├── Chapter1-1-8/
│   │   ├── config-client-eureka/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           ├── java/
│   │   │           │   └── com/
│   │   │           │       └── didispace/
│   │   │           │           ├── Application.java
│   │   │           │           └── web/
│   │   │           │               └── TestController.java
│   │   │           └── resources/
│   │   │               └── bootstrap.properties
│   │   ├── config-repo/
│   │   │   ├── didispace-dev.properties
│   │   │   ├── didispace-prod.properties
│   │   │   ├── didispace-test.properties
│   │   │   └── didispace.properties
│   │   └── config-server-eureka/
│   │       ├── pom.xml
│   │       └── src/
│   │           └── main/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── didispace/
│   │               │           └── Application.java
│   │               └── resources/
│   │                   ├── application.properties
│   │                   ├── didispace-dev.properties
│   │                   ├── didispace-prod.properties
│   │                   ├── didispace-test.properties
│   │                   └── didispace.properties
│   └── README.md
├── 2-Dalston版教程示例/
│   ├── README.md
│   ├── api-gateway/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── Application.java
│   │           └── resources/
│   │               └── application.yaml
│   ├── api-gateway-with-eureka/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── AccessFilter.java
│   │           │           └── Application.java
│   │           └── resources/
│   │               └── application.yaml
│   ├── config-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── Application.java
│   │           └── resources/
│   │               └── bootstrap.yml
│   ├── config-server-git/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── Application.java
│   │           └── resources/
│   │               └── application.yml
│   ├── consul-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── consul-consumer/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-consumer/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-consumer-feign/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           ├── DcClient.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-consumer-feign-hystrix/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           ├── DcClient.java
│   │           │           ├── DcClientFallback.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-consumer-ribbon/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-consumer-ribbon-hystrix/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           └── DcController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-feign-api/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── com/
│   │                   └── didispace/
│   │                       └── api/
│   │                           └── HelloService.java
│   ├── eureka-feign-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── api/
│   │           │               └── impl/
│   │           │                   └── Application.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-feign-consumer/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── api/
│   │           │               └── consumer/
│   │           │                   └── Application.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-feign-upload-client/
│   │   ├── pom.xml
│   │   ├── src/
│   │   │   ├── main/
│   │   │   │   ├── java/
│   │   │   │   │   └── com/
│   │   │   │   │       └── didispace/
│   │   │   │   │           └── api/
│   │   │   │   │               └── consumer/
│   │   │   │   │                   ├── Application.java
│   │   │   │   │                   └── UploadService.java
│   │   │   │   └── resources/
│   │   │   │       └── application.properties
│   │   │   └── test/
│   │   │       └── java/
│   │   │           └── com/
│   │   │               └── didispace/
│   │   │                   └── api/
│   │   │                       └── consumer/
│   │   │                           └── UploadTester.java
│   │   └── upload.txt
│   ├── eureka-feign-upload-server/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── api/
│   │           │               └── consumer/
│   │           │                   └── Application.java
│   │           └── resources/
│   │               └── application.properties
│   ├── eureka-server/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── Application.java
│   │           └── resources/
│   │               ├── application-peer1.properties
│   │               ├── application-peer2.properties
│   │               └── application.properties
│   ├── hystrix-collapser-consumer/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── didispace/
│   │       │   │           ├── Application.java
│   │       │   │           └── UserService.java
│   │       │   └── resources/
│   │       │       └── application.properties
│   │       └── test/
│   │           └── java/
│   │               └── CollapserTest.java
│   ├── hystrix-collapser-provider/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           ├── Application.java
│   │           │           └── UserController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── hystrix-dashboard/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── HystrixDashboardApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── pom.xml
│   ├── stream-consumer-group/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── didispace/
│   │       │   │           └── stream/
│   │       │   │               ├── ExampleApplication.java
│   │       │   │               ├── ExampleBinder.java
│   │       │   │               └── ExampleReceiver.java
│   │       │   └── resources/
│   │       │       └── application.properties
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── didispace/
│   │                       └── ExampleApplicationTests.java
│   ├── stream-consumer-self/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── stream/
│   │           │               ├── TestApplication.java
│   │           │               ├── TestController.java
│   │           │               ├── TestListener.java
│   │           │               └── TestTopic.java
│   │           └── resources/
│   │               └── application.properties
│   ├── stream-hello/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── didispace/
│   │       │   │           └── stream/
│   │       │   │               ├── SinkApplication.java
│   │       │   │               └── SinkReceiver.java
│   │       │   └── resources/
│   │       │       └── application.properties
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── didispace/
│   │                       └── SinkApplicationTests.java
│   ├── swagger-api-gateway/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── Application.java
│   │           └── resources/
│   │               └── application.yaml
│   ├── swagger-service-a/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── Application.java
│   │           └── resources/
│   │               └── application.properties
│   ├── swagger-service-b/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── Application.java
│   │           └── resources/
│   │               └── application.properties
│   ├── trace-1/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── TraceApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── trace-2/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── TraceApplication.java
│   │           └── resources/
│   │               ├── application.properties
│   │               └── logback-spring.xml
│   ├── turbine/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── TurbineApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── turbine-amqp/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── TurbineApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── zipkin-server/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── ZipkinApplication.java
│   │           └── resources/
│   │               └── application.properties
│   └── zipkin-server-stream/
│       ├── pom.xml
│       └── src/
│           └── main/
│               ├── java/
│               │   └── com/
│               │       └── didispace/
│               │           └── ZipkinApplication.java
│               └── resources/
│                   └── application.properties
├── 3-Edgware/
│   ├── README.md
│   ├── config-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── config/
│   │           │               └── client/
│   │           │                   └── ConfigClientApplication.java
│   │           └── resources/
│   │               └── bootstrap.properties
│   ├── config-server-db/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── config/
│   │           │               └── server/
│   │           │                   └── db/
│   │           │                       └── ConfigServerBootstrap.java
│   │           └── resources/
│   │               ├── application.properties
│   │               └── schema/
│   │                   └── V1__Base_version.sql
│   └── pom.xml
├── 4-Finchley/
│   ├── README.md
│   ├── alibaba-dubbo-api/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           └── java/
│   │               └── com/
│   │                   └── didispace/
│   │                       └── alibaba/
│   │                           └── dubbo/
│   │                               └── api/
│   │                                   └── HelloService.java
│   ├── alibaba-dubbo-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── dubbo/
│   │           │                   └── client/
│   │           │                       └── DubboClientApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-dubbo-server/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── dubbo/
│   │           │                   └── server/
│   │           │                       ├── DubboServerApplication.java
│   │           │                       └── HelloServiceImpl.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-nacos-config-client/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── nacos/
│   │           │                   └── config/
│   │           │                       └── client/
│   │           │                           └── TestApplication.java
│   │           └── resources/
│   │               └── bootstrap.properties
│   ├── alibaba-nacos-discovery-client-common/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── nacos/
│   │           │                   └── discovery/
│   │           │                       └── client/
│   │           │                           └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-nacos-discovery-client-feign/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── nacos/
│   │           │                   └── discovery/
│   │           │                       └── client/
│   │           │                           └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-nacos-discovery-client-resttemplate/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── nacos/
│   │           │                   └── discovery/
│   │           │                       └── client/
│   │           │                           └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-nacos-discovery-client-webclient/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── nacos/
│   │           │                   └── discovery/
│   │           │                       └── client/
│   │           │                           └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-nacos-discovery-server/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── nacos/
│   │           │                   └── discovery/
│   │           │                       └── server/
│   │           │                           └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-sentinel-annotation/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── sentinel/
│   │           │                   ├── TestApplication.java
│   │           │                   ├── service/
│   │           │                   │   └── TestService.java
│   │           │                   └── web/
│   │           │                       └── TestController.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-sentinel-dashboard-apollo/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── alibaba/
│   │       │   │           └── csp/
│   │       │   │               └── sentinel/
│   │       │   │                   └── dashboard/
│   │       │   │                       ├── DashboardApplication.java
│   │       │   │                       ├── auth/
│   │       │   │                       │   ├── AuthService.java
│   │       │   │                       │   ├── FakeAuthServiceImpl.java
│   │       │   │                       │   └── SimpleWebAuthServiceImpl.java
│   │       │   │                       ├── client/
│   │       │   │                       │   ├── CommandFailedException.java
│   │       │   │                       │   ├── CommandNotFoundException.java
│   │       │   │                       │   └── SentinelApiClient.java
│   │       │   │                       ├── config/
│   │       │   │                       │   ├── DashboardConfig.java
│   │       │   │                       │   └── WebConfig.java
│   │       │   │                       ├── controller/
│   │       │   │                       │   ├── AppController.java
│   │       │   │                       │   ├── AuthController.java
│   │       │   │                       │   ├── AuthorityRuleController.java
│   │       │   │                       │   ├── DegradeController.java
│   │       │   │                       │   ├── DemoController.java
│   │       │   │                       │   ├── FlowControllerV1.java
│   │       │   │                       │   ├── MachineRegistryController.java
│   │       │   │                       │   ├── MetricController.java
│   │       │   │                       │   ├── ParamFlowRuleController.java
│   │       │   │                       │   ├── ResourceController.java
│   │       │   │                       │   ├── SystemController.java
│   │       │   │                       │   ├── cluster/
│   │       │   │                       │   │   ├── ClusterAssignController.java
│   │       │   │                       │   │   └── ClusterConfigController.java
│   │       │   │                       │   └── v2/
│   │       │   │                       │       └── FlowControllerV2.java
│   │       │   │                       ├── datasource/
│   │       │   │                       │   └── entity/
│   │       │   │                       │       ├── ApplicationEntity.java
│   │       │   │                       │       ├── MachineEntity.java
│   │       │   │                       │       ├── MetricEntity.java
│   │       │   │                       │       ├── MetricPositionEntity.java
│   │       │   │                       │       ├── SentinelVersion.java
│   │       │   │                       │       └── rule/
│   │       │   │                       │           ├── AbstractRuleEntity.java
│   │       │   │                       │           ├── AuthorityRuleEntity.java
│   │       │   │                       │           ├── DegradeRuleEntity.java
│   │       │   │                       │           ├── FlowRuleEntity.java
│   │       │   │                       │           ├── ParamFlowRuleEntity.java
│   │       │   │                       │           ├── RuleEntity.java
│   │       │   │                       │           └── SystemRuleEntity.java
│   │       │   │                       ├── discovery/
│   │       │   │                       │   ├── AppInfo.java
│   │       │   │                       │   ├── AppManagement.java
│   │       │   │                       │   ├── MachineDiscovery.java
│   │       │   │                       │   ├── MachineInfo.java
│   │       │   │                       │   └── SimpleMachineDiscovery.java
│   │       │   │                       ├── domain/
│   │       │   │                       │   ├── ResourceTreeNode.java
│   │       │   │                       │   ├── Result.java
│   │       │   │                       │   ├── cluster/
│   │       │   │                       │   │   ├── ClusterAppAssignResultVO.java
│   │       │   │                       │   │   ├── ClusterAppFullAssignRequest.java
│   │       │   │                       │   │   ├── ClusterAppSingleServerAssignRequest.java
│   │       │   │                       │   │   ├── ClusterClientInfoVO.java
│   │       │   │                       │   │   ├── ClusterGroupEntity.java
│   │       │   │                       │   │   ├── ClusterStateSingleVO.java
│   │       │   │                       │   │   ├── ConnectionDescriptorVO.java
│   │       │   │                       │   │   ├── ConnectionGroupVO.java
│   │       │   │                       │   │   ├── config/
│   │       │   │                       │   │   │   ├── ClusterClientConfig.java
│   │       │   │                       │   │   │   ├── ServerFlowConfig.java
│   │       │   │                       │   │   │   └── ServerTransportConfig.java
│   │       │   │                       │   │   ├── request/
│   │       │   │                       │   │   │   ├── ClusterAppAssignMap.java
│   │       │   │                       │   │   │   ├── ClusterClientModifyRequest.java
│   │       │   │                       │   │   │   ├── ClusterModifyRequest.java
│   │       │   │                       │   │   │   └── ClusterServerModifyRequest.java
│   │       │   │                       │   │   └── state/
│   │       │   │                       │   │       ├── AppClusterClientStateWrapVO.java
│   │       │   │                       │   │       ├── AppClusterServerStateWrapVO.java
│   │       │   │                       │   │       ├── ClusterClientStateVO.java
│   │       │   │                       │   │       ├── ClusterRequestLimitVO.java
│   │       │   │                       │   │       ├── ClusterServerStateVO.java
│   │       │   │                       │   │       ├── ClusterStateSimpleEntity.java
│   │       │   │                       │   │       ├── ClusterUniversalStatePairVO.java
│   │       │   │                       │   │       └── ClusterUniversalStateVO.java
│   │       │   │                       │   └── vo/
│   │       │   │                       │       ├── MachineInfoVo.java
│   │       │   │                       │       ├── MetricVo.java
│   │       │   │                       │       └── ResourceVo.java
│   │       │   │                       ├── filter/
│   │       │   │                       │   └── AuthFilter.java
│   │       │   │                       ├── metric/
│   │       │   │                       │   └── MetricFetcher.java
│   │       │   │                       ├── repository/
│   │       │   │                       │   ├── metric/
│   │       │   │                       │   │   ├── InMemoryMetricsRepository.java
│   │       │   │                       │   │   └── MetricsRepository.java
│   │       │   │                       │   └── rule/
│   │       │   │                       │       ├── InMemAuthorityRuleStore.java
│   │       │   │                       │       ├── InMemDegradeRuleStore.java
│   │       │   │                       │       ├── InMemFlowRuleStore.java
│   │       │   │                       │       ├── InMemParamFlowRuleStore.java
│   │       │   │                       │       ├── InMemSystemRuleStore.java
│   │       │   │                       │       ├── InMemoryRuleRepositoryAdapter.java
│   │       │   │                       │       └── RuleRepository.java
│   │       │   │                       ├── rule/
│   │       │   │                       │   ├── DynamicRuleProvider.java
│   │       │   │                       │   ├── DynamicRulePublisher.java
│   │       │   │                       │   ├── FlowRuleApiProvider.java
│   │       │   │                       │   ├── FlowRuleApiPublisher.java
│   │       │   │                       │   └── apollo/
│   │       │   │                       │       ├── ApolloConfig.java
│   │       │   │                       │       ├── FlowRuleApolloProvider.java
│   │       │   │                       │       └── FlowRuleApolloPublisher.java
│   │       │   │                       ├── service/
│   │       │   │                       │   ├── ClusterAssignService.java
│   │       │   │                       │   ├── ClusterAssignServiceImpl.java
│   │       │   │                       │   └── ClusterConfigService.java
│   │       │   │                       └── util/
│   │       │   │                           ├── AsyncUtils.java
│   │       │   │                           ├── ClusterEntityUtils.java
│   │       │   │                           ├── MachineUtils.java
│   │       │   │                           └── VersionUtils.java
│   │       │   ├── resources/
│   │       │   │   └── application.properties
│   │       │   └── webapp/
│   │       │       └── resources/
│   │       │           ├── .gitignore
│   │       │           ├── .jshintrc
│   │       │           ├── README.md
│   │       │           ├── README_zh.md
│   │       │           ├── app/
│   │       │           │   ├── scripts/
│   │       │           │   │   ├── app.js
│   │       │           │   │   ├── controllers/
│   │       │           │   │   │   ├── authority.js
│   │       │           │   │   │   ├── cluster_app_assign_manage.js
│   │       │           │   │   │   ├── cluster_app_server_list.js
│   │       │           │   │   │   ├── cluster_app_server_manage.js
│   │       │           │   │   │   ├── cluster_app_server_monitor.js
│   │       │           │   │   │   ├── cluster_app_token_client_list.js
│   │       │           │   │   │   ├── cluster_single.js
│   │       │           │   │   │   ├── degrade.js
│   │       │           │   │   │   ├── flow_v1.js
│   │       │           │   │   │   ├── flow_v2.js
│   │       │           │   │   │   ├── home.js
│   │       │           │   │   │   ├── identity.js
│   │       │           │   │   │   ├── login.js
│   │       │           │   │   │   ├── machine.js
│   │       │           │   │   │   ├── main.js
│   │       │           │   │   │   ├── metric.js
│   │       │           │   │   │   ├── param_flow.js
│   │       │           │   │   │   └── system.js
│   │       │           │   │   ├── directives/
│   │       │           │   │   │   ├── header/
│   │       │           │   │   │   │   ├── header.html
│   │       │           │   │   │   │   └── header.js
│   │       │           │   │   │   └── sidebar/
│   │       │           │   │   │       ├── sidebar-search/
│   │       │           │   │   │       │   ├── sidebar-search.html
│   │       │           │   │   │       │   └── sidebar-search.js
│   │       │           │   │   │       ├── sidebar.html
│   │       │           │   │   │       └── sidebar.js
│   │       │           │   │   ├── filters/
│   │       │           │   │   │   └── filters.js
│   │       │           │   │   ├── libs/
│   │       │           │   │   │   └── treeTable.js
│   │       │           │   │   └── services/
│   │       │           │   │       ├── appservice.js
│   │       │           │   │       ├── auth_service.js
│   │       │           │   │       ├── authority_service.js
│   │       │           │   │       ├── cluster_state_service.js
│   │       │           │   │       ├── degradeservice.js
│   │       │           │   │       ├── flow_service_v1.js
│   │       │           │   │       ├── flow_service_v2.js
│   │       │           │   │       ├── identityservice.js
│   │       │           │   │       ├── machineservice.js
│   │       │           │   │       ├── metricservice.js
│   │       │           │   │       ├── param_flow_service.js
│   │       │           │   │       └── systemservice.js
│   │       │           │   ├── styles/
│   │       │           │   │   ├── main.css
│   │       │           │   │   ├── page.css
│   │       │           │   │   └── timeline.css
│   │       │           │   └── views/
│   │       │           │       ├── authority.html
│   │       │           │       ├── cluster/
│   │       │           │       │   ├── client.html
│   │       │           │       │   └── server.html
│   │       │           │       ├── cluster_app_assign_manage.html
│   │       │           │       ├── cluster_app_client_list.html
│   │       │           │       ├── cluster_app_server_list.html
│   │       │           │       ├── cluster_app_server_overview.html
│   │       │           │       ├── cluster_single_config.html
│   │       │           │       ├── dashboard/
│   │       │           │       │   ├── home.html
│   │       │           │       │   └── main.html
│   │       │           │       ├── degrade.html
│   │       │           │       ├── dialog/
│   │       │           │       │   ├── authority-rule-dialog.html
│   │       │           │       │   ├── cluster/
│   │       │           │       │   │   ├── cluster-client-config-dialog.html
│   │       │           │       │   │   ├── cluster-server-assign-dialog.html
│   │       │           │       │   │   └── cluster-server-connection-detail-dialog.html
│   │       │           │       │   ├── confirm-dialog.html
│   │       │           │       │   ├── degrade-rule-dialog.html
│   │       │           │       │   ├── flow-rule-dialog.html
│   │       │           │       │   ├── param-flow-rule-dialog.html
│   │       │           │       │   └── system-rule-dialog.html
│   │       │           │       ├── flow_v1.html
│   │       │           │       ├── flow_v2.html
│   │       │           │       ├── identity.html
│   │       │           │       ├── login.html
│   │       │           │       ├── machine.html
│   │       │           │       ├── metric.html
│   │       │           │       ├── pagination.tpl.html
│   │       │           │       ├── param_flow.html
│   │       │           │       └── system.html
│   │       │           ├── dist/
│   │       │           │   ├── css/
│   │       │           │   │   └── app.css
│   │       │           │   └── js/
│   │       │           │       ├── app.js
│   │       │           │       └── app.vendor.js
│   │       │           ├── gulpfile.js
│   │       │           ├── index.htm
│   │       │           ├── index_dev.htm
│   │       │           ├── license-stat.csv
│   │       │           └── package.json
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── alibaba/
│   │                       └── csp/
│   │                           └── sentinel/
│   │                               └── dashboard/
│   │                                   ├── config/
│   │                                   │   └── DashboardConfigTest.java
│   │                                   ├── datasource/
│   │                                   │   └── entity/
│   │                                   │       └── SentinelVersionTest.java
│   │                                   ├── discovery/
│   │                                   │   ├── AppInfoTest.java
│   │                                   │   └── MachineInfoTest.java
│   │                                   ├── repository/
│   │                                   │   └── metric/
│   │                                   │       └── InMemoryMetricsRepositoryTest.java
│   │                                   ├── rule/
│   │                                   │   ├── apollo/
│   │                                   │   │   ├── ApolloConfig.java
│   │                                   │   │   ├── ApolloConfigUtil.java
│   │                                   │   │   ├── FlowRuleApolloProvider.java
│   │                                   │   │   └── FlowRuleApolloPublisher.java
│   │                                   │   └── nacos/
│   │                                   │       ├── FlowRuleNacosProvider.java
│   │                                   │       ├── FlowRuleNacosPublisher.java
│   │                                   │       ├── NacosConfig.java
│   │                                   │       └── NacosConfigUtil.java
│   │                                   └── util/
│   │                                       └── VersionUtilsTest.java
│   ├── alibaba-sentinel-dashboard-nacos/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── com/
│   │       │   │       └── alibaba/
│   │       │   │           └── csp/
│   │       │   │               └── sentinel/
│   │       │   │                   └── dashboard/
│   │       │   │                       ├── DashboardApplication.java
│   │       │   │                       ├── auth/
│   │       │   │                       │   ├── AuthService.java
│   │       │   │                       │   ├── FakeAuthServiceImpl.java
│   │       │   │                       │   └── SimpleWebAuthServiceImpl.java
│   │       │   │                       ├── client/
│   │       │   │                       │   ├── CommandFailedException.java
│   │       │   │                       │   ├── CommandNotFoundException.java
│   │       │   │                       │   └── SentinelApiClient.java
│   │       │   │                       ├── config/
│   │       │   │                       │   ├── DashboardConfig.java
│   │       │   │                       │   └── WebConfig.java
│   │       │   │                       ├── controller/
│   │       │   │                       │   ├── AppController.java
│   │       │   │                       │   ├── AuthController.java
│   │       │   │                       │   ├── AuthorityRuleController.java
│   │       │   │                       │   ├── DegradeController.java
│   │       │   │                       │   ├── DemoController.java
│   │       │   │                       │   ├── FlowControllerV1.java
│   │       │   │                       │   ├── MachineRegistryController.java
│   │       │   │                       │   ├── MetricController.java
│   │       │   │                       │   ├── ParamFlowRuleController.java
│   │       │   │                       │   ├── ResourceController.java
│   │       │   │                       │   ├── SystemController.java
│   │       │   │                       │   ├── cluster/
│   │       │   │                       │   │   ├── ClusterAssignController.java
│   │       │   │                       │   │   └── ClusterConfigController.java
│   │       │   │                       │   └── v2/
│   │       │   │                       │       └── FlowControllerV2.java
│   │       │   │                       ├── datasource/
│   │       │   │                       │   └── entity/
│   │       │   │                       │       ├── ApplicationEntity.java
│   │       │   │                       │       ├── MachineEntity.java
│   │       │   │                       │       ├── MetricEntity.java
│   │       │   │                       │       ├── MetricPositionEntity.java
│   │       │   │                       │       ├── SentinelVersion.java
│   │       │   │                       │       └── rule/
│   │       │   │                       │           ├── AbstractRuleEntity.java
│   │       │   │                       │           ├── AuthorityRuleEntity.java
│   │       │   │                       │           ├── DegradeRuleEntity.java
│   │       │   │                       │           ├── FlowRuleEntity.java
│   │       │   │                       │           ├── ParamFlowRuleEntity.java
│   │       │   │                       │           ├── RuleEntity.java
│   │       │   │                       │           └── SystemRuleEntity.java
│   │       │   │                       ├── discovery/
│   │       │   │                       │   ├── AppInfo.java
│   │       │   │                       │   ├── AppManagement.java
│   │       │   │                       │   ├── MachineDiscovery.java
│   │       │   │                       │   ├── MachineInfo.java
│   │       │   │                       │   └── SimpleMachineDiscovery.java
│   │       │   │                       ├── domain/
│   │       │   │                       │   ├── ResourceTreeNode.java
│   │       │   │                       │   ├── Result.java
│   │       │   │                       │   ├── cluster/
│   │       │   │                       │   │   ├── ClusterAppAssignResultVO.java
│   │       │   │                       │   │   ├── ClusterAppFullAssignRequest.java
│   │       │   │                       │   │   ├── ClusterAppSingleServerAssignRequest.java
│   │       │   │                       │   │   ├── ClusterClientInfoVO.java
│   │       │   │                       │   │   ├── ClusterGroupEntity.java
│   │       │   │                       │   │   ├── ClusterStateSingleVO.java
│   │       │   │                       │   │   ├── ConnectionDescriptorVO.java
│   │       │   │                       │   │   ├── ConnectionGroupVO.java
│   │       │   │                       │   │   ├── config/
│   │       │   │                       │   │   │   ├── ClusterClientConfig.java
│   │       │   │                       │   │   │   ├── ServerFlowConfig.java
│   │       │   │                       │   │   │   └── ServerTransportConfig.java
│   │       │   │                       │   │   ├── request/
│   │       │   │                       │   │   │   ├── ClusterAppAssignMap.java
│   │       │   │                       │   │   │   ├── ClusterClientModifyRequest.java
│   │       │   │                       │   │   │   ├── ClusterModifyRequest.java
│   │       │   │                       │   │   │   └── ClusterServerModifyRequest.java
│   │       │   │                       │   │   └── state/
│   │       │   │                       │   │       ├── AppClusterClientStateWrapVO.java
│   │       │   │                       │   │       ├── AppClusterServerStateWrapVO.java
│   │       │   │                       │   │       ├── ClusterClientStateVO.java
│   │       │   │                       │   │       ├── ClusterRequestLimitVO.java
│   │       │   │                       │   │       ├── ClusterServerStateVO.java
│   │       │   │                       │   │       ├── ClusterStateSimpleEntity.java
│   │       │   │                       │   │       ├── ClusterUniversalStatePairVO.java
│   │       │   │                       │   │       └── ClusterUniversalStateVO.java
│   │       │   │                       │   └── vo/
│   │       │   │                       │       ├── MachineInfoVo.java
│   │       │   │                       │       ├── MetricVo.java
│   │       │   │                       │       └── ResourceVo.java
│   │       │   │                       ├── filter/
│   │       │   │                       │   └── AuthFilter.java
│   │       │   │                       ├── metric/
│   │       │   │                       │   └── MetricFetcher.java
│   │       │   │                       ├── repository/
│   │       │   │                       │   ├── metric/
│   │       │   │                       │   │   ├── InMemoryMetricsRepository.java
│   │       │   │                       │   │   └── MetricsRepository.java
│   │       │   │                       │   └── rule/
│   │       │   │                       │       ├── InMemAuthorityRuleStore.java
│   │       │   │                       │       ├── InMemDegradeRuleStore.java
│   │       │   │                       │       ├── InMemFlowRuleStore.java
│   │       │   │                       │       ├── InMemParamFlowRuleStore.java
│   │       │   │                       │       ├── InMemSystemRuleStore.java
│   │       │   │                       │       ├── InMemoryRuleRepositoryAdapter.java
│   │       │   │                       │       └── RuleRepository.java
│   │       │   │                       ├── rule/
│   │       │   │                       │   ├── DynamicRuleProvider.java
│   │       │   │                       │   ├── DynamicRulePublisher.java
│   │       │   │                       │   ├── FlowRuleApiProvider.java
│   │       │   │                       │   ├── FlowRuleApiPublisher.java
│   │       │   │                       │   └── nacos/
│   │       │   │                       │       ├── FlowRuleNacosProvider.java
│   │       │   │                       │       ├── FlowRuleNacosPublisher.java
│   │       │   │                       │       └── NacosConfig.java
│   │       │   │                       ├── service/
│   │       │   │                       │   ├── ClusterAssignService.java
│   │       │   │                       │   ├── ClusterAssignServiceImpl.java
│   │       │   │                       │   └── ClusterConfigService.java
│   │       │   │                       └── util/
│   │       │   │                           ├── AsyncUtils.java
│   │       │   │                           ├── ClusterEntityUtils.java
│   │       │   │                           ├── MachineUtils.java
│   │       │   │                           └── VersionUtils.java
│   │       │   ├── resources/
│   │       │   │   └── application.properties
│   │       │   └── webapp/
│   │       │       └── resources/
│   │       │           ├── .gitignore
│   │       │           ├── .jshintrc
│   │       │           ├── README.md
│   │       │           ├── README_zh.md
│   │       │           ├── app/
│   │       │           │   ├── scripts/
│   │       │           │   │   ├── app.js
│   │       │           │   │   ├── controllers/
│   │       │           │   │   │   ├── authority.js
│   │       │           │   │   │   ├── cluster_app_assign_manage.js
│   │       │           │   │   │   ├── cluster_app_server_list.js
│   │       │           │   │   │   ├── cluster_app_server_manage.js
│   │       │           │   │   │   ├── cluster_app_server_monitor.js
│   │       │           │   │   │   ├── cluster_app_token_client_list.js
│   │       │           │   │   │   ├── cluster_single.js
│   │       │           │   │   │   ├── degrade.js
│   │       │           │   │   │   ├── flow_v1.js
│   │       │           │   │   │   ├── flow_v2.js
│   │       │           │   │   │   ├── home.js
│   │       │           │   │   │   ├── identity.js
│   │       │           │   │   │   ├── login.js
│   │       │           │   │   │   ├── machine.js
│   │       │           │   │   │   ├── main.js
│   │       │           │   │   │   ├── metric.js
│   │       │           │   │   │   ├── param_flow.js
│   │       │           │   │   │   └── system.js
│   │       │           │   │   ├── directives/
│   │       │           │   │   │   ├── header/
│   │       │           │   │   │   │   ├── header.html
│   │       │           │   │   │   │   └── header.js
│   │       │           │   │   │   └── sidebar/
│   │       │           │   │   │       ├── sidebar-search/
│   │       │           │   │   │       │   ├── sidebar-search.html
│   │       │           │   │   │       │   └── sidebar-search.js
│   │       │           │   │   │       ├── sidebar.html
│   │       │           │   │   │       └── sidebar.js
│   │       │           │   │   ├── filters/
│   │       │           │   │   │   └── filters.js
│   │       │           │   │   ├── libs/
│   │       │           │   │   │   └── treeTable.js
│   │       │           │   │   └── services/
│   │       │           │   │       ├── appservice.js
│   │       │           │   │       ├── auth_service.js
│   │       │           │   │       ├── authority_service.js
│   │       │           │   │       ├── cluster_state_service.js
│   │       │           │   │       ├── degradeservice.js
│   │       │           │   │       ├── flow_service_v1.js
│   │       │           │   │       ├── flow_service_v2.js
│   │       │           │   │       ├── identityservice.js
│   │       │           │   │       ├── machineservice.js
│   │       │           │   │       ├── metricservice.js
│   │       │           │   │       ├── param_flow_service.js
│   │       │           │   │       └── systemservice.js
│   │       │           │   ├── styles/
│   │       │           │   │   ├── main.css
│   │       │           │   │   ├── page.css
│   │       │           │   │   └── timeline.css
│   │       │           │   └── views/
│   │       │           │       ├── authority.html
│   │       │           │       ├── cluster/
│   │       │           │       │   ├── client.html
│   │       │           │       │   └── server.html
│   │       │           │       ├── cluster_app_assign_manage.html
│   │       │           │       ├── cluster_app_client_list.html
│   │       │           │       ├── cluster_app_server_list.html
│   │       │           │       ├── cluster_app_server_overview.html
│   │       │           │       ├── cluster_single_config.html
│   │       │           │       ├── dashboard/
│   │       │           │       │   ├── home.html
│   │       │           │       │   └── main.html
│   │       │           │       ├── degrade.html
│   │       │           │       ├── dialog/
│   │       │           │       │   ├── authority-rule-dialog.html
│   │       │           │       │   ├── cluster/
│   │       │           │       │   │   ├── cluster-client-config-dialog.html
│   │       │           │       │   │   ├── cluster-server-assign-dialog.html
│   │       │           │       │   │   └── cluster-server-connection-detail-dialog.html
│   │       │           │       │   ├── confirm-dialog.html
│   │       │           │       │   ├── degrade-rule-dialog.html
│   │       │           │       │   ├── flow-rule-dialog.html
│   │       │           │       │   ├── param-flow-rule-dialog.html
│   │       │           │       │   └── system-rule-dialog.html
│   │       │           │       ├── flow_v1.html
│   │       │           │       ├── flow_v2.html
│   │       │           │       ├── identity.html
│   │       │           │       ├── login.html
│   │       │           │       ├── machine.html
│   │       │           │       ├── metric.html
│   │       │           │       ├── pagination.tpl.html
│   │       │           │       ├── param_flow.html
│   │       │           │       └── system.html
│   │       │           ├── dist/
│   │       │           │   ├── css/
│   │       │           │   │   └── app.css
│   │       │           │   └── js/
│   │       │           │       ├── app.js
│   │       │           │       └── app.vendor.js
│   │       │           ├── gulpfile.js
│   │       │           ├── index.htm
│   │       │           ├── index_dev.htm
│   │       │           ├── license-stat.csv
│   │       │           └── package.json
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── alibaba/
│   │                       └── csp/
│   │                           └── sentinel/
│   │                               └── dashboard/
│   │                                   ├── config/
│   │                                   │   └── DashboardConfigTest.java
│   │                                   ├── datasource/
│   │                                   │   └── entity/
│   │                                   │       └── SentinelVersionTest.java
│   │                                   ├── discovery/
│   │                                   │   ├── AppInfoTest.java
│   │                                   │   └── MachineInfoTest.java
│   │                                   ├── repository/
│   │                                   │   └── metric/
│   │                                   │       └── InMemoryMetricsRepositoryTest.java
│   │                                   ├── rule/
│   │                                   │   ├── apollo/
│   │                                   │   │   ├── ApolloConfig.java
│   │                                   │   │   ├── ApolloConfigUtil.java
│   │                                   │   │   ├── FlowRuleApolloProvider.java
│   │                                   │   │   └── FlowRuleApolloPublisher.java
│   │                                   │   └── nacos/
│   │                                   │       ├── FlowRuleNacosProvider.java
│   │                                   │       ├── FlowRuleNacosPublisher.java
│   │                                   │       ├── NacosConfig.java
│   │                                   │       └── NacosConfigUtil.java
│   │                                   └── util/
│   │                                       └── VersionUtilsTest.java
│   ├── alibaba-sentinel-datasource-apollo/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── sentinel/
│   │           │                   └── TestApplication.java
│   │           └── resources/
│   │               ├── apollo-env.properties
│   │               └── application.properties
│   ├── alibaba-sentinel-datasource-nacos/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── sentinel/
│   │           │                   └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── alibaba-sentinel-rate-limiting/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── alibaba/
│   │           │               └── sentinel/
│   │           │                   └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── pom.xml
│   ├── stream-consumer-self/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── stream/
│   │           │               ├── TestApplication.java
│   │           │               ├── TestController.java
│   │           │               ├── TestListener.java
│   │           │               └── TestTopic.java
│   │           └── resources/
│   │               └── application.properties
│   ├── stream-content-route/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── stream/
│   │           │               └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── stream-delayed-message/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── stream/
│   │           │               └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── stream-exception-handler-1/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── stream/
│   │           │               └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── stream-exception-handler-2/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── stream/
│   │           │               └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   ├── stream-exception-handler-3/
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── didispace/
│   │           │           └── stream/
│   │           │               └── TestApplication.java
│   │           └── resources/
│   │               └── application.properties
│   └── stream-exception-handler-4/
│       ├── pom.xml
│       └── src/
│           └── main/
│               ├── java/
│               │   └── com/
│               │       └── didispace/
│               │           └── stream/
│               │               └── TestApplication.java
│               └── resources/
│                   └── application.properties
├── README.md
└── README_zh.md
Download .txt
Showing preview only (297K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3280 symbols across 388 files)

FILE: 1-Brixton版教程示例/Chapter1-1-1/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java
  class ComputeServiceApplication (line 7) | @EnableDiscoveryClient
    method main (line 11) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-1/compute-service/src/main/java/com/didispace/web/ComputeController.java
  class ComputeController (line 12) | @RestController
    method add (line 20) | @RequestMapping(value = "/add" ,method = RequestMethod.GET)

FILE: 1-Brixton版教程示例/Chapter1-1-1/compute-service/src/test/java/com/didispace/ApplicationTests.java
  class ApplicationTests (line 21) | @RunWith(SpringJUnit4ClassRunner.class)
    method setUp (line 28) | @Before
    method getHello (line 33) | @Test

FILE: 1-Brixton版教程示例/Chapter1-1-1/eureka-server/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableEurekaServer
    method main (line 11) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/FeignApplication.java
  class FeignApplication (line 8) | @SpringBootApplication
    method main (line 13) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/service/ComputeClient.java
  type ComputeClient (line 8) | @FeignClient("compute-service")
    method add (line 11) | @RequestMapping(method = RequestMethod.GET, value = "/add")

FILE: 1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/web/ConsumerController.java
  class ConsumerController (line 9) | @RestController
    method add (line 15) | @RequestMapping(value = "/add", method = RequestMethod.GET)

FILE: 1-Brixton版教程示例/Chapter1-1-2/eureka-ribbon/src/main/java/com/didispace/RibbonApplication.java
  class RibbonApplication (line 10) | @SpringBootApplication
    method restTemplate (line 14) | @Bean
    method main (line 20) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-2/eureka-ribbon/src/main/java/com/didispace/web/ConsumerController.java
  class ConsumerController (line 9) | @RestController
    method add (line 15) | @RequestMapping(value = "/add", method = RequestMethod.GET)

FILE: 1-Brixton版教程示例/Chapter1-1-3/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java
  class ComputeServiceApplication (line 7) | @EnableDiscoveryClient
    method main (line 11) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-3/compute-service/src/main/java/com/didispace/web/ComputeController.java
  class ComputeController (line 12) | @RestController
    method add (line 20) | @RequestMapping(value = "/add" ,method = RequestMethod.GET)

FILE: 1-Brixton版教程示例/Chapter1-1-3/compute-service/src/test/java/com/didispace/ApplicationTests.java
  class ApplicationTests (line 21) | @RunWith(SpringJUnit4ClassRunner.class)
    method setUp (line 28) | @Before
    method getHello (line 33) | @Test

FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/FeignApplication.java
  class FeignApplication (line 8) | @SpringBootApplication
    method main (line 13) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/service/ComputeClient.java
  type ComputeClient (line 8) | @FeignClient(value = "compute-service", fallback = ComputeClientHystrix....
    method add (line 11) | @RequestMapping(method = RequestMethod.GET, value = "/add")

FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/service/ComputeClientHystrix.java
  class ComputeClientHystrix (line 6) | @Component
    method add (line 9) | @Override

FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/web/ConsumerController.java
  class ConsumerController (line 9) | @RestController
    method add (line 15) | @RequestMapping(value = "/add", method = RequestMethod.GET)

FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/RibbonApplication.java
  class RibbonApplication (line 11) | @SpringBootApplication
    method restTemplate (line 16) | @Bean
    method main (line 22) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/service/ComputeService.java
  class ComputeService (line 8) | @Service
    method addService (line 14) | @HystrixCommand(fallbackMethod = "addServiceFallback")
    method addServiceFallback (line 19) | public String addServiceFallback() {

FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/web/ConsumerController.java
  class ConsumerController (line 13) | @RestController
    method add (line 19) | @RequestMapping(value = "/add", method = RequestMethod.GET)

FILE: 1-Brixton版教程示例/Chapter1-1-3/eureka-server/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableEurekaServer
    method main (line 11) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-4/config-client/src/main/java/com/didispace/Application.java
  class Application (line 6) | @SpringBootApplication
    method main (line 9) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-4/config-client/src/main/java/com/didispace/web/TestController.java
  class TestController (line 8) | @RefreshScope
    method from (line 15) | @RequestMapping("/from")
    method setFrom (line 21) | public void setFrom(String from) {
    method getFrom (line 25) | public String getFrom() {

FILE: 1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableConfigServer
    method main (line 11) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-5/api-gateway/src/main/java/com/didispace/Application.java
  class Application (line 9) | @EnableZuulProxy
    method main (line 13) | public static void main(String[] args) {
    method accessFilter (line 17) | @Bean

FILE: 1-Brixton版教程示例/Chapter1-1-5/api-gateway/src/main/java/com/didispace/filter/AccessFilter.java
  class AccessFilter (line 10) | public class AccessFilter extends ZuulFilter  {
    method filterType (line 14) | @Override
    method filterOrder (line 19) | @Override
    method shouldFilter (line 24) | @Override
    method run (line 29) | @Override

FILE: 1-Brixton版教程示例/Chapter1-1-5/eureka-server/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableEurekaServer
    method main (line 11) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-5/service-A/src/main/java/com/didispace/ComputeServiceApplication.java
  class ComputeServiceApplication (line 7) | @EnableDiscoveryClient
    method main (line 11) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-5/service-A/src/main/java/com/didispace/web/ComputeController.java
  class ComputeController (line 12) | @RestController
    method add (line 20) | @RequestMapping(value = "/add" ,method = RequestMethod.GET)

FILE: 1-Brixton版教程示例/Chapter1-1-5/service-A/src/test/java/com/didispace/ApplicationTests.java
  class ApplicationTests (line 21) | @RunWith(SpringJUnit4ClassRunner.class)
    method setUp (line 28) | @Before
    method getHello (line 33) | @Test

FILE: 1-Brixton版教程示例/Chapter1-1-5/service-B/src/main/java/com/didispace/ComputeServiceApplication.java
  class ComputeServiceApplication (line 7) | @EnableDiscoveryClient
    method main (line 11) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-5/service-B/src/main/java/com/didispace/web/ComputeController.java
  class ComputeController (line 12) | @RestController
    method add (line 20) | @RequestMapping(value = "/add" ,method = RequestMethod.GET)

FILE: 1-Brixton版教程示例/Chapter1-1-5/service-B/src/test/java/com/didispace/ApplicationTests.java
  class ApplicationTests (line 15) | @RunWith(SpringJUnit4ClassRunner.class)
    method setUp (line 22) | @Before
    method getHello (line 27) | @Test

FILE: 1-Brixton版教程示例/Chapter1-1-6/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java
  class ComputeServiceApplication (line 7) | @EnableDiscoveryClient
    method main (line 11) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-6/compute-service/src/main/java/com/didispace/web/ComputeController.java
  class ComputeController (line 12) | @RestController
    method add (line 20) | @RequestMapping(value = "/add" ,method = RequestMethod.GET)

FILE: 1-Brixton版教程示例/Chapter1-1-6/compute-service/src/test/java/com/didispace/ApplicationTests.java
  class ApplicationTests (line 21) | @RunWith(SpringJUnit4ClassRunner.class)
    method setUp (line 28) | @Before
    method getHello (line 33) | @Test

FILE: 1-Brixton版教程示例/Chapter1-1-6/eureka-server/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableEurekaServer
    method main (line 11) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-7/config-client-eureka-kafka/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableDiscoveryClient
    method main (line 11) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-7/config-client-eureka-kafka/src/main/java/com/didispace/web/TestController.java
  class TestController (line 8) | @RefreshScope
    method from (line 15) | @RequestMapping("/from")
    method setFrom (line 20) | public void setFrom(String from) {
    method getFrom (line 24) | public String getFrom() {

FILE: 1-Brixton版教程示例/Chapter1-1-7/config-client-eureka/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableDiscoveryClient
    method main (line 11) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-7/config-client-eureka/src/main/java/com/didispace/web/TestController.java
  class TestController (line 8) | @RefreshScope
    method from (line 15) | @RequestMapping("/from")
    method setFrom (line 20) | public void setFrom(String from) {
    method getFrom (line 24) | public String getFrom() {

FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/java/com/didispace/Application.java
  class Application (line 8) | @EnableDiscoveryClient
    method main (line 13) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/java/com/didispace/Application.java
  class Application (line 8) | @EnableDiscoveryClient
    method main (line 13) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-8/config-client-eureka/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableDiscoveryClient
    method main (line 11) | public static void main(String[] args) {

FILE: 1-Brixton版教程示例/Chapter1-1-8/config-client-eureka/src/main/java/com/didispace/web/TestController.java
  class TestController (line 8) | @RefreshScope
    method from (line 15) | @RequestMapping("/from")
    method setFrom (line 20) | public void setFrom(String from) {
    method getFrom (line 24) | public String getFrom() {

FILE: 1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/java/com/didispace/Application.java
  class Application (line 8) | @EnableDiscoveryClient
    method main (line 13) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/api-gateway-with-eureka/src/main/java/com/didispace/AccessFilter.java
  class AccessFilter (line 10) | public class AccessFilter extends ZuulFilter {
    method filterType (line 14) | @Override
    method filterOrder (line 19) | @Override
    method shouldFilter (line 24) | @Override
    method run (line 29) | @Override

FILE: 2-Dalston版教程示例/api-gateway-with-eureka/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableZuulProxy
    method main (line 11) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/api-gateway/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableZuulProxy
    method main (line 11) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/config-client/src/main/java/com/didispace/Application.java
  class Application (line 7) | @SpringBootApplication
    method main (line 10) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/config-server-git/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableConfigServer
    method main (line 11) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/consul-client/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableDiscoveryClient
    method main (line 11) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/consul-client/src/main/java/com/didispace/DcController.java
  class DcController (line 14) | @RestController
    method dc (line 20) | @GetMapping("/dc")

FILE: 2-Dalston版教程示例/consul-consumer/src/main/java/com/didispace/Application.java
  class Application (line 9) | @EnableDiscoveryClient
    method restTemplate (line 13) | @Bean
    method main (line 18) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/consul-consumer/src/main/java/com/didispace/DcController.java
  class DcController (line 15) | @RestController
    method dc (line 23) | @GetMapping("/consumer")

FILE: 2-Dalston版教程示例/eureka-client/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableDiscoveryClient
    method main (line 11) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/eureka-client/src/main/java/com/didispace/DcController.java
  class DcController (line 14) | @RestController
    method dc (line 20) | @GetMapping("/dc")

FILE: 2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/Application.java
  class Application (line 8) | @EnableFeignClients
    method main (line 13) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/DcClient.java
  type DcClient (line 11) | @FeignClient(name = "eureka-client", fallback = DcClientFallback.class)
    method consumer (line 14) | @GetMapping("/dc")

FILE: 2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/DcClientFallback.java
  class DcClientFallback (line 10) | @Component
    method consumer (line 13) | @Override

FILE: 2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/DcController.java
  class DcController (line 12) | @RestController
    method dc (line 18) | @GetMapping("/consumer")

FILE: 2-Dalston版教程示例/eureka-consumer-feign/src/main/java/com/didispace/Application.java
  class Application (line 8) | @EnableFeignClients
    method main (line 13) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/eureka-consumer-feign/src/main/java/com/didispace/DcClient.java
  type DcClient (line 11) | @FeignClient("eureka-client")
    method consumer (line 14) | @GetMapping("/dc")

FILE: 2-Dalston版教程示例/eureka-consumer-feign/src/main/java/com/didispace/DcController.java
  class DcController (line 12) | @RestController
    method dc (line 18) | @GetMapping("/consumer")

FILE: 2-Dalston版教程示例/eureka-consumer-ribbon-hystrix/src/main/java/com/didispace/Application.java
  class Application (line 12) | @EnableCircuitBreaker
    method restTemplate (line 17) | @Bean
    method main (line 23) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/eureka-consumer-ribbon-hystrix/src/main/java/com/didispace/DcController.java
  class DcController (line 17) | @RestController
    method dc (line 23) | @GetMapping("/consumer")
    class ConsumerService (line 28) | @Service
      method consumer (line 34) | @HystrixCommand(fallbackMethod = "fallback")
      method fallback (line 39) | public String fallback() {

FILE: 2-Dalston版教程示例/eureka-consumer-ribbon/src/main/java/com/didispace/Application.java
  class Application (line 10) | @EnableDiscoveryClient
    method restTemplate (line 14) | @Bean
    method main (line 20) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/eureka-consumer-ribbon/src/main/java/com/didispace/DcController.java
  class DcController (line 13) | @RestController
    method dc (line 19) | @GetMapping("/consumer")

FILE: 2-Dalston版教程示例/eureka-consumer/src/main/java/com/didispace/Application.java
  class Application (line 9) | @EnableDiscoveryClient
    method restTemplate (line 13) | @Bean
    method main (line 18) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/eureka-consumer/src/main/java/com/didispace/DcController.java
  class DcController (line 15) | @RestController
    method dc (line 23) | @GetMapping("/consumer")

FILE: 2-Dalston版教程示例/eureka-feign-api/src/main/java/com/didispace/api/HelloService.java
  type HelloService (line 11) | public interface HelloService {
    method hello (line 13) | @GetMapping("/hello")

FILE: 2-Dalston版教程示例/eureka-feign-client/src/main/java/com/didispace/api/impl/Application.java
  class Application (line 9) | @EnableDiscoveryClient
    class HelloController (line 13) | @RestController
      method hello (line 16) | @Override
    method main (line 23) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/eureka-feign-consumer/src/main/java/com/didispace/api/consumer/Application.java
  class Application (line 13) | @EnableFeignClients
    type HelloServiceClient (line 18) | @FeignClient("eureka-feign-client")
    class TestController (line 23) | @RestController
      method test (line 29) | @GetMapping("/test")
    method main (line 36) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/eureka-feign-upload-client/src/main/java/com/didispace/api/consumer/Application.java
  class Application (line 9) | @EnableFeignClients
    method main (line 14) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/eureka-feign-upload-client/src/main/java/com/didispace/api/consumer/UploadService.java
  type UploadService (line 13) | @FeignClient(value = "eureka-feign-upload-server", configuration = Uploa...
    method handleFileUpload (line 16) | @PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_FOR...
    class MultipartSupportConfig (line 19) | @Configuration
      method feignFormEncoder (line 21) | @Bean

FILE: 2-Dalston版教程示例/eureka-feign-upload-client/src/test/java/com/didispace/api/consumer/UploadTester.java
  class UploadTester (line 22) | @Slf4j
    method testHandleFileUpload (line 30) | @Test

FILE: 2-Dalston版教程示例/eureka-feign-upload-server/src/main/java/com/didispace/api/consumer/Application.java
  class Application (line 13) | @EnableFeignClients
    class UploadController (line 18) | @RestController
      method handleFileUpload (line 21) | @PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_F...
    method main (line 28) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/eureka-server/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableEurekaServer
    method main (line 11) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/hystrix-collapser-consumer/src/main/java/com/didispace/Application.java
  class Application (line 11) | @EnableHystrix
    method restTemplate (line 16) | @Bean
    method main (line 22) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/hystrix-collapser-consumer/src/main/java/com/didispace/UserService.java
  class UserService (line 21) | @Slf4j
    method findById (line 28) | @HystrixCollapser(
    method findByIds (line 40) | @HystrixCommand(commandProperties = @HystrixProperty(name = "execution...

FILE: 2-Dalston版教程示例/hystrix-collapser-consumer/src/test/java/CollapserTest.java
  class CollapserTest (line 18) | @Slf4j
    method test (line 26) | @Test

FILE: 2-Dalston版教程示例/hystrix-collapser-provider/src/main/java/com/didispace/Application.java
  class Application (line 7) | @EnableDiscoveryClient
    method main (line 11) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/hystrix-collapser-provider/src/main/java/com/didispace/UserController.java
  class UserController (line 16) | @Slf4j
    method findById (line 30) | @RequestMapping(value = "/users/{id}", method = RequestMethod.GET)
    method findByIds (line 36) | @RequestMapping(value = "/users", method = RequestMethod.GET)

FILE: 2-Dalston版教程示例/hystrix-dashboard/src/main/java/com/didispace/HystrixDashboardApplication.java
  class HystrixDashboardApplication (line 7) | @EnableHystrixDashboard
    method main (line 11) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/stream-consumer-group/src/main/java/com/didispace/stream/ExampleApplication.java
  class ExampleApplication (line 6) | @SpringBootApplication
    method main (line 9) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/stream-consumer-group/src/main/java/com/didispace/stream/ExampleBinder.java
  type ExampleBinder (line 6) | interface ExampleBinder {
    method input (line 10) | @Input(NAME)

FILE: 2-Dalston版教程示例/stream-consumer-group/src/main/java/com/didispace/stream/ExampleReceiver.java
  class ExampleReceiver (line 8) | @EnableBinding(ExampleBinder.class)
    method receive (line 13) | @StreamListener(ExampleBinder.NAME)

FILE: 2-Dalston版教程示例/stream-consumer-group/src/test/java/com/didispace/ExampleApplicationTests.java
  class ExampleApplicationTests (line 12) | @RunWith(SpringRunner.class)
    method exampleBinderTester (line 19) | @Test
    type ExampleBinder (line 24) | public interface ExampleBinder {
      method output (line 28) | @Output(NAME)

FILE: 2-Dalston版教程示例/stream-consumer-self/src/main/java/com/didispace/stream/TestApplication.java
  class TestApplication (line 8) | @EnableBinding(TestTopic.class)
    method main (line 12) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/stream-consumer-self/src/main/java/com/didispace/stream/TestController.java
  class TestController (line 10) | @Slf4j
    method messageWithMQ (line 17) | @GetMapping("/sendMessage")

FILE: 2-Dalston版教程示例/stream-consumer-self/src/main/java/com/didispace/stream/TestListener.java
  class TestListener (line 7) | @Slf4j
    method receive (line 11) | @StreamListener(TestTopic.INPUT)

FILE: 2-Dalston版教程示例/stream-consumer-self/src/main/java/com/didispace/stream/TestTopic.java
  type TestTopic (line 8) | public interface TestTopic {
    method output (line 13) | @Output(OUTPUT)
    method input (line 16) | @Input(INPUT)

FILE: 2-Dalston版教程示例/stream-hello/src/main/java/com/didispace/stream/SinkApplication.java
  class SinkApplication (line 6) | @SpringBootApplication
    method main (line 9) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/stream-hello/src/main/java/com/didispace/stream/SinkReceiver.java
  class SinkReceiver (line 9) | @EnableBinding(Sink.class)
    method receive (line 14) | @StreamListener(Sink.INPUT)

FILE: 2-Dalston版教程示例/stream-hello/src/test/java/com/didispace/SinkApplicationTests.java
  class SinkApplicationTests (line 12) | @RunWith(SpringRunner.class)
    method sinkSenderTester (line 19) | @Test
    type SinkSender (line 24) | public interface SinkSender {
      method output (line 28) | @Output(SinkSender.OUTPUT)

FILE: 2-Dalston版教程示例/swagger-api-gateway/src/main/java/com/didispace/Application.java
  class Application (line 15) | @EnableSwagger2Doc
    method main (line 20) | public static void main(String[] args) {
    class DocumentationConfig (line 24) | @Component
      method get (line 27) | @Override
      method swaggerResource (line 35) | private SwaggerResource swaggerResource(String name, String location...

FILE: 2-Dalston版教程示例/swagger-service-a/src/main/java/com/didispace/Application.java
  class Application (line 12) | @EnableSwagger2Doc
    method main (line 17) | public static void main(String[] args) {
    class AaaController (line 21) | @RestController
      method dc (line 27) | @GetMapping("/service-a")

FILE: 2-Dalston版教程示例/swagger-service-b/src/main/java/com/didispace/Application.java
  class Application (line 12) | @EnableSwagger2Doc
    method main (line 17) | public static void main(String[] args) {
    class BbbController (line 21) | @RestController
      method dc (line 27) | @GetMapping("/service-b")

FILE: 2-Dalston版教程示例/trace-1/src/main/java/com/didispace/TraceApplication.java
  class TraceApplication (line 14) | @RestController
    method restTemplate (line 26) | @Bean
    method trace (line 32) | @RequestMapping(value = "/trace-1", method = RequestMethod.GET)
    method main (line 38) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/trace-2/src/main/java/com/didispace/TraceApplication.java
  class TraceApplication (line 14) | @RestController
    method trace (line 21) | @RequestMapping(value = "/trace-2", method = RequestMethod.GET)
    method main (line 28) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/turbine-amqp/src/main/java/com/didispace/TurbineApplication.java
  class TurbineApplication (line 9) | @Configuration
    method main (line 15) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/turbine/src/main/java/com/didispace/TurbineApplication.java
  class TurbineApplication (line 9) | @Configuration
    method main (line 15) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/zipkin-server-stream/src/main/java/com/didispace/ZipkinApplication.java
  class ZipkinApplication (line 10) | @EnableZipkinStreamServer
    method main (line 14) | public static void main(String[] args) {

FILE: 2-Dalston版教程示例/zipkin-server/src/main/java/com/didispace/ZipkinApplication.java
  class ZipkinApplication (line 7) | @EnableZipkinServer
    method main (line 11) | public static void main(String[] args) {

FILE: 3-Edgware/config-client/src/main/java/com/didispace/config/client/ConfigClientApplication.java
  class ConfigClientApplication (line 10) | @SpringBootApplication
    method main (line 13) | public static void main(String[] args) {
    class TestController (line 17) | @RefreshScope
      method test (line 24) | @GetMapping("/test")

FILE: 3-Edgware/config-server-db/src/main/java/com/didispace/config/server/db/ConfigServerBootstrap.java
  class ConfigServerBootstrap (line 9) | @EnableConfigServer
    method main (line 13) | public static void main(String[] args) {

FILE: 3-Edgware/config-server-db/src/main/resources/schema/V1__Base_version.sql
  type `properties` (line 1) | CREATE TABLE `properties` (

FILE: 4-Finchley/alibaba-dubbo-api/src/main/java/com/didispace/alibaba/dubbo/api/HelloService.java
  type HelloService (line 9) | public interface HelloService {
    method hello (line 11) | String hello(String name);

FILE: 4-Finchley/alibaba-dubbo-client/src/main/java/com/didispace/alibaba/dubbo/client/DubboClientApplication.java
  class DubboClientApplication (line 14) | @EnableDiscoveryClient
    method main (line 18) | public static void main(String[] args) {
    class TestController (line 22) | @Slf4j
      method test (line 29) | @GetMapping("/test")

FILE: 4-Finchley/alibaba-dubbo-server/src/main/java/com/didispace/alibaba/dubbo/server/DubboServerApplication.java
  class DubboServerApplication (line 8) | @EnableDiscoveryClient
    method main (line 12) | public static void main(String[] args) {

FILE: 4-Finchley/alibaba-dubbo-server/src/main/java/com/didispace/alibaba/dubbo/server/HelloServiceImpl.java
  class HelloServiceImpl (line 7) | @Service
    method hello (line 10) | @Override

FILE: 4-Finchley/alibaba-nacos-config-client/src/main/java/com/didispace/alibaba/nacos/config/client/TestApplication.java
  class TestApplication (line 12) | @SpringBootApplication
    method main (line 15) | public static void main(String[] args) {
    class TestController (line 19) | @Slf4j
      method hello (line 27) | @GetMapping("/test")
    class Test2Controller (line 39) | @Slf4j
      method test2 (line 51) | @GetMapping("/test2")

FILE: 4-Finchley/alibaba-nacos-discovery-client-common/src/main/java/com/didispace/alibaba/nacos/discovery/client/TestApplication.java
  class TestApplication (line 15) | @EnableDiscoveryClient
    method main (line 19) | public static void main(String[] args) {
    class TestController (line 23) | @Slf4j
      method test (line 30) | @GetMapping("/test")

FILE: 4-Finchley/alibaba-nacos-discovery-client-feign/src/main/java/com/didispace/alibaba/nacos/discovery/client/TestApplication.java
  class TestApplication (line 18) | @EnableDiscoveryClient
    method main (line 23) | public static void main(String[] args) {
    class TestController (line 27) | @Slf4j
      method test (line 34) | @GetMapping("/test")
    type Client (line 42) | @FeignClient("alibaba-nacos-discovery-server")
      method hello (line 45) | @GetMapping("/hello")

FILE: 4-Finchley/alibaba-nacos-discovery-client-resttemplate/src/main/java/com/didispace/alibaba/nacos/discovery/client/TestApplication.java
  class TestApplication (line 15) | @EnableDiscoveryClient
    method main (line 19) | public static void main(String[] args) {
    class TestController (line 23) | @Slf4j
      method test (line 30) | @GetMapping("/test")
    method restTemplate (line 37) | @Bean

FILE: 4-Finchley/alibaba-nacos-discovery-client-webclient/src/main/java/com/didispace/alibaba/nacos/discovery/client/TestApplication.java
  class TestApplication (line 16) | @EnableDiscoveryClient
    method main (line 20) | public static void main(String[] args) {
    class TestController (line 24) | @Slf4j
      method test (line 31) | @GetMapping("/test")
    method loadBalancedWebClientBuilder (line 42) | @Bean

FILE: 4-Finchley/alibaba-nacos-discovery-server/src/main/java/com/didispace/alibaba/nacos/discovery/server/TestApplication.java
  class TestApplication (line 14) | @EnableDiscoveryClient
    method main (line 18) | public static void main(String[] args) {
    class TestController (line 22) | @Slf4j
      method hello (line 26) | @GetMapping("/hello")

FILE: 4-Finchley/alibaba-sentinel-annotation/src/main/java/com/didispace/alibaba/sentinel/TestApplication.java
  class TestApplication (line 9) | @SpringBootApplication
    method main (line 12) | public static void main(String[] args) {
    method sentinelResourceAspect (line 16) | @Bean

FILE: 4-Finchley/alibaba-sentinel-annotation/src/main/java/com/didispace/alibaba/sentinel/service/TestService.java
  class TestService (line 9) | @Slf4j
    method doSomeThing (line 14) | @SentinelResource(value = "doSomeThing", blockHandler = "exceptionHand...
    method exceptionHandler (line 19) | public void exceptionHandler(String str, BlockException ex) {
    method doSomeThing2 (line 24) | @SentinelResource(value = "doSomeThing2", fallback = "fallbackHandler")
    method fallbackHandler (line 30) | public void fallbackHandler(String str) {

FILE: 4-Finchley/alibaba-sentinel-annotation/src/main/java/com/didispace/alibaba/sentinel/web/TestController.java
  class TestController (line 11) | @Slf4j
    method hello (line 18) | @GetMapping("/hello")
    method hello2 (line 24) | @GetMapping("/hello2")

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/DashboardApplication.java
  class DashboardApplication (line 28) | @SpringBootApplication
    method main (line 31) | public static void main(String[] args) {
    method triggerSentinelInit (line 36) | private static void triggerSentinelInit() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/AuthService.java
  type AuthService (line 24) | public interface AuthService<R> {
    method getAuthUser (line 32) | AuthUser getAuthUser(R request);
    type PrivilegeType (line 37) | enum PrivilegeType {
    type AuthUser (line 67) | interface AuthUser {
      method authTarget (line 83) | boolean authTarget(String target, PrivilegeType privilegeType);
      method isSuperUser (line 90) | boolean isSuperUser();
      method getNickName (line 97) | String getNickName();
      method getLoginName (line 104) | String getLoginName();
      method getId (line 111) | String getId();

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/FakeAuthServiceImpl.java
  class FakeAuthServiceImpl (line 28) | @Component
    method getAuthUser (line 31) | @Override
    class AuthUserImpl (line 36) | static final class AuthUserImpl implements AuthUser {
      method authTarget (line 38) | @Override
      method isSuperUser (line 44) | @Override
      method getNickName (line 50) | @Override
      method getLoginName (line 55) | @Override
      method getId (line 60) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/SimpleWebAuthServiceImpl.java
  class SimpleWebAuthServiceImpl (line 28) | @Primary
    method getAuthUser (line 34) | @Override
    class SimpleWebAuthUserImpl (line 45) | public static final class SimpleWebAuthUserImpl implements AuthUser {
      method SimpleWebAuthUserImpl (line 49) | public SimpleWebAuthUserImpl(String username) {
      method authTarget (line 53) | @Override
      method isSuperUser (line 58) | @Override
      method getNickName (line 63) | @Override
      method getLoginName (line 68) | @Override
      method getId (line 73) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/client/CommandFailedException.java
  class CommandFailedException (line 21) | public class CommandFailedException extends RuntimeException {
    method CommandFailedException (line 23) | public CommandFailedException() {}
    method CommandFailedException (line 25) | public CommandFailedException(String message) {
    method fillInStackTrace (line 29) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/client/CommandNotFoundException.java
  class CommandNotFoundException (line 22) | public class CommandNotFoundException extends Exception {
    method CommandNotFoundException (line 24) | public CommandNotFoundException() { }
    method CommandNotFoundException (line 26) | public CommandNotFoundException(String message) {
    method fillInStackTrace (line 30) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/client/SentinelApiClient.java
  class SentinelApiClient (line 87) | @Component
    method SentinelApiClient (line 124) | public SentinelApiClient() {
    method isSuccess (line 136) | private boolean isSuccess(int statusCode) {
    method isCommandNotFound (line 140) | private boolean isCommandNotFound(int statusCode, String body) {
    method queryString (line 144) | private StringBuilder queryString(Map<String, String> params) {
    method postRequest (line 162) | private HttpUriRequest postRequest(String url, Map<String, String> par...
    method urlEncode (line 179) | private String urlEncode(String str) {
    method getBody (line 188) | private String getBody(HttpResponse response) throws Exception {
    method executeCommand (line 209) | private CompletableFuture<String> executeCommand(String ip, int port, ...
    method executeCommand (line 222) | private CompletableFuture<String> executeCommand(String ip, int port, ...
    method executeCommand (line 236) | private CompletableFuture<String> executeCommand(String app, String ip...
    method executeCommand (line 270) | private CompletableFuture<String> executeCommand(HttpUriRequest reques...
    method close (line 308) | public void close() throws Exception {
    method fetchItemsAsync (line 312) | @Nullable
    method fetchItems (line 325) | @Nullable
    method fetchRules (line 345) | private <T extends Rule> List<T> fetchRules(String ip, int port, Strin...
    method setRules (line 349) | private boolean setRules(String app, String ip, int port, String type,...
    method fetchResourceOfMachine (line 374) | public List<NodeVo> fetchResourceOfMachine(String ip, int port, String...
    method fetchClusterNodeOfMachine (line 386) | public List<NodeVo> fetchClusterNodeOfMachine(String ip, int port, boo...
    method fetchFlowRuleOfMachine (line 394) | public List<FlowRuleEntity> fetchFlowRuleOfMachine(String app, String ...
    method fetchDegradeRuleOfMachine (line 404) | public List<DegradeRuleEntity> fetchDegradeRuleOfMachine(String app, S...
    method fetchSystemRuleOfMachine (line 414) | public List<SystemRuleEntity> fetchSystemRuleOfMachine(String app, Str...
    method fetchParamFlowRulesOfMachine (line 433) | public CompletableFuture<List<ParamFlowRuleEntity>> fetchParamFlowRule...
    method fetchAuthorityRulesOfMachine (line 458) | public List<AuthorityRuleEntity> fetchAuthorityRulesOfMachine(String a...
    method setFlowRuleOfMachine (line 481) | public boolean setFlowRuleOfMachine(String app, String ip, int port, L...
    method setDegradeRuleOfMachine (line 495) | public boolean setDegradeRuleOfMachine(String app, String ip, int port...
    method setSystemRuleOfMachine (line 509) | public boolean setSystemRuleOfMachine(String app, String ip, int port,...
    method setAuthorityRuleOfMachine (line 513) | public boolean setAuthorityRuleOfMachine(String app, String ip, int po...
    method setParamFlowRuleOfMachine (line 517) | public CompletableFuture<Void> setParamFlowRuleOfMachine(String app, S...
    method fetchClusterMode (line 547) | public CompletableFuture<ClusterStateSimpleEntity> fetchClusterMode(St...
    method modifyClusterMode (line 560) | public CompletableFuture<Void> modifyClusterMode(String ip, int port, ...
    method fetchClusterClientInfoAndConfig (line 582) | public CompletableFuture<ClusterClientInfoVO> fetchClusterClientInfoAn...
    method modifyClusterClientConfig (line 595) | public CompletableFuture<Void> modifyClusterClientConfig(String app, S...
    method modifyClusterServerFlowConfig (line 617) | public CompletableFuture<Void> modifyClusterServerFlowConfig(String ap...
    method modifyClusterServerTransportConfig (line 639) | public CompletableFuture<Void> modifyClusterServerTransportConfig(Stri...
    method modifyClusterServerNamespaceSet (line 662) | public CompletableFuture<Void> modifyClusterServerNamespaceSet(String ...
    method fetchClusterServerBasicInfo (line 684) | public CompletableFuture<ClusterServerStateVO> fetchClusterServerBasic...

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/config/DashboardConfig.java
  class DashboardConfig (line 36) | public class DashboardConfig {
    method getConfig (line 69) | @NonNull
    method getConfigStr (line 84) | protected static String getConfigStr(String name) {
    method getConfigInt (line 99) | protected static int getConfigInt(String name, int defaultVal, int min...
    method getAuthUsername (line 113) | public static String getAuthUsername() {
    method getAuthPassword (line 117) | public static String getAuthPassword() {
    method getHideAppNoMachineMillis (line 121) | public static int getHideAppNoMachineMillis() {
    method getRemoveAppNoMachineMillis (line 125) | public static int getRemoveAppNoMachineMillis() {
    method getAutoRemoveMachineMillis (line 129) | public static int getAutoRemoveMachineMillis() {
    method getUnhealthyMachineMillis (line 133) | public static int getUnhealthyMachineMillis() {
    method clearCache (line 137) | public static void clearCache() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/config/WebConfig.java
  class WebConfig (line 35) | @Configuration
    method addResourceHandlers (line 43) | @Override
    method addViewControllers (line 48) | @Override
    method sentinelFilterRegistration (line 57) | @Bean
    method authenticationFilterRegistration (line 70) | @Bean

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/AppController.java
  class AppController (line 40) | @RestController
    method queryApps (line 47) | @GetMapping("/names.json")
    method queryAppInfos (line 52) | @GetMapping("/briefinfos.json")
    method getMachinesByApp (line 59) | @GetMapping(value = "/{app}/machines.json")
    method removeMachineById (line 80) | @RequestMapping(value = "/{app}/machine/remove.json")

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/AuthController.java
  class AuthController (line 37) | @RestController
    method login (line 49) | @PostMapping("/login")
    method logout (line 75) | @RequestMapping(value = "/logout", method = RequestMethod.POST)

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/AuthorityRuleController.java
  class AuthorityRuleController (line 52) | @RestController
    method apiQueryAllRulesForMachine (line 66) | @GetMapping("/rules")
    method checkEntityInternal (line 92) | private <R> Result<R> checkEntityInternal(AuthorityRuleEntity entity) {
    method apiAddAuthorityRule (line 121) | @PostMapping("/rule")
    method apiUpdateParamFlowRule (line 146) | @PutMapping("/rule/{id}")
    method apiDeleteRule (line 178) | @DeleteMapping("/rule/{id}")
    method publishRules (line 200) | private boolean publishRules(String app, String ip, Integer port) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/DegradeController.java
  class DegradeController (line 46) | @Controller
    method queryMachineRules (line 60) | @ResponseBody
    method add (line 85) | @ResponseBody
    method updateIfNotNull (line 144) | @ResponseBody
    method delete (line 196) | @ResponseBody
    method publishRules (line 221) | private boolean publishRules(String app, String ip, Integer port) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/DemoController.java
  class DemoController (line 34) | @Controller
    method greeting (line 40) | @RequestMapping("/greeting")
    method link (line 45) | @RequestMapping("/link")
    method loop (line 62) | @RequestMapping("/loop")
    method slow (line 73) | @RequestMapping("/slow")
    class RunTask (line 84) | static class RunTask implements Runnable {
      method RunTask (line 90) | public RunTask(String name, int time, boolean slow) {
      method run (line 97) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/FlowControllerV1.java
  class FlowControllerV1 (line 52) | @RestController
    method apiQueryMachineRules (line 66) | @GetMapping("/rules")
    method checkEntityInternal (line 93) | private <R> Result<R> checkEntityInternal(FlowRuleEntity entity) {
    method apiAddFlowRule (line 140) | @PostMapping("/rule")
    method updateIfNotNull (line 167) | @PutMapping("/save.json")
    method delete (line 248) | @DeleteMapping("/delete.json")
    method publishRules (line 270) | private boolean publishRules(String app, String ip, Integer port) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/MachineRegistryController.java
  class MachineRegistryController (line 32) | @Controller
    method receiveHeartBeat (line 41) | @ResponseBody

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/MetricController.java
  class MetricController (line 45) | @Controller
    method queryTopResourceMetric (line 56) | @ResponseBody
    method queryByAppAndResource (line 138) | @ResponseBody
    method sortMetricVoAndDistinct (line 162) | private Iterable<MetricVo> sortMetricVoAndDistinct(List<MetricVo> vos) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ParamFlowRuleController.java
  class ParamFlowRuleController (line 59) | @RestController
    method checkIfSupported (line 75) | private boolean checkIfSupported(String app, String ip, int port) {
    method apiQueryAllRulesForMachine (line 88) | @GetMapping("/rules")
    method isNotSupported (line 125) | private boolean isNotSupported(Throwable ex) {
    method apiAddParamFlowRule (line 129) | @PostMapping("/rule")
    method checkEntityInternal (line 163) | private <R> Result<R> checkEntityInternal(ParamFlowRuleEntity entity) {
    method apiUpdateParamFlowRule (line 194) | @PutMapping("/rule/{id}")
    method apiDeleteRule (line 235) | @DeleteMapping("/rule/{id}")
    method publishRules (line 263) | private CompletableFuture<Void> publishRules(String app, String ip, In...
    method unsupportedVersion (line 268) | private <R> Result<R> unsupportedVersion() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ResourceController.java
  class ResourceController (line 39) | @RestController
    method fetchResourceChainListOfMachine (line 58) | @GetMapping("/machineResource.json")

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/SystemController.java
  class SystemController (line 45) | @Controller
    method queryMachineRules (line 57) | @ResponseBody
    method countNotNullAndNotNegative (line 81) | private int countNotNullAndNotNegative(Number... values) {
    method add (line 91) | @ResponseBody
    method updateIfNotNull (line 151) | @ResponseBody
    method delete (line 205) | @ResponseBody
    method publishRules (line 229) | private boolean publishRules(String app, String ip, Integer port) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/cluster/ClusterAssignController.java
  class ClusterAssignController (line 41) | @RestController
    method apiAssignAllClusterServersOfApp (line 50) | @PostMapping("/all_server/{app}")
    method apiAssignSingleClusterServersOfApp (line 70) | @PostMapping("/single_server/{app}")
    method apiUnbindClusterServersOfApp (line 88) | @PostMapping("/unbind_server/{app}")

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/cluster/ClusterConfigController.java
  class ClusterConfigController (line 56) | @RestController
    method apiModifyClusterConfig (line 70) | @PostMapping("/config/modify_single")
    method errorResponse (line 111) | private <T> Result<T> errorResponse(ExecutionException ex) {
    method apiGetClusterState (line 119) | @GetMapping("/state_single")
    method apiGetClusterServerStateOfApp (line 148) | @GetMapping("/server_state/{app}")
    method apiGetClusterClientStateOfApp (line 167) | @GetMapping("/client_state/{app}")
    method apiGetClusterStateOfApp (line 186) | @GetMapping("/state/{app}")
    method isNotSupported (line 204) | private boolean isNotSupported(Throwable ex) {
    method checkIfSupported (line 208) | private boolean checkIfSupported(String app, String ip, int port) {
    method checkValidRequest (line 221) | private Result<Boolean> checkValidRequest(ClusterModifyRequest request) {
    method unsupportedVersion (line 240) | private <R> Result<R> unsupportedVersion() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/v2/FlowControllerV2.java
  class FlowControllerV2 (line 54) | @RestController
    method apiQueryMachineRules (line 73) | @GetMapping("/rules")
    method checkEntityInternal (line 99) | private <R> Result<R> checkEntityInternal(FlowRuleEntity entity) {
    method apiAddFlowRule (line 143) | @PostMapping("/rule")
    method apiUpdateFlowRule (line 168) | @PutMapping("/rule/{id}")
    method apiDeleteRule (line 210) | @DeleteMapping("/rule/{id}")
    method publishRules (line 230) | private void publishRules(/*@NonNull*/ String app) throws Exception {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/ApplicationEntity.java
  class ApplicationEntity (line 25) | public class ApplicationEntity {
    method getId (line 34) | public long getId() {
    method setId (line 38) | public void setId(long id) {
    method getGmtCreate (line 42) | public Date getGmtCreate() {
    method setGmtCreate (line 46) | public void setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 50) | public Date getGmtModified() {
    method setGmtModified (line 54) | public void setGmtModified(Date gmtModified) {
    method getApp (line 58) | public String getApp() {
    method setApp (line 62) | public void setApp(String app) {
    method getActiveConsole (line 66) | public String getActiveConsole() {
    method getLastFetch (line 70) | public Date getLastFetch() {
    method setLastFetch (line 74) | public void setLastFetch(Date lastFetch) {
    method setActiveConsole (line 78) | public void setActiveConsole(String activeConsole) {
    method toAppInfo (line 82) | public AppInfo toAppInfo() {
    method toString (line 86) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MachineEntity.java
  class MachineEntity (line 25) | public class MachineEntity {
    method getId (line 35) | public long getId() {
    method setId (line 39) | public void setId(long id) {
    method getGmtCreate (line 43) | public Date getGmtCreate() {
    method setGmtCreate (line 47) | public void setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 51) | public Date getGmtModified() {
    method setGmtModified (line 55) | public void setGmtModified(Date gmtModified) {
    method getApp (line 59) | public String getApp() {
    method setApp (line 63) | public void setApp(String app) {
    method getIp (line 67) | public String getIp() {
    method setIp (line 71) | public void setIp(String ip) {
    method getHostname (line 75) | public String getHostname() {
    method setHostname (line 79) | public void setHostname(String hostname) {
    method getTimestamp (line 83) | public Date getTimestamp() {
    method setTimestamp (line 87) | public void setTimestamp(Date timestamp) {
    method getPort (line 91) | public Integer getPort() {
    method setPort (line 95) | public void setPort(Integer port) {
    method toMachineInfo (line 99) | public MachineInfo toMachineInfo() {
    method toString (line 112) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MetricEntity.java
  class MetricEntity (line 23) | public class MetricEntity {
    method copyOf (line 50) | public static MetricEntity copyOf(MetricEntity oldEntity) {
    method addPassQps (line 68) | public synchronized void addPassQps(Long passQps) {
    method addBlockQps (line 72) | public synchronized void addBlockQps(Long blockQps) {
    method addExceptionQps (line 76) | public synchronized void addExceptionQps(Long exceptionQps) {
    method addCount (line 80) | public synchronized void addCount(int count) {
    method addRtAndSuccessQps (line 84) | public synchronized void addRtAndSuccessQps(double avgRt, Long success...
    method setRtAndSuccessQps (line 95) | public synchronized void setRtAndSuccessQps(double avgRt, Long success...
    method getId (line 100) | public Long getId() {
    method setId (line 104) | public void setId(Long id) {
    method getGmtCreate (line 108) | public Date getGmtCreate() {
    method setGmtCreate (line 112) | public void setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 116) | public Date getGmtModified() {
    method setGmtModified (line 120) | public void setGmtModified(Date gmtModified) {
    method getApp (line 124) | public String getApp() {
    method setApp (line 128) | public void setApp(String app) {
    method getTimestamp (line 132) | public Date getTimestamp() {
    method setTimestamp (line 136) | public void setTimestamp(Date timestamp) {
    method getResource (line 140) | public String getResource() {
    method setResource (line 144) | public void setResource(String resource) {
    method getPassQps (line 149) | public Long getPassQps() {
    method setPassQps (line 153) | public void setPassQps(Long passQps) {
    method getBlockQps (line 157) | public Long getBlockQps() {
    method setBlockQps (line 161) | public void setBlockQps(Long blockQps) {
    method getExceptionQps (line 165) | public Long getExceptionQps() {
    method setExceptionQps (line 169) | public void setExceptionQps(Long exceptionQps) {
    method getRt (line 173) | public double getRt() {
    method setRt (line 177) | public void setRt(double rt) {
    method getCount (line 181) | public int getCount() {
    method setCount (line 185) | public void setCount(int count) {
    method getResourceCode (line 189) | public int getResourceCode() {
    method getSuccessQps (line 193) | public Long getSuccessQps() {
    method setSuccessQps (line 197) | public void setSuccessQps(Long successQps) {
    method toString (line 201) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MetricPositionEntity.java
  class MetricPositionEntity (line 23) | public class MetricPositionEntity {
    method getId (line 44) | public long getId() {
    method setId (line 48) | public void setId(long id) {
    method getGmtCreate (line 52) | public Date getGmtCreate() {
    method setGmtCreate (line 56) | public void setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 60) | public Date getGmtModified() {
    method setGmtModified (line 64) | public void setGmtModified(Date gmtModified) {
    method getApp (line 68) | public String getApp() {
    method setApp (line 72) | public void setApp(String app) {
    method getIp (line 76) | public String getIp() {
    method setIp (line 80) | public void setIp(String ip) {
    method getPort (line 84) | public int getPort() {
    method setPort (line 88) | public void setPort(int port) {
    method getHostname (line 92) | public String getHostname() {
    method setHostname (line 96) | public void setHostname(String hostname) {
    method getLastFetch (line 100) | public Date getLastFetch() {
    method setLastFetch (line 104) | public void setLastFetch(Date lastFetch) {
    method toString (line 108) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/SentinelVersion.java
  class SentinelVersion (line 22) | public class SentinelVersion {
    method SentinelVersion (line 28) | public SentinelVersion() {
    method SentinelVersion (line 32) | public SentinelVersion(int major, int minor, int fix) {
    method SentinelVersion (line 36) | public SentinelVersion(int major, int minor, int fix, String postfix) {
    method getFullVersion (line 46) | public int getFullVersion() {
    method getMajorVersion (line 50) | public int getMajorVersion() {
    method setMajorVersion (line 54) | public SentinelVersion setMajorVersion(int majorVersion) {
    method getMinorVersion (line 59) | public int getMinorVersion() {
    method setMinorVersion (line 63) | public SentinelVersion setMinorVersion(int minorVersion) {
    method getFixVersion (line 68) | public int getFixVersion() {
    method setFixVersion (line 72) | public SentinelVersion setFixVersion(int fixVersion) {
    method getPostfix (line 77) | public String getPostfix() {
    method setPostfix (line 81) | public SentinelVersion setPostfix(String postfix) {
    method greaterThan (line 86) | public boolean greaterThan(SentinelVersion version) {
    method greaterOrEqual (line 93) | public boolean greaterOrEqual(SentinelVersion version) {
    method equals (line 100) | @Override
    method hashCode (line 111) | @Override
    method toString (line 120) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/AbstractRuleEntity.java
  class AbstractRuleEntity (line 26) | public abstract class AbstractRuleEntity<T extends AbstractRule> impleme...
    method getId (line 39) | @Override
    method setId (line 44) | @Override
    method getApp (line 49) | @Override
    method setApp (line 54) | public AbstractRuleEntity<T> setApp(String app) {
    method getIp (line 59) | @Override
    method setIp (line 64) | public AbstractRuleEntity<T> setIp(String ip) {
    method getPort (line 69) | @Override
    method setPort (line 74) | public AbstractRuleEntity<T> setPort(Integer port) {
    method getRule (line 79) | public T getRule() {
    method setRule (line 83) | public AbstractRuleEntity<T> setRule(T rule) {
    method getGmtCreate (line 88) | @Override
    method setGmtCreate (line 93) | public AbstractRuleEntity<T> setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 98) | public Date getGmtModified() {
    method setGmtModified (line 102) | public AbstractRuleEntity<T> setGmtModified(Date gmtModified) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/AuthorityRuleEntity.java
  class AuthorityRuleEntity (line 28) | public class AuthorityRuleEntity extends AbstractRuleEntity<AuthorityRul...
    method AuthorityRuleEntity (line 30) | public AuthorityRuleEntity() {}
    method AuthorityRuleEntity (line 32) | public AuthorityRuleEntity(AuthorityRule authorityRule) {
    method fromAuthorityRule (line 37) | public static AuthorityRuleEntity fromAuthorityRule(String app, String...
    method getLimitApp (line 45) | @JsonIgnore
    method getResource (line 50) | @JsonIgnore
    method getStrategy (line 55) | @JsonIgnore
    method toRule (line 60) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/DegradeRuleEntity.java
  class DegradeRuleEntity (line 25) | public class DegradeRuleEntity implements RuleEntity {
    method fromDegradeRule (line 41) | public static DegradeRuleEntity fromDegradeRule(String app, String ip,...
    method getIp (line 54) | @Override
    method setIp (line 59) | public void setIp(String ip) {
    method getPort (line 63) | @Override
    method setPort (line 68) | public void setPort(Integer port) {
    method getId (line 72) | @Override
    method setId (line 77) | @Override
    method getApp (line 82) | @Override
    method setApp (line 87) | public void setApp(String app) {
    method getResource (line 91) | public String getResource() {
    method setResource (line 95) | public void setResource(String resource) {
    method getLimitApp (line 99) | public String getLimitApp() {
    method setLimitApp (line 103) | public void setLimitApp(String limitApp) {
    method getCount (line 107) | public Double getCount() {
    method setCount (line 111) | public void setCount(Double count) {
    method getTimeWindow (line 115) | public Integer getTimeWindow() {
    method setTimeWindow (line 119) | public void setTimeWindow(Integer timeWindow) {
    method getGrade (line 123) | public Integer getGrade() {
    method setGrade (line 127) | public void setGrade(Integer grade) {
    method getGmtCreate (line 131) | @Override
    method setGmtCreate (line 136) | public void setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 140) | public Date getGmtModified() {
    method setGmtModified (line 144) | public void setGmtModified(Date gmtModified) {
    method toRule (line 148) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/FlowRuleEntity.java
  class FlowRuleEntity (line 26) | public class FlowRuleEntity implements RuleEntity {
    method fromFlowRule (line 63) | public static FlowRuleEntity fromFlowRule(String app, String ip, Integ...
    method getIp (line 82) | @Override
    method setIp (line 87) | public void setIp(String ip) {
    method getPort (line 91) | @Override
    method setPort (line 96) | public void setPort(Integer port) {
    method getApp (line 100) | @Override
    method setApp (line 105) | public void setApp(String app) {
    method getId (line 109) | @Override
    method setId (line 114) | @Override
    method getLimitApp (line 119) | public String getLimitApp() {
    method setLimitApp (line 123) | public void setLimitApp(String limitApp) {
    method getResource (line 127) | public String getResource() {
    method setResource (line 131) | public void setResource(String resource) {
    method getGrade (line 135) | public Integer getGrade() {
    method setGrade (line 139) | public void setGrade(Integer grade) {
    method getCount (line 143) | public Double getCount() {
    method setCount (line 147) | public void setCount(Double count) {
    method getStrategy (line 151) | public Integer getStrategy() {
    method setStrategy (line 155) | public void setStrategy(Integer strategy) {
    method getRefResource (line 159) | public String getRefResource() {
    method setRefResource (line 163) | public void setRefResource(String refResource) {
    method getControlBehavior (line 167) | public Integer getControlBehavior() {
    method setControlBehavior (line 171) | public void setControlBehavior(Integer controlBehavior) {
    method getWarmUpPeriodSec (line 175) | public Integer getWarmUpPeriodSec() {
    method setWarmUpPeriodSec (line 179) | public void setWarmUpPeriodSec(Integer warmUpPeriodSec) {
    method getMaxQueueingTimeMs (line 183) | public Integer getMaxQueueingTimeMs() {
    method setMaxQueueingTimeMs (line 187) | public void setMaxQueueingTimeMs(Integer maxQueueingTimeMs) {
    method isClusterMode (line 191) | public boolean isClusterMode() {
    method setClusterMode (line 195) | public FlowRuleEntity setClusterMode(boolean clusterMode) {
    method getClusterConfig (line 200) | public ClusterFlowConfig getClusterConfig() {
    method setClusterConfig (line 204) | public FlowRuleEntity setClusterConfig(ClusterFlowConfig clusterConfig) {
    method getGmtCreate (line 209) | @Override
    method setGmtCreate (line 214) | public void setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 218) | public Date getGmtModified() {
    method setGmtModified (line 222) | public void setGmtModified(Date gmtModified) {
    method toRule (line 226) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/ParamFlowRuleEntity.java
  class ParamFlowRuleEntity (line 32) | public class ParamFlowRuleEntity extends AbstractRuleEntity<ParamFlowRul...
    method ParamFlowRuleEntity (line 34) | public ParamFlowRuleEntity() {}
    method ParamFlowRuleEntity (line 36) | public ParamFlowRuleEntity(ParamFlowRule rule) {
    method fromAuthorityRule (line 41) | public static ParamFlowRuleEntity fromAuthorityRule(String app, String...
    method getLimitApp (line 49) | @JsonIgnore
    method getResource (line 54) | @JsonIgnore
    method getGrade (line 59) | @JsonIgnore
    method getParamIdx (line 64) | @JsonIgnore
    method getCount (line 69) | @JsonIgnore
    method getParamFlowItemList (line 74) | @JsonIgnore
    method isClusterMode (line 79) | @JsonIgnore
    method getClusterConfig (line 84) | @JsonIgnore
    method toRule (line 89) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/RuleEntity.java
  type RuleEntity (line 25) | public interface RuleEntity {
    method getId (line 27) | Long getId();
    method setId (line 29) | void setId(Long id);
    method getApp (line 31) | String getApp();
    method getIp (line 33) | String getIp();
    method getPort (line 35) | Integer getPort();
    method getGmtCreate (line 37) | Date getGmtCreate();
    method toRule (line 39) | Rule toRule();

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/SystemRuleEntity.java
  class SystemRuleEntity (line 25) | public class SystemRuleEntity implements RuleEntity {
    method fromSystemRule (line 40) | public static SystemRuleEntity fromSystemRule(String app, String ip, I...
    method getIp (line 52) | @Override
    method setIp (line 57) | public void setIp(String ip) {
    method getPort (line 61) | @Override
    method setPort (line 66) | public void setPort(Integer port) {
    method getId (line 70) | @Override
    method setId (line 75) | @Override
    method getApp (line 80) | @Override
    method setApp (line 85) | public void setApp(String app) {
    method getAvgLoad (line 89) | public Double getAvgLoad() {
    method setAvgLoad (line 93) | public void setAvgLoad(Double avgLoad) {
    method getAvgRt (line 97) | public Long getAvgRt() {
    method setAvgRt (line 101) | public void setAvgRt(Long avgRt) {
    method getMaxThread (line 105) | public Long getMaxThread() {
    method setMaxThread (line 109) | public void setMaxThread(Long maxThread) {
    method getQps (line 113) | public Double getQps() {
    method setQps (line 117) | public void setQps(Double qps) {
    method getGmtCreate (line 121) | @Override
    method setGmtCreate (line 126) | public void setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 130) | public Date getGmtModified() {
    method setGmtModified (line 134) | public void setGmtModified(Date gmtModified) {
    method toRule (line 138) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/AppInfo.java
  class AppInfo (line 27) | public class AppInfo {
    method AppInfo (line 33) | public AppInfo() {}
    method AppInfo (line 35) | public AppInfo(String app) {
    method getApp (line 39) | public String getApp() {
    method setApp (line 43) | public void setApp(String app) {
    method getMachines (line 52) | public Set<MachineInfo> getMachines() {
    method toString (line 56) | @Override
    method addMachine (line 61) | public boolean addMachine(MachineInfo machineInfo) {
    method removeMachine (line 66) | public synchronized boolean removeMachine(String ip, int port) {
    method getMachine (line 78) | public Optional<MachineInfo> getMachine(String ip, int port) {
    method heartbeatJudge (line 84) | private boolean heartbeatJudge(final int threshold) {
    method isShown (line 108) | public boolean isShown() {
    method isDead (line 117) | public boolean isDead() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/AppManagement.java
  class AppManagement (line 27) | @Component
    method init (line 35) | @PostConstruct
    method getBriefApps (line 40) | @Override
    method addMachine (line 45) | @Override
    method removeMachine (line 50) | @Override
    method getAppNames (line 55) | @Override
    method getDetailApp (line 60) | @Override
    method removeApp (line 65) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/MachineDiscovery.java
  type MachineDiscovery (line 21) | public interface MachineDiscovery {
    method getAppNames (line 25) | List<String> getAppNames();
    method getBriefApps (line 27) | Set<AppInfo> getBriefApps();
    method getDetailApp (line 29) | AppInfo getDetailApp(String app);
    method removeApp (line 37) | void removeApp(String app);
    method addMachine (line 39) | long addMachine(MachineInfo machineInfo);
    method removeMachine (line 50) | boolean removeMachine(String app, String ip, int port);

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/MachineInfo.java
  class MachineInfo (line 23) | public class MachineInfo implements Comparable<MachineInfo> {
    method of (line 37) | public static MachineInfo of(String app, String ip, Integer port) {
    method toHostPort (line 45) | public String toHostPort() {
    method getPort (line 49) | public Integer getPort() {
    method setPort (line 53) | public void setPort(Integer port) {
    method getApp (line 57) | public String getApp() {
    method setApp (line 61) | public void setApp(String app) {
    method getHostname (line 65) | public String getHostname() {
    method setHostname (line 69) | public void setHostname(String hostname) {
    method getIp (line 73) | public String getIp() {
    method setIp (line 77) | public void setIp(String ip) {
    method getHeartbeatVersion (line 81) | public long getHeartbeatVersion() {
    method setHeartbeatVersion (line 85) | public void setHeartbeatVersion(long heartbeatVersion) {
    method getVersion (line 89) | public String getVersion() {
    method setVersion (line 93) | public MachineInfo setVersion(String version) {
    method isHealthy (line 98) | public boolean isHealthy() {
    method isDead (line 108) | public boolean isDead() {
    method getLastHeartbeat (line 116) | public long getLastHeartbeat() {
    method setLastHeartbeat (line 120) | public void setLastHeartbeat(long lastHeartbeat) {
    method compareTo (line 124) | @Override
    method toString (line 138) | @Override
    method equals (line 152) | @Override
    method hashCode (line 162) | @Override
    method toLogString (line 172) | public String toLogString() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/SimpleMachineDiscovery.java
  class SimpleMachineDiscovery (line 32) | @Component
    method addMachine (line 37) | @Override
    method removeMachine (line 45) | @Override
    method getAppNames (line 55) | @Override
    method getDetailApp (line 60) | @Override
    method getBriefApps (line 66) | @Override
    method removeApp (line 71) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/ResourceTreeNode.java
  class ResourceTreeNode (line 28) | public class ResourceTreeNode {
    method fromNodeVoList (line 49) | public static ResourceTreeNode fromNodeVoList(List<NodeVo> nodeVos) {
    method fromNodeVo (line 70) | public static ResourceTreeNode fromNodeVo(NodeVo vo) {
    method searchIgnoreCase (line 89) | public void searchIgnoreCase(String searchKey) {
    method search (line 97) | private boolean search(ResourceTreeNode node, String searchKey) {
    method getId (line 114) | public String getId() {
    method setId (line 118) | public void setId(String id) {
    method getParentId (line 122) | public String getParentId() {
    method setParentId (line 126) | public void setParentId(String parentId) {
    method getResource (line 130) | public String getResource() {
    method setResource (line 134) | public void setResource(String resource) {
    method getThreadNum (line 138) | public Integer getThreadNum() {
    method setThreadNum (line 142) | public void setThreadNum(Integer threadNum) {
    method getPassQps (line 146) | public Long getPassQps() {
    method setPassQps (line 150) | public void setPassQps(Long passQps) {
    method getBlockQps (line 154) | public Long getBlockQps() {
    method setBlockQps (line 158) | public void setBlockQps(Long blockQps) {
    method getTotalQps (line 162) | public Long getTotalQps() {
    method setTotalQps (line 166) | public void setTotalQps(Long totalQps) {
    method getAverageRt (line 170) | public Long getAverageRt() {
    method setAverageRt (line 174) | public void setAverageRt(Long averageRt) {
    method getSuccessQps (line 178) | public Long getSuccessQps() {
    method setSuccessQps (line 182) | public void setSuccessQps(Long successQps) {
    method getExceptionQps (line 186) | public Long getExceptionQps() {
    method setExceptionQps (line 190) | public void setExceptionQps(Long exceptionQps) {
    method getOneMinutePass (line 194) | public Long getOneMinutePass() {
    method setOneMinutePass (line 198) | public void setOneMinutePass(Long oneMinutePass) {
    method getOneMinuteBlock (line 202) | public Long getOneMinuteBlock() {
    method setOneMinuteBlock (line 206) | public void setOneMinuteBlock(Long oneMinuteBlock) {
    method getOneMinuteException (line 210) | public Long getOneMinuteException() {
    method setOneMinuteException (line 214) | public void setOneMinuteException(Long oneMinuteException) {
    method getOneMinuteTotal (line 218) | public Long getOneMinuteTotal() {
    method setOneMinuteTotal (line 222) | public void setOneMinuteTotal(Long oneMinuteTotal) {
    method isVisible (line 226) | public boolean isVisible() {
    method setVisible (line 230) | public void setVisible(boolean visible) {
    method getChildren (line 234) | public List<ResourceTreeNode> getChildren() {
    method setChildren (line 238) | public void setChildren(List<ResourceTreeNode> children) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/Result.java
  class Result (line 22) | public class Result<R> {
    method ofSuccess (line 29) | public static <R> Result<R> ofSuccess(R data) {
    method ofSuccessMsg (line 36) | public static <R> Result<R> ofSuccessMsg(String msg) {
    method ofFail (line 42) | public static <R> Result<R> ofFail(int code, String msg) {
    method ofThrowable (line 50) | public static <R> Result<R> ofThrowable(int code, Throwable throwable) {
    method isSuccess (line 58) | public boolean isSuccess() {
    method setSuccess (line 62) | public Result<R> setSuccess(boolean success) {
    method getCode (line 67) | public int getCode() {
    method setCode (line 71) | public Result<R> setCode(int code) {
    method getMsg (line 76) | public String getMsg() {
    method setMsg (line 80) | public Result<R> setMsg(String msg) {
    method getData (line 85) | public R getData() {
    method setData (line 89) | public Result<R> setData(R data) {
    method toString (line 94) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/ClusterAppAssignResultVO.java
  class ClusterAppAssignResultVO (line 24) | public class ClusterAppAssignResultVO {
    method getFailedServerSet (line 31) | public Set<String> getFailedServerSet() {
    method setFailedServerSet (line 35) | public ClusterAppAssignResultVO setFailedServerSet(Set<String> failedS...
    method getFailedClientSet (line 40) | public Set<String> getFailedClientSet() {
    method setFailedClientSet (line 44) | public ClusterAppAssignResultVO setFailedClientSet(Set<String> failedC...
    method getTotalCount (line 49) | public Integer getTotalCount() {
    method setTotalCount (line 53) | public ClusterAppAssignResultVO setTotalCount(Integer totalCount) {
    method toString (line 58) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/ClusterAppFullAssignRequest.java
  class ClusterAppFullAssignRequest (line 27) | public class ClusterAppFullAssignRequest {
    method getClusterMap (line 32) | public List<ClusterAppAssignMap> getClusterMap() {
    method setClusterMap (line 36) | public ClusterAppFullAssignRequest setClusterMap(
    method getRemainingList (line 42) | public Set<String> getRemainingList() {
    method setRemainingList (line 46) | public ClusterAppFullAssignRequest setRemainingList(Set<String> remain...
    method toString (line 51) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/ClusterAppSingleServerAssignRequest.java
  class ClusterAppSingleServerAssignRequest (line 26) | public class ClusterAppSingleServerAssignRequest {
    method getClusterMap (line 31) | public ClusterAppAssignMap getClusterMap() {
    method setClusterMap (line 35) | public ClusterAppSingleServerAssignRequest setClusterMap(ClusterAppAss...
    method getRemainingList (line 40) | public Set<String> getRemainingList() {
    method setRemainingList (line 44) | public ClusterAppSingleServerAssignRequest setRemainingList(Set<String...
    method toString (line 49) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/ClusterClientInfoVO.java
  class ClusterClientInfoVO (line 22) | public class ClusterClientInfoVO {
    method getServerHost (line 31) | public String getServerHost() {
    method setServerHost (line 35) | public ClusterClientInfoVO setServerHost(String serverHost) {
    method getServerPort (line 40) | public Integer getServerPort() {
    method setServerPort (line 44) | public ClusterClientInfoVO setServerPort(Integer serverPort) {
    method getClientState (line 49) | public Integer getClientState() {
    method setClientState (line 53) | public ClusterClientInfoVO setClientState(Integer clientState) {
    method getRequestTimeout (line 58) | public Integer getRequestTimeout() {
    method setRequestTimeout (line 62) | public ClusterClientInfoVO setRequestTimeout(Integer requestTimeout) {
    method toString (line 67) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/ClusterGroupEntity.java
  class ClusterGroupEntity (line 25) | public class ClusterGroupEntity {
    method getMachineId (line 36) | public String getMachineId() {
    method setMachineId (line 40) | public ClusterGroupEntity setMachineId(String machineId) {
    method getIp (line 45) | public String getIp() {
    method setIp (line 49) | public ClusterGroupEntity setIp(String ip) {
    method getPort (line 54) | public Integer getPort() {
    method setPort (line 58) | public ClusterGroupEntity setPort(Integer port) {
    method getClientSet (line 63) | public Set<String> getClientSet() {
    method setClientSet (line 67) | public ClusterGroupEntity setClientSet(Set<String> clientSet) {
    method getBelongToApp (line 72) | public Boolean getBelongToApp() {
    method setBelongToApp (line 76) | public ClusterGroupEntity setBelongToApp(Boolean belongToApp) {
    method toString (line 81) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/ClusterStateSingleVO.java
  class ClusterStateSingleVO (line 22) | public class ClusterStateSingleVO {
    method getAddress (line 28) | public String getAddress() {
    method setAddress (line 32) | public ClusterStateSingleVO setAddress(String address) {
    method getMode (line 37) | public Integer getMode() {
    method setMode (line 41) | public ClusterStateSingleVO setMode(Integer mode) {
    method getTarget (line 46) | public String getTarget() {
    method setTarget (line 50) | public ClusterStateSingleVO setTarget(String target) {
    method toString (line 55) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/ConnectionDescriptorVO.java
  class ConnectionDescriptorVO (line 23) | public class ConnectionDescriptorVO {
    method getAddress (line 28) | public String getAddress() {
    method setAddress (line 32) | public ConnectionDescriptorVO setAddress(String address) {
    method getHost (line 37) | public String getHost() {
    method setHost (line 41) | public ConnectionDescriptorVO setHost(String host) {
    method toString (line 46) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/ConnectionGroupVO.java
  class ConnectionGroupVO (line 24) | public class ConnectionGroupVO {
    method getNamespace (line 30) | public String getNamespace() {
    method setNamespace (line 34) | public ConnectionGroupVO setNamespace(String namespace) {
    method getConnectionSet (line 39) | public List<ConnectionDescriptorVO> getConnectionSet() {
    method setConnectionSet (line 43) | public ConnectionGroupVO setConnectionSet(
    method getConnectedCount (line 49) | public Integer getConnectedCount() {
    method setConnectedCount (line 53) | public ConnectionGroupVO setConnectedCount(Integer connectedCount) {
    method toString (line 58) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/config/ClusterClientConfig.java
  class ClusterClientConfig (line 22) | public class ClusterClientConfig {
    method getServerHost (line 30) | public String getServerHost() {
    method setServerHost (line 34) | public ClusterClientConfig setServerHost(String serverHost) {
    method getServerPort (line 39) | public Integer getServerPort() {
    method setServerPort (line 43) | public ClusterClientConfig setServerPort(Integer serverPort) {
    method getRequestTimeout (line 48) | public Integer getRequestTimeout() {
    method setRequestTimeout (line 52) | public ClusterClientConfig setRequestTimeout(Integer requestTimeout) {
    method getConnectTimeout (line 57) | public Integer getConnectTimeout() {
    method setConnectTimeout (line 61) | public ClusterClientConfig setConnectTimeout(Integer connectTimeout) {
    method toString (line 66) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/config/ServerFlowConfig.java
  class ServerFlowConfig (line 22) | public class ServerFlowConfig {
    method ServerFlowConfig (line 40) | public ServerFlowConfig() {
    method ServerFlowConfig (line 44) | public ServerFlowConfig(String namespace) {
    method getNamespace (line 48) | public String getNamespace() {
    method getExceedCount (line 52) | public Double getExceedCount() {
    method setExceedCount (line 56) | public ServerFlowConfig setExceedCount(Double exceedCount) {
    method getMaxOccupyRatio (line 61) | public Double getMaxOccupyRatio() {
    method setMaxOccupyRatio (line 65) | public ServerFlowConfig setMaxOccupyRatio(Double maxOccupyRatio) {
    method getIntervalMs (line 70) | public Integer getIntervalMs() {
    method setIntervalMs (line 74) | public ServerFlowConfig setIntervalMs(Integer intervalMs) {
    method getSampleCount (line 79) | public Integer getSampleCount() {
    method setSampleCount (line 83) | public ServerFlowConfig setSampleCount(Integer sampleCount) {
    method getMaxAllowedQps (line 88) | public Double getMaxAllowedQps() {
    method setMaxAllowedQps (line 92) | public ServerFlowConfig setMaxAllowedQps(Double maxAllowedQps) {
    method toString (line 97) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/config/ServerTransportConfig.java
  class ServerTransportConfig (line 22) | public class ServerTransportConfig {
    method ServerTransportConfig (line 30) | public ServerTransportConfig() {
    method ServerTransportConfig (line 34) | public ServerTransportConfig(Integer port, Integer idleSeconds) {
    method getPort (line 39) | public Integer getPort() {
    method setPort (line 43) | public ServerTransportConfig setPort(Integer port) {
    method getIdleSeconds (line 48) | public Integer getIdleSeconds() {
    method setIdleSeconds (line 52) | public ServerTransportConfig setIdleSeconds(Integer idleSeconds) {
    method toString (line 57) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/request/ClusterAppAssignMap.java
  class ClusterAppAssignMap (line 24) | public class ClusterAppAssignMap {
    method getMachineId (line 37) | public String getMachineId() {
    method setMachineId (line 41) | public ClusterAppAssignMap setMachineId(String machineId) {
    method getIp (line 46) | public String getIp() {
    method setIp (line 50) | public ClusterAppAssignMap setIp(String ip) {
    method getPort (line 55) | public Integer getPort() {
    method setPort (line 59) | public ClusterAppAssignMap setPort(Integer port) {
    method getClientSet (line 64) | public Set<String> getClientSet() {
    method setClientSet (line 68) | public ClusterAppAssignMap setClientSet(Set<String> clientSet) {
    method getNamespaceSet (line 73) | public Set<String> getNamespaceSet() {
    method setNamespaceSet (line 77) | public ClusterAppAssignMap setNamespaceSet(Set<String> namespaceSet) {
    method getBelongToApp (line 82) | public Boolean getBelongToApp() {
    method setBelongToApp (line 86) | public ClusterAppAssignMap setBelongToApp(Boolean belongToApp) {
    method getMaxAllowedQps (line 91) | public Double getMaxAllowedQps() {
    method setMaxAllowedQps (line 95) | public ClusterAppAssignMap setMaxAllowedQps(Double maxAllowedQps) {
    method toString (line 100) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/request/ClusterClientModifyRequest.java
  class ClusterClientModifyRequest (line 24) | public class ClusterClientModifyRequest implements ClusterModifyRequest {
    method getApp (line 33) | @Override
    method setApp (line 38) | public ClusterClientModifyRequest setApp(String app) {
    method getIp (line 43) | @Override
    method setIp (line 48) | public ClusterClientModifyRequest setIp(String ip) {
    method getPort (line 53) | @Override
    method setPort (line 58) | public ClusterClientModifyRequest setPort(Integer port) {
    method getMode (line 63) | @Override
    method setMode (line 68) | public ClusterClientModifyRequest setMode(Integer mode) {
    method getClientConfig (line 73) | public ClusterClientConfig getClientConfig() {
    method setClientConfig (line 77) | public ClusterClientModifyRequest setClientConfig(

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/request/ClusterModifyRequest.java
  type ClusterModifyRequest (line 22) | public interface ClusterModifyRequest {
    method getApp (line 24) | String getApp();
    method getIp (line 26) | String getIp();
    method getPort (line 28) | Integer getPort();
    method getMode (line 30) | Integer getMode();

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/request/ClusterServerModifyRequest.java
  class ClusterServerModifyRequest (line 27) | public class ClusterServerModifyRequest implements ClusterModifyRequest {
    method getApp (line 38) | @Override
    method setApp (line 43) | public ClusterServerModifyRequest setApp(String app) {
    method getIp (line 48) | @Override
    method setIp (line 53) | public ClusterServerModifyRequest setIp(String ip) {
    method getPort (line 58) | @Override
    method setPort (line 63) | public ClusterServerModifyRequest setPort(Integer port) {
    method getMode (line 68) | @Override
    method setMode (line 73) | public ClusterServerModifyRequest setMode(Integer mode) {
    method getFlowConfig (line 78) | public ServerFlowConfig getFlowConfig() {
    method setFlowConfig (line 82) | public ClusterServerModifyRequest setFlowConfig(
    method getTransportConfig (line 88) | public ServerTransportConfig getTransportConfig() {
    method setTransportConfig (line 92) | public ClusterServerModifyRequest setTransportConfig(
    method getNamespaceSet (line 98) | public Set<String> getNamespaceSet() {
    method setNamespaceSet (line 102) | public ClusterServerModifyRequest setNamespaceSet(Set<String> namespac...
    method toString (line 107) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/state/AppClusterClientStateWrapVO.java
  class AppClusterClientStateWrapVO (line 22) | public class AppClusterClientStateWrapVO {
    method getId (line 34) | public String getId() {
    method setId (line 38) | public AppClusterClientStateWrapVO setId(String id) {
    method getIp (line 43) | public String getIp() {
    method setIp (line 47) | public AppClusterClientStateWrapVO setIp(String ip) {
    method getState (line 52) | public ClusterClientStateVO getState() {
    method setState (line 56) | public AppClusterClientStateWrapVO setState(ClusterClientStateVO state) {
    method getCommandPort (line 61) | public Integer getCommandPort() {
    method setCommandPort (line 65) | public AppClusterClientStateWrapVO setCommandPort(Integer commandPort) {
    method toString (line 70) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/state/AppClusterServerStateWrapVO.java
  class AppClusterServerStateWrapVO (line 22) | public class AppClusterServerStateWrapVO {
    method getId (line 38) | public String getId() {
    method setId (line 42) | public AppClusterServerStateWrapVO setId(String id) {
    method getIp (line 47) | public String getIp() {
    method setIp (line 51) | public AppClusterServerStateWrapVO setIp(String ip) {
    method getPort (line 56) | public Integer getPort() {
    method setPort (line 60) | public AppClusterServerStateWrapVO setPort(Integer port) {
    method getBelongToApp (line 65) | public Boolean getBelongToApp() {
    method setBelongToApp (line 69) | public AppClusterServerStateWrapVO setBelongToApp(Boolean belongToApp) {
    method getConnectedCount (line 74) | public Integer getConnectedCount() {
    method setConnectedCount (line 78) | public AppClusterServerStateWrapVO setConnectedCount(Integer connected...
    method getState (line 83) | public ClusterServerStateVO getState() {
    method setState (line 87) | public AppClusterServerStateWrapVO setState(ClusterServerStateVO state) {
    method toString (line 92) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/state/ClusterClientStateVO.java
  class ClusterClientStateVO (line 24) | public class ClusterClientStateVO {
    method getClientConfig (line 31) | public ClusterClientInfoVO getClientConfig() {
    method setClientConfig (line 35) | public ClusterClientStateVO setClientConfig(ClusterClientInfoVO client...
    method toString (line 40) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/state/ClusterRequestLimitVO.java
  class ClusterRequestLimitVO (line 22) | public class ClusterRequestLimitVO {
    method getNamespace (line 28) | public String getNamespace() {
    method setNamespace (line 32) | public ClusterRequestLimitVO setNamespace(String namespace) {
    method getCurrentQps (line 37) | public Double getCurrentQps() {
    method setCurrentQps (line 41) | public ClusterRequestLimitVO setCurrentQps(Double currentQps) {
    method getMaxAllowedQps (line 46) | public Double getMaxAllowedQps() {
    method setMaxAllowedQps (line 50) | public ClusterRequestLimitVO setMaxAllowedQps(Double maxAllowedQps) {
    method toString (line 55) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/state/ClusterServerStateVO.java
  class ClusterServerStateVO (line 29) | public class ClusterServerStateVO {
    method getAppName (line 44) | public String getAppName() {
    method setAppName (line 48) | public ClusterServerStateVO setAppName(String appName) {
    method getTransport (line 53) | public ServerTransportConfig getTransport() {
    method setTransport (line 57) | public ClusterServerStateVO setTransport(ServerTransportConfig transpo...
    method getFlow (line 62) | public ServerFlowConfig getFlow() {
    method setFlow (line 66) | public ClusterServerStateVO setFlow(ServerFlowConfig flow) {
    method getNamespaceSet (line 71) | public Set<String> getNamespaceSet() {
    method setNamespaceSet (line 75) | public ClusterServerStateVO setNamespaceSet(Set<String> namespaceSet) {
    method getPort (line 80) | public Integer getPort() {
    method setPort (line 84) | public ClusterServerStateVO setPort(Integer port) {
    method getConnection (line 89) | public List<ConnectionGroupVO> getConnection() {
    method setConnection (line 93) | public ClusterServerStateVO setConnection(List<ConnectionGroupVO> conn...
    method getRequestLimitData (line 98) | public List<ClusterRequestLimitVO> getRequestLimitData() {
    method setRequestLimitData (line 102) | public ClusterServerStateVO setRequestLimitData(List<ClusterRequestLim...
    method getEmbedded (line 107) | public Boolean getEmbedded() {
    method setEmbedded (line 111) | public ClusterServerStateVO setEmbedded(Boolean embedded) {
    method toString (line 116) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/state/ClusterStateSimpleEntity.java
  class ClusterStateSimpleEntity (line 22) | public class ClusterStateSimpleEntity {
    method getMode (line 29) | public Integer getMode() {
    method setMode (line 33) | public ClusterStateSimpleEntity setMode(Integer mode) {
    method getLastModified (line 38) | public Long getLastModified() {
    method setLastModified (line 42) | public ClusterStateSimpleEntity setLastModified(Long lastModified) {
    method getClientAvailable (line 47) | public Boolean getClientAvailable() {
    method setClientAvailable (line 51) | public ClusterStateSimpleEntity setClientAvailable(Boolean clientAvail...
    method getServerAvailable (line 56) | public Boolean getServerAvailable() {
    method setServerAvailable (line 60) | public ClusterStateSimpleEntity setServerAvailable(Boolean serverAvail...
    method toString (line 65) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/state/ClusterUniversalStatePairVO.java
  class ClusterUniversalStatePairVO (line 22) | public class ClusterUniversalStatePairVO {
    method ClusterUniversalStatePairVO (line 29) | public ClusterUniversalStatePairVO() {}
    method ClusterUniversalStatePairVO (line 31) | public ClusterUniversalStatePairVO(String ip, Integer commandPort, Clu...
    method getIp (line 37) | public String getIp() {
    method setIp (line 41) | public ClusterUniversalStatePairVO setIp(String ip) {
    method getCommandPort (line 46) | public Integer getCommandPort() {
    method setCommandPort (line 50) | public ClusterUniversalStatePairVO setCommandPort(Integer commandPort) {
    method getState (line 55) | public ClusterUniversalStateVO getState() {
    method setState (line 59) | public ClusterUniversalStatePairVO setState(ClusterUniversalStateVO st...
    method toString (line 64) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/cluster/state/ClusterUniversalStateVO.java
  class ClusterUniversalStateVO (line 22) | public class ClusterUniversalStateVO {
    method getClient (line 28) | public ClusterClientStateVO getClient() {
    method setClient (line 32) | public ClusterUniversalStateVO setClient(ClusterClientStateVO client) {
    method getServer (line 37) | public ClusterServerStateVO getServer() {
    method setServer (line 41) | public ClusterUniversalStateVO setServer(ClusterServerStateVO server) {
    method getStateInfo (line 46) | public ClusterStateSimpleEntity getStateInfo() {
    method setStateInfo (line 50) | public ClusterUniversalStateVO setStateInfo(
    method toString (line 56) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/MachineInfoVo.java
  class MachineInfoVo (line 26) | public class MachineInfoVo {
    method fromMachineInfoList (line 38) | public static List<MachineInfoVo> fromMachineInfoList(List<MachineInfo...
    method fromMachineInfo (line 46) | public static MachineInfoVo fromMachineInfo(MachineInfo machine) {
    method getApp (line 59) | public String getApp() {
    method setApp (line 63) | public void setApp(String app) {
    method getHostname (line 67) | public String getHostname() {
    method setHostname (line 71) | public void setHostname(String hostname) {
    method getIp (line 75) | public String getIp() {
    method setIp (line 79) | public void setIp(String ip) {
    method getPort (line 83) | public int getPort() {
    method setPort (line 87) | public void setPort(int port) {
    method getLastHeartbeat (line 91) | public long getLastHeartbeat() {
    method setLastHeartbeat (line 95) | public void setLastHeartbeat(long lastHeartbeat) {
    method setHeartbeatVersion (line 99) | public void setHeartbeatVersion(long heartbeatVersion) {
    method getHeartbeatVersion (line 103) | public long getHeartbeatVersion() {
    method getVersion (line 107) | public String getVersion() {
    method setVersion (line 111) | public MachineInfoVo setVersion(String version) {
    method isHealthy (line 116) | public boolean isHealthy() {
    method setHealthy (line 120) | public void setHealthy(boolean healthy) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/MetricVo.java
  class MetricVo (line 27) | public class MetricVo implements Comparable<MetricVo> {
    method MetricVo (line 43) | public MetricVo() {
    method fromMetricEntities (line 46) | public static List<MetricVo> fromMetricEntities(Collection<MetricEntit...
    method fromMetricEntities (line 63) | public static List<MetricVo> fromMetricEntities(Collection<MetricEntit...
    method fromMetricEntity (line 75) | public static MetricVo fromMetricEntity(MetricEntity entity) {
    method parse (line 95) | public static MetricVo parse(String line) {
    method getId (line 116) | public Long getId() {
    method setId (line 120) | public void setId(Long id) {
    method getApp (line 124) | public String getApp() {
    method setApp (line 128) | public void setApp(String app) {
    method getTimestamp (line 132) | public Long getTimestamp() {
    method setTimestamp (line 136) | public void setTimestamp(Long timestamp) {
    method getGmtCreate (line 140) | public Long getGmtCreate() {
    method setGmtCreate (line 144) | public void setGmtCreate(Long gmtCreate) {
    method getResource (line 148) | public String getResource() {
    method setResource (line 152) | public void setResource(String resource) {
    method getPassQps (line 156) | public Long getPassQps() {
    method setPassQps (line 160) | public void setPassQps(Long passQps) {
    method getBlockQps (line 164) | public Long getBlockQps() {
    method setBlockQps (line 168) | public void setBlockQps(Long blockQps) {
    method getSuccessQps (line 172) | public Long getSuccessQps() {
    method setSuccessQps (line 176) | public void setSuccessQps(Long successQps) {
    method getExceptionQps (line 180) | public Long getExceptionQps() {
    method setExceptionQps (line 184) | public void setExceptionQps(Long exceptionQps) {
    method getRt (line 188) | public Double getRt() {
    method setRt (line 192) | public void setRt(Double rt) {
    method getCount (line 196) | public Integer getCount() {
    method setCount (line 200) | public void setCount(Integer count) {
    method compareTo (line 204) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/ResourceVo.java
  class ResourceVo (line 28) | public class ResourceVo {
    method ResourceVo (line 47) | public ResourceVo() {
    method fromNodeVoList (line 50) | public static List<ResourceVo> fromNodeVoList(List<NodeVo> nodeVos) {
    method fromResourceTreeNode (line 75) | public static List<ResourceVo> fromResourceTreeNode(ResourceTreeNode r...
    method visit (line 91) | private static void visit(ResourceTreeNode node, List<ResourceVo> list...
    method getParentTtId (line 117) | public String getParentTtId() {
    method setParentTtId (line 121) | public void setParentTtId(String parentTtId) {
    method getTtId (line 125) | public String getTtId() {
    method setTtId (line 129) | public void setTtId(String ttId) {
    method getResource (line 133) | public String getResource() {
    method setResource (line 137) | public void setResource(String resource) {
    method getThreadNum (line 141) | public Integer getThreadNum() {
    method setThreadNum (line 145) | public void setThreadNum(Integer threadNum) {
    method getPassQps (line 149) | public Long getPassQps() {
    method setPassQps (line 153) | public void setPassQps(Long passQps) {
    method getBlockQps (line 157) | public Long getBlockQps() {
    method setBlockQps (line 161) | public void setBlockQps(Long blockQps) {
    method getTotalQps (line 165) | public Long getTotalQps() {
    method setTotalQps (line 169) | public void setTotalQps(Long totalQps) {
    method getAverageRt (line 173) | public Long getAverageRt() {
    method setAverageRt (line 177) | public void setAverageRt(Long averageRt) {
    method getPassRequestQps (line 181) | public Long getPassRequestQps() {
    method setPassRequestQps (line 185) | public void setPassRequestQps(Long passRequestQps) {
    method getExceptionQps (line 189) | public Long getExceptionQps() {
    method setExceptionQps (line 193) | public void setExceptionQps(Long exceptionQps) {
    method getOneMinuteException (line 197) | public Long getOneMinuteException() {
    method setOneMinuteException (line 201) | public void setOneMinuteException(Long oneMinuteException) {
    method getOneMinutePass (line 205) | public Long getOneMinutePass() {
    method setOneMinutePass (line 209) | public void setOneMinutePass(Long oneMinutePass) {
    method getOneMinuteBlock (line 213) | public Long getOneMinuteBlock() {
    method setOneMinuteBlock (line 217) | public void setOneMinuteBlock(Long oneMinuteBlock) {
    method getOneMinuteTotal (line 221) | public Long getOneMinuteTotal() {
    method setOneMinuteTotal (line 225) | public void setOneMinuteTotal(Long oneMinuteTotal) {
    method isVisible (line 229) | public boolean isVisible() {
    method setVisible (line 233) | public void setVisible(boolean visible) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/filter/AuthFilter.java
  class AuthFilter (line 52) | @Component
    method init (line 69) | @Override
    method doFilter (line 74) | @Override
    method destroy (line 114) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/metric/MetricFetcher.java
  class MetricFetcher (line 67) | @Component
    method MetricFetcher (line 94) | public MetricFetcher() {
    method start (line 125) | private void start() {
    method writeMetric (line 135) | private void writeMetric(Map<String, MetricEntity> map) {
    method fetchAllApp (line 150) | private void fetchAllApp() {
    method fetchOnce (line 169) | private void fetchOnce(String app, long startTime, long endTime, int m...
    method doFetchAppMetric (line 259) | private void doFetchAppMetric(final String app) {
    method handleResponse (line 290) | private void handleResponse(final HttpResponse response, MachineInfo m...
    method handleBody (line 316) | private void handleBody(String[] lines, MachineInfo machine, Map<Strin...
    method buildMetricKey (line 354) | private String buildMetricKey(String app, String resource, long timest...

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/metric/InMemoryMetricsRepository.java
  class InMemoryMetricsRepository (line 39) | @Component
    method save (line 51) | @Override
    method saveAll (line 66) | @Override
    method queryByAppAndResourceBetween (line 74) | @Override
    method listResourcesOfApp (line 97) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/metric/MetricsRepository.java
  type MetricsRepository (line 26) | public interface MetricsRepository<T> {
    method save (line 33) | void save(T metric);
    method saveAll (line 40) | void saveAll(Iterable<T> metrics);
    method queryByAppAndResourceBetween (line 51) | List<T> queryByAppAndResourceBetween(String app, String resource, long...
    method listResourcesOfApp (line 59) | List<String> listResourcesOfApp(String app);

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemAuthorityRuleStore.java
  class InMemAuthorityRuleStore (line 30) | @Component
    method nextId (line 35) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemDegradeRuleStore.java
  class InMemDegradeRuleStore (line 27) | @Component
    method nextId (line 32) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemFlowRuleStore.java
  class InMemFlowRuleStore (line 30) | @Component
    method nextId (line 35) | @Override
    method preProcess (line 40) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemParamFlowRuleStore.java
  class InMemParamFlowRuleStore (line 29) | @Component
    method nextId (line 34) | @Override
    method preProcess (line 39) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemSystemRuleStore.java
  class InMemSystemRuleStore (line 27) | @Component
    method nextId (line 32) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemoryRuleRepositoryAdapter.java
  class InMemoryRuleRepositoryAdapter (line 30) | public abstract class InMemoryRuleRepositoryAdapter<T extends RuleEntity...
    method save (line 42) | @Override
    method saveAll (line 60) | @Override
    method delete (line 77) | @Override
    method findById (line 89) | @Override
    method findAllByMachine (line 94) | @Override
    method findAllByApp (line 103) | @Override
    method preProcess (line 113) | protected T preProcess(T entity) {
    method nextId (line 122) | abstract protected long nextId();

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/RuleRepository.java
  type RuleRepository (line 27) | public interface RuleRepository<T, ID> {
    method save (line 35) | T save(T entity);
    method saveAll (line 43) | List<T> saveAll(List<T> rules);
    method delete (line 51) | T delete(ID id);
    method findById (line 59) | T findById(ID id);
    method findAllByMachine (line 67) | List<T> findAllByMachine(MachineInfo machineInfo);
    method findAllByApp (line 76) | List<T> findAllByApp(String appName);

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/DynamicRuleProvider.java
  type DynamicRuleProvider (line 22) | public interface DynamicRuleProvider<T> {
    method getRules (line 24) | T getRules(String appName) throws Exception;

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/DynamicRulePublisher.java
  type DynamicRulePublisher (line 22) | public interface DynamicRulePublisher<T> {
    method publish (line 31) | void publish(String app, T rules) throws Exception;

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/FlowRuleApiProvider.java
  class FlowRuleApiProvider (line 35) | @Component("flowRuleDefaultProvider")
    method getRules (line 43) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/FlowRuleApiPublisher.java
  class FlowRuleApiPublisher (line 34) | @Component("flowRuleDefaultPublisher")
    method publish (line 42) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/apollo/ApolloConfig.java
  class ApolloConfig (line 31) | @Configuration
    method flowRuleEntityEncoder (line 34) | @Bean
    method flowRuleEntityDecoder (line 39) | @Bean
    method apolloOpenApiClient (line 44) | @Bean

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/apollo/FlowRuleApolloProvider.java
  class FlowRuleApolloProvider (line 36) | @Component("flowRuleApolloProvider")
    method getRules (line 47) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/apollo/FlowRuleApolloPublisher.java
  class FlowRuleApolloPublisher (line 35) | @Component("flowRuleApolloPublisher")
    method publish (line 46) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/service/ClusterAssignService.java
  type ClusterAssignService (line 28) | public interface ClusterAssignService {
    method unbindClusterServer (line 37) | ClusterAppAssignResultVO unbindClusterServer(String app, String machin...
    method unbindClusterServers (line 46) | ClusterAppAssignResultVO unbindClusterServers(String app, Set<String> ...
    method applyAssignToApp (line 56) | ClusterAppAssignResultVO applyAssignToApp(String app, List<ClusterAppA...

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/service/ClusterAssignServiceImpl.java
  class ClusterAssignServiceImpl (line 50) | @Service
    method isMachineInApp (line 60) | private boolean isMachineInApp(/*@NonEmpty*/ String machineId) {
    method handleUnbindClusterServerNotInApp (line 64) | private ClusterAppAssignResultVO handleUnbindClusterServerNotInApp(Str...
    method modifyToNonStarted (line 87) | private void modifyToNonStarted(Set<String> toModifySet, Set<String> f...
    method unbindClusterServer (line 99) | @Override
    method unbindClusterServers (line 128) | @Override
    method applyAssignToApp (line 143) | @Override
    method applyAllRemainingMachineSet (line 177) | private void applyAllRemainingMachineSet(String app, Set<String> remai...
    method applyAllClientConfigChange (line 195) | private void applyAllClientConfigChange(String app, ClusterAppAssignMa...
    method handleFutureSync (line 220) | private void handleFutureSync(Tuple2<String, CompletableFuture<Void>> ...
    method applyServerConfigChange (line 233) | private CompletableFuture<Void> applyServerConfigChange(String app, St...
    method applyServerFlowConfigChange (line 243) | private CompletableFuture<Void> applyServerFlowConfigChange(String app...
    method applyServerNamespaceSetConfig (line 253) | private CompletableFuture<Void> applyServerNamespaceSetConfig(String a...
    method modifyMode (line 262) | private CompletableFuture<Void> modifyMode(String ip, int port, int mo...
    method parsePort (line 266) | private int parsePort(ClusterAppAssignMap assignMap) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/service/ClusterConfigService.java
  class ClusterConfigService (line 48) | @Service
    method modifyClusterClientConfig (line 56) | public CompletableFuture<Void> modifyClusterClientConfig(ClusterClient...
    method notClientRequestValid (line 67) | private boolean notClientRequestValid(/*@NonNull */ ClusterClientModif...
    method modifyClusterServerConfig (line 74) | public CompletableFuture<Void> modifyClusterServerConfig(ClusterServer...
    method getClusterUniversalState (line 103) | public CompletableFuture<List<ClusterUniversalStatePairVO>> getCluster...
    method getClusterUniversalStateForAppMachine (line 121) | public CompletableFuture<ClusterGroupEntity> getClusterUniversalStateF...
    method getClusterUniversalState (line 148) | public CompletableFuture<ClusterUniversalStateVO> getClusterUniversalS...
    method invalidTransportConfig (line 168) | private boolean invalidTransportConfig(ServerTransportConfig transport...
    method invalidFlowConfig (line 173) | private boolean invalidFlowConfig(ServerFlowConfig flowConfig) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/util/AsyncUtils.java
  class AsyncUtils (line 31) | public final class AsyncUtils {
    method newFailedFuture (line 35) | public static <R> CompletableFuture<R> newFailedFuture(Throwable ex) {
    method sequenceFuture (line 41) | public static <R> CompletableFuture<List<R>> sequenceFuture(List<Compl...
    method sequenceSuccessFuture (line 50) | public static <R> CompletableFuture<List<R>> sequenceSuccessFuture(Lis...
    method getValue (line 58) | public static <T> T getValue(CompletableFuture<T> future) {
    method isSuccessFuture (line 67) | public static boolean isSuccessFuture(CompletableFuture future) {
    method AsyncUtils (line 71) | private AsyncUtils() {}

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/util/ClusterEntityUtils.java
  class ClusterEntityUtils (line 40) | public final class ClusterEntityUtils {
    method wrapToAppClusterServerState (line 42) | public static List<AppClusterServerStateWrapVO> wrapToAppClusterServer...
    method wrapToAppClusterClientState (line 98) | public static List<AppClusterClientStateWrapVO> wrapToAppClusterClient...
    method wrapToClusterGroup (line 122) | public static List<ClusterGroupEntity> wrapToClusterGroup(List<Cluster...
    method getIp (line 160) | private static String getIp(String str) {
    method ClusterEntityUtils (line 167) | private ClusterEntityUtils() {}

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/util/MachineUtils.java
  class MachineUtils (line 26) | public final class MachineUtils {
    method parseCommandPort (line 28) | public static Optional<Integer> parseCommandPort(String machineIp) {
    method parseCommandIpAndPort (line 43) | public static Optional<Tuple2<String, Integer>> parseCommandIpAndPort(...
    method MachineUtils (line 58) | private MachineUtils() {}

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/java/com/alibaba/csp/sentinel/dashboard/util/VersionUtils.java
  class VersionUtils (line 30) | public final class VersionUtils {
    method parseVersion (line 39) | public static Optional<SentinelVersion> parseVersion(String s) {
    method VersionUtils (line 94) | private VersionUtils() {}

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/controllers/authority.js
  function getMachineRules (line 31) | function getMachineRules() {
  function addNewRuleAndPush (line 108) | function addNewRuleAndPush(rule) {
  function saveRuleAndPush (line 125) | function saveRuleAndPush(rule, edit) {
  function deleteRuleAndPush (line 147) | function deleteRuleAndPush(entity) {
  function queryAppMachines (line 196) | function queryAppMachines() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/controllers/cluster_app_assign_manage.js
  function convertSetToString (line 19) | function convertSetToString(set) {
  function convertStrToNamespaceSet (line 33) | function convertStrToNamespaceSet(str) {
  function processAppSingleData (line 45) | function processAppSingleData(data) {
  function removeFromArr (line 52) | function removeFromArr(arr, v) {
  function resetChosen (line 61) | function resetChosen() {
  function generateMachineId (line 66) | function generateMachineId(e) {
  function applyClusterMap (line 70) | function applyClusterMap(appClusterMachineList) {
  function parseIpFromMachineId (line 162) | function parseIpFromMachineId(machineId) {
  function retrieveClusterAppInfo (line 217) | function retrieveClusterAppInfo() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/controllers/cluster_app_server_list.js
  function convertSetToString (line 24) | function convertSetToString(set) {
  function convertStrToNamespaceSet (line 44) | function convertStrToNamespaceSet(str) {
  function processAppSingleData (line 56) | function processAppSingleData(data) {
  function removeFromArr (line 63) | function removeFromArr(arr, v) {
  function removeFromArrIf (line 72) | function removeFromArrIf(arr, f) {
  function resetAssignDialogChosen (line 81) | function resetAssignDialogChosen() {
  function generateMachineId (line 86) | function generateMachineId(e) {
  function applyClusterMap (line 90) | function applyClusterMap(appClusterMachineList) {
  function parseIpFromMachineId (line 209) | function parseIpFromMachineId(machineId) {
  function retrieveClusterAssignInfoOfApp (line 220) | function retrieveClusterAssignInfoOfApp() {
  function getRemainingMachineList (line 313) | function getRemainingMachineList() {
  function doApplyNewSingleServerAssign (line 317) | function doApplyNewSingleServerAssign() {
  function doApplySingleServerAssignEdit (line 371) | function doApplySingleServerAssignEdit() {
  function checkAssignDialogValid (line 430) | function checkAssignDialogValid() {
  function generateRequestLimitDataStr (line 459) | function generateRequestLimitDataStr(limitData) {
  function processServerListData (line 472) | function processServerListData(serverVO) {
  function retrieveClusterServerInfo (line 499) | function retrieveClusterServerInfo() {
  function apiUnbindServerAssign (line 537) | function apiUnbindServerAssign(ids) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/controllers/cluster_app_server_manage.js
  function convertSetToString (line 19) | function convertSetToString(set) {
  function convertStrToNamespaceSet (line 33) | function convertStrToNamespaceSet(str) {
  function processAppSingleData (line 45) | function processAppSingleData(data) {
  function removeFromArr (line 52) | function removeFromArr(arr, v) {
  function resetChosen (line 61) | function resetChosen() {
  function generateMachineId (line 66) | function generateMachineId(e) {
  function applyClusterMap (line 70) | function applyClusterMap(appClusterMachineList) {
  function parseIpFromMachineId (line 162) | function parseIpFromMachineId(machineId) {
  function retrieveClusterAppInfo (line 217) | function retrieveClusterAppInfo() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/controllers/cluster_app_server_monitor.js
  function convertSetToString (line 15) | function convertSetToString(set) {
  function processServerData (line 29) | function processServerData(serverVO) {
  function retrieveClusterServerInfo (line 57) | function retrieveClusterServerInfo() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/controllers/cluster_app_token_client_list.js
  function processClientData (line 12) | function processClientData(clientVO) {
  function checkValidClientConfig (line 36) | function checkValidClientConfig(config) {
  function retrieveClusterTokenClientInfo (line 84) | function retrieveClusterTokenClientInfo() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/controllers/cluster_single.js
  function convertSetToString (line 27) | function convertSetToString(set) {
  function convertStrToNamespaceSet (line 41) | function convertStrToNamespaceSet(str) {
  function fetchMachineClusterState (line 53) | function fetchMachineClusterState() {
  function checkValidClientConfig (line 81) | function checkValidClientConfig(stateVO) {
  function sendClusterClientRequest (line 102) | function sendClusterClientRequest(stateVO) {
  function checkValidServerConfig (line 133) | function checkValidServerConfig(stateVO) {
  function sendClusterServerRequest (line 159) | function sendClusterServerRequest(stateVO) {
  function queryAppMachines (line 210) | function queryAppMachines() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/controllers/degrade.js
  function getMachineRules (line 28) | function getMachineRules() {
  function parseDegradeMode (line 95) | function parseDegradeMode(grade) {
  function deleteRule (line 134) | function deleteRule(rule) {
  function addNewRule (line 145) | function addNewRule(rule) {
  function saveRule (line 156) | function saveRule(rule, edit) {
  function queryAppMachines (line 171) | function queryAppMachines() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/controllers/flow_v1.js
  function getMachineRules (line 44) | function getMachineRules() {
  function deleteRule (line 145) | function deleteRule(rule) {
  function addNewRule (line 156) | function addNewRule(rule) {
  function saveRule (line 174) | function saveRule(rule, edit) {
  function queryAppMachines (line 189) | function queryAppMachines() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/controllers/flow_v2.js
  function getMachineRules (line 44) | function getMachineRules() {
  function deleteRule (line 146) | function deleteRule(rule) {
  function addNewRule (line 157) | function addNewRule(rule) {
  function saveRule (line 175) | function saveRule(rule, edit) {
  function queryAppMachines (line 190) | function queryAppMachines() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/controllers/identity.js
  function saveFlowRule (line 91) | function saveFlowRule() {
  function saveFlowRuleAndContinue (line 108) | function saveFlowRuleAndContinue() {
  function saveDegradeRule (line 157) | function saveDegradeRule() {
  function saveDegradeRuleAndContinue (line 172) | function saveDegradeRuleAndContinue() {
  function saveAuthorityRule (line 188) | function saveAuthorityRule() {
  function saveAuthorityRuleAndContinue (line 210) | function saveAuthorityRuleAndContinue() {
  function saveParamFlowRule (line 267) | function saveParamFlowRule() {
  function saveParamFlowRuleAndContinue (line 289) | function saveParamFlowRuleAndContinue() {
  function queryAppMachines (line 387) | function queryAppMachines() {
  function reInitIdentityDatas (line 427) | function reInitIdentityDatas() {
  function queryIdentities (line 435) | function queryIdentities() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/controllers/metric.js
  function formatDate (line 11) | function formatDate(date) {
  function reInitIdentityDatas (line 50) | function reInitIdentityDatas() {
  function queryIdentityDatas (line 173) | function queryIdentityDatas() {
  function fillZeros (line 216) | function fillZeros(metricData) {
  function lastOfArray (line 243) | function lastOfArray(arr, n) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/controllers/param_flow.js
  function updateSingleParamItem (line 39) | function updateSingleParamItem(arr, v, t, c) {
  function removeSingleParamItem (line 49) | function removeSingleParamItem(arr, v, t) {
  function isNumberClass (line 58) | function isNumberClass(classType) {
  function isByteClass (line 63) | function isByteClass(classType) {
  function notNumberAtLeastZero (line 67) | function notNumberAtLeastZero(num) {
  function notGoodNumber (line 71) | function notGoodNumber(num) {
  function notGoodNumberBetweenExclusive (line 75) | function notGoodNumberBetweenExclusive(num, l ,r) {
  function getMachineRules (line 101) | function getMachineRules() {
  function addNewRuleAndPush (line 199) | function addNewRuleAndPush(rule) {
  function saveRuleAndPush (line 216) | function saveRuleAndPush(rule, edit) {
  function deleteRuleAndPush (line 238) | function deleteRuleAndPush(entity) {
  function queryAppMachines (line 288) | function queryAppMachines() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/controllers/system.js
  function getMachineRules (line 30) | function getMachineRules() {
  function deleteRule (line 157) | function deleteRule(rule) {
  function addNewRule (line 168) | function addNewRule(rule) {
  function saveRule (line 179) | function saveRule(rule, edit) {
  function queryAppMachines (line 199) | function queryAppMachines() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/libs/treeTable.js
  function depthFirst (line 3) | function depthFirst(tree, func, childrenAttr) {
  function copy (line 22) | function copy(data){
  function makeTree (line 26) | function makeTree (data, idAttr, refAttr, childrenAttr) {
  function renderTree (line 65) | function renderTree(tree, childrenAttr, idAttr, attrs, renderer, tableAt...
  function attr2attr (line 144) | function attr2attr(nodes, attrs){
  function treeTable (line 153) | function treeTable(table){
  function appendTreetable (line 229) | function appendTreetable(tree, options) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/services/flow_service_v1.js
  function notNumberAtLeastZero (line 74) | function notNumberAtLeastZero(num) {
  function notNumberGreaterThanZero (line 78) | function notNumberGreaterThanZero(num) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/services/flow_service_v2.js
  function notNumberAtLeastZero (line 40) | function notNumberAtLeastZero(num) {
  function notNumberGreaterThanZero (line 44) | function notNumberGreaterThanZero(num) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/app/scripts/services/param_flow_service.js
  function isNumberClass (line 43) | function isNumberClass(classType) {
  function isByteClass (line 48) | function isByteClass(classType) {
  function notNumberAtLeastZero (line 52) | function notNumberAtLeastZero(num) {
  function notGoodNumber (line 56) | function notGoodNumber(num) {
  function notGoodNumberBetweenExclusive (line 60) | function notGoodNumberBetweenExclusive(num, l ,r) {
  function notValidParamItem (line 64) | function notValidParamItem(curExItem) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/dist/js/app.js
  function r (line 1) | function r(e){return void 0===e||""===e||isNaN(e)||e<=0}
  function r (line 1) | function r(e){return void 0===e||""===e||isNaN(e)||e<=0}
  function o (line 1) | function o(e){return!(!function(e){return"int"===e||"double"===e||"float...

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/dist/js/app.vendor.js
  function l (line 1) | function l(n){var e=[].slice.apply(arguments,[1]),r=n.length;return func...
  function n (line 1) | function n(){var n=arguments,r=n.length-1;return function(){for(var e=r,...
  function u (line 1) | function u(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];r...
  function r (line 1) | function r(n,r){return function(){for(var e=[],t=0;t<arguments.length;t+...
  function i (line 1) | function i(n,r){return function(){for(var e=[],t=0;t<arguments.length;t+...
  function h (line 1) | function h(t,n){return function(e){return e[t].apply(e,n)}}
  function f (line 1) | function f(n){return function(e){for(var t=0;t<n.length;t++)if(n[t][0](e...
  function M (line 1) | function M(e){if(A(e)&&e.length){var t=e.slice(0,-1),n=e.slice(-1);retur...
  function q (line 1) | function q(e){return e}
  function z (line 1) | function z(){}
  function B (line 1) | function B(t,n,r,e,i){void 0===i&&(i=!1);var o=function(e){return t()[e]...
  function K (line 1) | function K(e,t){return-1!==e.indexOf(t)}
  function Z (line 1) | function Z(e,t){var n=e.indexOf(t);return 0<=n&&e.splice(n,1),e}
  function J (line 1) | function J(e,t){return e.push(t),t}
  function te (line 1) | function te(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[...
  function re (line 1) | function re(e,t){var n=[];for(var r in e.path){if(e.path[r]!==t.path[r])...
  function ie (line 1) | function ie(e,t){var n={};for(var r in e)-1!==t.indexOf(r)&&(n[r]=e[r]);...
  function oe (line 1) | function oe(n,e){return Object.keys(n).filter(d(G(e))).reduce(function(e...
  function ae (line 1) | function ae(e,t){return ce(e,v(t))}
  function se (line 1) | function se(e,n){var t=A(e),r=t?[]:{},i=t?function(e){return r.push(e)}:...
  function ue (line 1) | function ue(e,n){var r;return N(e,function(e,t){r||n(e,t)&&(r=e)}),r}
  function ce (line 1) | function ce(e,n,r){return r=r||(A(e)?[]:{}),N(e,function(e,t){return r[t...
  function me (line 1) | function me(e,t){return e.push(t),e}
  function _e (line 1) | function _e(n,r){return void 0===r&&(r="assert failure"),function(e){var...
  function Ce (line 1) | function Ce(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];...
  function ke (line 1) | function ke(e,t){var n,r;if(A(t)&&(n=t[0],r=t[1]),!O(n))throw new Error(...
  function De (line 1) | function De(e){return e.length&&e[e.length-1]||void 0}
  function xe (line 1) | function xe(e,t){return t&&Object.keys(t).forEach(function(e){return del...
  function Oe (line 1) | function Oe(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];if...
  function Te (line 1) | function Te(e,t){if(e===t)return!0;if(null===e||null===t)return!1;if(e!=...
  function t (line 1) | function t(e){this.text=e,this.glob=e.split(".");var t=this.text.split("...
  function e (line 1) | function e(e,t){void 0===e&&(e=[]),void 0===t&&(t=null),this._items=e,th...
  function r (line 1) | function r(e,t,n){this.$id=Ie++,this.type=e,this.message=t,this.detail=n}
  function Le (line 1) | function Le(e,t){return t.length<=e?t:t.substr(0,e-3)+"..."}
  function Fe (line 1) | function Fe(e,t){for(;t.length<e;)t+=" ";return t}
  function je (line 1) | function je(e){return e.replace(/^([A-Z])/,function(e){return e.toLowerC...
  function He (line 1) | function He(e){var t=Ne(e),n=t.match(/^(function [^ ]+\([^)]*\))/),r=n?n...
  function Ne (line 1) | function Ne(e){var t=A(e)?e.slice(-1)[0]:e;return t&&t.toString()||"unde...
  function qe (line 1) | function qe(e){var t=[];function n(e){if(T(e)){if(-1!==t.indexOf(e))retu...
  function Xe (line 1) | function Xe(e){var t=new RegExp("("+e+")","g");return function(e){return...
  function Je (line 1) | function Je(e,t){return O(De(e))&&O(t)?e.slice(0,-1).concat(De(e)+t):me(...
  function et (line 1) | function et(e){if(!e)return"ui-view (defunct)";var t=e.creationContext?e...
  function tt (line 1) | function tt(e){return x(e)?g.Category[e]:g.Category[g.Category[e]]}
  function e (line 1) | function e(){this._enabled={},this.approximateDigests=0}
  function e (line 1) | function e(e){this.pattern=/.*/,this.inherit=!0,Y(this,e)}
  function dt (line 1) | function dt(r,i){var o=this;function a(e){return A(e)?e:k(e)?[e]:[]}func...
  function gt (line 1) | function gt(e,t,n){var r=!1===n.reloadOnSearch&&t===g.DefType.SEARCH||vo...
  function r (line 1) | function r(e,t,n,r,i){var o=gt(e,n,i);t=function(e,t,n,r,i){if(e.type&&t...
  function e (line 1) | function e(){this.enqueue=!0,this.typeQueue=[],this.defaultTypes=ie(e.pr...
  function e (line 1) | function e(e){void 0===e&&(e={}),Y(this,e)}
  function r (line 1) | function r(e){if(e instanceof r){var t=e;this.state=t.state,this.paramSc...
  function r (line 1) | function r(e,t,n,r){this._stateRegistry=e,this._identifier=t,this._ident...
  function p (line 1) | function p(){}
  function a (line 1) | function a(e,t,n,r,i){if(this.resolved=!1,this.promise=void 0,e instance...
  function e (line 1) | function e(e){this._path=e}
  function e (line 1) | function e(e){this.context=e,this.native=this.get(Tt)||V.$injector}
  function Pt (line 1) | function Pt(e){return e.name}
  function Mt (line 1) | function Mt(e){return e.self.$$state=function(){return e},e.self}
  function Rt (line 1) | function Rt(e){return e.parent&&e.parent.data&&(e.data=e.self.data=W(e.p...
  function Vt (line 1) | function Vt(e){return e.parent?e.parent.path.concat(e):[e]}
  function Lt (line 1) | function Lt(e){var t=e.parent?Y({},e.parent.includes):{};return t[e.name...
  function Ft (line 1) | function Ft(e){var t,n,r=function(e){return e.provide||e.token},i=f([[v(...
  function e (line 1) | function e(t,e){this.matcher=t;var n=this,r=function(){return t.find("")...
  function n (line 1) | function n(e){return n.create(e||{})}
  function e (line 1) | function e(e){this._states=e}
  function e (line 1) | function e(e,t,n,r){this.router=e,this.states=t,this.builder=n,this.list...
  function e (line 1) | function e(e){this.router=e,this.states={},this.listeners=[],this.matche...
  function o (line 1) | function o(e,t,n,r){var i=this;this.transition=e,this.stateContext=t,thi...
  function Gt (line 1) | function Gt(e,t,n){var i=O(t)?[t]:t;return!!(D(i)?i:function(e){for(var ...
  function e (line 1) | function e(e,t,n,r,i,o){void 0===o&&(o={}),this.tranSvc=e,this.eventType...
  function Qt (line 1) | function Qt(e,i,o){var a=(e._registeredHooks=e._registeredHooks||{})[o.n...
  function e (line 1) | function e(e){this.transition=e}
  function t (line 1) | function t(e,t,n){var r=this;if(this._deferred=V.$q.defer(),this.promise...
  function en (line 1) | function en(e,t){var n=["",""],r=e.replace(/[\\\[\]\^$*+?.()|{}]/g,"\\$&...
  function m (line 1) | function m(o,a,e,t){var s=this;this._cache={path:[this]},this._children=...
  function r (line 1) | function r(e){var t=e.value(a[e.id]),n=e.validates(t),r=e.isDefaultValue...
  function e (line 1) | function e(e){this.router=e}
  function e (line 1) | function e(e){var r=this;this.router=e,this.paramFactory=new an(this.rou...
  function e (line 1) | function e(e){this.router=e}
  function e (line 1) | function e(e){var r=this;this.router=e,this.sync=function(e){return r.ro...
  function u (line 1) | function u(e){var n=this;this.router=e,this._uiViews=[],this._viewConfig...
  function i (line 1) | function i(e){for(var t=e.viewDecl.$context,n=0;++n&&t.parent;)t=t.paren...
  function e (line 1) | function e(){this.params=new wt,this.lastStartedTransitionId=-1,this.tra...
  function fn (line 1) | function fn(e){if(!(D(e)||O(e)||c($t)(e)||$t.isDef(e)))throw new Error("...
  function e (line 1) | function e(e){this.router=e,this._sortFn=cn,this._rules=[],this._id=0,th...
  function e (line 1) | function e(e){var t=this;this.router=e,this.paramTypes=new yt,this._isCa...
  function e (line 1) | function e(e){var r=this;this.router=e,this.interceptDeferred=!1,this.ru...
  function e (line 1) | function e(e,t){void 0===e&&(e=wn),void 0===t&&(t=bn),this.locationServi...
  function _n (line 1) | function _n(t){t.addResolvable(kt.fromData($n,t.router),""),t.addResolva...
  function r (line 1) | function r(e){if(e)return e instanceof $t?e:O(e)?n.target(e,t.params(),t...
  function Dn (line 1) | function Dn(n){return function(e,t){return(0,t.$$state()[n])(e,t)}}
  function Fn (line 1) | function Fn(t,n){var r=n.$$state().lazyLoad,e=r._promise;if(!e){e=r._pro...
  function Hn (line 1) | function Hn(e){var t=e._ignoredReason();if(t){lt.traceTransitionIgnored(...
  function Nn (line 1) | function Nn(e){if(!e.valid())throw new Error(e.error().toString())}
  function e (line 1) | function e(e){this._transitionCount=0,this._eventTypes=[],this._register...
  function n (line 1) | function n(e){this.router=e,this.invalidCallbacks=[],this._defaultErrorH...
  function Xn (line 1) | function Xn(e){var t=function(e){return e||""},n=Ge(e).map(t),r=n[0],i=n...
  function er (line 1) | function er(r,i,o,a){return function(e){var t=e.locationService=new o(e)...
  function e (line 1) | function e(e,t){var n=this;this.fireAfterUpdate=t,this._listeners=[],thi...
  function n (line 1) | function n(){this.constructor=e}
  function e (line 1) | function e(e){var t=n.call(this,e,!1)||this;return L.addEventListener("h...
  function n (line 1) | function n(){this.constructor=e}
  function e (line 1) | function e(e){return t.call(this,e,!0)||this}
  function n (line 1) | function n(){this.constructor=e}
  function e (line 1) | function e(e){var t=n.call(this,e,!0)||this;return t._config=e.urlServic...
  function e (line 1) | function e(e,t){void 0===t&&(t=!1),this._isHtml5=t,this._baseHref=void 0...
  function hr (line 1) | function hr(e){return V.$injector=Kn,{name:"vanilla.services",$q:V.$q=zn...
  function e (line 1) | function e(){}
  method Category (line 1) | get Category(){return g.Category}
  method DefType (line 1) | get DefType(){return g.DefType}
  method TransitionHookPhase (line 1) | get TransitionHookPhase(){return g.TransitionHookPhase}
  method TransitionHookScope (line 1) | get TransitionHookScope(){return g.TransitionHookScope}
  method RejectType (line 1) | get RejectType(){return g.RejectType}
  function wr (line 1) | function wr(){var n=null;return function(e,t){return n=n||V.$injector.ge...
  function $r (line 1) | function $r(r){if(!r.parent)return{};var i=["component","bindings","comp...
  function e (line 1) | function e(e,t,n){var r=this;this.path=e,this.viewDecl=t,this.factory=n,...
  function e (line 1) | function e(){var r=this;this._useHttp=S.version.minor<3,this.$get=["$htt...
  function n (line 1) | function n(e,t){this.stateRegistry=e,this.stateService=t,B(p(n.prototype...
  function e (line 1) | function e(e){this._urlListeners=[],this.$locationProvider=e;var t=p(e);...
  function n (line 1) | function n(e){this.router=e}
  function Lr (line 1) | function Lr(e){(Vr=this.router=new $n).stateProvider=new xr(Vr.stateRegi...
  function jr (line 1) | function jr(t,e,n){if(V.$injector=t,V.$q=e,!t.hasOwnProperty("strictDi")...
  function Hr (line 1) | function Hr(e){e.$watch(function(){lt.approximateDigests++})}
  function Br (line 1) | function Br(e){var t,n=e.match(/^\s*({[^}]*})\s*$/);if(n&&(e="("+n[1]+")...
  function Wr (line 1) | function Wr(e){var t=e.parent().inheritedData("$uiView"),n=C("$cfg.path"...
  function Gr (line 1) | function Gr(e,t,n){var r=n.uiState||e.current.name,i=Y(function(e,t){ret...
  function Kr (line 1) | function Kr(e){var t="[object SVGAnimatedString]"===Object.prototype.toS...
  function Qr (line 1) | function Qr(o,a,s,u,l){return function(e){var t=e.which||e.button,n=l();...
  function Zr (line 1) | function Zr(i,e,o,t){var a;t&&(a=t.events),A(a)||(a=["click"]);for(var n...
  function Xr (line 1) | function Xr(r){var e=function(e,t,n){return r.is(e,t,n)};return e.$state...
  function Jr (line 1) | function Jr(r){var e=function(e,t,n){return r.includes(e,t,n)};return e....
  function ei (line 1) | function ei(g,m,v,e,y,t){var w=C("viewDecl.controllerAs"),b=C("viewDecl....
  function d (line 1) | function d(){var e=l();s&&s(),a&&(s=a.$$addStateInfo(e.uiState,e.uiState...
  function p (line 1) | function p(){var e=l();s&&s(),a&&(s=a.$$addStateInfo(e.uiState,e.uiState...
  function o (line 1) | function o(e){e.promise.then(h,z)}
  function a (line 1) | function a(){d(r)}
  function d (line 1) | function d(e){T(e)&&(c=[],N(e,function(e,t){var n=function(e,t){var n=Br...
  function p (line 1) | function p(e,t,n){var r={state:f.get(e,Wr(u))||{name:e},params:t,activeC...
  function h (line 1) | function h(){var t=function(e){return e.split(/\s/).filter(q)},e=functio...
  method creationContext (line 1) | get creationContext(){var e=C("$cfg.viewDecl.$context")(n),t=C("$uiView....
  function r (line 1) | function r(e){var t=a.$new(),n=b.defer(),r=b.defer(),i={$cfg:e,$uiView:m...
  function ri (line 1) | function ri(r,e,l,t,n){!D(l.$onInit)||n.viewDecl.component&&ti||l.$onIni...
  function c (line 1) | function c(e,t,n){if(t){var r,i,o,a=[];for(r=t.length-1;0<=r;r--)if(i=t[...
  function p (line 1) | function p(e,n){function i(e){return b.isArray(e)?u(e.toString()):b.isOb...
  function d (line 1) | function d(e,t,n,r){var i,o,a,s;if(t)for(i=0,o=t.length;i<o;i++)if(a=t[i...
  function h (line 1) | function h(e){var t=null;return b.isString(e)?t=e:b.isObject(e)&&e.hasOw...
  function a (line 1) | function a(e){if(!b.isString(e))return!1;try{return E(e)}catch(e){if(/No...
  function l (line 1) | function l(e){var t=u.defer();return n.error(e.message),t.reject(e),t.pr...
  function s (line 1) | function s(){n.cancel(l),a.complete(),c=d=0}
  function u (line 1) | function u(e){var t,n=o.get("$http"),r=h.defaults;!e.cache&&!r.cache||!1...
  function u (line 1) | function u(e){if(m){var t=100*e+"%";f.css("width",t),v=e,y&&(a.cancel(c)...
  function n (line 1) | function n(){if(!(1<=r())){var e,t=r();e=0<=t&&t<.25?(3*Math.random()+3)...
  function r (line 1) | function r(){return v}
  function t (line 1) | function t(){v=0,m=!1}
  function e (line 1) | function e(e){for(var t in e)if(void 0!==n.style[t])return e[t]}
  function n (line 1) | function n(e){function t(){a===n&&(a=void 0)}var n=u(r,e);return a&&a.ca...
  function i (line 1) | function i(){r.removeClass("collapsing"),r.addClass("collapse in"),r.css...
  function o (line 1) | function o(){r.removeClass("collapsing"),r.addClass("collapse")}
  function i (line 1) | function i(){return o(t.btnCheckboxTrue,!0)}
  function o (line 1) | function o(e,t){var n=r.$eval(e);return angular.isDefined(n)?n:t}
  function u (line 1) | function u(){r();var e=+a.interval;!isNaN(e)&&0<e&&(o=n(i,e))}
  function r (line 1) | function r(){o&&(n.cancel(o),o=null)}
  function i (line 1) | function i(){var e=+a.interval;l&&!isNaN(e)&&0<e?a.next():a.pause()}
  function e (line 1) | function e(){var e,t;h||(c.currentSlide&&angular.isString(r)&&!a.noTrans...
  function i (line 1) | function i(e,t){angular.extend(e,{direction:"",active:!0,leaving:!1,ente...
  function a (line 1) | function a(e){return"static"===(function(e,t){return e.currentStyle?e.cu...
  function r (line 1) | function r(e,t){return 1!==t||e%4!=0||e%100==0&&e%400!=0?n[t]:29}
  function o (line 1) | function o(e){return parseInt((e-1)/a,10)*a+1}
  function o (line 1) | function o(e){return e.replace(/([A-Z])/g,function(e){return"-"+e.toLowe...
  function a (line 1) | function a(e){if(!e)return n.$setValidity("date",!0),null;if(angular.isD...
  function p (line 1) | function p(){for(var e=-1,t=m.keys(),n=0;n<t.length;n++)m.get(t[n]).valu...
  function r (line 1) | function r(e){var t=l.find("body").eq(0),n=m.get(e).value;m.remove(e),i(...
  function i (line 1) | function i(e,t,n,r){function i(){i.done||(i.done=!0,e.remove(),r&&r())}t...
  function c (line 1) | function c(e,t,n){return{number:e,text:t,active:n}}
  function k (line 1) | function k(e){var t=e||D.trigger||n;return{show:t,hide:u[t]||t}}
  function r (line 1) | function r(){m.isOpen?o():i()}
  function i (line 1) | function i(){(!g||e.$eval(n[C+"Enable"]))&&(function(){var e=n[C+"Placem...
  function o (line 1) | function o(){e.$apply(function(){s()})}
  function a (line 1) | function a(){return p=null,d&&(x.cancel(d),d=null),m.content?(l&&u(),c=m...
  function s (line 1) | function s(){m.isOpen=!1,x.cancel(p),p=null,m.animation?d||(d=x(u,500)):...
  function u (line 1) | function u(){d=null,l&&(l.remove(),l=null),c&&(c.$destroy(),c=null)}
  function r (line 1) | function r(){var e=parseInt(i.hours,10);return(i.showMeridian?0<e&&e<13:...
  function s (line 1) | function s(){var e=parseInt(i.minutes,10);return 0<=e&&e<60?e:void 0}
  function u (line 1) | function u(e){return angular.isDefined(e)&&e.toString().length<2?"0"+e:e}
  function l (line 1) | function l(e){c(),f.$setViewValue(new Date(h)),d(e)}
  function c (line 1) | function c(){f.$setValidity("time",!0),i.invalidHours=!1,i.invalidMinute...
  function d (line 1) | function d(e){var t=h.getHours(),n=h.getMinutes();i.showMeridian&&(t=0==...
  function p (line 1) | function p(e){var t=new Date(h.getTime()+6e4*e);h.setHours(t.getHours(),...
  function p (line 1) | function p(){return e.apply(null,arguments)}
  function a (line 1) | function a(e){return e instanceof Array||"[object Array]"===Object.proto...
  function s (line 1) | function s(e){return null!=e&&"[object Object]"===Object.prototype.toStr...
  function o (line 1) | function o(e){return void 0===e}
  function u (line 1) | function u(e){return"number"==typeof e||"[object Number]"===Object.proto...
  function l (line 1) | function l(e){return e instanceof Date||"[object Date]"===Object.prototy...
  function r (line 1) | function r(e,t){var n,r=[];for(n=0;n<e.length;++n)r.push(t(e[n],n));retu...
  function h (line 1) | function h(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function c (line 1) | function c(e,t){for(var n in t)h(t,n)&&(e[n]=t[n]);return h(t,"toString"...
  function d (line 1) | function d(e,t,n,r){return xt(e,t,n,r,!0).utc()}
  function f (line 1) | function f(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unuse...
  function g (line 1) | function g(e){if(null==e._isValid){var t=f(e),n=i.call(t.parsedDateParts...
  function m (line 1) | function m(e){var t=d(NaN);return null!=e?c(f(t),e):f(t).userInvalidated...
  function y (line 1) | function y(e,t){var n,r,i;if(o(t._isAMomentObject)||(e._isAMomentObject=...
  function w (line 1) | function w(e){y(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),...
  function b (line 1) | function b(e){return e instanceof w||null!=e&&null!=e._isAMomentObject}
  function $ (line 1) | function $(e){return e<0?Math.ceil(e)||0:Math.floor(e)}
  function _ (line 1) | function _(e){var t=+e,n=0;return 0!=t&&isFinite(t)&&(n=$(t)),n}
  function S (line 1) | function S(e,t,n){var r,i=Math.min(e.length,t.length),o=Math.abs(e.lengt...
  function C (line 1) | function C(e){!1===p.suppressDeprecationWarnings&&"undefined"!=typeof co...
  function n (line 1) | function n(i,o){var a=!0;return c(function(){if(null!=p.deprecationHandl...
  function x (line 1) | function x(e,t){null!=p.deprecationHandler&&p.deprecationHandler(e,t),D[...
  function O (line 1) | function O(e){return e instanceof Function||"[object Function]"===Object...
  function T (line 1) | function T(e,t){var n,r=c({},e);for(n in t)h(t,n)&&(s(e[n])&&s(t[n])?(r[...
  function A (line 1) | function A(e){null!=e&&this.set(e)}
  function P (line 1) | function P(e,t){var n=e.toLowerCase();E[n]=E[n+"s"]=E[t]=e}
  function M (line 1) | function M(e){return"string"==typeof e?E[e]||E[e.toLowerCase()]:void 0}
  function R (line 1) | function R(e){var t,n,r={};for(n in e)h(e,n)&&(t=M(n))&&(r[t]=e[n]);retu...
  function V (line 1) | function V(e,t){I[e]=t}
  function L (line 1) | function L(e,t,n){var r=""+Math.abs(e),i=t-r.length;return(0<=e?n?"+":""...
  function Y (line 1) | function Y(e,t,n,r){var i=r;"string"==typeof r&&(i=function(){return thi...
  function U (line 1) | function U(e,t){return e.isValid()?(t=q(t,e.localeData()),H[t]=H[t]||fun...
  function q (line 1) | function q(e,t){var n=5;function r(e){return t.longDateFormat(e)||e}for(...
  function ue (line 1) | function ue(e,n,r){se[e]=O(n)?n:function(e,t){return e&&r?r:n}}
  function le (line 1) | function le(e,t){return h(se,e)?se[e](t._strict,t._locale):new RegExp(fu...
  function ce (line 1) | function ce(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}
  function pe (line 1) | function pe(e,n){var t,r=n;for("string"==typeof e&&(e=[e]),u(n)&&(r=func...
  function he (line 1) | function he(e,i){pe(e,function(e,t,n,r){n._w=n._w||{},i(e,n._w,n,r)})}
  function Se (line 1) | function Se(e){return Ce(e)?366:365}
  function Ce (line 1) | function Ce(e){return e%4==0&&e%100!=0||e%400==0}
  function xe (line 1) | function xe(t,n){return function(e){return null!=e?(Te(this,t,e),p.updat...
  function Oe (line 1) | function Oe(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():...
  function Te (line 1) | function Te(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&Ce(e.year())...
  function Ae (line 1) | function Ae(e,t){if(isNaN(e)||isNaN(t))return NaN;var n=function(e,t){re...
  function Re (line 1) | function Re(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if...
  function Ie (line 1) | function Ie(e){return null!=e?(Re(this,e),p.updateOffset(this,!0),this):...
  function Fe (line 1) | function Fe(){function e(e,t){return t.length-e.length}var t,n,r=[],i=[]...
  function je (line 1) | function je(e){var t;if(e<100&&0<=e){var n=Array.prototype.slice.call(ar...
  function He (line 1) | function He(e,t,n){var r=7+t-n;return r-(7+je(e,0,r).getUTCDay()-t)%7-1}
  function Ne (line 1) | function Ne(e,t,n,r,i){var o,a,s=1+7*(t-1)+(7+n-r)%7+He(e,r,i);return a=...
  function Ye (line 1) | function Ye(e,t,n){var r,i,o=He(e.year(),t,n),a=Math.floor((e.dayOfYear(...
  function Ue (line 1) | function Ue(e,t,n){var r=He(e,t,n),i=He(e+1,t,n);return(Se(e)-r+i)/7}
  function qe (line 1) | function qe(e,t){return e.slice(t,7).concat(e.slice(0,t))}
  function Ze (line 1) | function Ze(){function e(e,t){return t.length-e.length}var t,n,r,i,o,a=[...
  function Xe (line 1) | function Xe(){return this.hours()%12||12}
  function Je (line 1) | function Je(e,t){Y(e,0,0,function(){return this.localeData().meridiem(th...
  function et (line 1) | function et(e,t){return t._meridiemParse}
  function at (line 1) | function at(e){return e?e.toLowerCase().replace("_","-"):e}
  function st (line 1) | function st(e){var t=null;if(!it[e]&&"undefined"!=typeof module&&module&...
  function ut (line 1) | function ut(e,t){var n;return e&&((n=o(t)?ct(e):lt(e,t))?tt=n:"undefined...
  function lt (line 1) | function lt(e,t){if(null===t)return delete it[e],null;var n,r=rt;if(t.ab...
  function ct (line 1) | function ct(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abb...
  function dt (line 1) | function dt(e){var t,n=e._a;return n&&-2===f(e).overflow&&(t=n[ge]<0||11...
  function pt (line 1) | function pt(e,t,n){return null!=e?e:null!=t?t:n}
  function ht (line 1) | function ht(e){var t,n,r,i,o,a=[];if(!e._d){for(r=function(e){var t=new ...
  function bt (line 1) | function bt(e){var t,n,r,i,o,a,s=e._i,u=ft.exec(s)||gt.exec(s);if(u){for...
  function _t (line 1) | function _t(e,t,n,r,i,o){var a=[function(e){var t=parseInt(e,10);{if(t<=...
  function Ct (line 1) | function Ct(e){var t=$t.exec(function(e){return e.replace(/\([^)]*\)|[\n...
  function kt (line 1) | function kt(e){if(e._f!==p.ISO_8601)if(e._f!==p.RFC_2822){e._a=[],f(e).e...
  function Dt (line 1) | function Dt(e){var t=e._i,n=e._f;return e._locale=e._locale||ct(e._l),nu...
  function xt (line 1) | function xt(e,t,n,r,i){var o={};return!0!==n&&!1!==n||(r=n,n=void 0),(s(...
  function Ot (line 1) | function Ot(e,t,n,r){return xt(e,t,n,r,!1)}
  function Et (line 1) | function Et(e,t){var n,r;if(1===t.length&&a(t[0])&&(t=t[0]),!t.length)re...
  function Mt (line 1) | function Mt(e){var t=R(e),n=t.year||0,r=t.quarter||0,i=t.month||0,o=t.we...
  function Rt (line 1) | function Rt(e){return e instanceof Mt}
  function It (line 1) | function It(e){return e<0?-1*Math.round(-1*e):Math.round(e)}
  function Vt (line 1) | function Vt(e,n){Y(e,0,0,function(){var e=this.utcOffset(),t="+";return ...
  function Ft (line 1) | function Ft(e,t){var n=(t||"").match(e);if(null===n)return null;var r=((...
  function jt (line 1) | function jt(e,t){var n,r;return t._isUTC?(n=t.clone(),r=(b(e)||l(e)?e.va...
  function Ht (line 1) | function Ht(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}
  function Nt (line 1) | function Nt(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}
  function qt (line 1) | function qt(e,t){var n,r,i,o=e,a=null;return Rt(e)?o={ms:e._milliseconds...
  function zt (line 1) | function zt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)...
  function Bt (line 1) | function Bt(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year...
  function Wt (line 1) | function Wt(r,i){return function(e,t){var n;return null===t||isNaN(+t)||...
  function Gt (line 1) | function Gt(e,t,n,r){var i=t._milliseconds,o=It(t._days),a=It(t._months)...
  function Zt (line 1) | function Zt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e....
  function Xt (line 1) | function Xt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=ct(e...
  function en (line 1) | function en(){return this._locale}
  function nn (line 1) | function nn(e,t){return(e%t+t)%t}
  function rn (line 1) | function rn(e,t,n){return e<100&&0<=e?new Date(e+400,t,n)-tn:new Date(e,...
  function on (line 1) | function on(e,t,n){return e<100&&0<=e?Date.UTC(e+400,t,n)-tn:Date.UTC(e,...
  function an (line 1) | function an(e,t){Y(0,[e,e.length],0,t)}
  function sn (line 1) | function sn(e,t,n,r,i){var o;return null==e?Ye(this,r,i).year:((o=Ue(e,r...
  function pn (line 1) | function pn(e,t){t[be]=_(1e3*("0."+e))}
  function gn (line 1) | function gn(e){return e}
  function vn (line 1) | function vn(e,t,n,r){var i=ct(),o=d().set(r,t);return i[n](o,e)}
  function yn (line 1) | function yn(e,t,n){if(u(e)&&(t=e,e=void 0),e=e||"",null!=t)return vn(e,t...
  function wn (line 1) | function wn(e,t,n,r){t=("boolean"==typeof e?u(t)&&(n=t,t=void 0):(t=e,e=...
  function $n (line 1) | function $n(e,t,n,r){var i=qt(t,n);return e._milliseconds+=r*i._millisec...
  function _n (line 1) | function _n(e){return e<0?Math.floor(e):Math.ceil(e)}
  function Sn (line 1) | function Sn(e){return 4800*e/146097}
  function Cn (line 1) | function Cn(e){return 146097*e/4800}
  function kn (line 1) | function kn(e){return function(){return this.as(e)}}
  function In (line 1) | function In(e){return function(){return this.isValid()?this._data[e]:NaN}}
  function Bn (line 1) | function Bn(e){return(0<e)-(e<0)||+e}
  function Wn (line 1) | function Wn(){if(!this.isValid())return this.localeData().invalidDate();...
  function e (line 1) | function e(){return function(e,t,n){var r,i;switch(e){case"Date":r=o(fun...
  function t (line 1) | function t(c){return{require:"ngModel",restrict:"A",scope:{dateFormats:"...
  function e (line 1) | function e(i,o){var e={bindToController:!1,controller:t,controllerAs:"da...
  function t (line 1) | function t(i){return{validate:function(e){var t=["configureOn","dropdown...
  function e (line 1) | function e(e){}
  function r (line 1) | function r(n,r,i){return function(e,t){!0!==i.busy&&void 0!==t&&t!==e&&(...
  function a (line 1) | function a(e){_=!0,v.map(function(e){e.remove()}),v=[]}
  function u (line 1) | function u(e,t,n){if(!n.busy){h=$(e).find("th"),l=n.mode,d=!angular.isDe...
  function c (line 1) | function c(e){return parseInt($(e).css("min-width"))||0}
  function s (line 1) | function s(e,t,n){return e.attr("id")?r+"."+e.attr("id")+"."+t+(n?"."+n:...
  function e (line 1) | function e(e,t,n){this.table=e,this.columns=t,this.container=n,this.hand...
  function e (line 1) | function e(e,t,n){r.call(this,e,t,n),this.ctrlColumns=this.columns,this....
  function i (line 1) | function i(e){return $(e).next()}
  function o (line 1) | function o(e,t){return e-t}
  function a (line 1) | function a(e){return e<25}
  function e (line 1) | function e(e,t,n){r.call(this,e,t,n),this.fixedColumn=$(e).find("th").fi...
  function e (line 1) | function e(e,t,n){r.call(this,e,t,n)}
  function a (line 1) | function a(e){e?i.disable():i.enable()}
  function s (line 1) | function s(e){return e?(e=angular.isArray(e)||angular.isObject(e)?e:[e],...
  function u (line 1) | function u(){!function(){var e=(n.ngRequired()||t.required||o.required)&...
  function r (line 1) | function r(e,t){for(var n,r=0;r<t.length;r++)(n=t[r]).enumerable=n.enume...
  function t (line 1) | function t(r){var i=this,e=1<arguments.length&&void 0!==arguments[1]?arg...
  function i (line 1) | function i(t,e){return(e=e||{}).headers=e.headers||{},O.extend(e.headers...
  function t (line 1) | function t(e){function t(t){["-webkit-transition","-o-transition","trans...
  function s (line 1) | function s(e){if(d.isRegistered(i)&&c(e)){var t=r.pagination.current;r.p...
  function u (line 1) | function u(){if(d.isRegistered(i)){var e=parseInt(d.getCurrentPage(i))||...
  function l (line 1) | function l(){if(d.isRegistered(i)){var e=d.getCurrentPage(i),t=d.getItem...
  function c (line 1) | function c(e){return p.test(e)&&0<e&&e<=r.pagination.last}
  function h (line 1) | function h(e,t,n,r){var i,o=[],a=Math.ceil(t/n),s=Math.ceil(r/2);i=e<=s?...
  function f (line 1) | function f(e,t,n,r){var i=Math.ceil(n/2);return e===n?r:1===e?e:n<r?r-i<...
  function u (line 1) | function u(e,r,i){return i=i||"children",$.each(e,function(e,t){!functio...
  function t (line 1) | function t(e,n,o,a){var t=e;n=n||"id",o=o||"parent",a=a||"children";var ...
  function l (line 1) | function l(e,a,s,u,l,t){a=a||"children",s=s||"id",t=t||{};var n=0,r=$("<...
  function n (line 1) | function n(e,t){return $.each(e,function(e,n){$.each(t,function(e,t){n[t...
  function c (line 1) | function c(i){i.addClass("jsTT"),i.expandLevel=function(n){$("tr[data-tt...

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/main/webapp/resources/gulpfile.js
  constant JS_LIBS (line 10) | const JS_LIBS = [
  constant CSS_APP (line 29) | const CSS_APP = [
  constant JS_APP (line 43) | const JS_APP = [

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/test/java/com/alibaba/csp/sentinel/dashboard/config/DashboardConfigTest.java
  class DashboardConfigTest (line 24) | public class DashboardConfigTest {
    method testGetConfigStr (line 28) | @Test
    method testGetConfigInt (line 50) | @Test

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/test/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/SentinelVersionTest.java
  class SentinelVersionTest (line 7) | public class SentinelVersionTest {
    method testEqual (line 8) | @Test
    method testGreater (line 18) | @Test

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/test/java/com/alibaba/csp/sentinel/dashboard/discovery/AppInfoTest.java
  class AppInfoTest (line 27) | public class AppInfoTest {
    method testConcurrentGetMachines (line 29) | @Test
    method genMachineInfo (line 60) | private MachineInfo genMachineInfo(String hostName, String ip) {
    method addRemoveMachineTest (line 70) | @Test
    method testHealthyAndDead (line 120) | @Test

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/test/java/com/alibaba/csp/sentinel/dashboard/discovery/MachineInfoTest.java
  class MachineInfoTest (line 27) | public class MachineInfoTest {
    method testHealthyAndDead (line 29) | @Test

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/test/java/com/alibaba/csp/sentinel/dashboard/repository/metric/InMemoryMetricsRepositoryTest.java
  class InMemoryMetricsRepositoryTest (line 38) | public class InMemoryMetricsRepositoryTest {
    method setUp (line 49) | @Before
    method tearDown (line 55) | @After
    method testSave (line 60) | private void testSave() {
    method testExpireMetric (line 74) | @Test
    method testListResourcesOfApp (line 104) | @Test

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/apollo/ApolloConfig.java
  class ApolloConfig (line 33) | @Configuration
    method flowRuleEntityEncoder (line 36) | @Bean
    method flowRuleEntityDecoder (line 41) | @Bean
    method apolloOpenApiClient (line 46) | @Bean

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/apollo/ApolloConfigUtil.java
  class ApolloConfigUtil (line 22) | public final class ApolloConfigUtil {
    method ApolloConfigUtil (line 26) | private ApolloConfigUtil() {
    method getFlowDataId (line 29) | public static String getFlowDataId(String appName) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/apollo/FlowRuleApolloProvider.java
  class FlowRuleApolloProvider (line 37) | @Component("flowRuleApolloProvider")
    method getRules (line 45) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/apollo/FlowRuleApolloPublisher.java
  class FlowRuleApolloPublisher (line 36) | @Component("flowRuleApolloPublisher")
    method publish (line 44) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/FlowRuleNacosProvider.java
  class FlowRuleNacosProvider (line 34) | @Component("flowRuleNacosProvider")
    method getRules (line 42) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/FlowRuleNacosPublisher.java
  class FlowRuleNacosPublisher (line 33) | @Component("flowRuleNacosPublisher")
    method publish (line 41) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/NacosConfig.java
  class NacosConfig (line 33) | @Configuration
    method flowRuleEntityEncoder (line 36) | @Bean
    method flowRuleEntityDecoder (line 41) | @Bean
    method nacosConfigService (line 46) | @Bean

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/NacosConfigUtil.java
  class NacosConfigUtil (line 22) | public final class NacosConfigUtil {
    method NacosConfigUtil (line 41) | private NacosConfigUtil() {}

FILE: 4-Finchley/alibaba-sentinel-dashboard-apollo/src/test/java/com/alibaba/csp/sentinel/dashboard/util/VersionUtilsTest.java
  class VersionUtilsTest (line 11) | public class VersionUtilsTest {
    method test (line 12) | @Test

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/DashboardApplication.java
  class DashboardApplication (line 28) | @SpringBootApplication
    method main (line 31) | public static void main(String[] args) {
    method triggerSentinelInit (line 36) | private static void triggerSentinelInit() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/AuthService.java
  type AuthService (line 24) | public interface AuthService<R> {
    method getAuthUser (line 32) | AuthUser getAuthUser(R request);
    type PrivilegeType (line 37) | enum PrivilegeType {
    type AuthUser (line 67) | interface AuthUser {
      method authTarget (line 83) | boolean authTarget(String target, PrivilegeType privilegeType);
      method isSuperUser (line 90) | boolean isSuperUser();
      method getNickName (line 97) | String getNickName();
      method getLoginName (line 104) | String getLoginName();
      method getId (line 111) | String getId();

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/FakeAuthServiceImpl.java
  class FakeAuthServiceImpl (line 28) | @Component
    method getAuthUser (line 31) | @Override
    class AuthUserImpl (line 36) | static final class AuthUserImpl implements AuthUser {
      method authTarget (line 38) | @Override
      method isSuperUser (line 44) | @Override
      method getNickName (line 50) | @Override
      method getLoginName (line 55) | @Override
      method getId (line 60) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/SimpleWebAuthServiceImpl.java
  class SimpleWebAuthServiceImpl (line 28) | @Primary
    method getAuthUser (line 34) | @Override
    class SimpleWebAuthUserImpl (line 45) | public static final class SimpleWebAuthUserImpl implements AuthUser {
      method SimpleWebAuthUserImpl (line 49) | public SimpleWebAuthUserImpl(String username) {
      method authTarget (line 53) | @Override
      method isSuperUser (line 58) | @Override
      method getNickName (line 63) | @Override
      method getLoginName (line 68) | @Override
      method getId (line 73) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/client/CommandFailedException.java
  class CommandFailedException (line 21) | public class CommandFailedException extends RuntimeException {
    method CommandFailedException (line 23) | public CommandFailedException() {}
    method CommandFailedException (line 25) | public CommandFailedException(String message) {
    method fillInStackTrace (line 29) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/client/CommandNotFoundException.java
  class CommandNotFoundException (line 22) | public class CommandNotFoundException extends Exception {
    method CommandNotFoundException (line 24) | public CommandNotFoundException() { }
    method CommandNotFoundException (line 26) | public CommandNotFoundException(String message) {
    method fillInStackTrace (line 30) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/client/SentinelApiClient.java
  class SentinelApiClient (line 87) | @Component
    method SentinelApiClient (line 124) | public SentinelApiClient() {
    method isSuccess (line 136) | private boolean isSuccess(int statusCode) {
    method isCommandNotFound (line 140) | private boolean isCommandNotFound(int statusCode, String body) {
    method queryString (line 144) | private StringBuilder queryString(Map<String, String> params) {
    method postRequest (line 162) | private HttpUriRequest postRequest(String url, Map<String, String> par...
    method urlEncode (line 179) | private String urlEncode(String str) {
    method getBody (line 188) | private String getBody(HttpResponse response) throws Exception {
    method executeCommand (line 209) | private CompletableFuture<String> executeCommand(String ip, int port, ...
    method executeCommand (line 222) | private CompletableFuture<String> executeCommand(String ip, int port, ...
    method executeCommand (line 236) | private CompletableFuture<String> executeCommand(String app, String ip...
    method executeCommand (line 270) | private CompletableFuture<String> executeCommand(HttpUriRequest reques...
    method close (line 308) | public void close() throws Exception {
    method fetchItemsAsync (line 312) | @Nullable
    method fetchItems (line 325) | @Nullable
    method fetchRules (line 345) | private <T extends Rule> List<T> fetchRules(String ip, int port, Strin...
    method setRules (line 349) | private boolean setRules(String app, String ip, int port, String type,...
    method fetchResourceOfMachine (line 374) | public List<NodeVo> fetchResourceOfMachine(String ip, int port, String...
    method fetchClusterNodeOfMachine (line 386) | public List<NodeVo> fetchClusterNodeOfMachine(String ip, int port, boo...
    method fetchFlowRuleOfMachine (line 394) | public List<FlowRuleEntity> fetchFlowRuleOfMachine(String app, String ...
    method fetchDegradeRuleOfMachine (line 404) | public List<DegradeRuleEntity> fetchDegradeRuleOfMachine(String app, S...
    method fetchSystemRuleOfMachine (line 414) | public List<SystemRuleEntity> fetchSystemRuleOfMachine(String app, Str...
    method fetchParamFlowRulesOfMachine (line 433) | public CompletableFuture<List<ParamFlowRuleEntity>> fetchParamFlowRule...
    method fetchAuthorityRulesOfMachine (line 458) | public List<AuthorityRuleEntity> fetchAuthorityRulesOfMachine(String a...
    method setFlowRuleOfMachine (line 481) | public boolean setFlowRuleOfMachine(String app, String ip, int port, L...
    method setDegradeRuleOfMachine (line 495) | public boolean setDegradeRuleOfMachine(String app, String ip, int port...
    method setSystemRuleOfMachine (line 509) | public boolean setSystemRuleOfMachine(String app, String ip, int port,...
    method setAuthorityRuleOfMachine (line 513) | public boolean setAuthorityRuleOfMachine(String app, String ip, int po...
    method setParamFlowRuleOfMachine (line 517) | public CompletableFuture<Void> setParamFlowRuleOfMachine(String app, S...
    method fetchClusterMode (line 547) | public CompletableFuture<ClusterStateSimpleEntity> fetchClusterMode(St...
    method modifyClusterMode (line 560) | public CompletableFuture<Void> modifyClusterMode(String ip, int port, ...
    method fetchClusterClientInfoAndConfig (line 582) | public CompletableFuture<ClusterClientInfoVO> fetchClusterClientInfoAn...
    method modifyClusterClientConfig (line 595) | public CompletableFuture<Void> modifyClusterClientConfig(String app, S...
    method modifyClusterServerFlowConfig (line 617) | public CompletableFuture<Void> modifyClusterServerFlowConfig(String ap...
    method modifyClusterServerTransportConfig (line 639) | public CompletableFuture<Void> modifyClusterServerTransportConfig(Stri...
    method modifyClusterServerNamespaceSet (line 662) | public CompletableFuture<Void> modifyClusterServerNamespaceSet(String ...
    method fetchClusterServerBasicInfo (line 684) | public CompletableFuture<ClusterServerStateVO> fetchClusterServerBasic...

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/config/DashboardConfig.java
  class DashboardConfig (line 36) | public class DashboardConfig {
    method getConfig (line 69) | @NonNull
    method getConfigStr (line 84) | protected static String getConfigStr(String name) {
    method getConfigInt (line 99) | protected static int getConfigInt(String name, int defaultVal, int min...
    method getAuthUsername (line 113) | public static String getAuthUsername() {
    method getAuthPassword (line 117) | public static String getAuthPassword() {
    method getHideAppNoMachineMillis (line 121) | public static int getHideAppNoMachineMillis() {
    method getRemoveAppNoMachineMillis (line 125) | public static int getRemoveAppNoMachineMillis() {
    method getAutoRemoveMachineMillis (line 129) | public static int getAutoRemoveMachineMillis() {
    method getUnhealthyMachineMillis (line 133) | public static int getUnhealthyMachineMillis() {
    method clearCache (line 137) | public static void clearCache() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/config/WebConfig.java
  class WebConfig (line 35) | @Configuration
    method addResourceHandlers (line 43) | @Override
    method addViewControllers (line 48) | @Override
    method sentinelFilterRegistration (line 57) | @Bean
    method authenticationFilterRegistration (line 70) | @Bean

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/AppController.java
  class AppController (line 40) | @RestController
    method queryApps (line 47) | @GetMapping("/names.json")
    method queryAppInfos (line 52) | @GetMapping("/briefinfos.json")
    method getMachinesByApp (line 59) | @GetMapping(value = "/{app}/machines.json")
    method removeMachineById (line 80) | @RequestMapping(value = "/{app}/machine/remove.json")

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/AuthController.java
  class AuthController (line 37) | @RestController
    method login (line 49) | @PostMapping("/login")
    method logout (line 75) | @RequestMapping(value = "/logout", method = RequestMethod.POST)

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/AuthorityRuleController.java
  class AuthorityRuleController (line 52) | @RestController
    method apiQueryAllRulesForMachine (line 66) | @GetMapping("/rules")
    method checkEntityInternal (line 92) | private <R> Result<R> checkEntityInternal(AuthorityRuleEntity entity) {
    method apiAddAuthorityRule (line 121) | @PostMapping("/rule")
    method apiUpdateParamFlowRule (line 146) | @PutMapping("/rule/{id}")
    method apiDeleteRule (line 178) | @DeleteMapping("/rule/{id}")
    method publishRules (line 200) | private boolean publishRules(String app, String ip, Integer port) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/DegradeController.java
  class DegradeController (line 46) | @Controller
    method queryMachineRules (line 60) | @ResponseBody
    method add (line 85) | @ResponseBody
    method updateIfNotNull (line 144) | @ResponseBody
    method delete (line 196) | @ResponseBody
    method publishRules (line 221) | private boolean publishRules(String app, String ip, Integer port) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/DemoController.java
  class DemoController (line 34) | @Controller
    method greeting (line 40) | @RequestMapping("/greeting")
    method link (line 45) | @RequestMapping("/link")
    method loop (line 62) | @RequestMapping("/loop")
    method slow (line 73) | @RequestMapping("/slow")
    class RunTask (line 84) | static class RunTask implements Runnable {
      method RunTask (line 90) | public RunTask(String name, int time, boolean slow) {
      method run (line 97) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/FlowControllerV1.java
  class FlowControllerV1 (line 52) | @RestController
    method apiQueryMachineRules (line 66) | @GetMapping("/rules")
    method checkEntityInternal (line 93) | private <R> Result<R> checkEntityInternal(FlowRuleEntity entity) {
    method apiAddFlowRule (line 140) | @PostMapping("/rule")
    method updateIfNotNull (line 167) | @PutMapping("/save.json")
    method delete (line 248) | @DeleteMapping("/delete.json")
    method publishRules (line 270) | private boolean publishRules(String app, String ip, Integer port) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/MachineRegistryController.java
  class MachineRegistryController (line 32) | @Controller
    method receiveHeartBeat (line 41) | @ResponseBody

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/MetricController.java
  class MetricController (line 45) | @Controller
    method queryTopResourceMetric (line 56) | @ResponseBody
    method queryByAppAndResource (line 138) | @ResponseBody
    method sortMetricVoAndDistinct (line 162) | private Iterable<MetricVo> sortMetricVoAndDistinct(List<MetricVo> vos) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ParamFlowRuleController.java
  class ParamFlowRuleController (line 59) | @RestController
    method checkIfSupported (line 75) | private boolean checkIfSupported(String app, String ip, int port) {
    method apiQueryAllRulesForMachine (line 88) | @GetMapping("/rules")
    method isNotSupported (line 125) | private boolean isNotSupported(Throwable ex) {
    method apiAddParamFlowRule (line 129) | @PostMapping("/rule")
    method checkEntityInternal (line 163) | private <R> Result<R> checkEntityInternal(ParamFlowRuleEntity entity) {
    method apiUpdateParamFlowRule (line 194) | @PutMapping("/rule/{id}")
    method apiDeleteRule (line 235) | @DeleteMapping("/rule/{id}")
    method publishRules (line 263) | private CompletableFuture<Void> publishRules(String app, String ip, In...
    method unsupportedVersion (line 268) | private <R> Result<R> unsupportedVersion() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ResourceController.java
  class ResourceController (line 39) | @RestController
    method fetchResourceChainListOfMachine (line 58) | @GetMapping("/machineResource.json")

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/SystemController.java
  class SystemController (line 45) | @Controller
    method queryMachineRules (line 57) | @ResponseBody
    method countNotNullAndNotNegative (line 81) | private int countNotNullAndNotNegative(Number... values) {
    method add (line 91) | @ResponseBody
    method updateIfNotNull (line 151) | @ResponseBody
    method delete (line 205) | @ResponseBody
    method publishRules (line 229) | private boolean publishRules(String app, String ip, Integer port) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/cluster/ClusterAssignController.java
  class ClusterAssignController (line 41) | @RestController
    method apiAssignAllClusterServersOfApp (line 50) | @PostMapping("/all_server/{app}")
    method apiAssignSingleClusterServersOfApp (line 70) | @PostMapping("/single_server/{app}")
    method apiUnbindClusterServersOfApp (line 88) | @PostMapping("/unbind_server/{app}")

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/cluster/ClusterConfigController.java
  class ClusterConfigController (line 56) | @RestController
    method apiModifyClusterConfig (line 70) | @PostMapping("/config/modify_single")
    method errorResponse (line 111) | private <T> Result<T> errorResponse(ExecutionException ex) {
    method apiGetClusterState (line 119) | @GetMapping("/state_single")
    method apiGetClusterServerStateOfApp (line 148) | @GetMapping("/server_state/{app}")
    method apiGetClusterClientStateOfApp (line 167) | @GetMapping("/client_state/{app}")
    method apiGetClusterStateOfApp (line 186) | @GetMapping("/state/{app}")
    method isNotSupported (line 204) | private boolean isNotSupported(Throwable ex) {
    method checkIfSupported (line 208) | private boolean checkIfSupported(String app, String ip, int port) {
    method checkValidRequest (line 221) | private Result<Boolean> checkValidRequest(ClusterModifyRequest request) {
    method unsupportedVersion (line 240) | private <R> Result<R> unsupportedVersion() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/v2/FlowControllerV2.java
  class FlowControllerV2 (line 54) | @RestController
    method apiQueryMachineRules (line 73) | @GetMapping("/rules")
    method checkEntityInternal (line 99) | private <R> Result<R> checkEntityInternal(FlowRuleEntity entity) {
    method apiAddFlowRule (line 143) | @PostMapping("/rule")
    method apiUpdateFlowRule (line 168) | @PutMapping("/rule/{id}")
    method apiDeleteRule (line 210) | @DeleteMapping("/rule/{id}")
    method publishRules (line 230) | private void publishRules(/*@NonNull*/ String app) throws Exception {

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/ApplicationEntity.java
  class ApplicationEntity (line 25) | public class ApplicationEntity {
    method getId (line 34) | public long getId() {
    method setId (line 38) | public void setId(long id) {
    method getGmtCreate (line 42) | public Date getGmtCreate() {
    method setGmtCreate (line 46) | public void setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 50) | public Date getGmtModified() {
    method setGmtModified (line 54) | public void setGmtModified(Date gmtModified) {
    method getApp (line 58) | public String getApp() {
    method setApp (line 62) | public void setApp(String app) {
    method getActiveConsole (line 66) | public String getActiveConsole() {
    method getLastFetch (line 70) | public Date getLastFetch() {
    method setLastFetch (line 74) | public void setLastFetch(Date lastFetch) {
    method setActiveConsole (line 78) | public void setActiveConsole(String activeConsole) {
    method toAppInfo (line 82) | public AppInfo toAppInfo() {
    method toString (line 86) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MachineEntity.java
  class MachineEntity (line 25) | public class MachineEntity {
    method getId (line 35) | public long getId() {
    method setId (line 39) | public void setId(long id) {
    method getGmtCreate (line 43) | public Date getGmtCreate() {
    method setGmtCreate (line 47) | public void setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 51) | public Date getGmtModified() {
    method setGmtModified (line 55) | public void setGmtModified(Date gmtModified) {
    method getApp (line 59) | public String getApp() {
    method setApp (line 63) | public void setApp(String app) {
    method getIp (line 67) | public String getIp() {
    method setIp (line 71) | public void setIp(String ip) {
    method getHostname (line 75) | public String getHostname() {
    method setHostname (line 79) | public void setHostname(String hostname) {
    method getTimestamp (line 83) | public Date getTimestamp() {
    method setTimestamp (line 87) | public void setTimestamp(Date timestamp) {
    method getPort (line 91) | public Integer getPort() {
    method setPort (line 95) | public void setPort(Integer port) {
    method toMachineInfo (line 99) | public MachineInfo toMachineInfo() {
    method toString (line 112) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MetricEntity.java
  class MetricEntity (line 23) | public class MetricEntity {
    method copyOf (line 50) | public static MetricEntity copyOf(MetricEntity oldEntity) {
    method addPassQps (line 68) | public synchronized void addPassQps(Long passQps) {
    method addBlockQps (line 72) | public synchronized void addBlockQps(Long blockQps) {
    method addExceptionQps (line 76) | public synchronized void addExceptionQps(Long exceptionQps) {
    method addCount (line 80) | public synchronized void addCount(int count) {
    method addRtAndSuccessQps (line 84) | public synchronized void addRtAndSuccessQps(double avgRt, Long success...
    method setRtAndSuccessQps (line 95) | public synchronized void setRtAndSuccessQps(double avgRt, Long success...
    method getId (line 100) | public Long getId() {
    method setId (line 104) | public void setId(Long id) {
    method getGmtCreate (line 108) | public Date getGmtCreate() {
    method setGmtCreate (line 112) | public void setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 116) | public Date getGmtModified() {
    method setGmtModified (line 120) | public void setGmtModified(Date gmtModified) {
    method getApp (line 124) | public String getApp() {
    method setApp (line 128) | public void setApp(String app) {
    method getTimestamp (line 132) | public Date getTimestamp() {
    method setTimestamp (line 136) | public void setTimestamp(Date timestamp) {
    method getResource (line 140) | public String getResource() {
    method setResource (line 144) | public void setResource(String resource) {
    method getPassQps (line 149) | public Long getPassQps() {
    method setPassQps (line 153) | public void setPassQps(Long passQps) {
    method getBlockQps (line 157) | public Long getBlockQps() {
    method setBlockQps (line 161) | public void setBlockQps(Long blockQps) {
    method getExceptionQps (line 165) | public Long getExceptionQps() {
    method setExceptionQps (line 169) | public void setExceptionQps(Long exceptionQps) {
    method getRt (line 173) | public double getRt() {
    method setRt (line 177) | public void setRt(double rt) {
    method getCount (line 181) | public int getCount() {
    method setCount (line 185) | public void setCount(int count) {
    method getResourceCode (line 189) | public int getResourceCode() {
    method getSuccessQps (line 193) | public Long getSuccessQps() {
    method setSuccessQps (line 197) | public void setSuccessQps(Long successQps) {
    method toString (line 201) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MetricPositionEntity.java
  class MetricPositionEntity (line 23) | public class MetricPositionEntity {
    method getId (line 44) | public long getId() {
    method setId (line 48) | public void setId(long id) {
    method getGmtCreate (line 52) | public Date getGmtCreate() {
    method setGmtCreate (line 56) | public void setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 60) | public Date getGmtModified() {
    method setGmtModified (line 64) | public void setGmtModified(Date gmtModified) {
    method getApp (line 68) | public String getApp() {
    method setApp (line 72) | public void setApp(String app) {
    method getIp (line 76) | public String getIp() {
    method setIp (line 80) | public void setIp(String ip) {
    method getPort (line 84) | public int getPort() {
    method setPort (line 88) | public void setPort(int port) {
    method getHostname (line 92) | public String getHostname() {
    method setHostname (line 96) | public void setHostname(String hostname) {
    method getLastFetch (line 100) | public Date getLastFetch() {
    method setLastFetch (line 104) | public void setLastFetch(Date lastFetch) {
    method toString (line 108) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/SentinelVersion.java
  class SentinelVersion (line 22) | public class SentinelVersion {
    method SentinelVersion (line 28) | public SentinelVersion() {
    method SentinelVersion (line 32) | public SentinelVersion(int major, int minor, int fix) {
    method SentinelVersion (line 36) | public SentinelVersion(int major, int minor, int fix, String postfix) {
    method getFullVersion (line 46) | public int getFullVersion() {
    method getMajorVersion (line 50) | public int getMajorVersion() {
    method setMajorVersion (line 54) | public SentinelVersion setMajorVersion(int majorVersion) {
    method getMinorVersion (line 59) | public int getMinorVersion() {
    method setMinorVersion (line 63) | public SentinelVersion setMinorVersion(int minorVersion) {
    method getFixVersion (line 68) | public int getFixVersion() {
    method setFixVersion (line 72) | public SentinelVersion setFixVersion(int fixVersion) {
    method getPostfix (line 77) | public String getPostfix() {
    method setPostfix (line 81) | public SentinelVersion setPostfix(String postfix) {
    method greaterThan (line 86) | public boolean greaterThan(SentinelVersion version) {
    method greaterOrEqual (line 93) | public boolean greaterOrEqual(SentinelVersion version) {
    method equals (line 100) | @Override
    method hashCode (line 111) | @Override
    method toString (line 120) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/AbstractRuleEntity.java
  class AbstractRuleEntity (line 26) | public abstract class AbstractRuleEntity<T extends AbstractRule> impleme...
    method getId (line 39) | @Override
    method setId (line 44) | @Override
    method getApp (line 49) | @Override
    method setApp (line 54) | public AbstractRuleEntity<T> setApp(String app) {
    method getIp (line 59) | @Override
    method setIp (line 64) | public AbstractRuleEntity<T> setIp(String ip) {
    method getPort (line 69) | @Override
    method setPort (line 74) | public AbstractRuleEntity<T> setPort(Integer port) {
    method getRule (line 79) | public T getRule() {
    method setRule (line 83) | public AbstractRuleEntity<T> setRule(T rule) {
    method getGmtCreate (line 88) | @Override
    method setGmtCreate (line 93) | public AbstractRuleEntity<T> setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 98) | public Date getGmtModified() {
    method setGmtModified (line 102) | public AbstractRuleEntity<T> setGmtModified(Date gmtModified) {

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/AuthorityRuleEntity.java
  class AuthorityRuleEntity (line 28) | public class AuthorityRuleEntity extends AbstractRuleEntity<AuthorityRul...
    method AuthorityRuleEntity (line 30) | public AuthorityRuleEntity() {}
    method AuthorityRuleEntity (line 32) | public AuthorityRuleEntity(AuthorityRule authorityRule) {
    method fromAuthorityRule (line 37) | public static AuthorityRuleEntity fromAuthorityRule(String app, String...
    method getLimitApp (line 45) | @JsonIgnore
    method getResource (line 50) | @JsonIgnore
    method getStrategy (line 55) | @JsonIgnore
    method toRule (line 60) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/DegradeRuleEntity.java
  class DegradeRuleEntity (line 25) | public class DegradeRuleEntity implements RuleEntity {
    method fromDegradeRule (line 41) | public static DegradeRuleEntity fromDegradeRule(String app, String ip,...
    method getIp (line 54) | @Override
    method setIp (line 59) | public void setIp(String ip) {
    method getPort (line 63) | @Override
    method setPort (line 68) | public void setPort(Integer port) {
    method getId (line 72) | @Override
    method setId (line 77) | @Override
    method getApp (line 82) | @Override
    method setApp (line 87) | public void setApp(String app) {
    method getResource (line 91) | public String getResource() {
    method setResource (line 95) | public void setResource(String resource) {
    method getLimitApp (line 99) | public String getLimitApp() {
    method setLimitApp (line 103) | public void setLimitApp(String limitApp) {
    method getCount (line 107) | public Double getCount() {
    method setCount (line 111) | public void setCount(Double count) {
    method getTimeWindow (line 115) | public Integer getTimeWindow() {
    method setTimeWindow (line 119) | public void setTimeWindow(Integer timeWindow) {
    method getGrade (line 123) | public Integer getGrade() {
    method setGrade (line 127) | public void setGrade(Integer grade) {
    method getGmtCreate (line 131) | @Override
    method setGmtCreate (line 136) | public void setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 140) | public Date getGmtModified() {
    method setGmtModified (line 144) | public void setGmtModified(Date gmtModified) {
    method toRule (line 148) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/FlowRuleEntity.java
  class FlowRuleEntity (line 26) | public class FlowRuleEntity implements RuleEntity {
    method fromFlowRule (line 63) | public static FlowRuleEntity fromFlowRule(String app, String ip, Integ...
    method getIp (line 82) | @Override
    method setIp (line 87) | public void setIp(String ip) {
    method getPort (line 91) | @Override
    method setPort (line 96) | public void setPort(Integer port) {
    method getApp (line 100) | @Override
    method setApp (line 105) | public void setApp(String app) {
    method getId (line 109) | @Override
    method setId (line 114) | @Override
    method getLimitApp (line 119) | public String getLimitApp() {
    method setLimitApp (line 123) | public void setLimitApp(String limitApp) {
    method getResource (line 127) | public String getResource() {
    method setResource (line 131) | public void setResource(String resource) {
    method getGrade (line 135) | public Integer getGrade() {
    method setGrade (line 139) | public void setGrade(Integer grade) {
    method getCount (line 143) | public Double getCount() {
    method setCount (line 147) | public void setCount(Double count) {
    method getStrategy (line 151) | public Integer getStrategy() {
    method setStrategy (line 155) | public void setStrategy(Integer strategy) {
    method getRefResource (line 159) | public String getRefResource() {
    method setRefResource (line 163) | public void setRefResource(String refResource) {
    method getControlBehavior (line 167) | public Integer getControlBehavior() {
    method setControlBehavior (line 171) | public void setControlBehavior(Integer controlBehavior) {
    method getWarmUpPeriodSec (line 175) | public Integer getWarmUpPeriodSec() {
    method setWarmUpPeriodSec (line 179) | public void setWarmUpPeriodSec(Integer warmUpPeriodSec) {
    method getMaxQueueingTimeMs (line 183) | public Integer getMaxQueueingTimeMs() {
    method setMaxQueueingTimeMs (line 187) | public void setMaxQueueingTimeMs(Integer maxQueueingTimeMs) {
    method isClusterMode (line 191) | public boolean isClusterMode() {
    method setClusterMode (line 195) | public FlowRuleEntity setClusterMode(boolean clusterMode) {
    method getClusterConfig (line 200) | public ClusterFlowConfig getClusterConfig() {
    method setClusterConfig (line 204) | public FlowRuleEntity setClusterConfig(ClusterFlowConfig clusterConfig) {
    method getGmtCreate (line 209) | @Override
    method setGmtCreate (line 214) | public void setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 218) | public Date getGmtModified() {
    method setGmtModified (line 222) | public void setGmtModified(Date gmtModified) {
    method toRule (line 226) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/ParamFlowRuleEntity.java
  class ParamFlowRuleEntity (line 32) | public class ParamFlowRuleEntity extends AbstractRuleEntity<ParamFlowRul...
    method ParamFlowRuleEntity (line 34) | public ParamFlowRuleEntity() {}
    method ParamFlowRuleEntity (line 36) | public ParamFlowRuleEntity(ParamFlowRule rule) {
    method fromAuthorityRule (line 41) | public static ParamFlowRuleEntity fromAuthorityRule(String app, String...
    method getLimitApp (line 49) | @JsonIgnore
    method getResource (line 54) | @JsonIgnore
    method getGrade (line 59) | @JsonIgnore
    method getParamIdx (line 64) | @JsonIgnore
    method getCount (line 69) | @JsonIgnore
    method getParamFlowItemList (line 74) | @JsonIgnore
    method isClusterMode (line 79) | @JsonIgnore
    method getClusterConfig (line 84) | @JsonIgnore
    method toRule (line 89) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/RuleEntity.java
  type RuleEntity (line 25) | public interface RuleEntity {
    method getId (line 27) | Long getId();
    method setId (line 29) | void setId(Long id);
    method getApp (line 31) | String getApp();
    method getIp (line 33) | String getIp();
    method getPort (line 35) | Integer getPort();
    method getGmtCreate (line 37) | Date getGmtCreate();
    method toRule (line 39) | Rule toRule();

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/SystemRuleEntity.java
  class SystemRuleEntity (line 25) | public class SystemRuleEntity implements RuleEntity {
    method fromSystemRule (line 40) | public static SystemRuleEntity fromSystemRule(String app, String ip, I...
    method getIp (line 52) | @Override
    method setIp (line 57) | public void setIp(String ip) {
    method getPort (line 61) | @Override
    method setPort (line 66) | public void setPort(Integer port) {
    method getId (line 70) | @Override
    method setId (line 75) | @Override
    method getApp (line 80) | @Override
    method setApp (line 85) | public void setApp(String app) {
    method getAvgLoad (line 89) | public Double getAvgLoad() {
    method setAvgLoad (line 93) | public void setAvgLoad(Double avgLoad) {
    method getAvgRt (line 97) | public Long getAvgRt() {
    method setAvgRt (line 101) | public void setAvgRt(Long avgRt) {
    method getMaxThread (line 105) | public Long getMaxThread() {
    method setMaxThread (line 109) | public void setMaxThread(Long maxThread) {
    method getQps (line 113) | public Double getQps() {
    method setQps (line 117) | public void setQps(Double qps) {
    method getGmtCreate (line 121) | @Override
    method setGmtCreate (line 126) | public void setGmtCreate(Date gmtCreate) {
    method getGmtModified (line 130) | public Date getGmtModified() {
    method setGmtModified (line 134) | public void setGmtModified(Date gmtModified) {
    method toRule (line 138) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/AppInfo.java
  class AppInfo (line 27) | public class AppInfo {
    method AppInfo (line 33) | public AppInfo() {}
    method AppInfo (line 35) | public AppInfo(String app) {
    method getApp (line 39) | public String getApp() {
    method setApp (line 43) | public void setApp(String app) {
    method getMachines (line 52) | public Set<MachineInfo> getMachines() {
    method toString (line 56) | @Override
    method addMachine (line 61) | public boolean addMachine(MachineInfo machineInfo) {
    method removeMachine (line 66) | public synchronized boolean removeMachine(String ip, int port) {
    method getMachine (line 78) | public Optional<MachineInfo> getMachine(String ip, int port) {
    method heartbeatJudge (line 84) | private boolean heartbeatJudge(final int threshold) {
    method isShown (line 108) | public boolean isShown() {
    method isDead (line 117) | public boolean isDead() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/AppManagement.java
  class AppManagement (line 27) | @Component
    method init (line 35) | @PostConstruct
    method getBriefApps (line 40) | @Override
    method addMachine (line 45) | @Override
    method removeMachine (line 50) | @Override
    method getAppNames (line 55) | @Override
    method getDetailApp (line 60) | @Override
    method removeApp (line 65) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/MachineDiscovery.java
  type MachineDiscovery (line 21) | public interface MachineDiscovery {
    method getAppNames (line 25) | List<String> getAppNames();
    method getBriefApps (line 27) | Set<AppInfo> getBriefApps();
    method getDetailApp (line 29) | AppInfo getDetailApp(String app);
    method removeApp (line 37) | void removeApp(String app);
    method addMachine (line 39) | long addMachine(MachineInfo machineInfo);
    method removeMachine (line 50) | boolean removeMachine(String app, String ip, int port);

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/MachineInfo.java
  class MachineInfo (line 23) | public class MachineInfo implements Comparable<MachineInfo> {
    method of (line 37) | public static MachineInfo of(String app, String ip, Integer port) {
    method toHostPort (line 45) | public String toHostPort() {
    method getPort (line 49) | public Integer getPort() {
    method setPort (line 53) | public void setPort(Integer port) {
    method getApp (line 57) | public String getApp() {
    method setApp (line 61) | public void setApp(String app) {
    method getHostname (line 65) | public String getHostname() {
    method setHostname (line 69) | public void setHostname(String hostname) {
    method getIp (line 73) | public String getIp() {
    method setIp (line 77) | public void setIp(String ip) {
    method getHeartbeatVersion (line 81) | public long getHeartbeatVersion() {
    method setHeartbeatVersion (line 85) | public void setHeartbeatVersion(long heartbeatVersion) {
    method getVersion (line 89) | public String getVersion() {
    method setVersion (line 93) | public MachineInfo setVersion(String version) {
    method isHealthy (line 98) | public boolean isHealthy() {
    method isDead (line 108) | public boolean isDead() {
    method getLastHeartbeat (line 116) | public long getLastHeartbeat() {
    method setLastHeartbeat (line 120) | public void setLastHeartbeat(long lastHeartbeat) {
    method compareTo (line 124) | @Override
    method toString (line 138) | @Override
    method equals (line 152) | @Override
    method hashCode (line 162) | @Override
    method toLogString (line 172) | public String toLogString() {

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/SimpleMachineDiscovery.java
  class SimpleMachineDiscovery (line 32) | @Component
    method addMachine (line 37) | @Override
    method removeMachine (line 45) | @Override
    method getAppNames (line 55) | @Override
    method getDetailApp (line 60) | @Override
    method getBriefApps (line 66) | @Override
    method removeApp (line 71) | @Override

FILE: 4-Finchley/alibaba-sentinel-dashboard-nacos/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/ResourceTreeNode.java
  class ResourceTreeNode (line 28) | public class ResourceTreeNode {
    method fromNodeVoList (line 49) | public static Resou
Condensed preview — 710 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,892K chars).
[
  {
    "path": ".gitignore",
    "chars": 245,
    "preview": "*.class\n\n# Package Files #\n*.jar\n*.war\n*.ear\n\n# idea Files\n.idea\n*.iml\ntarget\n\n# log Files\n*.log\n\n2-Dalston版教程示例/trace-2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-1/compute-service/pom.xml",
    "chars": 1656,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-1/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java",
    "chars": 454,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-1/compute-service/src/main/java/com/didispace/web/ComputeController.java",
    "chars": 1044,
    "preview": "package com.didispace.web;\n\nimport org.apache.log4j.Logger;\nimport org.springframework.beans.factory.annotation.Autowire"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-1/compute-service/src/main/resources/application.properties",
    "chars": 127,
    "preview": "spring.application.name=compute-service\n\nserver.port=2222\n\neureka.client.serviceUrl.defaultZone=http://localhost:1111/eu"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-1/compute-service/src/test/java/com/didispace/ApplicationTests.java",
    "chars": 1420,
    "preview": "package com.didispace;\n\nimport com.didispace.web.ComputeController;\nimport org.junit.Before;\nimport org.junit.Test;\nimpo"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-1/eureka-server/pom.xml",
    "chars": 1661,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-1/eureka-server/src/main/java/com/didispace/Application.java",
    "chars": 425,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-1/eureka-server/src/main/resources/application.properties",
    "chars": 206,
    "preview": "server.port=1111\n#eureka.instance.hostname=localhost\n\neureka.client.register-with-eureka=false\neureka.client.fetch-regis"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-2/eureka-feign/pom.xml",
    "chars": 1915,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/FeignApplication.java",
    "chars": 487,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/service/ComputeClient.java",
    "chars": 504,
    "preview": "package com.didispace.service;\n\nimport org.springframework.cloud.netflix.feign.FeignClient;\nimport org.springframework.w"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/web/ConsumerController.java",
    "chars": 565,
    "preview": "package com.didispace.web;\n\nimport com.didispace.service.ComputeClient;\nimport org.springframework.beans.factory.annotat"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/resources/application.properties",
    "chars": 125,
    "preview": "spring.application.name=feign-consumer\nserver.port=3333\n\neureka.client.serviceUrl.defaultZone=http://localhost:1111/eure"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-2/eureka-ribbon/pom.xml",
    "chars": 1918,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-2/eureka-ribbon/src/main/java/com/didispace/RibbonApplication.java",
    "chars": 659,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-2/eureka-ribbon/src/main/java/com/didispace/web/ConsumerController.java",
    "chars": 635,
    "preview": "package com.didispace.web;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.we"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-2/eureka-ribbon/src/main/resources/application.properties",
    "chars": 126,
    "preview": "spring.application.name=ribbon-consumer\nserver.port=3333\n\neureka.client.serviceUrl.defaultZone=http://localhost:1111/eur"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/compute-service/pom.xml",
    "chars": 1656,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java",
    "chars": 454,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/compute-service/src/main/java/com/didispace/web/ComputeController.java",
    "chars": 1044,
    "preview": "package com.didispace.web;\n\nimport org.apache.log4j.Logger;\nimport org.springframework.beans.factory.annotation.Autowire"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/compute-service/src/main/resources/application.properties",
    "chars": 127,
    "preview": "spring.application.name=compute-service\n\nserver.port=2222\n\neureka.client.serviceUrl.defaultZone=http://localhost:1111/eu"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/compute-service/src/test/java/com/didispace/ApplicationTests.java",
    "chars": 1420,
    "preview": "package com.didispace;\n\nimport com.didispace.web.ComputeController;\nimport org.junit.Before;\nimport org.junit.Test;\nimpo"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/eureka-feign/pom.xml",
    "chars": 2079,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/FeignApplication.java",
    "chars": 487,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/service/ComputeClient.java",
    "chars": 551,
    "preview": "package com.didispace.service;\n\nimport org.springframework.cloud.netflix.feign.FeignClient;\nimport org.springframework.w"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/service/ComputeClientHystrix.java",
    "chars": 361,
    "preview": "package com.didispace.service;\n\nimport org.springframework.stereotype.Component;\nimport org.springframework.web.bind.ann"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/web/ConsumerController.java",
    "chars": 565,
    "preview": "package com.didispace.web;\n\nimport com.didispace.service.ComputeClient;\nimport org.springframework.beans.factory.annotat"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/eureka-ribbon/pom.xml",
    "chars": 2054,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/RibbonApplication.java",
    "chars": 758,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/service/ComputeService.java",
    "chars": 632,
    "preview": "package com.didispace.service;\n\nimport com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;\nimport org.spring"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/web/ConsumerController.java",
    "chars": 723,
    "preview": "package com.didispace.web;\n\nimport com.didispace.service.ComputeService;\nimport com.netflix.hystrix.contrib.javanica.ann"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/eureka-server/pom.xml",
    "chars": 1661,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/eureka-server/src/main/java/com/didispace/Application.java",
    "chars": 425,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-3/eureka-server/src/main/resources/application.properties",
    "chars": 206,
    "preview": "server.port=1111\n#eureka.instance.hostname=localhost\n\neureka.client.register-with-eureka=false\neureka.client.fetch-regis"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-client/pom.xml",
    "chars": 1785,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-client/src/main/java/com/didispace/Application.java",
    "chars": 330,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-client/src/main/java/com/didispace/web/TestController.java",
    "chars": 610,
    "preview": "package com.didispace.web;\n\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.cloud."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-client/src/main/resources/bootstrap.properties",
    "chars": 136,
    "preview": "spring.application.name=didispace\nspring.cloud.config.profile=dev\nspring.cloud.config.uri=http://localhost:7001/\n\nserver"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-repo/didispace-dev.properties",
    "chars": 16,
    "preview": "from=git-dev-1.0"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-repo/didispace-prod.properties",
    "chars": 17,
    "preview": "from=git-prod-1.0"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-repo/didispace-test.properties",
    "chars": 17,
    "preview": "from=git-test-1.0"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-repo/didispace.properties",
    "chars": 21,
    "preview": "from=git-default-1.0\n"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-server/pom.xml",
    "chars": 1653,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/java/com/didispace/Application.java",
    "chars": 417,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/application.properties",
    "chars": 355,
    "preview": "spring.application.name=config-server\nserver.port=7001\n\n# git\nspring.cloud.config.server.git.uri=http://git.oschina.net/"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/didispace-dev.properties",
    "chars": 14,
    "preview": "from=local-dev"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/didispace-prod.properties",
    "chars": 15,
    "preview": "from=local-prod"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/didispace-test.properties",
    "chars": 15,
    "preview": "from=local-test"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/didispace.properties",
    "chars": 10,
    "preview": "from=local"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/api-gateway/pom.xml",
    "chars": 1629,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/api-gateway/src/main/java/com/didispace/Application.java",
    "chars": 578,
    "preview": "package com.didispace;\n\nimport com.didispace.filter.AccessFilter;\nimport org.springframework.boot.builder.SpringApplicat"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/api-gateway/src/main/java/com/didispace/filter/AccessFilter.java",
    "chars": 1180,
    "preview": "package com.didispace.filter;\n\nimport com.netflix.zuul.ZuulFilter;\nimport com.netflix.zuul.context.RequestContext;\nimpor"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/api-gateway/src/main/resources/application.properties",
    "chars": 393,
    "preview": "spring.application.name=api-gateway\nserver.port=5555\n\n# routes to serviceId\nzuul.routes.api-a.path=/api-a/**\nzuul.routes"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/eureka-server/pom.xml",
    "chars": 1661,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/eureka-server/src/main/java/com/didispace/Application.java",
    "chars": 425,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/eureka-server/src/main/resources/application.properties",
    "chars": 206,
    "preview": "server.port=1111\n#eureka.instance.hostname=localhost\n\neureka.client.register-with-eureka=false\neureka.client.fetch-regis"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/service-A/pom.xml",
    "chars": 1644,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/service-A/src/main/java/com/didispace/ComputeServiceApplication.java",
    "chars": 454,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/service-A/src/main/java/com/didispace/web/ComputeController.java",
    "chars": 1074,
    "preview": "package com.didispace.web;\n\nimport org.apache.log4j.Logger;\nimport org.springframework.beans.factory.annotation.Autowire"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/service-A/src/main/resources/application.properties",
    "chars": 121,
    "preview": "spring.application.name=service-A\n\nserver.port=2222\n\neureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/\n"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/service-A/src/test/java/com/didispace/ApplicationTests.java",
    "chars": 1243,
    "preview": "package com.didispace;\n\nimport com.didispace.web.ComputeController;\nimport org.junit.Before;\nimport org.junit.Test;\nimpo"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/service-B/pom.xml",
    "chars": 1644,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/service-B/src/main/java/com/didispace/ComputeServiceApplication.java",
    "chars": 454,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/service-B/src/main/java/com/didispace/web/ComputeController.java",
    "chars": 1074,
    "preview": "package com.didispace.web;\n\nimport org.apache.log4j.Logger;\nimport org.springframework.beans.factory.annotation.Autowire"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/service-B/src/main/resources/application.properties",
    "chars": 121,
    "preview": "spring.application.name=service-B\n\nserver.port=3333\n\neureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/\n"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-5/service-B/src/test/java/com/didispace/ApplicationTests.java",
    "chars": 901,
    "preview": "package com.didispace;\n\nimport com.didispace.web.ComputeController;\nimport org.junit.Before;\nimport org.junit.Test;\nimpo"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-6/compute-service/pom.xml",
    "chars": 1656,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-6/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java",
    "chars": 454,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-6/compute-service/src/main/java/com/didispace/web/ComputeController.java",
    "chars": 1044,
    "preview": "package com.didispace.web;\n\nimport org.apache.log4j.Logger;\nimport org.springframework.beans.factory.annotation.Autowire"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-6/compute-service/src/main/resources/application.properties",
    "chars": 147,
    "preview": "spring.application.name=compute-service\n\nserver.port=2222\n\neureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-6/compute-service/src/test/java/com/didispace/ApplicationTests.java",
    "chars": 1420,
    "preview": "package com.didispace;\n\nimport com.didispace.web.ComputeController;\nimport org.junit.Before;\nimport org.junit.Test;\nimpo"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-6/eureka-server/pom.xml",
    "chars": 1500,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-6/eureka-server/src/main/java/com/didispace/Application.java",
    "chars": 425,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-6/eureka-server/src/main/resources/application-peer1.properties",
    "chars": 149,
    "preview": "spring.application.name=eureka-server\nserver.port=1111\neureka.instance.hostname=peer1\n\neureka.client.serviceUrl.defaultZ"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-6/eureka-server/src/main/resources/application-peer2.properties",
    "chars": 149,
    "preview": "spring.application.name=eureka-server\nserver.port=1112\neureka.instance.hostname=peer2\n\neureka.client.serviceUrl.defaultZ"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-client-eureka/pom.xml",
    "chars": 2294,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-client-eureka/src/main/java/com/didispace/Application.java",
    "chars": 426,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-client-eureka/src/main/java/com/didispace/web/TestController.java",
    "chars": 616,
    "preview": "package com.didispace.web;\n\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.cloud."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-client-eureka/src/main/resources/bootstrap.properties",
    "chars": 410,
    "preview": "spring.application.name=didispace\nserver.port=7002\n\neureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/\n\n"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-client-eureka-kafka/pom.xml",
    "chars": 2307,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-client-eureka-kafka/src/main/java/com/didispace/Application.java",
    "chars": 426,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-client-eureka-kafka/src/main/java/com/didispace/web/TestController.java",
    "chars": 616,
    "preview": "package com.didispace.web;\n\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.cloud."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-client-eureka-kafka/src/main/resources/bootstrap.properties",
    "chars": 441,
    "preview": "spring.application.name=didispace\nserver.port=7002\n\neureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/\n\n"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-repo/didispace-dev.properties",
    "chars": 16,
    "preview": "from=git-dev-3.0"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-repo/didispace-prod.properties",
    "chars": 17,
    "preview": "from=git-prod-1.0"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-repo/didispace-test.properties",
    "chars": 17,
    "preview": "from=git-test-1.0"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-repo/didispace.properties",
    "chars": 21,
    "preview": "from=git-default-1.0\n"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/pom.xml",
    "chars": 1778,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/java/com/didispace/Application.java",
    "chars": 513,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/application.properties",
    "chars": 386,
    "preview": "spring.application.name=config-server\nserver.port=7001\n\neureka.client.serviceUrl.defaultZone=http://localhost:1111/eurek"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/didispace-dev.properties",
    "chars": 14,
    "preview": "from=local-dev"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/didispace-prod.properties",
    "chars": 15,
    "preview": "from=local-prod"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/didispace-test.properties",
    "chars": 15,
    "preview": "from=local-test"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/didispace.properties",
    "chars": 10,
    "preview": "from=local"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/pom.xml",
    "chars": 1791,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/java/com/didispace/Application.java",
    "chars": 513,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/application.properties",
    "chars": 506,
    "preview": "spring.application.name=config-server\nserver.port=7001\n\neureka.client.serviceUrl.defaultZone=http://localhost:1111/eurek"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace-dev.properties",
    "chars": 14,
    "preview": "from=local-dev"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace-prod.properties",
    "chars": 15,
    "preview": "from=local-prod"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace-test.properties",
    "chars": 15,
    "preview": "from=local-test"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace.properties",
    "chars": 10,
    "preview": "from=local"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-client-eureka/pom.xml",
    "chars": 2022,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-client-eureka/src/main/java/com/didispace/Application.java",
    "chars": 426,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-client-eureka/src/main/java/com/didispace/web/TestController.java",
    "chars": 616,
    "preview": "package com.didispace.web;\n\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.cloud."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-client-eureka/src/main/resources/bootstrap.properties",
    "chars": 283,
    "preview": "spring.application.name=didispace\nserver.port=7002\n\neureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/\n\n"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-repo/didispace-dev.properties",
    "chars": 16,
    "preview": "from=git-dev-1.0"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-repo/didispace-prod.properties",
    "chars": 17,
    "preview": "from=git-prod-1.0"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-repo/didispace-test.properties",
    "chars": 17,
    "preview": "from=git-test-1.0"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-repo/didispace.properties",
    "chars": 21,
    "preview": "from=git-default-1.0\n"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/pom.xml",
    "chars": 1641,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/java/com/didispace/Application.java",
    "chars": 513,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/application.properties",
    "chars": 394,
    "preview": "spring.application.name=config-server\nserver.port=7001\n\neureka.client.serviceUrl.defaultZone=http://localhost:1111/eurek"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/didispace-dev.properties",
    "chars": 14,
    "preview": "from=local-dev"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/didispace-prod.properties",
    "chars": 15,
    "preview": "from=local-prod"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/didispace-test.properties",
    "chars": 15,
    "preview": "from=local-test"
  },
  {
    "path": "1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/didispace.properties",
    "chars": 10,
    "preview": "from=local"
  },
  {
    "path": "1-Brixton版教程示例/README.md",
    "chars": 2388,
    "preview": "# Spring Cloud教程\n\n本项目内容为Spring Cloud教程的程序样例。如您觉得该项目对您有用,欢迎点击右上方的**Star**按钮,给予支持!!\n\n- 我的博客:http://blog.didispace.com\n- **"
  },
  {
    "path": "2-Dalston版教程示例/README.md",
    "chars": 3407,
    "preview": "# Spring Cloud教程\n\n本项目内容为Spring Cloud教程的程序样例。如您觉得该项目对您有用,欢迎点击右上方的**Star**按钮,给予支持!!\n\n- 我的博客:http://blog.didispace.com\n- **"
  },
  {
    "path": "2-Dalston版教程示例/api-gateway/pom.xml",
    "chars": 1450,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/api-gateway/src/main/java/com/didispace/Application.java",
    "chars": 406,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.builder.SpringApplicationBuilder;\nimport org.springframework.clo"
  },
  {
    "path": "2-Dalston版教程示例/api-gateway/src/main/resources/application.yaml",
    "chars": 327,
    "preview": "spring:\n  application:\n    name: api-gateway\n\nserver:\n  port: 1101\n\nzuul:\n  routes:\n#  single-instance\n    api-a:\n      "
  },
  {
    "path": "2-Dalston版教程示例/api-gateway-with-eureka/pom.xml",
    "chars": 1609,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/api-gateway-with-eureka/src/main/java/com/didispace/AccessFilter.java",
    "chars": 1160,
    "preview": "package com.didispace;\n\nimport com.netflix.zuul.ZuulFilter;\nimport com.netflix.zuul.context.RequestContext;\nimport org.s"
  },
  {
    "path": "2-Dalston版教程示例/api-gateway-with-eureka/src/main/java/com/didispace/Application.java",
    "chars": 406,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.builder.SpringApplicationBuilder;\nimport org.springframework.clo"
  },
  {
    "path": "2-Dalston版教程示例/api-gateway-with-eureka/src/main/resources/application.yaml",
    "chars": 232,
    "preview": "spring:\n  application:\n    name: api-gateway\n\nserver:\n  port: 1101\n\nzuul:\n  routes:\n    api-a:\n      path: /api-a/**\n   "
  },
  {
    "path": "2-Dalston版教程示例/config-client/pom.xml",
    "chars": 1720,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/config-client/src/main/java/com/didispace/Application.java",
    "chars": 355,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "2-Dalston版教程示例/config-client/src/main/resources/bootstrap.yml",
    "chars": 168,
    "preview": "spring:\n  application:\n    name: config-client\n  cloud:\n    config:\n      uri: http://localhost:1201/\n      profile: def"
  },
  {
    "path": "2-Dalston版教程示例/config-server-git/pom.xml",
    "chars": 1626,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/config-server-git/src/main/java/com/didispace/Application.java",
    "chars": 417,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "2-Dalston版教程示例/config-server-git/src/main/resources/application.yml",
    "chars": 255,
    "preview": "spring:\n  application:\n    name: config-server\n  cloud:\n    config:\n      server:\n        git:\n          uri: http://git"
  },
  {
    "path": "2-Dalston版教程示例/consul-client/pom.xml",
    "chars": 1733,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/consul-client/src/main/java/com/didispace/Application.java",
    "chars": 426,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "2-Dalston版教程示例/consul-client/src/main/java/com/didispace/DcController.java",
    "chars": 697,
    "preview": "package com.didispace;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.cloud."
  },
  {
    "path": "2-Dalston版教程示例/consul-client/src/main/resources/application.properties",
    "chars": 121,
    "preview": "spring.application.name=consul-client\nserver.port=2001\n\nspring.cloud.consul.host=localhost\nspring.cloud.consul.port=8500"
  },
  {
    "path": "2-Dalston版教程示例/consul-consumer/pom.xml",
    "chars": 2065,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/consul-consumer/src/main/java/com/didispace/Application.java",
    "chars": 608,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "2-Dalston版教程示例/consul-consumer/src/main/java/com/didispace/DcController.java",
    "chars": 967,
    "preview": "package com.didispace;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.cloud."
  },
  {
    "path": "2-Dalston版教程示例/consul-consumer/src/main/resources/application.properties",
    "chars": 168,
    "preview": "spring.application.name=consul-consumer\nserver.port=2101\n\nspring.cloud.consul.host=localhost\nspring.cloud.consul.port=85"
  },
  {
    "path": "2-Dalston版教程示例/eureka-client/pom.xml",
    "chars": 1751,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/eureka-client/src/main/java/com/didispace/Application.java",
    "chars": 426,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "2-Dalston版教程示例/eureka-client/src/main/java/com/didispace/DcController.java",
    "chars": 697,
    "preview": "package com.didispace;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.cloud."
  },
  {
    "path": "2-Dalston版教程示例/eureka-client/src/main/resources/application.properties",
    "chars": 473,
    "preview": "spring.application.name=eureka-client\nserver.port=2001\n\neureka.client.serviceUrl.defaultZone=http://localhost:1001/eurek"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer/pom.xml",
    "chars": 2055,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer/src/main/java/com/didispace/Application.java",
    "chars": 608,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer/src/main/java/com/didispace/DcController.java",
    "chars": 967,
    "preview": "package com.didispace;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.cloud."
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer/src/main/resources/application.properties",
    "chars": 170,
    "preview": "spring.application.name=eureka-consumer\nserver.port=2101\n\neureka.client.serviceUrl.defaultZone=http://localhost:1001/eur"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-feign/pom.xml",
    "chars": 2229,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-feign/src/main/java/com/didispace/Application.java",
    "chars": 513,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-feign/src/main/java/com/didispace/DcClient.java",
    "chars": 332,
    "preview": "package com.didispace;\n\nimport org.springframework.cloud.netflix.feign.FeignClient;\nimport org.springframework.web.bind."
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-feign/src/main/java/com/didispace/DcController.java",
    "chars": 473,
    "preview": "package com.didispace;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.web.bi"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-feign/src/main/resources/application.properties",
    "chars": 170,
    "preview": "spring.application.name=eureka-consumer\nserver.port=2101\n\neureka.client.serviceUrl.defaultZone=http://localhost:1001/eur"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-feign-hystrix/pom.xml",
    "chars": 2411,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/Application.java",
    "chars": 513,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/DcClient.java",
    "chars": 374,
    "preview": "package com.didispace;\n\nimport org.springframework.cloud.netflix.feign.FeignClient;\nimport org.springframework.web.bind."
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/DcClientFallback.java",
    "chars": 298,
    "preview": "package com.didispace;\n\nimport org.springframework.stereotype.Component;\n\n/**\n * @author 翟永超\n * @create 2017/6/24.\n * @b"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/DcController.java",
    "chars": 473,
    "preview": "package com.didispace;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.web.bi"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/resources/application.properties",
    "chars": 198,
    "preview": "spring.application.name=eureka-consumer\nserver.port=2101\n\neureka.client.serviceUrl.defaultZone=http://localhost:1001/eur"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-ribbon/pom.xml",
    "chars": 2232,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-ribbon/src/main/java/com/didispace/Application.java",
    "chars": 690,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-ribbon/src/main/java/com/didispace/DcController.java",
    "chars": 580,
    "preview": "package com.didispace;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.web.bi"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-ribbon/src/main/resources/application.properties",
    "chars": 170,
    "preview": "spring.application.name=eureka-consumer\nserver.port=2101\n\neureka.client.serviceUrl.defaultZone=http://localhost:1001/eur"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-ribbon-hystrix/pom.xml",
    "chars": 2414,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-ribbon-hystrix/src/main/java/com/didispace/Application.java",
    "chars": 853,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-ribbon-hystrix/src/main/java/com/didispace/DcController.java",
    "chars": 1131,
    "preview": "package com.didispace;\n\nimport com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;\nimport com.netflix.ribbon"
  },
  {
    "path": "2-Dalston版教程示例/eureka-consumer-ribbon-hystrix/src/main/resources/application.properties",
    "chars": 185,
    "preview": "spring.application.name=eureka-consumer-ribbon-hystrix\nserver.port=2101\n\neureka.client.serviceUrl.defaultZone=http://loc"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-api/pom.xml",
    "chars": 1285,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-api/src/main/java/com/didispace/api/HelloService.java",
    "chars": 351,
    "preview": "package com.didispace.api;\n\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bi"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-client/pom.xml",
    "chars": 1738,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-client/src/main/java/com/didispace/api/impl/Application.java",
    "chars": 689,
    "preview": "package com.didispace.api.impl;\n\nimport com.didispace.api.HelloService;\nimport org.springframework.boot.autoconfigure.Sp"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-client/src/main/resources/application.properties",
    "chars": 135,
    "preview": "spring.application.name=eureka-feign-client\nserver.port=2101\n\neureka.client.serviceUrl.defaultZone=http://eureka.didispa"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-consumer/pom.xml",
    "chars": 1876,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-consumer/src/main/java/com/didispace/api/consumer/Application.java",
    "chars": 1120,
    "preview": "package com.didispace.api.consumer;\n\nimport com.didispace.api.HelloService;\nimport org.springframework.beans.factory.ann"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-consumer/src/main/resources/application.properties",
    "chars": 137,
    "preview": "spring.application.name=eureka-feign-consumer\nserver.port=2102\n\neureka.client.serviceUrl.defaultZone=http://eureka.didis"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-upload-client/pom.xml",
    "chars": 2509,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-upload-client/src/main/java/com/didispace/api/consumer/Application.java",
    "chars": 539,
    "preview": "package com.didispace.api.consumer;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.spr"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-upload-client/src/main/java/com/didispace/api/consumer/UploadService.java",
    "chars": 988,
    "preview": "package com.didispace.api.consumer;\n\nimport feign.codec.Encoder;\nimport feign.form.spring.SpringFormEncoder;\nimport org."
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-upload-client/src/main/resources/application.properties",
    "chars": 143,
    "preview": "spring.application.name=eureka-feign-upload-client\nserver.port=10002\n\neureka.client.serviceUrl.defaultZone=http://eureka"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-upload-client/src/test/java/com/didispace/api/consumer/UploadTester.java",
    "chars": 1607,
    "preview": "package com.didispace.api.consumer;\n\nimport lombok.SneakyThrows;\nimport lombok.extern.slf4j.Slf4j;\nimport org.apache.com"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-upload-client/upload.txt",
    "chars": 7,
    "preview": "aaa\nbbb"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-upload-server/pom.xml",
    "chars": 1746,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-upload-server/src/main/java/com/didispace/api/consumer/Application.java",
    "chars": 1112,
    "preview": "package com.didispace.api.consumer;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.spr"
  },
  {
    "path": "2-Dalston版教程示例/eureka-feign-upload-server/src/main/resources/application.properties",
    "chars": 143,
    "preview": "spring.application.name=eureka-feign-upload-server\nserver.port=10001\n\neureka.client.serviceUrl.defaultZone=http://eureka"
  },
  {
    "path": "2-Dalston版教程示例/eureka-server/pom.xml",
    "chars": 1627,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/eureka-server/src/main/java/com/didispace/Application.java",
    "chars": 425,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "2-Dalston版教程示例/eureka-server/src/main/resources/application-peer1.properties",
    "chars": 153,
    "preview": "spring.application.name=eureka-server\nserver.port=1001\n\neureka.instance.hostname=peer1\neureka.client.serviceUrl.defaultZ"
  },
  {
    "path": "2-Dalston版教程示例/eureka-server/src/main/resources/application-peer2.properties",
    "chars": 153,
    "preview": "spring.application.name=eureka-server\nserver.port=1002\n\neureka.instance.hostname=peer2\neureka.client.serviceUrl.defaultZ"
  },
  {
    "path": "2-Dalston版教程示例/eureka-server/src/main/resources/application.properties",
    "chars": 266,
    "preview": "spring.application.name=eureka-server\nserver.port=1001\n\neureka.instance.hostname=localhost\neureka.client.register-with-e"
  },
  {
    "path": "2-Dalston版教程示例/hystrix-collapser-consumer/pom.xml",
    "chars": 2173,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/hystrix-collapser-consumer/src/main/java/com/didispace/Application.java",
    "chars": 769,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "2-Dalston版教程示例/hystrix-collapser-consumer/src/main/java/com/didispace/UserService.java",
    "chars": 1580,
    "preview": "package com.didispace;\n\nimport com.netflix.hystrix.contrib.javanica.annotation.HystrixCollapser;\nimport com.netflix.hyst"
  },
  {
    "path": "2-Dalston版教程示例/hystrix-collapser-consumer/src/main/resources/application.properties",
    "chars": 138,
    "preview": "spring.application.name=hystrix-collapser-consumer\nserver.port=2002\n\neureka.client.serviceUrl.defaultZone=http://localho"
  },
  {
    "path": "2-Dalston版教程示例/hystrix-collapser-consumer/src/test/java/CollapserTest.java",
    "chars": 1259,
    "preview": "import com.didispace.Application;\nimport com.didispace.UserService;\nimport lombok.extern.slf4j.Slf4j;\nimport org.junit.A"
  },
  {
    "path": "2-Dalston版教程示例/hystrix-collapser-provider/pom.xml",
    "chars": 1883,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/hystrix-collapser-provider/src/main/java/com/didispace/Application.java",
    "chars": 426,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework."
  },
  {
    "path": "2-Dalston版教程示例/hystrix-collapser-provider/src/main/java/com/didispace/UserController.java",
    "chars": 1228,
    "preview": "package com.didispace;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.web.bind.annotation.*;\n\nimport java"
  },
  {
    "path": "2-Dalston版教程示例/hystrix-collapser-provider/src/main/resources/application.properties",
    "chars": 138,
    "preview": "spring.application.name=hystrix-collapser-provider\nserver.port=2001\n\neureka.client.serviceUrl.defaultZone=http://localho"
  },
  {
    "path": "2-Dalston版教程示例/hystrix-dashboard/pom.xml",
    "chars": 1517,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "2-Dalston版教程示例/hystrix-dashboard/src/main/java/com/didispace/HystrixDashboardApplication.java",
    "chars": 429,
    "preview": "package com.didispace;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.cloud.client.Sprin"
  }
]

// ... and 510 more files (download for full content)

About this extraction

This page contains the full source code of the dyc87112/SpringCloud-Learning GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 710 files (2.6 MB), approximately 731.3k tokens, and a symbol index with 3280 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!