commit e691d5c331e396e7a0a359411a259ee7e3009d1c Author: GARCIIAa <15301164@bjtu.edu.cn> Date: Thu Apr 23 15:42:55 2020 +0800 version 1.0 diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..7c6cf10 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..35f724f --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/group1-project.iml b/.idea/group1-project.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/group1-project.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__antlr_antlr_2_7_7.xml b/.idea/libraries/Maven__antlr_antlr_2_7_7.xml new file mode 100644 index 0000000..b8d93d8 --- /dev/null +++ b/.idea/libraries/Maven__antlr_antlr_2_7_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml b/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml new file mode 100644 index 0000000..30ff5cb --- /dev/null +++ b/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_11.xml b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_11.xml new file mode 100644 index 0000000..c6ea67e --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_11.xml b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_11.xml new file mode 100644 index 0000000..f538e36 --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_classmate_1_3_4.xml b/.idea/libraries/Maven__com_fasterxml_classmate_1_3_4.xml new file mode 100644 index 0000000..33c30b4 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_classmate_1_3_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml new file mode 100644 index 0000000..49b4ec7 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_8_10.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_8_10.xml new file mode 100644 index 0000000..5d9d662 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_8_10.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_8_10.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_8_10.xml new file mode 100644 index 0000000..df5cb22 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_8_10.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_dataformat_jackson_dataformat_xml_2_8_10.xml b/.idea/libraries/Maven__com_fasterxml_jackson_dataformat_jackson_dataformat_xml_2_8_10.xml new file mode 100644 index 0000000..dc55693 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_dataformat_jackson_dataformat_xml_2_8_10.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_afterburner_2_8_10.xml b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_afterburner_2_8_10.xml new file mode 100644 index 0000000..9f10588 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_afterburner_2_8_10.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_jaxb_annotations_2_8_10.xml b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_jaxb_annotations_2_8_10.xml new file mode 100644 index 0000000..4274b9d --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_jaxb_annotations_2_8_10.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_uuid_java_uuid_generator_3_1_5.xml b/.idea/libraries/Maven__com_fasterxml_uuid_java_uuid_generator_3_1_5.xml new file mode 100644 index 0000000..a82aa72 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_uuid_java_uuid_generator_3_1_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_woodstox_woodstox_core_5_0_3.xml b/.idea/libraries/Maven__com_fasterxml_woodstox_woodstox_core_5_0_3.xml new file mode 100644 index 0000000..c08dcae --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_woodstox_woodstox_core_5_0_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_1.xml b/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_1.xml new file mode 100644 index 0000000..09453c9 --- /dev/null +++ b/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_code_gson_gson_2_8_2.xml b/.idea/libraries/Maven__com_google_code_gson_gson_2_8_2.xml new file mode 100644 index 0000000..49c91be --- /dev/null +++ b/.idea/libraries/Maven__com_google_code_gson_gson_2_8_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_guava_guava_18_0.xml b/.idea/libraries/Maven__com_google_guava_guava_18_0.xml new file mode 100644 index 0000000..bbd71d7 --- /dev/null +++ b/.idea/libraries/Maven__com_google_guava_guava_18_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_inject_guice_4_1_0.xml b/.idea/libraries/Maven__com_google_inject_guice_4_1_0.xml new file mode 100644 index 0000000..e956197 --- /dev/null +++ b/.idea/libraries/Maven__com_google_inject_guice_4_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_2_0.xml b/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_2_0.xml new file mode 100644 index 0000000..578b079 --- /dev/null +++ b/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_2_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_archaius_archaius_core_0_7_4.xml b/.idea/libraries/Maven__com_netflix_archaius_archaius_core_0_7_4.xml new file mode 100644 index 0000000..e5a8232 --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_archaius_archaius_core_0_7_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_eureka_eureka_client_1_7_0.xml b/.idea/libraries/Maven__com_netflix_eureka_eureka_client_1_7_0.xml new file mode 100644 index 0000000..89ed6f5 --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_eureka_eureka_client_1_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_eureka_eureka_core_1_7_0.xml b/.idea/libraries/Maven__com_netflix_eureka_eureka_core_1_7_0.xml new file mode 100644 index 0000000..52fb825 --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_eureka_eureka_core_1_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_hystrix_hystrix_core_1_5_12.xml b/.idea/libraries/Maven__com_netflix_hystrix_hystrix_core_1_5_12.xml new file mode 100644 index 0000000..8f6dabe --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_hystrix_hystrix_core_1_5_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_hystrix_hystrix_javanica_1_5_12.xml b/.idea/libraries/Maven__com_netflix_hystrix_hystrix_javanica_1_5_12.xml new file mode 100644 index 0000000..be8a561 --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_hystrix_hystrix_javanica_1_5_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_hystrix_hystrix_metrics_event_stream_1_5_12.xml b/.idea/libraries/Maven__com_netflix_hystrix_hystrix_metrics_event_stream_1_5_12.xml new file mode 100644 index 0000000..9f01c4f --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_hystrix_hystrix_metrics_event_stream_1_5_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_hystrix_hystrix_serialization_1_5_12.xml b/.idea/libraries/Maven__com_netflix_hystrix_hystrix_serialization_1_5_12.xml new file mode 100644 index 0000000..d71dae3 --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_hystrix_hystrix_serialization_1_5_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_commons_util_0_1_1.xml b/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_commons_util_0_1_1.xml new file mode 100644 index 0000000..9854a4d --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_commons_util_0_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_eventbus_0_3_0.xml b/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_eventbus_0_3_0.xml new file mode 100644 index 0000000..85ba8c9 --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_eventbus_0_3_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_infix_0_3_0.xml b/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_infix_0_3_0.xml new file mode 100644 index 0000000..c8b512e --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_infix_0_3_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_statistics_0_1_1.xml b/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_statistics_0_1_1.xml new file mode 100644 index 0000000..09c6f6e --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_netflix_commons_netflix_statistics_0_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_ribbon_ribbon_2_2_4.xml b/.idea/libraries/Maven__com_netflix_ribbon_ribbon_2_2_4.xml new file mode 100644 index 0000000..7dd8bae --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_ribbon_ribbon_2_2_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_ribbon_ribbon_core_2_2_4.xml b/.idea/libraries/Maven__com_netflix_ribbon_ribbon_core_2_2_4.xml new file mode 100644 index 0000000..7f8420a --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_ribbon_ribbon_core_2_2_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_ribbon_ribbon_eureka_2_2_4.xml b/.idea/libraries/Maven__com_netflix_ribbon_ribbon_eureka_2_2_4.xml new file mode 100644 index 0000000..0b069c0 --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_ribbon_ribbon_eureka_2_2_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_ribbon_ribbon_httpclient_2_2_4.xml b/.idea/libraries/Maven__com_netflix_ribbon_ribbon_httpclient_2_2_4.xml new file mode 100644 index 0000000..b81422c --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_ribbon_ribbon_httpclient_2_2_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_ribbon_ribbon_loadbalancer_2_2_4.xml b/.idea/libraries/Maven__com_netflix_ribbon_ribbon_loadbalancer_2_2_4.xml new file mode 100644 index 0000000..533f7ae --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_ribbon_ribbon_loadbalancer_2_2_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_ribbon_ribbon_transport_2_2_4.xml b/.idea/libraries/Maven__com_netflix_ribbon_ribbon_transport_2_2_4.xml new file mode 100644 index 0000000..2c1133d --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_ribbon_ribbon_transport_2_2_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_servo_servo_core_0_10_1.xml b/.idea/libraries/Maven__com_netflix_servo_servo_core_0_10_1.xml new file mode 100644 index 0000000..8e42a88 --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_servo_servo_core_0_10_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_servo_servo_internal_0_10_1.xml b/.idea/libraries/Maven__com_netflix_servo_servo_internal_0_10_1.xml new file mode 100644 index 0000000..74dfcbc --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_servo_servo_internal_0_10_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_netflix_zuul_zuul_core_1_3_0.xml b/.idea/libraries/Maven__com_netflix_zuul_zuul_core_1_3_0.xml new file mode 100644 index 0000000..04b3227 --- /dev/null +++ b/.idea/libraries/Maven__com_netflix_zuul_zuul_core_1_3_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_rabbitmq_amqp_client_4_1_0.xml b/.idea/libraries/Maven__com_rabbitmq_amqp_client_4_1_0.xml new file mode 100644 index 0000000..dddfc24 --- /dev/null +++ b/.idea/libraries/Maven__com_rabbitmq_amqp_client_4_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_rabbitmq_http_client_1_1_1_RELEASE.xml b/.idea/libraries/Maven__com_rabbitmq_http_client_1_1_1_RELEASE.xml new file mode 100644 index 0000000..9cd31db --- /dev/null +++ b/.idea/libraries/Maven__com_rabbitmq_http_client_1_1_1_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sun_jersey_contribs_jersey_apache_client4_1_19_1.xml b/.idea/libraries/Maven__com_sun_jersey_contribs_jersey_apache_client4_1_19_1.xml new file mode 100644 index 0000000..2061d8c --- /dev/null +++ b/.idea/libraries/Maven__com_sun_jersey_contribs_jersey_apache_client4_1_19_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sun_jersey_jersey_client_1_19_1.xml b/.idea/libraries/Maven__com_sun_jersey_jersey_client_1_19_1.xml new file mode 100644 index 0000000..2b077bc --- /dev/null +++ b/.idea/libraries/Maven__com_sun_jersey_jersey_client_1_19_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sun_jersey_jersey_core_1_19_1.xml b/.idea/libraries/Maven__com_sun_jersey_jersey_core_1_19_1.xml new file mode 100644 index 0000000..91d65b2 --- /dev/null +++ b/.idea/libraries/Maven__com_sun_jersey_jersey_core_1_19_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sun_jersey_jersey_server_1_19_1.xml b/.idea/libraries/Maven__com_sun_jersey_jersey_server_1_19_1.xml new file mode 100644 index 0000000..b4ad3de --- /dev/null +++ b/.idea/libraries/Maven__com_sun_jersey_jersey_server_1_19_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_sun_jersey_jersey_servlet_1_19_1.xml b/.idea/libraries/Maven__com_sun_jersey_jersey_servlet_1_19_1.xml new file mode 100644 index 0000000..943df5a --- /dev/null +++ b/.idea/libraries/Maven__com_sun_jersey_jersey_servlet_1_19_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_thoughtworks_xstream_xstream_1_4_9.xml b/.idea/libraries/Maven__com_thoughtworks_xstream_xstream_1_4_9.xml new file mode 100644 index 0000000..1922b11 --- /dev/null +++ b/.idea/libraries/Maven__com_thoughtworks_xstream_xstream_1_4_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml b/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml new file mode 100644 index 0000000..b8581a6 --- /dev/null +++ b/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml b/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml new file mode 100644 index 0000000..27424a1 --- /dev/null +++ b/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml b/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml new file mode 100644 index 0000000..13afda2 --- /dev/null +++ b/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_configuration_commons_configuration_1_8.xml b/.idea/libraries/Maven__commons_configuration_commons_configuration_1_8.xml new file mode 100644 index 0000000..772d6fe --- /dev/null +++ b/.idea/libraries/Maven__commons_configuration_commons_configuration_1_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_io_commons_io_2_4.xml b/.idea/libraries/Maven__commons_io_commons_io_2_4.xml new file mode 100644 index 0000000..bc2aad0 --- /dev/null +++ b/.idea/libraries/Maven__commons_io_commons_io_2_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_jxpath_commons_jxpath_1_3.xml b/.idea/libraries/Maven__commons_jxpath_commons_jxpath_1_3.xml new file mode 100644 index 0000000..1816895 --- /dev/null +++ b/.idea/libraries/Maven__commons_jxpath_commons_jxpath_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml b/.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml new file mode 100644 index 0000000..2ec8376 --- /dev/null +++ b/.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml b/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml new file mode 100644 index 0000000..14681ee --- /dev/null +++ b/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_github_openfeign_feign_core_9_5_0.xml b/.idea/libraries/Maven__io_github_openfeign_feign_core_9_5_0.xml new file mode 100644 index 0000000..aa7944c --- /dev/null +++ b/.idea/libraries/Maven__io_github_openfeign_feign_core_9_5_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_github_openfeign_feign_hystrix_9_5_0.xml b/.idea/libraries/Maven__io_github_openfeign_feign_hystrix_9_5_0.xml new file mode 100644 index 0000000..1cddd78 --- /dev/null +++ b/.idea/libraries/Maven__io_github_openfeign_feign_hystrix_9_5_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_github_openfeign_feign_slf4j_9_5_0.xml b/.idea/libraries/Maven__io_github_openfeign_feign_slf4j_9_5_0.xml new file mode 100644 index 0000000..57db686 --- /dev/null +++ b/.idea/libraries/Maven__io_github_openfeign_feign_slf4j_9_5_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_netty_netty_buffer_4_0_27_Final.xml b/.idea/libraries/Maven__io_netty_netty_buffer_4_0_27_Final.xml new file mode 100644 index 0000000..ad32e95 --- /dev/null +++ b/.idea/libraries/Maven__io_netty_netty_buffer_4_0_27_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_netty_netty_codec_4_0_27_Final.xml b/.idea/libraries/Maven__io_netty_netty_codec_4_0_27_Final.xml new file mode 100644 index 0000000..84e99a4 --- /dev/null +++ b/.idea/libraries/Maven__io_netty_netty_codec_4_0_27_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_netty_netty_codec_http_4_0_27_Final.xml b/.idea/libraries/Maven__io_netty_netty_codec_http_4_0_27_Final.xml new file mode 100644 index 0000000..cab5893 --- /dev/null +++ b/.idea/libraries/Maven__io_netty_netty_codec_http_4_0_27_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_netty_netty_common_4_0_27_Final.xml b/.idea/libraries/Maven__io_netty_netty_common_4_0_27_Final.xml new file mode 100644 index 0000000..045bf26 --- /dev/null +++ b/.idea/libraries/Maven__io_netty_netty_common_4_0_27_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_netty_netty_handler_4_0_27_Final.xml b/.idea/libraries/Maven__io_netty_netty_handler_4_0_27_Final.xml new file mode 100644 index 0000000..4f6d30b --- /dev/null +++ b/.idea/libraries/Maven__io_netty_netty_handler_4_0_27_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_netty_netty_transport_4_0_27_Final.xml b/.idea/libraries/Maven__io_netty_netty_transport_4_0_27_Final.xml new file mode 100644 index 0000000..82b77c1 --- /dev/null +++ b/.idea/libraries/Maven__io_netty_netty_transport_4_0_27_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_netty_netty_transport_native_epoll_4_0_27_Final.xml b/.idea/libraries/Maven__io_netty_netty_transport_native_epoll_4_0_27_Final.xml new file mode 100644 index 0000000..94ab026 --- /dev/null +++ b/.idea/libraries/Maven__io_netty_netty_transport_native_epoll_4_0_27_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_reactivex_rxjava_1_2_0.xml b/.idea/libraries/Maven__io_reactivex_rxjava_1_2_0.xml new file mode 100644 index 0000000..27eb537 --- /dev/null +++ b/.idea/libraries/Maven__io_reactivex_rxjava_1_2_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_reactivex_rxnetty_0_4_9.xml b/.idea/libraries/Maven__io_reactivex_rxnetty_0_4_9.xml new file mode 100644 index 0000000..82613f4 --- /dev/null +++ b/.idea/libraries/Maven__io_reactivex_rxnetty_0_4_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_reactivex_rxnetty_contexts_0_4_9.xml b/.idea/libraries/Maven__io_reactivex_rxnetty_contexts_0_4_9.xml new file mode 100644 index 0000000..1ce62ff --- /dev/null +++ b/.idea/libraries/Maven__io_reactivex_rxnetty_contexts_0_4_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__io_reactivex_rxnetty_servo_0_4_9.xml b/.idea/libraries/Maven__io_reactivex_rxnetty_servo_0_4_9.xml new file mode 100644 index 0000000..f9da5f7 --- /dev/null +++ b/.idea/libraries/Maven__io_reactivex_rxnetty_servo_0_4_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_inject_javax_inject_1.xml b/.idea/libraries/Maven__javax_inject_javax_inject_1.xml new file mode 100644 index 0000000..93cf65a --- /dev/null +++ b/.idea/libraries/Maven__javax_inject_javax_inject_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_transaction_javax_transaction_api_1_2.xml b/.idea/libraries/Maven__javax_transaction_javax_transaction_api_1_2.xml new file mode 100644 index 0000000..5f032d2 --- /dev/null +++ b/.idea/libraries/Maven__javax_transaction_javax_transaction_api_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_validation_validation_api_1_1_0_Final.xml b/.idea/libraries/Maven__javax_validation_validation_api_1_1_0_Final.xml new file mode 100644 index 0000000..940ce73 --- /dev/null +++ b/.idea/libraries/Maven__javax_validation_validation_api_1_1_0_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_ws_rs_jsr311_api_1_1_1.xml b/.idea/libraries/Maven__javax_ws_rs_jsr311_api_1_1_1.xml new file mode 100644 index 0000000..a0c4d76 --- /dev/null +++ b/.idea/libraries/Maven__javax_ws_rs_jsr311_api_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_xml_stream_stax_api_1_0_2.xml b/.idea/libraries/Maven__javax_xml_stream_stax_api_1_0_2.xml new file mode 100644 index 0000000..2a4dd7a --- /dev/null +++ b/.idea/libraries/Maven__javax_xml_stream_stax_api_1_0_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__joda_time_joda_time_2_9_9.xml b/.idea/libraries/Maven__joda_time_joda_time_2_9_9.xml new file mode 100644 index 0000000..a468f58 --- /dev/null +++ b/.idea/libraries/Maven__joda_time_joda_time_2_9_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml new file mode 100644 index 0000000..d411041 --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_39.xml b/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_39.xml new file mode 100644 index 0000000..18e6ec9 --- /dev/null +++ b/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_39.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_minidev_accessors_smart_1_1.xml b/.idea/libraries/Maven__net_minidev_accessors_smart_1_1.xml new file mode 100644 index 0000000..88d626e --- /dev/null +++ b/.idea/libraries/Maven__net_minidev_accessors_smart_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_minidev_json_smart_2_2_1.xml b/.idea/libraries/Maven__net_minidev_json_smart_2_2_1.xml new file mode 100644 index 0000000..6c692c8 --- /dev/null +++ b/.idea/libraries/Maven__net_minidev_json_smart_2_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_antlr_antlr_runtime_3_4.xml b/.idea/libraries/Maven__org_antlr_antlr_runtime_3_4.xml new file mode 100644 index 0000000..fd0779a --- /dev/null +++ b/.idea/libraries/Maven__org_antlr_antlr_runtime_3_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_antlr_stringtemplate_3_2_1.xml b/.idea/libraries/Maven__org_antlr_stringtemplate_3_2_1.xml new file mode 100644 index 0000000..6998bac --- /dev/null +++ b/.idea/libraries/Maven__org_antlr_stringtemplate_3_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_activemq_activemq_broker_5_14_5.xml b/.idea/libraries/Maven__org_apache_activemq_activemq_broker_5_14_5.xml new file mode 100644 index 0000000..3a42804 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_activemq_activemq_broker_5_14_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_activemq_activemq_client_5_14_5.xml b/.idea/libraries/Maven__org_apache_activemq_activemq_client_5_14_5.xml new file mode 100644 index 0000000..ac024a5 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_activemq_activemq_client_5_14_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_activemq_activemq_openwire_legacy_5_14_5.xml b/.idea/libraries/Maven__org_apache_activemq_activemq_openwire_legacy_5_14_5.xml new file mode 100644 index 0000000..57af9ea --- /dev/null +++ b/.idea/libraries/Maven__org_apache_activemq_activemq_openwire_legacy_5_14_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_1.xml b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_1.xml new file mode 100644 index 0000000..32bfe3b --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_math_2_2.xml b/.idea/libraries/Maven__org_apache_commons_commons_math_2_2.xml new file mode 100644 index 0000000..8f3e315 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_math_2_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_geronimo_specs_geronimo_j2ee_management_1_1_spec_1_0_1.xml b/.idea/libraries/Maven__org_apache_geronimo_specs_geronimo_j2ee_management_1_1_spec_1_0_1.xml new file mode 100644 index 0000000..20819c0 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_geronimo_specs_geronimo_j2ee_management_1_1_spec_1_0_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_geronimo_specs_geronimo_jms_1_1_spec_1_1_1.xml b/.idea/libraries/Maven__org_apache_geronimo_specs_geronimo_jms_1_1_spec_1_1_1.xml new file mode 100644 index 0000000..c30276b --- /dev/null +++ b/.idea/libraries/Maven__org_apache_geronimo_specs_geronimo_jms_1_1_spec_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_5.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_5.xml new file mode 100644 index 0000000..e4eb38b --- /dev/null +++ b/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_9.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_9.xml new file mode 100644 index 0000000..7f14d45 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_27.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_27.xml new file mode 100644 index 0000000..88b62c1 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_27.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_27.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_27.xml new file mode 100644 index 0000000..a6aeaf1 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_27.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_27.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_27.xml new file mode 100644 index 0000000..fefedc8 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_27.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_tomcat_annotations_api_8_5_27.xml b/.idea/libraries/Maven__org_apache_tomcat_tomcat_annotations_api_8_5_27.xml new file mode 100644 index 0000000..5a86b53 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_tomcat_annotations_api_8_5_27.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_tomcat_jdbc_8_5_27.xml b/.idea/libraries/Maven__org_apache_tomcat_tomcat_jdbc_8_5_27.xml new file mode 100644 index 0000000..74857b1 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_tomcat_jdbc_8_5_27.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_tomcat_juli_8_5_27.xml b/.idea/libraries/Maven__org_apache_tomcat_tomcat_juli_8_5_27.xml new file mode 100644 index 0000000..df3122a --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_tomcat_juli_8_5_27.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_8_13.xml b/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_8_13.xml new file mode 100644 index 0000000..d46e30a --- /dev/null +++ b/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_8_13.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_assertj_assertj_core_2_6_0.xml b/.idea/libraries/Maven__org_assertj_assertj_core_2_6_0.xml new file mode 100644 index 0000000..58bdc9a --- /dev/null +++ b/.idea/libraries/Maven__org_assertj_assertj_core_2_6_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_axonframework_axon_amqp_3_2.xml b/.idea/libraries/Maven__org_axonframework_axon_amqp_3_2.xml new file mode 100644 index 0000000..95f890e --- /dev/null +++ b/.idea/libraries/Maven__org_axonframework_axon_amqp_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_axonframework_axon_core_3_2.xml b/.idea/libraries/Maven__org_axonframework_axon_core_3_2.xml new file mode 100644 index 0000000..5c989d2 --- /dev/null +++ b/.idea/libraries/Maven__org_axonframework_axon_core_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_axonframework_axon_distributed_commandbus_springcloud_3_2.xml b/.idea/libraries/Maven__org_axonframework_axon_distributed_commandbus_springcloud_3_2.xml new file mode 100644 index 0000000..bed3037 --- /dev/null +++ b/.idea/libraries/Maven__org_axonframework_axon_distributed_commandbus_springcloud_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_axonframework_axon_spring_3_2.xml b/.idea/libraries/Maven__org_axonframework_axon_spring_3_2.xml new file mode 100644 index 0000000..40cdf3a --- /dev/null +++ b/.idea/libraries/Maven__org_axonframework_axon_spring_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_axonframework_axon_spring_boot_autoconfigure_3_2.xml b/.idea/libraries/Maven__org_axonframework_axon_spring_boot_autoconfigure_3_2.xml new file mode 100644 index 0000000..a50e558 --- /dev/null +++ b/.idea/libraries/Maven__org_axonframework_axon_spring_boot_autoconfigure_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_axonframework_axon_spring_boot_starter_3_2.xml b/.idea/libraries/Maven__org_axonframework_axon_spring_boot_starter_3_2.xml new file mode 100644 index 0000000..82e0910 --- /dev/null +++ b/.idea/libraries/Maven__org_axonframework_axon_spring_boot_starter_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_bouncycastle_bcpkix_jdk15on_1_55.xml b/.idea/libraries/Maven__org_bouncycastle_bcpkix_jdk15on_1_55.xml new file mode 100644 index 0000000..5d81708 --- /dev/null +++ b/.idea/libraries/Maven__org_bouncycastle_bcpkix_jdk15on_1_55.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_55.xml b/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_55.xml new file mode 100644 index 0000000..a2576d9 --- /dev/null +++ b/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_55.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_codehaus_jettison_jettison_1_3_7.xml b/.idea/libraries/Maven__org_codehaus_jettison_jettison_1_3_7.xml new file mode 100644 index 0000000..ca43e29 --- /dev/null +++ b/.idea/libraries/Maven__org_codehaus_jettison_jettison_1_3_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_codehaus_woodstox_stax2_api_3_1_4.xml b/.idea/libraries/Maven__org_codehaus_woodstox_stax2_api_3_1_4.xml new file mode 100644 index 0000000..b510642 --- /dev/null +++ b/.idea/libraries/Maven__org_codehaus_woodstox_stax2_api_3_1_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_codehaus_woodstox_woodstox_core_asl_4_4_1.xml b/.idea/libraries/Maven__org_codehaus_woodstox_woodstox_core_asl_4_4_1.xml new file mode 100644 index 0000000..2997967 --- /dev/null +++ b/.idea/libraries/Maven__org_codehaus_woodstox_woodstox_core_asl_4_4_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_freemarker_freemarker_2_3_27_incubating.xml b/.idea/libraries/Maven__org_freemarker_freemarker_2_3_27_incubating.xml new file mode 100644 index 0000000..a8f7879 --- /dev/null +++ b/.idea/libraries/Maven__org_freemarker_freemarker_2_3_27_incubating.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_fusesource_hawtbuf_hawtbuf_1_11.xml b/.idea/libraries/Maven__org_fusesource_hawtbuf_hawtbuf_1_11.xml new file mode 100644 index 0000000..6c98814 --- /dev/null +++ b/.idea/libraries/Maven__org_fusesource_hawtbuf_hawtbuf_1_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 0000000..f58bbc1 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml new file mode 100644 index 0000000..78dbe45 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hdrhistogram_HdrHistogram_2_1_9.xml b/.idea/libraries/Maven__org_hdrhistogram_HdrHistogram_2_1_9.xml new file mode 100644 index 0000000..04cc804 --- /dev/null +++ b/.idea/libraries/Maven__org_hdrhistogram_HdrHistogram_2_1_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_5_0_1_Final.xml b/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_5_0_1_Final.xml new file mode 100644 index 0000000..ce34f42 --- /dev/null +++ b/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_5_0_1_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hibernate_hibernate_core_5_0_12_Final.xml b/.idea/libraries/Maven__org_hibernate_hibernate_core_5_0_12_Final.xml new file mode 100644 index 0000000..34893a4 --- /dev/null +++ b/.idea/libraries/Maven__org_hibernate_hibernate_core_5_0_12_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hibernate_hibernate_entitymanager_5_0_12_Final.xml b/.idea/libraries/Maven__org_hibernate_hibernate_entitymanager_5_0_12_Final.xml new file mode 100644 index 0000000..27dda1e --- /dev/null +++ b/.idea/libraries/Maven__org_hibernate_hibernate_entitymanager_5_0_12_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hibernate_hibernate_validator_5_3_6_Final.xml b/.idea/libraries/Maven__org_hibernate_hibernate_validator_5_3_6_Final.xml new file mode 100644 index 0000000..3c0ddd4 --- /dev/null +++ b/.idea/libraries/Maven__org_hibernate_hibernate_validator_5_3_6_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hibernate_javax_persistence_hibernate_jpa_2_1_api_1_0_0_Final.xml b/.idea/libraries/Maven__org_hibernate_javax_persistence_hibernate_jpa_2_1_api_1_0_0_Final.xml new file mode 100644 index 0000000..6492b2b --- /dev/null +++ b/.idea/libraries/Maven__org_hibernate_javax_persistence_hibernate_jpa_2_1_api_1_0_0_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_javassist_javassist_3_21_0_GA.xml b/.idea/libraries/Maven__org_javassist_javassist_3_21_0_GA.xml new file mode 100644 index 0000000..09c4cf0 --- /dev/null +++ b/.idea/libraries/Maven__org_javassist_javassist_3_21_0_GA.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jboss_jandex_2_0_0_Final.xml b/.idea/libraries/Maven__org_jboss_jandex_2_0_0_Final.xml new file mode 100644 index 0000000..a74dcfd --- /dev/null +++ b/.idea/libraries/Maven__org_jboss_jandex_2_0_0_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_1_Final.xml b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_1_Final.xml new file mode 100644 index 0000000..6dc7a37 --- /dev/null +++ b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_1_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jvnet_animal_sniffer_annotation_1_0.xml b/.idea/libraries/Maven__org_jvnet_animal_sniffer_annotation_1_0.xml new file mode 100644 index 0000000..b1afcf5 --- /dev/null +++ b/.idea/libraries/Maven__org_jvnet_animal_sniffer_annotation_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mockito_mockito_core_1_10_19.xml b/.idea/libraries/Maven__org_mockito_mockito_core_1_10_19.xml new file mode 100644 index 0000000..a523703 --- /dev/null +++ b/.idea/libraries/Maven__org_mockito_mockito_core_1_10_19.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml b/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml new file mode 100644 index 0000000..7ab319b --- /dev/null +++ b/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml b/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml new file mode 100644 index 0000000..da69f6c --- /dev/null +++ b/.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml b/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml new file mode 100644 index 0000000..0bf8cf2 --- /dev/null +++ b/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_4_0.xml b/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_4_0.xml new file mode 100644 index 0000000..f86d2c8 --- /dev/null +++ b/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_4_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml b/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml new file mode 100644 index 0000000..bae9949 --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml new file mode 100644 index 0000000..6073e53 --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_log4j_over_slf4j_1_7_25.xml b/.idea/libraries/Maven__org_slf4j_log4j_over_slf4j_1_7_25.xml new file mode 100644 index 0000000..a14ac63 --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_log4j_over_slf4j_1_7_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml new file mode 100644 index 0000000..20e8163 --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_amqp_spring_amqp_1_7_6_RELEASE.xml b/.idea/libraries/Maven__org_springframework_amqp_spring_amqp_1_7_6_RELEASE.xml new file mode 100644 index 0000000..3e5815b --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_amqp_spring_amqp_1_7_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_amqp_spring_rabbit_1_7_6_RELEASE.xml b/.idea/libraries/Maven__org_springframework_amqp_spring_rabbit_1_7_6_RELEASE.xml new file mode 100644 index 0000000..cc6d839 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_amqp_spring_rabbit_1_7_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_1_5_10_RELEASE.xml new file mode 100644 index 0000000..862504f --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_actuator_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_actuator_1_5_10_RELEASE.xml new file mode 100644 index 0000000..ad08ef1 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_actuator_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_10_RELEASE.xml new file mode 100644 index 0000000..f64fa47 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_1_5_10_RELEASE.xml new file mode 100644 index 0000000..9a329bf --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_activemq_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_activemq_1_5_10_RELEASE.xml new file mode 100644 index 0000000..d409509 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_activemq_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_actuator_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_actuator_1_5_10_RELEASE.xml new file mode 100644 index 0000000..6d4f17e --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_actuator_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_amqp_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_amqp_1_5_10_RELEASE.xml new file mode 100644 index 0000000..9b77f64 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_amqp_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_1_5_10_RELEASE.xml new file mode 100644 index 0000000..e4d2ad2 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_1_5_10_RELEASE.xml new file mode 100644 index 0000000..74d6d84 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_data_jpa_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_freemarker_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_freemarker_1_5_10_RELEASE.xml new file mode 100644 index 0000000..daaffff --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_freemarker_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_1_5_10_RELEASE.xml new file mode 100644 index 0000000..b8cb42e --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_1_5_10_RELEASE.xml new file mode 100644 index 0000000..ebedfdb --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_security_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_security_1_5_10_RELEASE.xml new file mode 100644 index 0000000..7e25b4d --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_security_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_1_5_10_RELEASE.xml new file mode 100644 index 0000000..6cebd81 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_1_5_10_RELEASE.xml new file mode 100644 index 0000000..dee86b6 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_1_5_10_RELEASE.xml new file mode 100644 index 0000000..325be36 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_1_5_10_RELEASE.xml new file mode 100644 index 0000000..bfaf36d --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_1_5_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_1_5_10_RELEASE.xml new file mode 100644 index 0000000..e52925f --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_1_5_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_commons_1_3_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_commons_1_3_2_RELEASE.xml new file mode 100644 index 0000000..008edf2 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_commons_1_3_2_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_context_1_3_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_context_1_3_2_RELEASE.xml new file mode 100644 index 0000000..e656cc5 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_context_1_3_2_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_core_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_core_1_4_3_RELEASE.xml new file mode 100644 index 0000000..113839e --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_core_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_eureka_client_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_eureka_client_1_4_3_RELEASE.xml new file mode 100644 index 0000000..60bda4a --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_eureka_client_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_eureka_server_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_eureka_server_1_4_3_RELEASE.xml new file mode 100644 index 0000000..414423a --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_eureka_server_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_hystrix_dashboard_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_hystrix_dashboard_1_4_3_RELEASE.xml new file mode 100644 index 0000000..fcfb552 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_netflix_hystrix_dashboard_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_1_3_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_1_3_2_RELEASE.xml new file mode 100644 index 0000000..df84c72 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_1_3_2_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_eureka_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_eureka_1_4_3_RELEASE.xml new file mode 100644 index 0000000..d4202fc --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_eureka_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_eureka_server_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_eureka_server_1_4_3_RELEASE.xml new file mode 100644 index 0000000..64ad6fe --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_eureka_server_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_feign_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_feign_1_4_3_RELEASE.xml new file mode 100644 index 0000000..37b758f --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_feign_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_hystrix_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_hystrix_1_4_3_RELEASE.xml new file mode 100644 index 0000000..d81c1e2 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_hystrix_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_hystrix_dashboard_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_hystrix_dashboard_1_4_3_RELEASE.xml new file mode 100644 index 0000000..8997528 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_hystrix_dashboard_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_archaius_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_archaius_1_4_3_RELEASE.xml new file mode 100644 index 0000000..dc0eb4a --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_archaius_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_eureka_client_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_eureka_client_1_4_3_RELEASE.xml new file mode 100644 index 0000000..a74719e --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_eureka_client_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_eureka_server_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_eureka_server_1_4_3_RELEASE.xml new file mode 100644 index 0000000..80b4a47 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_eureka_server_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_hystrix_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_hystrix_1_4_3_RELEASE.xml new file mode 100644 index 0000000..4505db2 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_hystrix_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_hystrix_dashboard_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_hystrix_dashboard_1_4_3_RELEASE.xml new file mode 100644 index 0000000..27fb908 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_hystrix_dashboard_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_ribbon_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_ribbon_1_4_3_RELEASE.xml new file mode 100644 index 0000000..11bc7cc --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_ribbon_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_zuul_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_zuul_1_4_3_RELEASE.xml new file mode 100644 index 0000000..b83e841 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_netflix_zuul_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_openfeign_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_openfeign_1_4_3_RELEASE.xml new file mode 100644 index 0000000..7b6da87 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_openfeign_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_zuul_1_4_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_zuul_1_4_3_RELEASE.xml new file mode 100644 index 0000000..c261da7 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_cloud_spring_cloud_starter_zuul_1_4_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_commons_1_13_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_commons_1_13_10_RELEASE.xml new file mode 100644 index 0000000..5360026 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_data_spring_data_commons_1_13_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_1_11_10_RELEASE.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_1_11_10_RELEASE.xml new file mode 100644 index 0000000..77ef83c --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_data_spring_data_jpa_1_11_10_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_retry_spring_retry_1_2_2_RELEASE.xml b/.idea/libraries/Maven__org_springframework_retry_spring_retry_1_2_2_RELEASE.xml new file mode 100644 index 0000000..1b2836b --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_retry_spring_retry_1_2_2_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_security_spring_security_config_4_2_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_security_spring_security_config_4_2_4_RELEASE.xml new file mode 100644 index 0000000..c8abd01 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_security_spring_security_config_4_2_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_security_spring_security_core_4_2_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_security_spring_security_core_4_2_4_RELEASE.xml new file mode 100644 index 0000000..a740c7b --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_security_spring_security_core_4_2_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_security_spring_security_crypto_4_2_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_security_spring_security_crypto_4_2_4_RELEASE.xml new file mode 100644 index 0000000..5a6a9f4 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_security_spring_security_crypto_4_2_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_security_spring_security_rsa_1_0_3_RELEASE.xml b/.idea/libraries/Maven__org_springframework_security_spring_security_rsa_1_0_3_RELEASE.xml new file mode 100644 index 0000000..a17b0ca --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_security_spring_security_rsa_1_0_3_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_security_spring_security_web_4_2_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_security_spring_security_web_4_2_4_RELEASE.xml new file mode 100644 index 0000000..54796c2 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_security_spring_security_web_4_2_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_aop_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_aop_4_3_14_RELEASE.xml new file mode 100644 index 0000000..9cb4293 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_aop_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_aspects_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_aspects_4_3_14_RELEASE.xml new file mode 100644 index 0000000..6ff1f54 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_aspects_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_beans_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_beans_4_3_14_RELEASE.xml new file mode 100644 index 0000000..913057e --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_beans_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_context_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_context_4_3_14_RELEASE.xml new file mode 100644 index 0000000..9a1ad94 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_context_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_context_support_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_context_support_4_3_14_RELEASE.xml new file mode 100644 index 0000000..53a9500 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_context_support_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_core_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_core_4_3_14_RELEASE.xml new file mode 100644 index 0000000..4fb202b --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_core_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_expression_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_expression_4_3_14_RELEASE.xml new file mode 100644 index 0000000..2afefb8 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_expression_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_jdbc_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_jdbc_4_3_14_RELEASE.xml new file mode 100644 index 0000000..52faf73 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_jdbc_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_jms_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_jms_4_3_14_RELEASE.xml new file mode 100644 index 0000000..f0238fd --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_jms_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_messaging_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_messaging_4_3_14_RELEASE.xml new file mode 100644 index 0000000..7342eaa --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_messaging_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_orm_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_orm_4_3_14_RELEASE.xml new file mode 100644 index 0000000..cd77798 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_orm_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_test_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_test_4_3_14_RELEASE.xml new file mode 100644 index 0000000..f90438e --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_test_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_tx_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_tx_4_3_14_RELEASE.xml new file mode 100644 index 0000000..942f93e --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_tx_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_web_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_web_4_3_14_RELEASE.xml new file mode 100644 index 0000000..13a39e0 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_web_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_webmvc_4_3_14_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_webmvc_4_3_14_RELEASE.xml new file mode 100644 index 0000000..b1855ad --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_webmvc_4_3_14_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_webjars_d3js_3_4_11.xml b/.idea/libraries/Maven__org_webjars_d3js_3_4_11.xml new file mode 100644 index 0000000..8782b09 --- /dev/null +++ b/.idea/libraries/Maven__org_webjars_d3js_3_4_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_webjars_jquery_2_1_1.xml b/.idea/libraries/Maven__org_webjars_jquery_2_1_1.xml new file mode 100644 index 0000000..643a421 --- /dev/null +++ b/.idea/libraries/Maven__org_webjars_jquery_2_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_yaml_snakeyaml_1_17.xml b/.idea/libraries/Maven__org_yaml_snakeyaml_1_17.xml new file mode 100644 index 0000000..20e2920 --- /dev/null +++ b/.idea/libraries/Maven__org_yaml_snakeyaml_1_17.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__stax_stax_api_1_0_1.xml b/.idea/libraries/Maven__stax_stax_api_1_0_1.xml new file mode 100644 index 0000000..0b13335 --- /dev/null +++ b/.idea/libraries/Maven__stax_stax_api_1_0_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__xmlpull_xmlpull_1_1_3_1.xml b/.idea/libraries/Maven__xmlpull_xmlpull_1_1_3_1.xml new file mode 100644 index 0000000..0f2d9ef --- /dev/null +++ b/.idea/libraries/Maven__xmlpull_xmlpull_1_1_3_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__xpp3_xpp3_1_1_4c.xml b/.idea/libraries/Maven__xpp3_xpp3_1_1_4c.xml new file mode 100644 index 0000000..26694b3 --- /dev/null +++ b/.idea/libraries/Maven__xpp3_xpp3_1_1_4c.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__xpp3_xpp3_min_1_1_4c.xml b/.idea/libraries/Maven__xpp3_xpp3_min_1_1_4c.xml new file mode 100644 index 0000000..6726a2d --- /dev/null +++ b/.idea/libraries/Maven__xpp3_xpp3_min_1_1_4c.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..0aa275b --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,20 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..d156816 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..7809b35 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1587580101628 + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..86e9668 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +This is our assignment project for service based architect. \ No newline at end of file diff --git a/order-query/.gitignore b/order-query/.gitignore new file mode 100644 index 0000000..2af7cef --- /dev/null +++ b/order-query/.gitignore @@ -0,0 +1,24 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ \ No newline at end of file diff --git a/order-query/.mvn/wrapper/maven-wrapper.jar b/order-query/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..9cc84ea Binary files /dev/null and b/order-query/.mvn/wrapper/maven-wrapper.jar differ diff --git a/order-query/.mvn/wrapper/maven-wrapper.properties b/order-query/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..9dda3b6 --- /dev/null +++ b/order-query/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.2/apache-maven-3.5.2-bin.zip diff --git a/order-query/mvnw b/order-query/mvnw new file mode 100644 index 0000000..5bf251c --- /dev/null +++ b/order-query/mvnw @@ -0,0 +1,225 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +echo $MAVEN_PROJECTBASEDIR +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/order-query/mvnw.cmd b/order-query/mvnw.cmd new file mode 100644 index 0000000..019bd74 --- /dev/null +++ b/order-query/mvnw.cmd @@ -0,0 +1,143 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/order-query/pom.xml b/order-query/pom.xml new file mode 100644 index 0000000..ee524fe --- /dev/null +++ b/order-query/pom.xml @@ -0,0 +1,109 @@ + + + 4.0.0 + + com.group1.hw.axon + order-query + 0.0.1-SNAPSHOT + jar + + order-query + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.5.10.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + Edgware.SR2 + + + + + org.axonframework + axon-spring-boot-starter + 3.2 + + + org.axonframework + axon-distributed-commandbus-springcloud + 3.2 + + + org.axonframework + axon-amqp + 3.2 + + + org.springframework.boot + spring-boot-starter-amqp + + + org.springframework.cloud + spring-cloud-starter-eureka + + + org.springframework.boot + spring-boot-starter-activemq + + + org.springframework.boot + spring-boot-starter-data-jpa + + + mysql + mysql-connector-java + 5.1.39 + + + org.springframework.boot + spring-boot-starter-web + + + com.fasterxml.uuid + java-uuid-generator + 3.1.5 + + + + org.springframework.boot + spring-boot-starter-test + test + + + com.group1.hw.axon + service + 1.0-SNAPSHOT + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/order-query/src/main/java/com/group1/hw/order/OrderController.java b/order-query/src/main/java/com/group1/hw/order/OrderController.java new file mode 100644 index 0000000..38ba356 --- /dev/null +++ b/order-query/src/main/java/com/group1/hw/order/OrderController.java @@ -0,0 +1,32 @@ +package com.group1.hw.order; + +import com.group1.hw.order.query.OrderEntity; +import com.group1.hw.order.query.OrderEntityRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * Created by mavlarn on 2018/5/28. + */ +@RestController +@RequestMapping("/orders") +public class OrderController { + + @Autowired + private OrderEntityRepository orderEntityRepository; + + @GetMapping("") + public List get() { + return orderEntityRepository.findAll(); + } + + @GetMapping("/{orderId}") + public OrderEntity get(@PathVariable String orderId) { + return orderEntityRepository.findOne(orderId); + } +} diff --git a/order-query/src/main/java/com/group1/hw/order/OrderQueryApplication.java b/order-query/src/main/java/com/group1/hw/order/OrderQueryApplication.java new file mode 100644 index 0000000..4a81116 --- /dev/null +++ b/order-query/src/main/java/com/group1/hw/order/OrderQueryApplication.java @@ -0,0 +1,14 @@ +package com.group1.hw.order; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +@SpringBootApplication +@EnableDiscoveryClient +public class OrderQueryApplication { + + public static void main(String[] args) { + SpringApplication.run(OrderQueryApplication.class, args); + } +} diff --git a/order-query/src/main/java/com/group1/hw/order/config/AxonConfig.java b/order-query/src/main/java/com/group1/hw/order/config/AxonConfig.java new file mode 100644 index 0000000..6a958a5 --- /dev/null +++ b/order-query/src/main/java/com/group1/hw/order/config/AxonConfig.java @@ -0,0 +1,61 @@ +package com.group1.hw.order.config; + +import com.rabbitmq.client.Channel; +import org.axonframework.amqp.eventhandling.spring.SpringAMQPMessageSource; +import org.axonframework.config.EventHandlingConfiguration; +import org.axonframework.serialization.Serializer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.core.*; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +/** + * Created by mavlarn on 2018/6/4. + */ +@Configuration +public class AxonConfig { + + private static final Logger LOG = LoggerFactory.getLogger(AxonConfig.class); + + @Value("${axon.amqp.exchange}") + private String exchangeName; + + @Bean + public Queue orderQueue(){ + return new Queue("order",true); + } + + @Bean + public Exchange exchange(){ + return ExchangeBuilder.topicExchange(exchangeName).durable(true).build(); + } + + @Bean + public Binding orderQueueBinding() { + return BindingBuilder.bind(orderQueue()).to(exchange()).with("com.group1.hw.order.event.#").noargs(); + } + + @Bean + public SpringAMQPMessageSource orderMessageSource(Serializer serializer) { + return new SpringAMQPMessageSource(serializer){ + @RabbitListener(queues = "order") + @Override + public void onMessage(Message message, Channel channel) throws Exception { + LOG.debug("Message received: {}", message); + super.onMessage(message, channel); + } + }; + } + + @Autowired + public void configure(EventHandlingConfiguration ehConfig, SpringAMQPMessageSource userMessageSource, + SpringAMQPMessageSource ticketMessageSource, SpringAMQPMessageSource orderMessageSource) { + ehConfig.registerSubscribingEventProcessor("OrderEventProcessor", c -> orderMessageSource); + } + +} diff --git a/order-query/src/main/java/com/group1/hw/order/query/OrderEntity.java b/order-query/src/main/java/com/group1/hw/order/query/OrderEntity.java new file mode 100644 index 0000000..7be0d53 --- /dev/null +++ b/order-query/src/main/java/com/group1/hw/order/query/OrderEntity.java @@ -0,0 +1,106 @@ +package com.group1.hw.order.query; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.time.ZonedDateTime; + +/** + * Created by mavlarn on 2018/1/20. + */ +@Entity(name = "tb_customer_order") +public class OrderEntity { + + @Id + private String id; + + private String customerId; + + private String title; + + private String ticketId; + + private Double amount; + + private String status; + + private String reason; + + private ZonedDateTime createdDate; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getTicketId() { + return ticketId; + } + + public void setTicketId(String ticketId) { + this.ticketId = ticketId; + } + + public Double getAmount() { + return amount; + } + + public void setAmount(Double amount) { + this.amount = amount; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public ZonedDateTime getCreatedDate() { + return createdDate; + } + + public void setCreatedDate(ZonedDateTime createdDate) { + this.createdDate = createdDate; + } + + @Override + public String toString() { + return "Order{" + + "id=" + id + + ", customerId=" + customerId + + ", title='" + title + '\'' + + ", ticketId=" + ticketId + + ", amount=" + amount + + ", status='" + status + '\'' + + ", createdDate=" + createdDate + + '}'; + } +} diff --git a/order-query/src/main/java/com/group1/hw/order/query/OrderEntityRepository.java b/order-query/src/main/java/com/group1/hw/order/query/OrderEntityRepository.java new file mode 100644 index 0000000..8b57c69 --- /dev/null +++ b/order-query/src/main/java/com/group1/hw/order/query/OrderEntityRepository.java @@ -0,0 +1,9 @@ +package com.group1.hw.order.query; + +import org.springframework.data.jpa.repository.JpaRepository; + +/** + * Created by mavlarn on 2018/5/28. + */ +public interface OrderEntityRepository extends JpaRepository { +} diff --git a/order-query/src/main/java/com/group1/hw/order/query/OrderProjector.java b/order-query/src/main/java/com/group1/hw/order/query/OrderProjector.java new file mode 100644 index 0000000..468a04d --- /dev/null +++ b/order-query/src/main/java/com/group1/hw/order/query/OrderProjector.java @@ -0,0 +1,58 @@ +package com.group1.hw.order.query; + + +import com.group1.hw.user.event.saga.OrderPaidEvent; +import com.group1.hw.order.event.saga.OrderCreatedEvent; +import com.group1.hw.order.event.OrderFailedEvent; +import com.group1.hw.order.event.OrderFinishedEvent; +import org.axonframework.config.ProcessingGroup; +import org.axonframework.eventhandling.EventHandler; +import org.axonframework.eventsourcing.EventSourcingHandler; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * Created by mavlarn on 2018/5/22. + */ +@Service +@ProcessingGroup("OrderEventProcessor") +public class OrderProjector { + + @Autowired + private OrderEntityRepository repository; + + @EventHandler + public void on(OrderCreatedEvent event) { + OrderEntity order = new OrderEntity(); + order.setId(event.getOrderId()); + order.setCustomerId(event.getCustomerId()); + order.setTicketId(event.getTicketId()); + order.setAmount(event.getAmount()); + order.setCreatedDate(event.getCreatedDate()); + order.setTitle(event.getTitle()); + order.setStatus("NEW"); + repository.save(order); + } + + @EventSourcingHandler + public void onPaid(OrderPaidEvent event) { + OrderEntity order = repository.findOne(event.getOrderId()); + order.setStatus("PAID"); + repository.save(order); + } + + @EventSourcingHandler + public void onFinished(OrderFinishedEvent event) { + OrderEntity order = repository.findOne(event.getOrderId()); + order.setStatus("FINISH"); + repository.save(order); + } + + @EventSourcingHandler + public void onFailed(OrderFailedEvent event) { + OrderEntity order = repository.findOne(event.getOrderId()); + order.setStatus("FAILED"); + order.setReason(event.getReason()); + repository.save(order); + } +} diff --git a/order-query/src/main/resources/application.yml b/order-query/src/main/resources/application.yml new file mode 100644 index 0000000..e2b6139 --- /dev/null +++ b/order-query/src/main/resources/application.yml @@ -0,0 +1,33 @@ +server: + port: 18082 +spring: + application: + name: order-query + datasource: + url: jdbc:mysql://10.0.0.130:3306/order_query + username: root + password: 123456 + driver-class-name: com.mysql.jdbc.Driver + jpa: + hibernate: + ddl-auto: update + properties: + hibernate: + enable_lazy_load_no_trans: true + rabbitmq: + host: 10.0.0.130 + port: 5672 + username: guest + password: guest + virtual-host: docker-mq-vhost + +eureka: + client: + serviceUrl: + defaultZone: http://group1:111111@localhost:8761/eureka/ + +axon: + distributed: + enabled: true + amqp: + exchange: Group1.EventBus diff --git a/order-query/src/main/resources/logback-spring.xml b/order-query/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..1e59c9e --- /dev/null +++ b/order-query/src/main/resources/logback-spring.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/order-query/src/test/java/com/group1/hw/order/OrderQueryApplicationTests.java b/order-query/src/test/java/com/group1/hw/order/OrderQueryApplicationTests.java new file mode 100644 index 0000000..bdf152f --- /dev/null +++ b/order-query/src/test/java/com/group1/hw/order/OrderQueryApplicationTests.java @@ -0,0 +1,16 @@ +package com.group1.hw.order; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class OrderQueryApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/order/.gitignore b/order/.gitignore new file mode 100644 index 0000000..2af7cef --- /dev/null +++ b/order/.gitignore @@ -0,0 +1,24 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ \ No newline at end of file diff --git a/order/.mvn/wrapper/maven-wrapper.jar b/order/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..9cc84ea Binary files /dev/null and b/order/.mvn/wrapper/maven-wrapper.jar differ diff --git a/order/.mvn/wrapper/maven-wrapper.properties b/order/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..9dda3b6 --- /dev/null +++ b/order/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.2/apache-maven-3.5.2-bin.zip diff --git a/order/mvnw b/order/mvnw new file mode 100644 index 0000000..5bf251c --- /dev/null +++ b/order/mvnw @@ -0,0 +1,225 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +echo $MAVEN_PROJECTBASEDIR +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/order/mvnw.cmd b/order/mvnw.cmd new file mode 100644 index 0000000..019bd74 --- /dev/null +++ b/order/mvnw.cmd @@ -0,0 +1,143 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/order/pom.xml b/order/pom.xml new file mode 100644 index 0000000..ce5df29 --- /dev/null +++ b/order/pom.xml @@ -0,0 +1,114 @@ + + + 4.0.0 + + com.group1.hw.axon + order + 0.0.1-SNAPSHOT + jar + + order + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.5.10.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + Edgware.SR2 + + + + + com.group1.hw.axon + service + 1.0-SNAPSHOT + + + org.axonframework + axon-spring-boot-starter + 3.2 + + + org.axonframework + axon-distributed-commandbus-springcloud + 3.2 + + + org.axonframework + axon-amqp + 3.2 + + + org.springframework.boot + spring-boot-starter-amqp + + + org.springframework.cloud + spring-cloud-starter-eureka + + + org.springframework.boot + spring-boot-starter-activemq + + + org.springframework.boot + spring-boot-starter-data-jpa + + + mysql + mysql-connector-java + 5.1.39 + + + org.springframework.boot + spring-boot-starter-web + + + com.fasterxml.uuid + java-uuid-generator + 3.1.5 + + + + org.springframework.boot + spring-boot-starter-test + test + + + com.group1.hw.axon + service + 1.0-SNAPSHOT + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/order/src/main/java/com/group1/hw/order/Order.java b/order/src/main/java/com/group1/hw/order/Order.java new file mode 100644 index 0000000..6f52d64 --- /dev/null +++ b/order/src/main/java/com/group1/hw/order/Order.java @@ -0,0 +1,138 @@ +package com.group1.hw.order; + + +import com.group1.hw.order.command.OrderCreateCommand; +import com.group1.hw.order.command.OrderFailCommand; +import com.group1.hw.order.command.OrderFinishCommand; +import com.group1.hw.order.event.saga.OrderCreatedEvent; +import com.group1.hw.order.event.OrderFailedEvent; +import com.group1.hw.order.event.OrderFinishedEvent; +import org.axonframework.commandhandling.CommandHandler; +import org.axonframework.commandhandling.model.AggregateIdentifier; +import org.axonframework.eventsourcing.EventSourcingHandler; +import org.axonframework.spring.stereotype.Aggregate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.time.ZonedDateTime; + +import static org.axonframework.commandhandling.model.AggregateLifecycle.apply; + +/** + * Created by mavlarn on 2018/1/20. + */ +@Aggregate +public class Order { + + private static final Logger LOG = LoggerFactory.getLogger(Order.class); + + @AggregateIdentifier + private String id; + + private String customerId; + + private String title; + + private String ticketId; + + private Double amount; + + private String status; + + private String reason; + + private ZonedDateTime createdDate; + + public Order() { + } + + @CommandHandler + public Order(OrderCreateCommand command) { + apply(new OrderCreatedEvent(command.getOrderId(), command.getCustomerId(), command.getTitle(), command.getTicketId(), command.getAmount(), ZonedDateTime.now())); + } + + @CommandHandler + public void handleFinish(OrderFinishCommand command) { + apply(new OrderFinishedEvent(command.getOrderId())); + } + + @CommandHandler + public void handleFail(OrderFailCommand command) { + apply(new OrderFailedEvent(command.getOrderId(), command.getReason())); + } + + @EventSourcingHandler + public void onCreate(OrderCreatedEvent event) { + this.id = event.getOrderId(); + this.customerId = event.getCustomerId(); + this.title = event.getTitle(); + this.ticketId = event.getTicketId(); + this.amount = event.getAmount(); + this.status = "NEW"; + this.createdDate = event.getCreatedDate(); + LOG.info("Executed event:{}", event); + } + + @EventSourcingHandler + public void onFinished(OrderFinishedEvent event) { + this.status = "FINISH"; + LOG.info("Executed event:{}", event); + } + + @EventSourcingHandler + public void onFailed(OrderFailedEvent event) { + this.status = "FAILED"; + this.reason = event.getReason(); + LOG.info("Executed event:{}", event); + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCustomerId() { + return customerId; + } + + public String getTitle() { + return title; + } + + public String getTicketId() { + return ticketId; + } + + public Double getAmount() { + return amount; + } + + public String getStatus() { + return status; + } + + public String getReason() { + return reason; + } + + public ZonedDateTime getCreatedDate() { + return createdDate; + } + + @Override + public String toString() { + return "Order{" + + "id='" + id + '\'' + + ", customerId='" + customerId + '\'' + + ", title='" + title + '\'' + + ", ticketId='" + ticketId + '\'' + + ", amount=" + amount + + ", status='" + status + '\'' + + ", reason='" + reason + '\'' + + ", createdDate=" + createdDate + + '}'; + } +} diff --git a/order/src/main/java/com/group1/hw/order/OrderApplication.java b/order/src/main/java/com/group1/hw/order/OrderApplication.java new file mode 100644 index 0000000..d081850 --- /dev/null +++ b/order/src/main/java/com/group1/hw/order/OrderApplication.java @@ -0,0 +1,14 @@ +package com.group1.hw.order; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +@SpringBootApplication +@EnableDiscoveryClient +public class OrderApplication { + + public static void main(String[] args) { + SpringApplication.run(OrderApplication.class, args); + } +} diff --git a/order/src/main/java/com/group1/hw/order/OrderController.java b/order/src/main/java/com/group1/hw/order/OrderController.java new file mode 100644 index 0000000..9e2a9e9 --- /dev/null +++ b/order/src/main/java/com/group1/hw/order/OrderController.java @@ -0,0 +1,37 @@ +package com.group1.hw.order; + +import com.group1.hw.order.command.OrderCreateCommand; +import org.axonframework.commandhandling.callbacks.LoggingCallback; +import org.axonframework.commandhandling.gateway.CommandGateway; +import org.axonframework.queryhandling.QueryGateway; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.UUID; +import java.util.concurrent.ExecutionException; + +/** + * Created by mavlarn on 2018/5/28. + */ +@RestController +@RequestMapping("/orders") +public class OrderController { + + @Autowired + private CommandGateway commandGateway; + @Autowired + private QueryGateway queryGateway; + + @PostMapping("") + public void create(@RequestBody Order order) { + UUID orderId = UUID.randomUUID(); + OrderCreateCommand command = new OrderCreateCommand(orderId.toString(), order.getCustomerId(), + order.getTitle(), order.getTicketId(), order.getAmount()); + commandGateway.send(command, LoggingCallback.INSTANCE); + } + + @PostMapping("/{orderId}") + public Order get(@PathVariable String orderId) throws ExecutionException, InterruptedException { + return queryGateway.query(orderId, Order.class).get(); + } +} diff --git a/order/src/main/java/com/group1/hw/order/OrderManagementSaga.java b/order/src/main/java/com/group1/hw/order/OrderManagementSaga.java new file mode 100644 index 0000000..67c86d4 --- /dev/null +++ b/order/src/main/java/com/group1/hw/order/OrderManagementSaga.java @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2016. Axon Framework + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.group1.hw.order; + +import com.group1.hw.order.command.OrderFailCommand; +import com.group1.hw.order.command.OrderFinishCommand; +import com.group1.hw.order.event.OrderFailedEvent; +import com.group1.hw.order.event.OrderFinishedEvent; +import com.group1.hw.order.event.saga.OrderCreatedEvent; +import com.group1.hw.ticket.command.OrderTicketMoveCommand; +import com.group1.hw.ticket.command.OrderTicketPreserveCommand; +import com.group1.hw.ticket.command.OrderTicketUnlockCommand; +import com.group1.hw.ticket.event.saga.OrderTicketMovedEvent; +import com.group1.hw.ticket.event.saga.OrderTicketPreserveFailedEvent; +import com.group1.hw.ticket.event.saga.OrderTicketPreservedEvent; +import com.group1.hw.user.command.OrderPayCommand; +import com.group1.hw.user.event.saga.OrderPaidEvent; +import com.group1.hw.user.event.saga.OrderPayFailedEvent; +import org.axonframework.commandhandling.CommandBus; +import org.axonframework.commandhandling.callbacks.LoggingCallback; +import org.axonframework.eventhandling.saga.EndSaga; +import org.axonframework.eventhandling.saga.SagaEventHandler; +import org.axonframework.eventhandling.saga.StartSaga; +import org.axonframework.eventhandling.scheduling.EventScheduler; +import org.axonframework.eventhandling.scheduling.ScheduleToken; +import org.axonframework.spring.stereotype.Saga; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import java.time.Instant; + +import static org.axonframework.commandhandling.GenericCommandMessage.asCommandMessage; + +@Saga +public class OrderManagementSaga { + + private static final Logger LOG = LoggerFactory.getLogger(OrderManagementSaga.class); + + @Autowired + private transient CommandBus commandBus; + @Autowired + private transient EventScheduler eventScheduler; + + private String orderId; + private String customerId; + private String ticketId; + private Double amount; + + private ScheduleToken timeoutToken; + + @StartSaga + @SagaEventHandler(associationProperty = "orderId") + public void on(OrderCreatedEvent event) { + this.orderId = event.getOrderId(); + this.customerId = event.getCustomerId(); + this.ticketId = event.getTicketId(); + this.amount = event.getAmount(); + + timeoutToken = eventScheduler.schedule(Instant.now().plusSeconds(60), new OrderPayFailedEvent(this.orderId)); + + OrderTicketPreserveCommand command = new OrderTicketPreserveCommand(orderId, ticketId, customerId); + commandBus.dispatch(asCommandMessage(command), LoggingCallback.INSTANCE); + } + + @SagaEventHandler(associationProperty = "orderId") + public void on(OrderTicketPreservedEvent event) { + OrderPayCommand command = new OrderPayCommand(orderId, customerId, amount); + commandBus.dispatch(asCommandMessage(command), LoggingCallback.INSTANCE); + } + + @SagaEventHandler(associationProperty = "orderId") + @EndSaga + public void on(OrderTicketPreserveFailedEvent event) { + OrderFailCommand command = new OrderFailCommand(event.getOrderId(), "Preserve Failed"); + commandBus.dispatch(asCommandMessage(command), LoggingCallback.INSTANCE); + } + + @SagaEventHandler(associationProperty = "orderId") + public void on(OrderPaidEvent event) { + OrderTicketMoveCommand command = new OrderTicketMoveCommand(this.ticketId, this.orderId, this.customerId); + commandBus.dispatch(asCommandMessage(command), LoggingCallback.INSTANCE); + } + + @SagaEventHandler(associationProperty = "orderId") + public void on(OrderPayFailedEvent event) { + OrderTicketUnlockCommand command = new OrderTicketUnlockCommand(ticketId, customerId); + commandBus.dispatch(asCommandMessage(command), LoggingCallback.INSTANCE); + + OrderFailCommand failCommand = new OrderFailCommand(event.getOrderId(), "Pay Failed"); + commandBus.dispatch(asCommandMessage(failCommand), LoggingCallback.INSTANCE); + } + + @SagaEventHandler(associationProperty = "orderId") + public void on(OrderTicketMovedEvent event) { + OrderFinishCommand command = new OrderFinishCommand(orderId); + commandBus.dispatch(asCommandMessage(command), LoggingCallback.INSTANCE); + } + + @SagaEventHandler(associationProperty = "orderId") + @EndSaga + public void on(OrderFinishedEvent event) { + LOG.info("Order:{} finished.", event.getOrderId()); + if (this.timeoutToken != null) { + eventScheduler.cancelSchedule(this.timeoutToken); + } + } + + @SagaEventHandler(associationProperty = "orderId") + @EndSaga + public void on(OrderFailedEvent event) { + LOG.info("Order:{} failed.", event.getOrderId()); + if (this.timeoutToken != null) { + eventScheduler.cancelSchedule(this.timeoutToken); + } + } + +} diff --git a/order/src/main/java/com/group1/hw/order/command/OrderCreateCommand.java b/order/src/main/java/com/group1/hw/order/command/OrderCreateCommand.java new file mode 100644 index 0000000..4def579 --- /dev/null +++ b/order/src/main/java/com/group1/hw/order/command/OrderCreateCommand.java @@ -0,0 +1,45 @@ +package com.group1.hw.order.command; + +import org.axonframework.commandhandling.TargetAggregateIdentifier; + +/** + * Created by mavlarn on 2018/5/24. + */ +public class OrderCreateCommand { + + @TargetAggregateIdentifier + private String orderId; + + private String customerId; + private String title; + private String ticketId; + private Double amount; + + public OrderCreateCommand(String orderId, String customerId, String title, String ticketId, Double amount) { + this.orderId = orderId; + this.customerId = customerId; + this.title = title; + this.ticketId = ticketId; + this.amount = amount; + } + + public String getOrderId() { + return orderId; + } + + public String getCustomerId() { + return customerId; + } + + public String getTitle() { + return title; + } + + public String getTicketId() { + return ticketId; + } + + public Double getAmount() { + return amount; + } +} diff --git a/order/src/main/java/com/group1/hw/order/command/OrderFailCommand.java b/order/src/main/java/com/group1/hw/order/command/OrderFailCommand.java new file mode 100644 index 0000000..01648b3 --- /dev/null +++ b/order/src/main/java/com/group1/hw/order/command/OrderFailCommand.java @@ -0,0 +1,27 @@ +package com.group1.hw.order.command; + +import org.axonframework.commandhandling.TargetAggregateIdentifier; + +/** + * Created by mavlarn on 2018/5/24. + */ +public class OrderFailCommand { + + @TargetAggregateIdentifier + private String orderId; + + private String reason; + + public OrderFailCommand(String orderId, String reason) { + this.orderId = orderId; + this.reason = reason; + } + + public String getOrderId() { + return orderId; + } + + public String getReason() { + return reason; + } +} diff --git a/order/src/main/java/com/group1/hw/order/command/OrderFinishCommand.java b/order/src/main/java/com/group1/hw/order/command/OrderFinishCommand.java new file mode 100644 index 0000000..053adf8 --- /dev/null +++ b/order/src/main/java/com/group1/hw/order/command/OrderFinishCommand.java @@ -0,0 +1,21 @@ +package com.group1.hw.order.command; + +import org.axonframework.commandhandling.TargetAggregateIdentifier; + +/** + * Created by mavlarn on 2018/5/24. + */ +public class OrderFinishCommand { + + @TargetAggregateIdentifier + private String orderId; + + + public OrderFinishCommand(String orderId) { + this.orderId = orderId; + } + + public String getOrderId() { + return orderId; + } +} diff --git a/order/src/main/java/com/group1/hw/order/config/AxonConfig.java b/order/src/main/java/com/group1/hw/order/config/AxonConfig.java new file mode 100644 index 0000000..4a8cfb9 --- /dev/null +++ b/order/src/main/java/com/group1/hw/order/config/AxonConfig.java @@ -0,0 +1,95 @@ +package com.group1.hw.order.config; + +import com.group1.hw.order.OrderManagementSaga; +import com.rabbitmq.client.Channel; +import org.axonframework.amqp.eventhandling.spring.SpringAMQPMessageSource; +import org.axonframework.common.transaction.TransactionManager; +import org.axonframework.config.SagaConfiguration; +import org.axonframework.eventhandling.EventBus; +import org.axonframework.eventhandling.scheduling.EventScheduler; +import org.axonframework.eventhandling.scheduling.java.SimpleEventScheduler; +import org.axonframework.serialization.Serializer; +import org.axonframework.spring.messaging.unitofwork.SpringTransactionManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.core.*; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.Transactional; + +import java.util.concurrent.Executors; + + +/** + * Created by mavlarn on 2018/6/4. + */ +@Configuration +public class AxonConfig { + + private static final Logger LOG = LoggerFactory.getLogger(AxonConfig.class); + + @Value("${axon.amqp.exchange}") + private String exchangeName; + + @Bean + public EventScheduler eventScheduler(EventBus eventBus, TransactionManager transactionManager) { + return new SimpleEventScheduler(Executors.newScheduledThreadPool(1), eventBus, transactionManager); + } + + @Bean + public Queue sagaQueue(){ + return new Queue("saga",true); + } + + @Bean + public Exchange exchange(){ + return ExchangeBuilder.topicExchange(exchangeName).durable(true).build(); + } + + @Bean + public Binding sagaQueueBinding() { + return BindingBuilder.bind(sagaQueue()).to(exchange()).with("com.group1.hw.order.event.saga.#").noargs(); + } + @Bean + public Queue orderQueue(){ + return new Queue("order",true); + } + + @Bean + public Binding orderQueueBinding() { + return BindingBuilder.bind(sagaQueue()).to(exchange()).with("com.group1.hw.order.event.#").noargs(); + } + /** + * Order Saga需要监听事件来处理订单流程,它需要监听ticket、user队列来监听saga流程里面相应的事件。 + * 他反而不需要监听order队列,因为order的事件都是本地处理的。所以我们不需要设置OrderEventProcessor + */ + @Bean + public SpringAMQPMessageSource sagaMessageSource(Serializer serializer) { + return new SpringAMQPMessageSource(serializer){ + @RabbitListener(queues = {"saga"}) + @Override + @Transactional + public void onMessage(Message message, Channel channel) throws Exception { + LOG.debug("Message received: {}", message); + super.onMessage(message, channel); + } + }; + } + +// @Autowired +// public void configure(EventHandlingConfiguration ehConfig, SpringAMQPMessageSource sagaMessageSource) { +// // saga类上不能添加EventProcessor +// ehConfig.registerSubscribingEventProcessor("SagaEventProcessor", c -> sagaMessageSource); +// } + + @Bean + public SagaConfiguration orderManagementSagaConfiguration(SpringAMQPMessageSource sagaMessageSource, + PlatformTransactionManager txManager) { + return SagaConfiguration.subscribingSagaManager(OrderManagementSaga.class, c -> sagaMessageSource) + .configureTransactionManager(c -> new SpringTransactionManager(txManager)); + } + +} diff --git a/order/src/main/java/com/group1/hw/order/query/OrderId.java b/order/src/main/java/com/group1/hw/order/query/OrderId.java new file mode 100644 index 0000000..38e47ff --- /dev/null +++ b/order/src/main/java/com/group1/hw/order/query/OrderId.java @@ -0,0 +1,39 @@ +package com.group1.hw.order.query; + +import org.axonframework.common.Assert; + +/** + * Created by mavlarn on 2018/6/27. + */ +public class OrderId { + + private final String identifier; + private final int hashCode; + + public OrderId(String identifier) { + Assert.notNull(identifier, () -> "Identifier may not be null"); + this.identifier = identifier; + this.hashCode = identifier.hashCode(); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + OrderId customerId = (OrderId) o; + return identifier.equals(customerId.identifier); + + } + + @Override + public int hashCode() { + return hashCode; + } + + @Override + public String toString() { + return identifier; + } + +} diff --git a/order/src/main/java/com/group1/hw/order/query/OrderQueryHandler.java b/order/src/main/java/com/group1/hw/order/query/OrderQueryHandler.java new file mode 100644 index 0000000..d7718c9 --- /dev/null +++ b/order/src/main/java/com/group1/hw/order/query/OrderQueryHandler.java @@ -0,0 +1,30 @@ +package com.group1.hw.order.query; + +import com.group1.hw.order.Order; +import org.axonframework.commandhandling.model.Repository; +import org.axonframework.queryhandling.QueryHandler; +import org.axonframework.spring.config.AxonConfiguration; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * Created by mavlarn on 2018/5/29. + */ +@Component +public class OrderQueryHandler { + + + @Autowired + AxonConfiguration axonConfiguration; + + @QueryHandler + public Order query(OrderId orderId) { + // WARN: 强烈不建议使用这种方式将聚合数据暴露给外界,而应该使用物化视图的方式将保存的视图数据显示出来。 + // 这里这样做,只是用于debug,有时候,可能写的代码有问题,导致聚合数据跟视图数据不一致。 + final Order[] theOrder = new Order[1]; + Repository orderRepository = axonConfiguration.repository(Order.class); + orderRepository.load(orderId.toString()).execute(order -> theOrder[0] = order); + + return theOrder[0]; + } +} diff --git a/order/src/main/resources/application.yml b/order/src/main/resources/application.yml new file mode 100644 index 0000000..74a30cd --- /dev/null +++ b/order/src/main/resources/application.yml @@ -0,0 +1,32 @@ +server: + port: 8082 +spring: + application: + name: order + datasource: + url: jdbc:mysql://10.0.0.130:3306/order + username: root + password: 123456 + driver-class-name: com.mysql.jdbc.Driver + jpa: + hibernate: + ddl-auto: update + properties: + hibernate: + enable_lazy_load_no_trans: true + rabbitmq: + host: 10.0.0.130 + port: 5672 + username: guest + password: guest + virtual-host: docker-mq-vhost +eureka: + client: + serviceUrl: + defaultZone: http://group1:111111@localhost:8761/eureka/ + +axon: + distributed: + enabled: true + amqp: + exchange: Group1.EventBus diff --git a/order/src/main/resources/logback-spring.xml b/order/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..1e59c9e --- /dev/null +++ b/order/src/main/resources/logback-spring.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/order/src/test/java/com/group1/hw/order/OrderApplicationTests.java b/order/src/test/java/com/group1/hw/order/OrderApplicationTests.java new file mode 100644 index 0000000..05a559c --- /dev/null +++ b/order/src/test/java/com/group1/hw/order/OrderApplicationTests.java @@ -0,0 +1,16 @@ +package com.group1.hw.order; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class OrderApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/proxy/.gitignore b/proxy/.gitignore new file mode 100644 index 0000000..2af7cef --- /dev/null +++ b/proxy/.gitignore @@ -0,0 +1,24 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ \ No newline at end of file diff --git a/proxy/.mvn/wrapper/maven-wrapper.jar b/proxy/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..9cc84ea Binary files /dev/null and b/proxy/.mvn/wrapper/maven-wrapper.jar differ diff --git a/proxy/.mvn/wrapper/maven-wrapper.properties b/proxy/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..9dda3b6 --- /dev/null +++ b/proxy/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.2/apache-maven-3.5.2-bin.zip diff --git a/proxy/mvnw b/proxy/mvnw new file mode 100644 index 0000000..5bf251c --- /dev/null +++ b/proxy/mvnw @@ -0,0 +1,225 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +echo $MAVEN_PROJECTBASEDIR +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/proxy/mvnw.cmd b/proxy/mvnw.cmd new file mode 100644 index 0000000..019bd74 --- /dev/null +++ b/proxy/mvnw.cmd @@ -0,0 +1,143 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/proxy/pom.xml b/proxy/pom.xml new file mode 100644 index 0000000..650fd0f --- /dev/null +++ b/proxy/pom.xml @@ -0,0 +1,68 @@ + + + 4.0.0 + + com.group1.hw.axon + proxy + 0.0.1-SNAPSHOT + jar + + proxy + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.5.10.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + Edgware.SR2 + + + + + org.springframework.cloud + spring-cloud-starter-eureka + + + org.springframework.cloud + spring-cloud-starter-zuul + 1.4.3.RELEASE + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/proxy/src/main/java/com/group1/hw/proxy/HttpMethodZuulFilter.java b/proxy/src/main/java/com/group1/hw/proxy/HttpMethodZuulFilter.java new file mode 100644 index 0000000..ef2e7c7 --- /dev/null +++ b/proxy/src/main/java/com/group1/hw/proxy/HttpMethodZuulFilter.java @@ -0,0 +1,51 @@ +package com.group1.hw.proxy; + +import com.netflix.zuul.ZuulFilter; +import com.netflix.zuul.context.RequestContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; + +import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.ROUTE_TYPE; + +/** + * Created by mavlarn on 2018/6/6. + */ +@Component +public class HttpMethodZuulFilter extends ZuulFilter { + + private static final Logger LOG = LoggerFactory.getLogger(HttpMethodZuulFilter.class); + + private static final String REQUEST_PATH = "/order"; + private static final String TARGET_SERVICE = "order-query"; + + @Override + public String filterType() { + return ROUTE_TYPE; + } + + @Override + public int filterOrder() { + return 0; + } + + @Override + public boolean shouldFilter() { + RequestContext context = RequestContext.getCurrentContext(); + HttpServletRequest request = context.getRequest(); + String method = request.getMethod(); + String requestURI = request.getRequestURI(); + return "GET".equals(method.toUpperCase()) && requestURI.startsWith(REQUEST_PATH); + } + + @Override + public Object run() { + LOG.info("Route GET order requests to order-query service."); + RequestContext context = RequestContext.getCurrentContext(); + context.set("serviceId", TARGET_SERVICE); + context.setRouteHost(null); + return null; + } +} diff --git a/proxy/src/main/java/com/group1/hw/proxy/ProxyApplication.java b/proxy/src/main/java/com/group1/hw/proxy/ProxyApplication.java new file mode 100644 index 0000000..9c8e602 --- /dev/null +++ b/proxy/src/main/java/com/group1/hw/proxy/ProxyApplication.java @@ -0,0 +1,16 @@ +package com.group1.hw.proxy; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.eureka.EnableEurekaClient; +import org.springframework.cloud.netflix.zuul.EnableZuulProxy; + +@SpringBootApplication +@EnableEurekaClient +@EnableZuulProxy +public class ProxyApplication { + + public static void main(String[] args) { + SpringApplication.run(ProxyApplication.class, args); + } +} diff --git a/proxy/src/main/resources/application.yml b/proxy/src/main/resources/application.yml new file mode 100644 index 0000000..cd278f6 --- /dev/null +++ b/proxy/src/main/resources/application.yml @@ -0,0 +1,17 @@ +server: + port: 8888 +spring: + application: + name: proxy + +eureka: + client: + serviceUrl: + defaultZone: http://group1:111111@localhost:8761/eureka/ + +#zuul: +# routes: +# userApi: +# path: /home/** +# stripPrefix: false +# serviceId: user \ No newline at end of file diff --git a/proxy/src/test/java/com/group1/hw/proxy/ProxyApplicationTests.java b/proxy/src/test/java/com/group1/hw/proxy/ProxyApplicationTests.java new file mode 100644 index 0000000..1c296e4 --- /dev/null +++ b/proxy/src/test/java/com/group1/hw/proxy/ProxyApplicationTests.java @@ -0,0 +1,16 @@ +package com.group1.hw.proxy; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class ProxyApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/registry/.gitignore b/registry/.gitignore new file mode 100644 index 0000000..2af7cef --- /dev/null +++ b/registry/.gitignore @@ -0,0 +1,24 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ \ No newline at end of file diff --git a/registry/.mvn/wrapper/maven-wrapper.jar b/registry/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..9cc84ea Binary files /dev/null and b/registry/.mvn/wrapper/maven-wrapper.jar differ diff --git a/registry/.mvn/wrapper/maven-wrapper.properties b/registry/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..9dda3b6 --- /dev/null +++ b/registry/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.2/apache-maven-3.5.2-bin.zip diff --git a/registry/mvnw b/registry/mvnw new file mode 100644 index 0000000..5bf251c --- /dev/null +++ b/registry/mvnw @@ -0,0 +1,225 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +echo $MAVEN_PROJECTBASEDIR +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/registry/mvnw.cmd b/registry/mvnw.cmd new file mode 100644 index 0000000..019bd74 --- /dev/null +++ b/registry/mvnw.cmd @@ -0,0 +1,143 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/registry/pom.xml b/registry/pom.xml new file mode 100644 index 0000000..5265704 --- /dev/null +++ b/registry/pom.xml @@ -0,0 +1,71 @@ + + + 4.0.0 + + com.group1.hw.axon + registry + 0.0.1-SNAPSHOT + jar + + registry + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.5.10.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + Edgware.SR2 + + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.cloud + spring-cloud-starter-eureka-server + + + org.springframework.cloud + spring-cloud-starter-hystrix-dashboard + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/registry/src/main/java/com/group1/hw/registry/RegistryApplication.java b/registry/src/main/java/com/group1/hw/registry/RegistryApplication.java new file mode 100644 index 0000000..4a03158 --- /dev/null +++ b/registry/src/main/java/com/group1/hw/registry/RegistryApplication.java @@ -0,0 +1,16 @@ +package com.group1.hw.registry; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; +import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; + +@SpringBootApplication +@EnableEurekaServer +@EnableHystrixDashboard +public class RegistryApplication { + + public static void main(String[] args) { + SpringApplication.run(RegistryApplication.class, args); + } +} diff --git a/registry/src/main/resources/application.yml b/registry/src/main/resources/application.yml new file mode 100644 index 0000000..2fb7d37 --- /dev/null +++ b/registry/src/main/resources/application.yml @@ -0,0 +1,17 @@ +server: + port: 8761 +spring: + application: + name: registry +security: + basic: + enabled: true + user: + name: group1 + password: 111111 +eureka: + client: + register-with-eureka: false + fetch-registry: false + serviceUrl: + defaultZone: http://group1:111111@localhost:${server.port}/eureka/ \ No newline at end of file diff --git a/registry/src/test/java/com/group1/hw/registry/RegistryApplicationTests.java b/registry/src/test/java/com/group1/hw/registry/RegistryApplicationTests.java new file mode 100644 index 0000000..f2815e9 --- /dev/null +++ b/registry/src/test/java/com/group1/hw/registry/RegistryApplicationTests.java @@ -0,0 +1,16 @@ +package com.group1.hw.registry; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class RegistryApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/service/pom.xml b/service/pom.xml new file mode 100644 index 0000000..7f18314 --- /dev/null +++ b/service/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + + com.group1.hw.axon + service + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 1.5.10.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + + + + + + org.axonframework + axon-amqp + 3.2 + + + + \ No newline at end of file diff --git a/service/service.iml b/service/service.iml new file mode 100644 index 0000000..7ca37cb --- /dev/null +++ b/service/service.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/src/main/java/com/group1/hw/dto/OrderDTO.java b/service/src/main/java/com/group1/hw/dto/OrderDTO.java new file mode 100644 index 0000000..582d58e --- /dev/null +++ b/service/src/main/java/com/group1/hw/dto/OrderDTO.java @@ -0,0 +1,87 @@ +package com.group1.hw.dto; + +public class OrderDTO { + + private Long id; + + private String uuid; + + private Long customerId; + + private String title; + + private Long ticketNum; + + private int amount; + + private String status; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public Long getCustomerId() { + return customerId; + } + + public void setCustomerId(Long customerId) { + this.customerId = customerId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Long getTicketNum() { + return ticketNum; + } + + public void setTicketNum(Long ticketNum) { + this.ticketNum = ticketNum; + } + + public int getAmount() { + return amount; + } + + public void setAmount(int amount) { + this.amount = amount; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + @Override + public String toString() { + return "OrderDTO{" + + "id=" + id + + ", uuid='" + uuid + '\'' + + ", customerId=" + customerId + + ", title='" + title + '\'' + + ", ticketNum=" + ticketNum + + ", amount=" + amount + + ", status='" + status + '\'' + + '}'; + } +} diff --git a/service/src/main/java/com/group1/hw/dto/TicketDTO.java b/service/src/main/java/com/group1/hw/dto/TicketDTO.java new file mode 100644 index 0000000..18ed97b --- /dev/null +++ b/service/src/main/java/com/group1/hw/dto/TicketDTO.java @@ -0,0 +1,54 @@ +package com.group1.hw.dto; + +public class TicketDTO { + + private Long id; + + private Long ticketNum; + + private String name; + + private Long lockUser; + + private Long owner; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getTicketNum() { + return ticketNum; + } + + public void setTicketNum(Long ticketNum) { + this.ticketNum = ticketNum; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Long getLockUser() { + return lockUser; + } + + public void setLockUser(Long lockUser) { + this.lockUser = lockUser; + } + + public Long getOwner() { + return owner; + } + + public void setOwner(Long owner) { + this.owner = owner; + } +} diff --git a/service/src/main/java/com/group1/hw/order/event/OrderFailedEvent.java b/service/src/main/java/com/group1/hw/order/event/OrderFailedEvent.java new file mode 100644 index 0000000..475b286 --- /dev/null +++ b/service/src/main/java/com/group1/hw/order/event/OrderFailedEvent.java @@ -0,0 +1,20 @@ +package com.group1.hw.order.event; + +public class OrderFailedEvent { + + private String reason; + private String orderId; + + public OrderFailedEvent(String orderId, String reason) { + this.orderId = orderId; + this.reason = reason; + } + + public String getOrderId() { + return orderId; + } + + public String getReason() { + return reason; + } +} diff --git a/service/src/main/java/com/group1/hw/order/event/OrderFinishedEvent.java b/service/src/main/java/com/group1/hw/order/event/OrderFinishedEvent.java new file mode 100644 index 0000000..83267ef --- /dev/null +++ b/service/src/main/java/com/group1/hw/order/event/OrderFinishedEvent.java @@ -0,0 +1,14 @@ +package com.group1.hw.order.event; + +public class OrderFinishedEvent { + + private String orderId; + + public OrderFinishedEvent(String orderId) { + this.orderId = orderId; + } + + public String getOrderId() { + return orderId; + } +} diff --git a/service/src/main/java/com/group1/hw/order/event/saga/OrderCreatedEvent.java b/service/src/main/java/com/group1/hw/order/event/saga/OrderCreatedEvent.java new file mode 100644 index 0000000..00841ac --- /dev/null +++ b/service/src/main/java/com/group1/hw/order/event/saga/OrderCreatedEvent.java @@ -0,0 +1,51 @@ +package com.group1.hw.order.event.saga; + +import java.time.ZonedDateTime; + +public class OrderCreatedEvent { + + private String orderId; + + private String customerId; + + private String title; + + private String ticketId; + + private Double amount; + + private ZonedDateTime createdDate; + + public OrderCreatedEvent(String orderId, String customerId, String title, String ticketId, Double amount, ZonedDateTime createdDate) { + this.orderId = orderId; + this.customerId = customerId; + this.title = title; + this.ticketId = ticketId; + this.amount = amount; + this.createdDate = createdDate; + } + + public String getOrderId() { + return orderId; + } + + public String getCustomerId() { + return customerId; + } + + public String getTitle() { + return title; + } + + public String getTicketId() { + return ticketId; + } + + public Double getAmount() { + return amount; + } + + public ZonedDateTime getCreatedDate() { + return createdDate; + } +} diff --git a/service/src/main/java/com/group1/hw/service/OrderCompositeService.java b/service/src/main/java/com/group1/hw/service/OrderCompositeService.java new file mode 100644 index 0000000..cab068d --- /dev/null +++ b/service/src/main/java/com/group1/hw/service/OrderCompositeService.java @@ -0,0 +1,10 @@ +package com.group1.hw.service; + +import com.group1.hw.dto.OrderDTO; + +import java.util.List; + +public interface OrderCompositeService { + + List getMyOrder(Long id); +} diff --git a/service/src/main/java/com/group1/hw/service/TicketCompositeService.java b/service/src/main/java/com/group1/hw/service/TicketCompositeService.java new file mode 100644 index 0000000..78e63db --- /dev/null +++ b/service/src/main/java/com/group1/hw/service/TicketCompositeService.java @@ -0,0 +1,11 @@ +package com.group1.hw.service; + +import com.group1.hw.dto.TicketDTO; + +import java.util.List; + +public interface TicketCompositeService { + + List getMyTickets(Long customerId); + +} diff --git a/service/src/main/java/com/group1/hw/ticket/command/OrderTicketMoveCommand.java b/service/src/main/java/com/group1/hw/ticket/command/OrderTicketMoveCommand.java new file mode 100644 index 0000000..1082f98 --- /dev/null +++ b/service/src/main/java/com/group1/hw/ticket/command/OrderTicketMoveCommand.java @@ -0,0 +1,29 @@ +package com.group1.hw.ticket.command; + +import org.axonframework.commandhandling.TargetAggregateIdentifier; + +public class OrderTicketMoveCommand { + + @TargetAggregateIdentifier + private String ticketId; + private String orderId; + private String customerId; + + public OrderTicketMoveCommand(String ticketId, String orderId, String customerId) { + this.ticketId = ticketId; + this.orderId = orderId; + this.customerId = customerId; + } + + public String getTicketId() { + return ticketId; + } + + public String getCustomerId() { + return customerId; + } + + public String getOrderId() { + return orderId; + } +} diff --git a/service/src/main/java/com/group1/hw/ticket/command/OrderTicketPreserveCommand.java b/service/src/main/java/com/group1/hw/ticket/command/OrderTicketPreserveCommand.java new file mode 100644 index 0000000..9d2dc32 --- /dev/null +++ b/service/src/main/java/com/group1/hw/ticket/command/OrderTicketPreserveCommand.java @@ -0,0 +1,30 @@ +package com.group1.hw.ticket.command; + +import org.axonframework.commandhandling.TargetAggregateIdentifier; + +public class OrderTicketPreserveCommand { + + @TargetAggregateIdentifier + private String ticketId; + + private String orderId; + private String customerId; + + public OrderTicketPreserveCommand(String orderId, String ticketId, String customerId) { + this.orderId = orderId; + this.ticketId = ticketId; + this.customerId = customerId; + } + + public String getOrderId() { + return orderId; + } + + public String getTicketId() { + return ticketId; + } + + public String getCustomerId() { + return customerId; + } +} diff --git a/service/src/main/java/com/group1/hw/ticket/command/OrderTicketUnlockCommand.java b/service/src/main/java/com/group1/hw/ticket/command/OrderTicketUnlockCommand.java new file mode 100644 index 0000000..b572421 --- /dev/null +++ b/service/src/main/java/com/group1/hw/ticket/command/OrderTicketUnlockCommand.java @@ -0,0 +1,24 @@ +package com.group1.hw.ticket.command; + +import org.axonframework.commandhandling.TargetAggregateIdentifier; + +public class OrderTicketUnlockCommand { + + @TargetAggregateIdentifier + private String ticketId; + + private String customerId; + + public OrderTicketUnlockCommand(String ticketId, String customerId) { + this.ticketId = ticketId; + this.customerId = customerId; + } + + public String getTicketId() { + return ticketId; + } + + public String getCustomerId() { + return customerId; + } +} diff --git a/service/src/main/java/com/group1/hw/ticket/event/saga/OrderTicketMovedEvent.java b/service/src/main/java/com/group1/hw/ticket/event/saga/OrderTicketMovedEvent.java new file mode 100644 index 0000000..6dd6159 --- /dev/null +++ b/service/src/main/java/com/group1/hw/ticket/event/saga/OrderTicketMovedEvent.java @@ -0,0 +1,28 @@ +package com.group1.hw.ticket.event.saga; + +public class OrderTicketMovedEvent { + + private String orderId; + private String ticketId; + + private String customerId; + + public OrderTicketMovedEvent(String orderId, String ticketId, String customerId) { + this.orderId = orderId; + this.ticketId = ticketId; + this.customerId = customerId; + } + + public String getOrderId() { + return orderId; + } + + public String getTicketId() { + return ticketId; + } + + public String getCustomerId() { + return customerId; + } + +} diff --git a/service/src/main/java/com/group1/hw/ticket/event/saga/OrderTicketPreserveFailedEvent.java b/service/src/main/java/com/group1/hw/ticket/event/saga/OrderTicketPreserveFailedEvent.java new file mode 100644 index 0000000..0da86b2 --- /dev/null +++ b/service/src/main/java/com/group1/hw/ticket/event/saga/OrderTicketPreserveFailedEvent.java @@ -0,0 +1,14 @@ +package com.group1.hw.ticket.event.saga; + +public class OrderTicketPreserveFailedEvent { + + private String orderId; + + public OrderTicketPreserveFailedEvent(String orderId) { + this.orderId = orderId; + } + + public String getOrderId() { + return orderId; + } +} diff --git a/service/src/main/java/com/group1/hw/ticket/event/saga/OrderTicketPreservedEvent.java b/service/src/main/java/com/group1/hw/ticket/event/saga/OrderTicketPreservedEvent.java new file mode 100644 index 0000000..83934f5 --- /dev/null +++ b/service/src/main/java/com/group1/hw/ticket/event/saga/OrderTicketPreservedEvent.java @@ -0,0 +1,27 @@ +package com.group1.hw.ticket.event.saga; + +public class OrderTicketPreservedEvent { + + private String orderId; + private String customerId; + private String ticketId; + + public OrderTicketPreservedEvent(String orderId, String customerId, String ticketId) { + this.orderId = orderId; + this.ticketId = ticketId; + this.customerId = customerId; + } + + public String getTicketId() { + return ticketId; + } + + public String getCustomerId() { + return customerId; + } + + public String getOrderId() { + return orderId; + } + +} diff --git a/service/src/main/java/com/group1/hw/user/command/OrderPayCommand.java b/service/src/main/java/com/group1/hw/user/command/OrderPayCommand.java new file mode 100644 index 0000000..285c233 --- /dev/null +++ b/service/src/main/java/com/group1/hw/user/command/OrderPayCommand.java @@ -0,0 +1,30 @@ +package com.group1.hw.user.command; + +import org.axonframework.commandhandling.TargetAggregateIdentifier; + +public class OrderPayCommand { + + @TargetAggregateIdentifier + private String customerId; + + private String orderId; + private Double amount; + + public OrderPayCommand(String orderId, String customerId, Double amount) { + this.orderId = orderId; + this.customerId = customerId; + this.amount = amount; + } + + public String getOrderId() { + return orderId; + } + + public String getCustomerId() { + return customerId; + } + + public Double getAmount() { + return amount; + } +} diff --git a/service/src/main/java/com/group1/hw/user/event/saga/OrderPaidEvent.java b/service/src/main/java/com/group1/hw/user/event/saga/OrderPaidEvent.java new file mode 100644 index 0000000..f96ed5a --- /dev/null +++ b/service/src/main/java/com/group1/hw/user/event/saga/OrderPaidEvent.java @@ -0,0 +1,26 @@ +package com.group1.hw.user.event.saga; + +public class OrderPaidEvent { + + private String orderId; + private String customerId; + private Double amount; + + public OrderPaidEvent(String orderId, String customerId, Double amount) { + this.orderId = orderId; + this.customerId = customerId; + this.amount = amount; + } + + public String getOrderId() { + return orderId; + } + + public Double getAmount() { + return amount; + } + + public String getCustomerId() { + return customerId; + } +} diff --git a/service/src/main/java/com/group1/hw/user/event/saga/OrderPayFailedEvent.java b/service/src/main/java/com/group1/hw/user/event/saga/OrderPayFailedEvent.java new file mode 100644 index 0000000..c2e0d78 --- /dev/null +++ b/service/src/main/java/com/group1/hw/user/event/saga/OrderPayFailedEvent.java @@ -0,0 +1,14 @@ +package com.group1.hw.user.event.saga; + +public class OrderPayFailedEvent { + + private String orderId; + + public OrderPayFailedEvent(String orderId) { + this.orderId = orderId; + } + + public String getOrderId() { + return orderId; + } +} diff --git a/service/target/classes/com/group1/hw/dto/OrderDTO.class b/service/target/classes/com/group1/hw/dto/OrderDTO.class new file mode 100644 index 0000000..e788b66 Binary files /dev/null and b/service/target/classes/com/group1/hw/dto/OrderDTO.class differ diff --git a/service/target/classes/com/group1/hw/dto/TicketDTO.class b/service/target/classes/com/group1/hw/dto/TicketDTO.class new file mode 100644 index 0000000..2a06911 Binary files /dev/null and b/service/target/classes/com/group1/hw/dto/TicketDTO.class differ diff --git a/service/target/classes/com/group1/hw/order/event/OrderFailedEvent.class b/service/target/classes/com/group1/hw/order/event/OrderFailedEvent.class new file mode 100644 index 0000000..5a3abf2 Binary files /dev/null and b/service/target/classes/com/group1/hw/order/event/OrderFailedEvent.class differ diff --git a/service/target/classes/com/group1/hw/order/event/OrderFinishedEvent.class b/service/target/classes/com/group1/hw/order/event/OrderFinishedEvent.class new file mode 100644 index 0000000..604bd00 Binary files /dev/null and b/service/target/classes/com/group1/hw/order/event/OrderFinishedEvent.class differ diff --git a/service/target/classes/com/group1/hw/order/event/saga/OrderCreatedEvent.class b/service/target/classes/com/group1/hw/order/event/saga/OrderCreatedEvent.class new file mode 100644 index 0000000..b66709d Binary files /dev/null and b/service/target/classes/com/group1/hw/order/event/saga/OrderCreatedEvent.class differ diff --git a/service/target/classes/com/group1/hw/service/OrderCompositeService.class b/service/target/classes/com/group1/hw/service/OrderCompositeService.class new file mode 100644 index 0000000..1171cc0 Binary files /dev/null and b/service/target/classes/com/group1/hw/service/OrderCompositeService.class differ diff --git a/service/target/classes/com/group1/hw/service/TicketCompositeService.class b/service/target/classes/com/group1/hw/service/TicketCompositeService.class new file mode 100644 index 0000000..6e589de Binary files /dev/null and b/service/target/classes/com/group1/hw/service/TicketCompositeService.class differ diff --git a/service/target/classes/com/group1/hw/ticket/command/OrderTicketMoveCommand.class b/service/target/classes/com/group1/hw/ticket/command/OrderTicketMoveCommand.class new file mode 100644 index 0000000..ddab406 Binary files /dev/null and b/service/target/classes/com/group1/hw/ticket/command/OrderTicketMoveCommand.class differ diff --git a/service/target/classes/com/group1/hw/ticket/command/OrderTicketPreserveCommand.class b/service/target/classes/com/group1/hw/ticket/command/OrderTicketPreserveCommand.class new file mode 100644 index 0000000..769d4d5 Binary files /dev/null and b/service/target/classes/com/group1/hw/ticket/command/OrderTicketPreserveCommand.class differ diff --git a/service/target/classes/com/group1/hw/ticket/command/OrderTicketUnlockCommand.class b/service/target/classes/com/group1/hw/ticket/command/OrderTicketUnlockCommand.class new file mode 100644 index 0000000..9402715 Binary files /dev/null and b/service/target/classes/com/group1/hw/ticket/command/OrderTicketUnlockCommand.class differ diff --git a/service/target/classes/com/group1/hw/ticket/event/saga/OrderTicketMovedEvent.class b/service/target/classes/com/group1/hw/ticket/event/saga/OrderTicketMovedEvent.class new file mode 100644 index 0000000..a464e5e Binary files /dev/null and b/service/target/classes/com/group1/hw/ticket/event/saga/OrderTicketMovedEvent.class differ diff --git a/service/target/classes/com/group1/hw/ticket/event/saga/OrderTicketPreserveFailedEvent.class b/service/target/classes/com/group1/hw/ticket/event/saga/OrderTicketPreserveFailedEvent.class new file mode 100644 index 0000000..777073d Binary files /dev/null and b/service/target/classes/com/group1/hw/ticket/event/saga/OrderTicketPreserveFailedEvent.class differ diff --git a/service/target/classes/com/group1/hw/ticket/event/saga/OrderTicketPreservedEvent.class b/service/target/classes/com/group1/hw/ticket/event/saga/OrderTicketPreservedEvent.class new file mode 100644 index 0000000..9226667 Binary files /dev/null and b/service/target/classes/com/group1/hw/ticket/event/saga/OrderTicketPreservedEvent.class differ diff --git a/service/target/classes/com/group1/hw/user/command/OrderPayCommand.class b/service/target/classes/com/group1/hw/user/command/OrderPayCommand.class new file mode 100644 index 0000000..ca450b0 Binary files /dev/null and b/service/target/classes/com/group1/hw/user/command/OrderPayCommand.class differ diff --git a/service/target/classes/com/group1/hw/user/event/saga/OrderPaidEvent.class b/service/target/classes/com/group1/hw/user/event/saga/OrderPaidEvent.class new file mode 100644 index 0000000..9bc50ce Binary files /dev/null and b/service/target/classes/com/group1/hw/user/event/saga/OrderPaidEvent.class differ diff --git a/service/target/classes/com/group1/hw/user/event/saga/OrderPayFailedEvent.class b/service/target/classes/com/group1/hw/user/event/saga/OrderPayFailedEvent.class new file mode 100644 index 0000000..62d811b Binary files /dev/null and b/service/target/classes/com/group1/hw/user/event/saga/OrderPayFailedEvent.class differ diff --git a/ticket/.gitignore b/ticket/.gitignore new file mode 100644 index 0000000..2af7cef --- /dev/null +++ b/ticket/.gitignore @@ -0,0 +1,24 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ \ No newline at end of file diff --git a/ticket/.mvn/wrapper/maven-wrapper.jar b/ticket/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..9cc84ea Binary files /dev/null and b/ticket/.mvn/wrapper/maven-wrapper.jar differ diff --git a/ticket/.mvn/wrapper/maven-wrapper.properties b/ticket/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..9dda3b6 --- /dev/null +++ b/ticket/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.2/apache-maven-3.5.2-bin.zip diff --git a/ticket/mvnw b/ticket/mvnw new file mode 100644 index 0000000..5bf251c --- /dev/null +++ b/ticket/mvnw @@ -0,0 +1,225 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +echo $MAVEN_PROJECTBASEDIR +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/ticket/mvnw.cmd b/ticket/mvnw.cmd new file mode 100644 index 0000000..019bd74 --- /dev/null +++ b/ticket/mvnw.cmd @@ -0,0 +1,143 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/ticket/pom.xml b/ticket/pom.xml new file mode 100644 index 0000000..fe98921 --- /dev/null +++ b/ticket/pom.xml @@ -0,0 +1,104 @@ + + + 4.0.0 + + com.group1.hw.axon + ticket + 0.0.1-SNAPSHOT + jar + + ticket + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.5.10.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + Edgware.SR2 + + + + + org.axonframework + axon-spring-boot-starter + 3.2 + + + org.axonframework + axon-distributed-commandbus-springcloud + 3.2 + + + org.axonframework + axon-amqp + 3.2 + + + org.springframework.boot + spring-boot-starter-amqp + + + org.springframework.cloud + spring-cloud-starter-eureka + + + org.springframework.boot + spring-boot-starter-activemq + + + org.springframework.boot + spring-boot-starter-data-jpa + + + mysql + mysql-connector-java + 5.1.39 + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + com.group1.hw.axon + service + 1.0-SNAPSHOT + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/ticket/src/main/java/com/group1/hw/ticket/Ticket.java b/ticket/src/main/java/com/group1/hw/ticket/Ticket.java new file mode 100644 index 0000000..50e191c --- /dev/null +++ b/ticket/src/main/java/com/group1/hw/ticket/Ticket.java @@ -0,0 +1,123 @@ +package com.group1.hw.ticket; + + +import com.group1.hw.ticket.event.OrderTicketUnlockedEvent; +import com.group1.hw.ticket.event.TicketCreatedEvent; +import com.group1.hw.ticket.command.OrderTicketMoveCommand; +import com.group1.hw.ticket.command.OrderTicketPreserveCommand; +import com.group1.hw.ticket.command.OrderTicketUnlockCommand; +import com.group1.hw.ticket.command.TicketCreateCommand; +import com.group1.hw.ticket.event.*; +import com.group1.hw.ticket.event.saga.OrderTicketMovedEvent; +import com.group1.hw.ticket.event.saga.OrderTicketPreserveFailedEvent; +import com.group1.hw.ticket.event.saga.OrderTicketPreservedEvent; +import org.axonframework.commandhandling.CommandHandler; +import org.axonframework.commandhandling.model.AggregateIdentifier; +import org.axonframework.eventsourcing.EventSourcingHandler; +import org.axonframework.spring.stereotype.Aggregate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.axonframework.commandhandling.model.AggregateLifecycle.apply; + +@Aggregate +public class Ticket { + + private static final Logger LOG = LoggerFactory.getLogger(Ticket.class); + + @AggregateIdentifier + private String id; + + private String name; + + private String lockUser; + + private String owner; + + public Ticket() { + } + + @CommandHandler + public Ticket(TicketCreateCommand command) { + apply(new TicketCreatedEvent(command.getTicketId(), command.getName())); + } + + @CommandHandler + public void handle(OrderTicketPreserveCommand command) { + + if (this.owner != null) { + LOG.error("Ticket is owned."); + apply(new OrderTicketPreserveFailedEvent(command.getOrderId())); + } else if (this.lockUser != null && this.lockUser.equals(command.getCustomerId())) { + LOG.info("duplicated command"); + } else if (this.lockUser == null) { + apply(new OrderTicketPreservedEvent(command.getOrderId(), command.getCustomerId(), command.getTicketId())); + } else { + apply(new OrderTicketPreserveFailedEvent(command.getOrderId())); + } + } + + @CommandHandler + public void handle(OrderTicketUnlockCommand command) { + if (this.lockUser == null) { + LOG.error("Invalid command, ticket not locked"); + } else if (!this.lockUser.equals(command.getCustomerId())) { + LOG.error("Invalid command, ticket not locked by:{}", command.getCustomerId()); + } else { + apply(new OrderTicketUnlockedEvent(command.getTicketId())); + } + } + + @CommandHandler + public void handle(OrderTicketMoveCommand command) { + if (this.lockUser == null) { + LOG.error("Invalid command, ticket not locked"); + } else if (!this.lockUser.equals(command.getCustomerId())) { + LOG.error("Invalid command, ticket not locked by:{}", command.getCustomerId()); + } else { + apply(new OrderTicketMovedEvent(command.getOrderId(), command.getTicketId(), command.getCustomerId())); + } + } + + @EventSourcingHandler + public void onCreate(TicketCreatedEvent event) { + this.id = event.getTicketId(); + this.name = event.getName(); + LOG.info("Executed event:{}", event); + } + + @EventSourcingHandler + public void onPreserve(OrderTicketPreservedEvent event) { + this.lockUser = event.getCustomerId(); + LOG.info("Executed event:{}", event); + } + + @EventSourcingHandler + public void onUnlock(OrderTicketUnlockedEvent event) { + this.lockUser = null; + LOG.info("Executed event:{}", event); + } + + @EventSourcingHandler + public void onMove(OrderTicketMovedEvent event) { + this.lockUser = null; + this.owner = event.getCustomerId(); + LOG.info("Executed event:{}", event); + } + + public String getId() { + return id; + } + + public String getName() { + return name; + } + + public String getLockUser() { + return lockUser; + } + + public String getOwner() { + return owner; + } +} diff --git a/ticket/src/main/java/com/group1/hw/ticket/TicketApplication.java b/ticket/src/main/java/com/group1/hw/ticket/TicketApplication.java new file mode 100644 index 0000000..07e880b --- /dev/null +++ b/ticket/src/main/java/com/group1/hw/ticket/TicketApplication.java @@ -0,0 +1,14 @@ +package com.group1.hw.ticket; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +@SpringBootApplication +@EnableDiscoveryClient +public class TicketApplication { + + public static void main(String[] args) { + SpringApplication.run(TicketApplication.class, args); + } +} diff --git a/ticket/src/main/java/com/group1/hw/ticket/command/TicketCreateCommand.java b/ticket/src/main/java/com/group1/hw/ticket/command/TicketCreateCommand.java new file mode 100644 index 0000000..de26734 --- /dev/null +++ b/ticket/src/main/java/com/group1/hw/ticket/command/TicketCreateCommand.java @@ -0,0 +1,27 @@ +package com.group1.hw.ticket.command; + +import org.axonframework.commandhandling.TargetAggregateIdentifier; + +/** + * Created by mavlarn on 2018/5/28. + */ +public class TicketCreateCommand { + + @TargetAggregateIdentifier + private String ticketId; + + private String name; + + public TicketCreateCommand(String ticketId, String name) { + this.ticketId = ticketId; + this.name = name; + } + + public String getTicketId() { + return ticketId; + } + + public String getName() { + return name; + } +} diff --git a/ticket/src/main/java/com/group1/hw/ticket/config/AxonConfig.java b/ticket/src/main/java/com/group1/hw/ticket/config/AxonConfig.java new file mode 100644 index 0000000..51c4336 --- /dev/null +++ b/ticket/src/main/java/com/group1/hw/ticket/config/AxonConfig.java @@ -0,0 +1,72 @@ +package com.group1.hw.ticket.config; + +import com.rabbitmq.client.Channel; +import org.axonframework.amqp.eventhandling.spring.SpringAMQPMessageSource; +import org.axonframework.config.EventHandlingConfiguration; +import org.axonframework.serialization.Serializer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.core.*; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +/** + * Created by mavlarn on 2018/6/4. + */ +@Configuration +public class AxonConfig { + + private static final Logger LOG = LoggerFactory.getLogger(AxonConfig.class); + + @Value("${axon.amqp.exchange}") + private String exchangeName; + + @Bean + public Queue ticketQueue(){ + return new Queue("ticket", true); + } + + + @Bean + public Exchange exchange(){ + return ExchangeBuilder.topicExchange(exchangeName).durable(true).build(); + } + + @Bean + public Binding ticketQueueBinding() { + return BindingBuilder.bind(ticketQueue()).to(exchange()).with("com.group1.hw.ticket.event.#").noargs(); + } + + @Bean + public Queue ticketSagaQueue(){ + return new Queue("saga", true); + } + + @Bean + public Binding ticketSagaQueueBinding() { + return BindingBuilder.bind(ticketSagaQueue()).to(exchange()).with("com.group1.hw.ticket.event.saga.#").noargs(); + } + + @Bean + public SpringAMQPMessageSource ticketMessageSource(Serializer serializer) { + return new SpringAMQPMessageSource(serializer){ + @RabbitListener(queues = "ticket") + @Override + public void onMessage(Message message, Channel channel) throws Exception { + LOG.debug("Message received: {}", message); + super.onMessage(message, channel); + } + }; + } + + @Autowired + public void configure(EventHandlingConfiguration ehConfig, SpringAMQPMessageSource userMessageSource, + SpringAMQPMessageSource ticketMessageSource, SpringAMQPMessageSource orderMessageSource) { + ehConfig.registerSubscribingEventProcessor("TicketEventProcessor", c -> ticketMessageSource); + } + +} diff --git a/ticket/src/main/java/com/group1/hw/ticket/event/OrderTicketUnlockedEvent.java b/ticket/src/main/java/com/group1/hw/ticket/event/OrderTicketUnlockedEvent.java new file mode 100644 index 0000000..e8f8eff --- /dev/null +++ b/ticket/src/main/java/com/group1/hw/ticket/event/OrderTicketUnlockedEvent.java @@ -0,0 +1,17 @@ +package com.group1.hw.ticket.event; + +/** + * Created by mavlarn on 2018/5/27. + */ +public class OrderTicketUnlockedEvent { + + private String ticketId; + + public OrderTicketUnlockedEvent(String ticketId) { + this.ticketId = ticketId; + } + + public String getTicketId() { + return ticketId; + } +} diff --git a/ticket/src/main/java/com/group1/hw/ticket/event/TicketCreatedEvent.java b/ticket/src/main/java/com/group1/hw/ticket/event/TicketCreatedEvent.java new file mode 100644 index 0000000..ebd1cb5 --- /dev/null +++ b/ticket/src/main/java/com/group1/hw/ticket/event/TicketCreatedEvent.java @@ -0,0 +1,24 @@ +package com.group1.hw.ticket.event; + +/** + * Created by mavlarn on 2018/5/28. + */ +public class TicketCreatedEvent { + + private String ticketId; + + private String name; + + public TicketCreatedEvent(String ticketId, String name) { + this.ticketId = ticketId; + this.name = name; + } + + public String getTicketId() { + return ticketId; + } + + public String getName() { + return name; + } +} diff --git a/ticket/src/main/java/com/group1/hw/ticket/query/TicketEntity.java b/ticket/src/main/java/com/group1/hw/ticket/query/TicketEntity.java new file mode 100644 index 0000000..99f1c06 --- /dev/null +++ b/ticket/src/main/java/com/group1/hw/ticket/query/TicketEntity.java @@ -0,0 +1,50 @@ +package com.group1.hw.ticket.query; + + +import javax.persistence.Entity; +import javax.persistence.Id; + +@Entity(name = "tb_ticket") +public class TicketEntity { + + @Id + private String id; + + private String name; + + private String lockUser; + + private String owner; + + public String getId() { + return id; + } + + public String getName() { + return name; + } + + public String getLockUser() { + return lockUser; + } + + public String getOwner() { + return owner; + } + + public void setId(String id) { + this.id = id; + } + + public void setName(String name) { + this.name = name; + } + + public void setLockUser(String lockUser) { + this.lockUser = lockUser; + } + + public void setOwner(String owner) { + this.owner = owner; + } +} diff --git a/ticket/src/main/java/com/group1/hw/ticket/query/TicketEntityRepository.java b/ticket/src/main/java/com/group1/hw/ticket/query/TicketEntityRepository.java new file mode 100644 index 0000000..5924efb --- /dev/null +++ b/ticket/src/main/java/com/group1/hw/ticket/query/TicketEntityRepository.java @@ -0,0 +1,9 @@ +package com.group1.hw.ticket.query; + +import org.springframework.data.jpa.repository.JpaRepository; + +/** + * Created by mavlarn on 2018/6/4. + */ +public interface TicketEntityRepository extends JpaRepository { +} diff --git a/ticket/src/main/java/com/group1/hw/ticket/query/TicketProjector.java b/ticket/src/main/java/com/group1/hw/ticket/query/TicketProjector.java new file mode 100644 index 0000000..d0b7b28 --- /dev/null +++ b/ticket/src/main/java/com/group1/hw/ticket/query/TicketProjector.java @@ -0,0 +1,60 @@ +package com.group1.hw.ticket.query; + +import com.group1.hw.ticket.event.OrderTicketUnlockedEvent; +import com.group1.hw.ticket.event.TicketCreatedEvent; +import com.group1.hw.ticket.event.saga.OrderTicketMovedEvent; +import com.group1.hw.ticket.event.saga.OrderTicketPreservedEvent; +import org.axonframework.config.ProcessingGroup; +import org.axonframework.eventhandling.EventHandler; +import org.axonframework.eventsourcing.EventSourcingHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * Created by mavlarn on 2018/6/5. + */ +@Component +@ProcessingGroup("TicketEventProcessor") +public class TicketProjector { + private static final Logger LOG = LoggerFactory.getLogger(TicketProjector.class); + + @Autowired + private TicketEntityRepository ticketEntityRepository; + + @EventHandler + public void on(TicketCreatedEvent event) { + TicketEntity ticket = new TicketEntity(); + ticket.setId(event.getTicketId()); + ticket.setName(event.getName()); + ticketEntityRepository.save(ticket); + LOG.info("TicketProjector Executed event:{}", event); + } + + @EventSourcingHandler + public void onPreserve(OrderTicketPreservedEvent event) { + String lockUser = event.getCustomerId(); + TicketEntity ticket = ticketEntityRepository.findOne(event.getTicketId()); + ticket.setLockUser(lockUser); + ticketEntityRepository.save(ticket); + LOG.info("TicketProjector Executed event:{}", event); + } + + @EventSourcingHandler + public void onUnlock(OrderTicketUnlockedEvent event) { + TicketEntity ticket = ticketEntityRepository.findOne(event.getTicketId()); + ticket.setLockUser(null); + ticketEntityRepository.save(ticket); + LOG.info("TicketProjector Executed event:{}", event); + } + + @EventSourcingHandler + public void onMove(OrderTicketMovedEvent event) { + TicketEntity ticket = ticketEntityRepository.findOne(event.getTicketId()); + ticket.setOwner(event.getCustomerId()); + ticket.setLockUser(null); + ticketEntityRepository.save(ticket); + LOG.info("TicketProjector Executed event:{}", event); + } +} diff --git a/ticket/src/main/java/com/group1/hw/ticket/web/TicketController.java b/ticket/src/main/java/com/group1/hw/ticket/web/TicketController.java new file mode 100644 index 0000000..9c20bed --- /dev/null +++ b/ticket/src/main/java/com/group1/hw/ticket/web/TicketController.java @@ -0,0 +1,41 @@ +package com.group1.hw.ticket.web; + +import com.group1.hw.ticket.query.TicketEntity; +import com.group1.hw.ticket.command.TicketCreateCommand; +import com.group1.hw.ticket.query.TicketEntityRepository; +import org.axonframework.commandhandling.gateway.CommandGateway; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; + +/** + * Created by mavlarn on 2018/5/28. + */ +@RestController +@RequestMapping("/tickets") +public class TicketController { + + private static final Logger LOG = LoggerFactory.getLogger(TicketController.class); + @Autowired + private CommandGateway commandGateway; + @Autowired + private TicketEntityRepository ticketEntityRepository; + + @PostMapping("") + public CompletableFuture create(@RequestParam String name) { + LOG.info("Request to create ticket:{}", name); + UUID ticketId = UUID.randomUUID(); + TicketCreateCommand command = new TicketCreateCommand(ticketId.toString(), name); + return commandGateway.send(command); + } + + @GetMapping("") + public List all() { + return ticketEntityRepository.findAll(); + } +} diff --git a/ticket/src/main/resources/application.yml b/ticket/src/main/resources/application.yml new file mode 100644 index 0000000..73a78b4 --- /dev/null +++ b/ticket/src/main/resources/application.yml @@ -0,0 +1,33 @@ +server: + port: 8083 +spring: + application: + name: ticket + datasource: + url: jdbc:mysql://10.0.0.130:3306/ticket + username: root + password: 123456 + driver-class-name: com.mysql.jdbc.Driver + jpa: + hibernate: + ddl-auto: update + properties: + hibernate: + enable_lazy_load_no_trans: true + rabbitmq: + host: 10.0.0.130 + port: 5672 + username: guest + password: guest + virtual-host: docker-mq-vhost +eureka: + client: + serviceUrl: + defaultZone: http://group1:111111@localhost:8761/eureka/ + +axon: + distributed: + enabled: true + amqp: + exchange: Group1.EventBus + diff --git a/ticket/src/main/resources/logback-spring.xml b/ticket/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..d632d03 --- /dev/null +++ b/ticket/src/main/resources/logback-spring.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ticket/src/test/java/com/group1/hw/ticket/Test1.java b/ticket/src/test/java/com/group1/hw/ticket/Test1.java new file mode 100644 index 0000000..b742697 --- /dev/null +++ b/ticket/src/test/java/com/group1/hw/ticket/Test1.java @@ -0,0 +1,27 @@ +package com.group1.hw.ticket; + +import org.junit.Test; + +import java.util.UUID; + +/** + * Created by mavlarn on 2018/3/30. + */ +public class Test1 { + + @Test + public void test1() { + UUID id = UUID.randomUUID(); + System.out.println(id); + System.out.println(id.variant()); + System.out.println(id.version()); + System.out.println(id.clockSequence()); + System.out.println(id.getLeastSignificantBits()); + System.out.println(id.getMostSignificantBits()); + System.out.println(id.timestamp()); + System.out.println(id.node()); + System.out.println(id.hashCode()); + + } + +} diff --git a/ticket/src/test/java/com/group1/hw/ticket/UserApplicationTests.java b/ticket/src/test/java/com/group1/hw/ticket/UserApplicationTests.java new file mode 100644 index 0000000..e8c7a87 --- /dev/null +++ b/ticket/src/test/java/com/group1/hw/ticket/UserApplicationTests.java @@ -0,0 +1,16 @@ +package com.group1.hw.ticket; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class UserApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/user/.gitignore b/user/.gitignore new file mode 100644 index 0000000..2af7cef --- /dev/null +++ b/user/.gitignore @@ -0,0 +1,24 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ \ No newline at end of file diff --git a/user/.mvn/wrapper/maven-wrapper.jar b/user/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..9cc84ea Binary files /dev/null and b/user/.mvn/wrapper/maven-wrapper.jar differ diff --git a/user/.mvn/wrapper/maven-wrapper.properties b/user/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..9dda3b6 --- /dev/null +++ b/user/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.2/apache-maven-3.5.2-bin.zip diff --git a/user/mvnw b/user/mvnw new file mode 100644 index 0000000..5bf251c --- /dev/null +++ b/user/mvnw @@ -0,0 +1,225 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +echo $MAVEN_PROJECTBASEDIR +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/user/mvnw.cmd b/user/mvnw.cmd new file mode 100644 index 0000000..019bd74 --- /dev/null +++ b/user/mvnw.cmd @@ -0,0 +1,143 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/user/pom.xml b/user/pom.xml new file mode 100644 index 0000000..5542951 --- /dev/null +++ b/user/pom.xml @@ -0,0 +1,116 @@ + + + 4.0.0 + + com.group1.hw.axon + user + 0.0.1-SNAPSHOT + jar + + user + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.5.10.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + Edgware.SR2 + + + + + org.axonframework + axon-spring-boot-starter + 3.2 + + + org.axonframework + axon-distributed-commandbus-springcloud + 3.2 + + + org.axonframework + axon-amqp + 3.2 + + + org.springframework.boot + spring-boot-starter-amqp + + + org.springframework.cloud + spring-cloud-starter-feign + + + org.springframework.cloud + spring-cloud-starter-eureka + + + org.springframework.boot + spring-boot-starter-activemq + + + org.springframework.cloud + spring-cloud-starter-hystrix + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.boot + spring-boot-starter-data-jpa + + + mysql + mysql-connector-java + 5.1.39 + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + com.group1.hw.axon + service + 1.0-SNAPSHOT + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/user/src/main/java/com/group1/hw/user/Customer.java b/user/src/main/java/com/group1/hw/user/Customer.java new file mode 100644 index 0000000..c5be56f --- /dev/null +++ b/user/src/main/java/com/group1/hw/user/Customer.java @@ -0,0 +1,113 @@ +package com.group1.hw.user; + +import com.group1.hw.user.command.CustomerDepositCommand; +import com.group1.hw.user.event.CustomerChargedEvent; +import com.group1.hw.user.event.CustomerCreatedEvent; +import com.group1.hw.user.event.CustomerDepositedEvent; +import com.group1.hw.user.command.OrderPayCommand; +import com.group1.hw.user.command.CustomerChargeCommand; +import com.group1.hw.user.command.CustomerCreateCommand; +import com.group1.hw.user.event.*; +import com.group1.hw.user.event.saga.OrderPaidEvent; +import com.group1.hw.user.event.saga.OrderPayFailedEvent; +import org.axonframework.commandhandling.CommandHandler; +import org.axonframework.commandhandling.model.AggregateIdentifier; +import org.axonframework.eventsourcing.EventSourcingHandler; +import org.axonframework.spring.stereotype.Aggregate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.axonframework.commandhandling.model.AggregateLifecycle.apply; + +/** + * Created by mavlarn on 2018/5/24. + */ +@Aggregate +public class Customer { + + private static final Logger LOG = LoggerFactory.getLogger(Customer.class); + + @AggregateIdentifier + private String customerId; + + private String username; + + private String password; + + private Double deposit; + + public Customer() { + } + + @CommandHandler + public Customer(CustomerCreateCommand command) { + apply(new CustomerCreatedEvent(command.getCustomerId(), command.getName(), command.getPassword())); + } + + @CommandHandler + public void handle(CustomerDepositCommand command) { + apply(new CustomerDepositedEvent(command.getCustomerId(), command.getAmount())); + } + + @CommandHandler + public void handle(CustomerChargeCommand command) { + if (deposit - command.getAmount() >= 0) { + apply(new CustomerChargedEvent(command.getCustomerId(), command.getAmount())); + } else { + throw new IllegalArgumentException("余额不足"); + } + } + + @CommandHandler + public void handle(OrderPayCommand command) { + if (this.getDeposit() < command.getAmount()) { + LOG.error("Not enough deposit"); + apply(new OrderPayFailedEvent(command.getOrderId())); + } else { + apply(new OrderPaidEvent(command.getOrderId(), command.getCustomerId(), command.getAmount())); + } + } + + @EventSourcingHandler + protected void on(CustomerCreatedEvent event) { + this.customerId = event.getCustomerId(); + this.username = event.getName(); + this.password = event.getPassword(); + this.deposit = 0d; + LOG.info("Executed event:{}", event); + } + + @EventSourcingHandler + protected void on(CustomerDepositedEvent event) { + this.deposit = deposit + event.getAmount(); + LOG.info("Executed event:{}", event); + } + + @EventSourcingHandler + protected void on(CustomerChargedEvent event) { + this.deposit = deposit - event.getAmount(); + LOG.info("Executed event:{}", event); + } + + @EventSourcingHandler + protected void on(OrderPaidEvent event) { + this.deposit = deposit - event.getAmount(); + LOG.info("Executed event:{}", event); + } + + public String getCustomerId() { + return customerId; + } + + public String getUsername() { + return username; + } + + public String getPassword() { + return password; + } + + public Double getDeposit() { + return deposit; + } +} diff --git a/user/src/main/java/com/group1/hw/user/CustomerController.java b/user/src/main/java/com/group1/hw/user/CustomerController.java new file mode 100644 index 0000000..f043505 --- /dev/null +++ b/user/src/main/java/com/group1/hw/user/CustomerController.java @@ -0,0 +1,63 @@ +package com.group1.hw.user; + +import com.group1.hw.user.command.CustomerDepositCommand; +import com.group1.hw.user.query.CustomerEntity; +import com.group1.hw.user.query.CustomerEntityRepository; +import com.group1.hw.user.command.CustomerCreateCommand; +import org.axonframework.commandhandling.gateway.CommandGateway; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; + +/** + * Created by mavlarn on 2018/5/22. + */ +@RestController +@RequestMapping("/customers") +public class CustomerController { + + private static final Logger LOG = LoggerFactory.getLogger(CustomerController.class); + + @Autowired + private CommandGateway commandGateway; + @Autowired + private CustomerEntityRepository customerRepository; + + @PostMapping("") + public CompletableFuture create(@RequestParam String name, @RequestParam String password) { + LOG.info("Request to create account for: {}", name); + UUID accountId = UUID.randomUUID(); + CustomerCreateCommand createCustomerCommand = new CustomerCreateCommand(accountId.toString(), name, password); + return commandGateway.send(createCustomerCommand); + } + + @PutMapping("/{accountId}/deposit/{amount}") + public CompletableFuture depositMoney(@PathVariable String accountId, @PathVariable Double amount) { + LOG.info("Request to withdraw {} from account {} ", amount, accountId); + return commandGateway.send(new CustomerDepositCommand(accountId, amount)); + } + + @PutMapping("/{accountId}/withdraw/{amount}") + public CompletableFuture withdrawMoney(@PathVariable String accountId, @PathVariable Double amount) { + LOG.info("Request to withdraw {} from account {} ", amount, accountId); + return commandGateway.send(new CustomerDepositCommand(accountId, amount)); + } + + + @GetMapping("/{accountId}") + public CustomerEntity getCustomerById(@PathVariable String accountId) { + LOG.info("Request Customer with id: {}", accountId); + return customerRepository.findOne(accountId); + } + + @GetMapping("") + public List getAllCustomers() { + LOG.info("Request all Customers"); + return customerRepository.findAll(); + } +} diff --git a/user/src/main/java/com/group1/hw/user/UserApplication.java b/user/src/main/java/com/group1/hw/user/UserApplication.java new file mode 100644 index 0000000..63da5e3 --- /dev/null +++ b/user/src/main/java/com/group1/hw/user/UserApplication.java @@ -0,0 +1,18 @@ +package com.group1.hw.user; + +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; +import org.springframework.cloud.netflix.hystrix.EnableHystrix; + +@SpringBootApplication +@EnableDiscoveryClient +@EnableHystrix +@EnableFeignClients +public class UserApplication { + + public static void main(String[] args) { + SpringApplication.run(UserApplication.class, args); + } +} diff --git a/user/src/main/java/com/group1/hw/user/command/CustomerChargeCommand.java b/user/src/main/java/com/group1/hw/user/command/CustomerChargeCommand.java new file mode 100644 index 0000000..893b4e9 --- /dev/null +++ b/user/src/main/java/com/group1/hw/user/command/CustomerChargeCommand.java @@ -0,0 +1,38 @@ +package com.group1.hw.user.command; + +import org.axonframework.commandhandling.TargetAggregateIdentifier; + +import javax.validation.constraints.Min; + +/** + * Created by mavlarn on 2018/5/22. + */ +public class CustomerChargeCommand { + + @TargetAggregateIdentifier + private String customerId; + + @Min(value = 1, message = "金额最小为1") + private Double amount; + + public CustomerChargeCommand(String customerId, Double amount) { + this.customerId = customerId; + this.amount = amount; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public Double getAmount() { + return amount; + } + + public void setAmount(Double amount) { + this.amount = amount; + } +} diff --git a/user/src/main/java/com/group1/hw/user/command/CustomerCreateCommand.java b/user/src/main/java/com/group1/hw/user/command/CustomerCreateCommand.java new file mode 100644 index 0000000..7e30710 --- /dev/null +++ b/user/src/main/java/com/group1/hw/user/command/CustomerCreateCommand.java @@ -0,0 +1,33 @@ +package com.group1.hw.user.command; + +import org.axonframework.commandhandling.TargetAggregateIdentifier; + +/** + * Created by mavlarn on 2018/5/22. + */ +public class CustomerCreateCommand { + + @TargetAggregateIdentifier + private String customerId; + + private String name; + private String password; + + public CustomerCreateCommand(String customerId, String name, String password) { + this.customerId = customerId; + this.name = name; + this.password = password; + } + + public String getCustomerId() { + return customerId; + } + + public String getName() { + return name; + } + + public String getPassword() { + return password; + } +} diff --git a/user/src/main/java/com/group1/hw/user/command/CustomerDepositCommand.java b/user/src/main/java/com/group1/hw/user/command/CustomerDepositCommand.java new file mode 100644 index 0000000..25e9468 --- /dev/null +++ b/user/src/main/java/com/group1/hw/user/command/CustomerDepositCommand.java @@ -0,0 +1,38 @@ +package com.group1.hw.user.command; + +import org.axonframework.commandhandling.TargetAggregateIdentifier; + +import javax.validation.constraints.Min; + +/** + * Created by mavlarn on 2018/5/22. + */ +public class CustomerDepositCommand { + + @TargetAggregateIdentifier + private String customerId; + + @Min(value = 1, message = "充值金额最小为1") + private Double amount; + + public CustomerDepositCommand(String customerId, Double amount) { + this.customerId = customerId; + this.amount = amount; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public Double getAmount() { + return amount; + } + + public void setAmount(Double amount) { + this.amount = amount; + } +} diff --git a/user/src/main/java/com/group1/hw/user/config/AxonConfig.java b/user/src/main/java/com/group1/hw/user/config/AxonConfig.java new file mode 100644 index 0000000..d0be99a --- /dev/null +++ b/user/src/main/java/com/group1/hw/user/config/AxonConfig.java @@ -0,0 +1,71 @@ +package com.group1.hw.user.config; + +import com.rabbitmq.client.Channel; +import org.axonframework.amqp.eventhandling.spring.SpringAMQPMessageSource; +import org.axonframework.config.EventHandlingConfiguration; +import org.axonframework.serialization.Serializer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.core.*; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +/** + * Created by mavlarn on 2018/6/4. + */ +@Configuration +public class AxonConfig { + + private static final Logger LOG = LoggerFactory.getLogger(AxonConfig.class); + + @Value("${axon.amqp.exchange}") + private String exchangeName; + + @Bean + public Queue userQueue(){ + return new Queue("user",true); + } + + @Bean + public Exchange exchange(){ + return ExchangeBuilder.topicExchange(exchangeName).durable(true).build(); + } + + @Bean + public Binding userQueueBinding() { + return BindingBuilder.bind(userQueue()).to(exchange()).with("com.group1.hw.user.event.#").noargs(); + } + + @Bean + public Queue ticketSagaQueue(){ + return new Queue("saga", true); + } + + @Bean + public Binding ticketSagaQueueBinding() { + return BindingBuilder.bind(ticketSagaQueue()).to(exchange()).with("com.group1.hw.user.event.saga.#").noargs(); + } + + @Bean + public SpringAMQPMessageSource userMessageSource(Serializer serializer) { + return new SpringAMQPMessageSource(serializer){ + @RabbitListener(queues = "user") + @Override + public void onMessage(Message message, Channel channel) throws Exception { + LOG.debug("Message received: {}", message); + super.onMessage(message, channel); + } + }; + } + + @Autowired + public void configure(EventHandlingConfiguration ehConfig, SpringAMQPMessageSource userMessageSource, + SpringAMQPMessageSource ticketMessageSource, SpringAMQPMessageSource orderMessageSource) { + ehConfig.registerSubscribingEventProcessor("UserEventProcessor", c -> userMessageSource); + } + +} diff --git a/user/src/main/java/com/group1/hw/user/event/CustomerChargedEvent.java b/user/src/main/java/com/group1/hw/user/event/CustomerChargedEvent.java new file mode 100644 index 0000000..818f596 --- /dev/null +++ b/user/src/main/java/com/group1/hw/user/event/CustomerChargedEvent.java @@ -0,0 +1,25 @@ +package com.group1.hw.user.event; + + +/** + * Created by mavlarn on 2018/5/22. + */ +public class CustomerChargedEvent { + + private String customerId; + + private Double amount; + + public CustomerChargedEvent(String customerId, Double amount) { + this.customerId = customerId; + this.amount = amount; + } + + public String getCustomerId() { + return customerId; + } + + public Double getAmount() { + return amount; + } +} diff --git a/user/src/main/java/com/group1/hw/user/event/CustomerCreatedEvent.java b/user/src/main/java/com/group1/hw/user/event/CustomerCreatedEvent.java new file mode 100644 index 0000000..7e69b6a --- /dev/null +++ b/user/src/main/java/com/group1/hw/user/event/CustomerCreatedEvent.java @@ -0,0 +1,30 @@ +package com.group1.hw.user.event; + +/** + * Created by mavlarn on 2018/5/22. + */ +public class CustomerCreatedEvent { + + private String customerId; + private String name; + private String password; + + public CustomerCreatedEvent(String customerId, String name, String password) { + this.customerId = customerId; + this.name = name; + this.password = password; + } + + public String getCustomerId() { + return customerId; + } + + public String getName() { + return name; + } + + public String getPassword() { + return password; + } + +} diff --git a/user/src/main/java/com/group1/hw/user/event/CustomerDepositedEvent.java b/user/src/main/java/com/group1/hw/user/event/CustomerDepositedEvent.java new file mode 100644 index 0000000..07ddff6 --- /dev/null +++ b/user/src/main/java/com/group1/hw/user/event/CustomerDepositedEvent.java @@ -0,0 +1,24 @@ +package com.group1.hw.user.event; + +/** + * Created by mavlarn on 2018/5/22. + */ +public class CustomerDepositedEvent { + + private String customerId; + private Double amount; + + public CustomerDepositedEvent(String customerId, Double amount) { + this.customerId = customerId; + this.amount = amount; + } + + public String getCustomerId() { + return customerId; + } + + public Double getAmount() { + return amount; + } + +} diff --git a/user/src/main/java/com/group1/hw/user/query/CustomerEntity.java b/user/src/main/java/com/group1/hw/user/query/CustomerEntity.java new file mode 100644 index 0000000..1891382 --- /dev/null +++ b/user/src/main/java/com/group1/hw/user/query/CustomerEntity.java @@ -0,0 +1,64 @@ +package com.group1.hw.user.query; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; + +/** + * Created by mavlarn on 2018/1/20. + */ +@Entity(name = "tb_customer") +public class CustomerEntity { + + @Id + private String id; + + @Column(name = "user_name") + private String username; + + private String password; + + private Double deposit; + + public CustomerEntity() { + } + + public CustomerEntity(String id, String username, String password, Double deposit) { + this.id = id; + this.username = username; + this.password = password; + this.deposit = deposit; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Double getDeposit() { + return deposit; + } + + public void setDeposit(Double deposit) { + this.deposit = deposit; + } +} diff --git a/user/src/main/java/com/group1/hw/user/query/CustomerEntityRepository.java b/user/src/main/java/com/group1/hw/user/query/CustomerEntityRepository.java new file mode 100644 index 0000000..c806222 --- /dev/null +++ b/user/src/main/java/com/group1/hw/user/query/CustomerEntityRepository.java @@ -0,0 +1,9 @@ +package com.group1.hw.user.query; + +import org.springframework.data.jpa.repository.JpaRepository; + +/** + * Created by mavlarn on 2018/5/22. + */ +public interface CustomerEntityRepository extends JpaRepository { +} diff --git a/user/src/main/java/com/group1/hw/user/query/CustomerProjector.java b/user/src/main/java/com/group1/hw/user/query/CustomerProjector.java new file mode 100644 index 0000000..102b981 --- /dev/null +++ b/user/src/main/java/com/group1/hw/user/query/CustomerProjector.java @@ -0,0 +1,57 @@ +package com.group1.hw.user.query; + +import com.group1.hw.user.event.CustomerChargedEvent; +import com.group1.hw.user.event.CustomerCreatedEvent; +import com.group1.hw.user.event.CustomerDepositedEvent; +import com.group1.hw.user.event.saga.OrderPaidEvent; +import org.axonframework.config.ProcessingGroup; +import org.axonframework.eventhandling.EventHandler; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * Created by mavlarn on 2018/5/22. + */ +@Service +@ProcessingGroup("UserEventProcessor") +public class CustomerProjector { + + @Autowired + private CustomerEntityRepository repository; + + @EventHandler + public void on(CustomerCreatedEvent event) { + CustomerEntity customer = new CustomerEntity(event.getCustomerId(), event.getName(), event.getPassword(), 0d); + repository.save(customer); + } + + @EventHandler + public void on(CustomerDepositedEvent event) { + String customerId = event.getCustomerId(); + CustomerEntity accountView = repository.getOne(customerId); + + Double newDeposit = accountView.getDeposit() + event.getAmount(); + accountView.setDeposit(newDeposit); + repository.save(accountView); + } + + @EventHandler + public void on(CustomerChargedEvent event) { + String customerId = event.getCustomerId(); + CustomerEntity customer = repository.getOne(customerId); + + Double newDeposit = customer.getDeposit() - event.getAmount(); + customer.setDeposit(newDeposit); + repository.save(customer); + } + + @EventHandler + public void on(OrderPaidEvent event) { + String customerId = event.getCustomerId(); + CustomerEntity customer = repository.getOne(customerId); + + Double newDeposit = customer.getDeposit() - event.getAmount(); + customer.setDeposit(newDeposit); + repository.save(customer); + } +} diff --git a/user/src/main/resources/application.yml b/user/src/main/resources/application.yml new file mode 100644 index 0000000..978d089 --- /dev/null +++ b/user/src/main/resources/application.yml @@ -0,0 +1,33 @@ +server: + port: 8081 +spring: + application: + name: user + datasource: + url: jdbc:mysql://10.0.0.130:3306/user + username: root + password: 123456 + driver-class-name: com.mysql.jdbc.Driver + jpa: + hibernate: + ddl-auto: update + properties: + hibernate: + enable_lazy_load_no_trans: true + rabbitmq: + host: 10.0.0.130 + port: 5672 + username: guest + password: guest + virtual-host: docker-mq-vhost + +eureka: + client: + serviceUrl: + defaultZone: http://group1:111111@localhost:8761/eureka/ + +axon: + distributed: + enabled: true + amqp: + exchange: Group1.EventBus diff --git a/user/src/main/resources/logback-spring.xml b/user/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..ef0efb1 --- /dev/null +++ b/user/src/main/resources/logback-spring.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/user/src/test/java/com/group1/hw/ticket/UserApplicationTests.java b/user/src/test/java/com/group1/hw/ticket/UserApplicationTests.java new file mode 100644 index 0000000..e8c7a87 --- /dev/null +++ b/user/src/test/java/com/group1/hw/ticket/UserApplicationTests.java @@ -0,0 +1,16 @@ +package com.group1.hw.ticket; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class UserApplicationTests { + + @Test + public void contextLoads() { + } + +}