From 727f860abda40058d2d38e64bee90cb4ae8f0553 Mon Sep 17 00:00:00 2001
From: mrbird <852252810@qq.com>
Date: Mon, 25 Mar 2019 09:25:59 +0800
Subject: [PATCH] =?UTF-8?q?=E7=9B=91=E6=8E=A7Dubbo=E6=9C=8D=E5=8A=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
52.Dubbo-OPS-Mointor/dubbo-admin/pom.xml | 80 ++
.../dubboadmin/DubboAdminApplication.java | 33 +
.../com/alibaba/dubboadmin/SpringUtil.java | 60 ++
.../alibaba/dubboadmin/config/I18nConfig.java | 58 ++
.../dubboadmin/config/XmlConfiguration.java | 28 +
.../dubboadmin/filter/LoginFilter.java | 232 +++++
.../common/i18n/MessageResourceService.java | 25 +
.../i18n/impl/MessageResourceServiceImpl.java | 53 +
.../governance/service/ConfigService.java | 34 +
.../governance/service/ConsumerService.java | 58 ++
.../governance/service/OverrideService.java | 49 +
.../governance/service/OwnerService.java | 41 +
.../governance/service/ProviderService.java | 73 ++
.../governance/service/RouteService.java | 57 ++
.../governance/service/UserService.java | 51 +
.../service/impl/AbstractService.java | 46 +
.../service/impl/ConfigServiceImpl.java | 46 +
.../service/impl/ConsumerServiceImpl.java | 223 ++++
.../service/impl/OverrideServiceImpl.java | 191 ++++
.../service/impl/OwnerServiceImpl.java | 160 +++
.../service/impl/ProviderServiceImpl.java | 461 +++++++++
.../service/impl/RouteServiceImpl.java | 169 ++++
.../service/impl/UserServiceImpl.java | 134 +++
.../governance/sync/RegistryServerSync.java | 162 +++
.../dubboadmin/governance/sync/util/Pair.java | 84 ++
.../governance/sync/util/SyncUtils.java | 256 +++++
.../governance/util/ContextUtil.java | 38 +
.../governance/util/GovernanceWarmup.java | 108 ++
.../dubboadmin/governance/util/Paginator.java | 195 ++++
.../dubboadmin/governance/util/UrlUtils.java | 61 ++
.../governance/util/WebConstants.java | 85 ++
.../registry/common/ChangeListener.java | 28 +
.../registry/common/StatusManager.java | 122 +++
.../registry/common/domain/Access.java | 70 ++
.../registry/common/domain/Agreement.java | 104 ++
.../registry/common/domain/Approval.java | 89 ++
.../common/domain/ApprovalRequisition.java | 99 ++
.../registry/common/domain/Change.java | 99 ++
.../registry/common/domain/Cluster.java | 60 ++
.../registry/common/domain/Config.java | 97 ++
.../registry/common/domain/Consumer.java | 229 +++++
.../registry/common/domain/DependItem.java | 97 ++
.../registry/common/domain/Dependency.java | 45 +
.../registry/common/domain/Document.java | 86 ++
.../registry/common/domain/Entity.java | 121 +++
.../registry/common/domain/Favorite.java | 60 ++
.../registry/common/domain/Feature.java | 62 ++
.../registry/common/domain/Layer.java | 66 ++
.../registry/common/domain/LoadBalance.java | 75 ++
.../registry/common/domain/Mock.java | 124 +++
.../registry/common/domain/Operation.java | 100 ++
.../registry/common/domain/Override.java | 202 ++++
.../registry/common/domain/Owner.java | 63 ++
.../registry/common/domain/PageList.java | 101 ++
.../registry/common/domain/Provider.java | 214 ++++
.../registry/common/domain/Registry.java | 94 ++
.../registry/common/domain/Route.java | 201 ++++
.../registry/common/domain/SearchHistory.java | 60 ++
.../registry/common/domain/Test.java | 114 +++
.../registry/common/domain/User.java | 259 +++++
.../registry/common/domain/Weight.java | 71 ++
.../registry/common/registry/ConvertUtil.java | 117 +++
.../registry/common/route/OverrideUtils.java | 119 +++
.../registry/common/route/ParseUtils.java | 335 ++++++
.../registry/common/route/RouteRule.java | 567 +++++++++++
.../registry/common/route/RouteRuleUtils.java | 155 +++
.../registry/common/route/RouteUtils.java | 314 ++++++
.../common/status/DatabaseStatusChecker.java | 99 ++
.../common/status/LoadStatusChecker.java | 45 +
.../common/status/MemoryStatusChecker.java | 40 +
.../registry/common/util/Coder.java | 59 ++
.../registry/common/util/Entities.java | 953 ++++++++++++++++++
.../registry/common/util/IntHashMap.java | 357 +++++++
.../registry/common/util/LocaleUtils.java | 38 +
.../registry/common/util/MessageSource.java | 64 ++
.../registry/common/util/OverrideUtils.java | 125 +++
.../common/util/StringEscapeUtils.java | 661 ++++++++++++
.../dubboadmin/registry/common/util/Tool.java | 167 +++
.../dubboadmin/web/mvc/BaseController.java | 85 ++
.../dubboadmin/web/mvc/RouterController.java | 344 +++++++
.../web/mvc/common/auth/DubboUser.java | 44 +
.../web/mvc/common/i18n/LocaleUtil.java | 36 +
.../mvc/governance/AccessesController.java | 303 ++++++
.../mvc/governance/AddressesController.java | 155 +++
.../governance/ApplicationsController.java | 336 ++++++
.../mvc/governance/ConsumersController.java | 538 ++++++++++
.../governance/LoadbalancesController.java | 191 ++++
.../NoServicePrivilegeController.java | 36 +
.../mvc/governance/OverridesController.java | 441 ++++++++
.../web/mvc/governance/OwnersController.java | 132 +++
.../mvc/governance/ProvidersController.java | 507 ++++++++++
.../web/mvc/governance/RoutesController.java | 644 ++++++++++++
.../mvc/governance/ServicesController.java | 236 +++++
.../web/mvc/governance/WeightsController.java | 305 ++++++
.../web/mvc/home/DisableController.java | 65 ++
.../web/mvc/home/IndexController.java | 87 ++
.../web/mvc/home/LookupController.java | 83 ++
.../web/mvc/home/RegController.java | 42 +
.../web/mvc/home/RegisterController.java | 75 ++
.../web/mvc/home/RestfulController.java | 99 ++
.../web/mvc/home/ResultController.java | 78 ++
.../web/mvc/home/ServicestatusController.java | 66 ++
.../web/mvc/home/ShellController.java | 78 ++
.../web/mvc/home/StatusController.java | 68 ++
.../web/mvc/home/UnregController.java | 56 +
.../web/mvc/home/UnregisterController.java | 64 ++
.../web/mvc/home/UnregisterallController.java | 61 ++
.../web/mvc/personal/InfosController.java | 51 +
.../web/mvc/personal/PasswdsController.java | 49 +
.../web/mvc/sysinfo/DumpController.java | 164 +++
.../web/mvc/sysinfo/DumpsController.java | 67 ++
.../web/mvc/sysinfo/EnvsController.java | 117 +++
.../web/mvc/sysinfo/LogsController.java | 99 ++
.../web/mvc/sysinfo/StatusesController.java | 55 +
.../web/mvc/sysinfo/VersionsController.java | 114 +++
.../web/mvc/sysmanage/ConfigsController.java | 89 ++
.../mvc/sysmanage/PrivilegesController.java | 23 +
.../web/mvc/sysmanage/UserownController.java | 43 +
.../web/pulltool/DateFormatUtil.java | 74 ++
.../web/pulltool/I18nMessageTool.java | 46 +
.../web/pulltool/RootContextPath.java | 41 +
.../alibaba/dubboadmin/web/pulltool/Tool.java | 489 +++++++++
.../dubboadmin/web/pulltool/ToolUtil.java | 52 +
.../src/main/resources/application.properties | 27 +
.../src/main/resources/dubbo-admin.xml | 29 +
.../main/resources/i18n/message.properties | 16 +
.../main/resources/i18n/message_en.properties | 768 ++++++++++++++
.../main/resources/i18n/message_zh.properties | 802 +++++++++++++++
.../resources/i18n/message_zh_CN.properties | 802 +++++++++++++++
.../resources/i18n/message_zh_TW.properties | 726 +++++++++++++
.../src/main/resources/log4j.properties | 37 +
.../src/main/resources/static/css/common.css | 689 +++++++++++++
.../src/main/resources/static/css/dubbo.css | 335 ++++++
.../src/main/resources/static/css/skin.css | 275 +++++
.../main/resources/static/images/404error.gif | Bin 0 -> 2131 bytes
.../src/main/resources/static/images/bg01.gif | Bin 0 -> 52 bytes
.../src/main/resources/static/images/bg02.gif | Bin 0 -> 52 bytes
.../src/main/resources/static/images/bg03.gif | Bin 0 -> 52 bytes
.../src/main/resources/static/images/bg04.gif | Bin 0 -> 816 bytes
.../main/resources/static/images/btn_info.png | Bin 0 -> 3713 bytes
.../resources/static/images/btn_service.png | Bin 0 -> 3718 bytes
.../resources/static/images/button_hover.png | Bin 0 -> 3084 bytes
.../resources/static/images/button_normal.png | Bin 0 -> 3551 bytes
.../main/resources/static/images/co_01.gif | Bin 0 -> 138 bytes
.../main/resources/static/images/co_02.gif | Bin 0 -> 141 bytes
.../main/resources/static/images/co_03.gif | Bin 0 -> 141 bytes
.../main/resources/static/images/co_04.gif | Bin 0 -> 142 bytes
.../src/main/resources/static/images/dog.gif | Bin 0 -> 1908 bytes
.../resources/static/images/dubbo_list_th.png | Bin 0 -> 3558 bytes
.../src/main/resources/static/images/exit.png | Bin 0 -> 3888 bytes
.../resources/static/images/fav_arrow.png | Bin 0 -> 3888 bytes
.../static/images/fav_tab_active.png | Bin 0 -> 2889 bytes
.../static/images/fav_tab_normal.png | Bin 0 -> 2867 bytes
.../resources/static/images/fav_title.png | Bin 0 -> 3553 bytes
.../main/resources/static/images/head_bg.png | Bin 0 -> 2836 bytes
.../main/resources/static/images/ico_add.png | Bin 0 -> 3050 bytes
.../main/resources/static/images/ico_back.png | Bin 0 -> 3258 bytes
.../resources/static/images/ico_balance.png | Bin 0 -> 3090 bytes
.../resources/static/images/ico_cancel.png | Bin 0 -> 3487 bytes
.../resources/static/images/ico_delete.png | Bin 0 -> 3223 bytes
.../resources/static/images/ico_disable.png | Bin 0 -> 3206 bytes
.../main/resources/static/images/ico_down.png | Bin 0 -> 318 bytes
.../main/resources/static/images/ico_edit.png | Bin 0 -> 3053 bytes
.../resources/static/images/ico_enable.png | Bin 0 -> 3252 bytes
.../resources/static/images/ico_error.png | Bin 0 -> 222 bytes
.../resources/static/images/ico_favorite.png | Bin 0 -> 3287 bytes
.../main/resources/static/images/ico_forb.png | Bin 0 -> 3924 bytes
.../resources/static/images/ico_graph.png | Bin 0 -> 280 bytes
.../main/resources/static/images/ico_help.png | Bin 0 -> 924 bytes
.../main/resources/static/images/ico_list.png | Bin 0 -> 344 bytes
.../resources/static/images/ico_password.png | Bin 0 -> 3267 bytes
.../resources/static/images/ico_reconnect.png | Bin 0 -> 3018 bytes
.../resources/static/images/ico_recover.png | Bin 0 -> 3371 bytes
.../resources/static/images/ico_register.png | Bin 0 -> 3312 bytes
.../resources/static/images/ico_reload.png | Bin 0 -> 3016 bytes
.../resources/static/images/ico_renotify.png | Bin 0 -> 3173 bytes
.../main/resources/static/images/ico_run.png | Bin 0 -> 3592 bytes
.../main/resources/static/images/ico_save.png | Bin 0 -> 3084 bytes
.../resources/static/images/ico_search.png | Bin 0 -> 3326 bytes
.../main/resources/static/images/ico_show.png | Bin 0 -> 3195 bytes
.../resources/static/images/ico_subscribe.png | Bin 0 -> 3142 bytes
.../main/resources/static/images/ico_tree.png | Bin 0 -> 356 bytes
.../main/resources/static/images/ico_up.png | Bin 0 -> 1499 bytes
.../main/resources/static/images/ico_user.png | Bin 0 -> 3066 bytes
.../main/resources/static/images/ico_warn.png | Bin 0 -> 644 bytes
.../main/resources/static/images/input.png | Bin 0 -> 3586 bytes
.../main/resources/static/images/login_bg.png | Bin 0 -> 145515 bytes
.../resources/static/images/login_box.png | Bin 0 -> 13308 bytes
.../static/images/login_btn_hover.png | Bin 0 -> 2983 bytes
.../static/images/login_btn_normal.png | Bin 0 -> 296 bytes
.../resources/static/images/login_shadow.png | Bin 0 -> 3585 bytes
.../src/main/resources/static/images/logo.png | Bin 0 -> 15743 bytes
.../main/resources/static/images/main_bg.png | Bin 0 -> 2864 bytes
.../main/resources/static/images/nav_bg.png | Bin 0 -> 2857 bytes
.../resources/static/images/nav_btn_bg22.png | Bin 0 -> 3211 bytes
.../resources/static/images/nav_btn_bg3.png | Bin 0 -> 1996 bytes
.../resources/static/images/nav_btn_bg33.png | Bin 0 -> 4856 bytes
.../resources/static/images/nav_btn_bg44.png | Bin 0 -> 4594 bytes
.../main/resources/static/images/nav_pass.png | Bin 0 -> 3662 bytes
.../resources/static/images/nav_selected.png | Bin 0 -> 3652 bytes
.../resources/static/images/pop_close.png | Bin 0 -> 3950 bytes
.../main/resources/static/images/pop_left.png | Bin 0 -> 3546 bytes
.../static/images/pop_leftbottom.png | Bin 0 -> 3693 bytes
.../static/images/pop_lefttop_small.png | Bin 0 -> 6954 bytes
.../resources/static/images/pop_midbottom.png | Bin 0 -> 3549 bytes
.../static/images/pop_midtop_small.png | Bin 0 -> 3549 bytes
.../resources/static/images/pop_right.png | Bin 0 -> 3547 bytes
.../static/images/pop_rightbottom.png | Bin 0 -> 2973 bytes
.../static/images/pop_righttop_small.png | Bin 0 -> 5186 bytes
.../resources/static/images/search_active.png | Bin 0 -> 2866 bytes
.../resources/static/images/search_btn.png | Bin 0 -> 654 bytes
.../static/images/search_global_m.png | Bin 0 -> 3579 bytes
.../resources/static/images/search_input.png | Bin 0 -> 4228 bytes
.../resources/static/images/search_line.png | Bin 0 -> 2795 bytes
.../resources/static/images/tab_active.png | Bin 0 -> 3541 bytes
.../static/images/table_title_bg.png | Bin 0 -> 3595 bytes
.../resources/static/images/tip_choose.png | Bin 0 -> 10725 bytes
.../resources/static/images/tip_confirm.png | Bin 0 -> 11185 bytes
.../main/resources/static/images/tip_del.png | Bin 0 -> 19215 bytes
.../resources/static/images/tip_succeed.png | Bin 0 -> 19527 bytes
.../resources/static/images/tree-blank.gif | Bin 0 -> 69 bytes
.../static/images/tree-down-left.gif | Bin 0 -> 100 bytes
.../resources/static/images/tree-down.gif | Bin 0 -> 103 bytes
.../resources/static/images/tree-left-up.gif | Bin 0 -> 98 bytes
.../static/images/tree-right-down.gif | Bin 0 -> 94 bytes
.../resources/static/images/tree-up-right.gif | Bin 0 -> 101 bytes
.../main/resources/static/images/tree-up.gif | Bin 0 -> 104 bytes
.../src/main/resources/static/js/ajax.js | 89 ++
.../src/main/resources/static/js/box.js | 97 ++
.../src/main/resources/static/js/dubbo.js | 546 ++++++++++
.../resources/static/js/jquery-1.4.2.min.js | 154 +++
.../resources/static/js/jquery.hoverIntent.js | 150 +++
.../static/js/jquery.simplemodal-1.4.js | 721 +++++++++++++
.../src/main/resources/static/js/menu.js | 69 ++
.../src/main/resources/static/js/pop.js | 82 ++
.../src/main/resources/static/js/trcolor.js | 47 +
.../templates/common/screen/error_404.vm | 152 +++
.../templates/common/screen/error_other.vm | 133 +++
.../src/main/resources/templates/default.vm | 15 +
.../templates/governance/layout/default.vm | 294 ++++++
.../governance/layout/noServicePrivilege.vm | 29 +
.../templates/governance/layout/redirect.vm | 29 +
.../templates/governance/layout/search.vm | 15 +
.../governance/screen/accesses/add.vm | 108 ++
.../governance/screen/accesses/index.vm | 92 ++
.../governance/screen/addresses/index.vm | 62 ++
.../governance/screen/addresses/search.vm | 19 +
.../governance/screen/applications/index.vm | 156 +++
.../governance/screen/applications/search.vm | 19 +
.../governance/screen/consumers/edit.vm | 143 +++
.../governance/screen/consumers/index.vm | 219 ++++
.../governance/screen/consumers/notified.vm | 133 +++
.../governance/screen/consumers/routed.vm | 139 +++
.../governance/screen/consumers/show.vm | 139 +++
.../templates/governance/screen/error.vm | 15 +
.../governance/screen/loadbalances/add.vm | 120 +++
.../governance/screen/loadbalances/edit.vm | 103 ++
.../governance/screen/loadbalances/index.vm | 82 ++
.../governance/screen/loadbalances/show.vm | 45 +
.../governance/screen/noServicePrivilege.vm | 44 +
.../governance/screen/overrides/add.vm | 208 ++++
.../governance/screen/overrides/edit.vm | 232 +++++
.../governance/screen/overrides/index.vm | 90 ++
.../governance/screen/overrides/show.vm | 183 ++++
.../templates/governance/screen/owners/add.vm | 71 ++
.../governance/screen/owners/index.vm | 55 +
.../governance/screen/providers/add.vm | 98 ++
.../governance/screen/providers/edit.vm | 109 ++
.../governance/screen/providers/index.vm | 182 ++++
.../governance/screen/providers/show.vm | 126 +++
.../templates/governance/screen/redirect.vm | 73 ++
.../templates/governance/screen/routes/add.vm | 265 +++++
.../governance/screen/routes/edit.vm | 268 +++++
.../governance/screen/routes/index.vm | 122 +++
.../governance/screen/routes/preview.vm | 29 +
.../governance/screen/routes/routeselect.vm | 108 ++
.../governance/screen/routes/show.vm | 95 ++
.../governance/screen/services/index.vm | 169 ++++
.../governance/screen/services/search.vm | 19 +
.../governance/screen/weights/add.vm | 142 +++
.../governance/screen/weights/edit.vm | 132 +++
.../governance/screen/weights/index.vm | 69 ++
.../governance/screen/weights/show.vm | 90 ++
.../resources/templates/home/control/menu.vm | 136 +++
.../resources/templates/home/screen/ajax.vm | 15 +
.../resources/templates/home/screen/index.vm | 284 ++++++
.../templates/home/screen/services.vm | 26 +
.../templates/sysinfo/layout/default.vm | 148 +++
.../templates/sysinfo/layout/redirect.vm | 29 +
.../templates/sysinfo/layout/search.vm | 15 +
.../templates/sysinfo/screen/dumps/index.vm | 76 ++
.../templates/sysinfo/screen/envs/index.vm | 35 +
.../templates/sysinfo/screen/logs/index.vm | 55 +
.../templates/sysinfo/screen/redirect.vm | 71 ++
.../templates/sysinfo/screen/socketConn.vm | 122 +++
.../sysinfo/screen/statuses/index.vm | 59 ++
.../sysinfo/screen/versions/index.vm | 35 +
.../templates/sysinfo/screen/versions/show.vm | 38 +
.../DubboAdminApplicationTests.java | 35 +
.../dubbo-monitor-simple/pom.xml | 112 ++
.../src/main/assembly/assembly.xml | 40 +
.../dubbo/monitor/simple/MonitorStarter.java | 27 +
.../monitor/simple/SimpleMonitorService.java | 400 ++++++++
.../monitor/simple/common/CountUtils.java | 92 ++
.../dubbo/monitor/simple/common/Menu.java | 39 +
.../monitor/simple/common/MenuComparator.java | 45 +
.../dubbo/monitor/simple/common/Page.java | 82 ++
.../simple/container/JettyContainer.java | 89 ++
.../simple/container/RegistryContainer.java | 293 ++++++
.../simple/pages/ApplicationsPageHandler.java | 82 ++
.../simple/pages/ChartsPageHandler.java | 95 ++
.../simple/pages/ClientsPageHandler.java | 77 ++
.../simple/pages/ConsumersPageHandler.java | 88 ++
.../simple/pages/DependenciesPageHandler.java | 88 ++
.../monitor/simple/pages/HomePageHandler.java | 48 +
.../simple/pages/HostsPageHandler.java | 75 ++
.../monitor/simple/pages/LogPageHandler.java | 106 ++
.../simple/pages/ProvidersPageHandler.java | 88 ++
.../simple/pages/RegisteredPageHandler.java | 78 ++
.../simple/pages/RegistriesPageHandler.java | 70 ++
.../simple/pages/ServersPageHandler.java | 55 +
.../simple/pages/ServicesPageHandler.java | 72 ++
.../simple/pages/StatisticsPageHandler.java | 167 +++
.../simple/pages/StatusPageHandler.java | 84 ++
.../simple/pages/SubscribedPageHandler.java | 78 ++
.../simple/pages/SystemPageHandler.java | 137 +++
.../simple/pages/UnregisterPageHandler.java | 49 +
.../simple/pages/UnsubscribePageHandler.java | 64 ++
.../monitor/simple/servlet/PageHandler.java | 37 +
.../monitor/simple/servlet/PageServlet.java | 282 ++++++
.../simple/servlet/ResourceFilter.java | 151 +++
.../resources/META-INF/assembly/bin/dump.sh | 92 ++
.../META-INF/assembly/bin/restart.sh | 4 +
.../resources/META-INF/assembly/bin/server.sh | 24 +
.../resources/META-INF/assembly/bin/start.bat | 22 +
.../resources/META-INF/assembly/bin/start.sh | 106 ++
.../resources/META-INF/assembly/bin/stop.sh | 44 +
.../com.alibaba.dubbo.container.Container | 2 +
...a.dubbo.monitor.simple.servlet.PageHandler | 19 +
.../META-INF/spring/dubbo-monitor-simple.xml | 41 +
.../src/main/resources/conf/dubbo.properties | 29 +
.../src/main/resources/log4j.xml | 29 +
.../dubbo/monitor/simple/SimpleMonitor.java | 25 +
.../simple/SimpleMonitorServiceTest.java | 34 +
.../src/test/resources/dubbo.properties | 29 +
.../src/test/resources/log4j.xml | 29 +
.../common-api/pom.xml | 14 +
.../cc/mrbird/common/api/HelloService.java | 5 +
.../spring-boot-dubbo-applicaiton/pom.xml | 73 ++
.../server-consumer/pom.xml | 21 +
.../java/cc/mrbird/ConsumerApplicaiton.java | 13 +
.../consumer/controller/HelloController.java | 19 +
.../src/main/resources/application.yml | 15 +
.../server-provider/pom.xml | 21 +
.../java/cc/mrbird/ProviderApplicaiton.java | 14 +
.../provider/service/HelloServiceImpl.java | 14 +
.../src/main/resources/application.yml | 18 +
357 files changed, 34532 insertions(+)
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/pom.xml
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/DubboAdminApplication.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/SpringUtil.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/config/I18nConfig.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/config/XmlConfiguration.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/filter/LoginFilter.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/biz/common/i18n/MessageResourceService.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/biz/common/i18n/impl/MessageResourceServiceImpl.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ConfigService.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ConsumerService.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/OverrideService.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/OwnerService.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ProviderService.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/RouteService.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/UserService.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/AbstractService.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ConfigServiceImpl.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ConsumerServiceImpl.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/OverrideServiceImpl.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/OwnerServiceImpl.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ProviderServiceImpl.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/RouteServiceImpl.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/UserServiceImpl.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/sync/RegistryServerSync.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/sync/util/Pair.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/sync/util/SyncUtils.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/ContextUtil.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/GovernanceWarmup.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/Paginator.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/UrlUtils.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/WebConstants.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/ChangeListener.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/StatusManager.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Access.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Agreement.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Approval.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/ApprovalRequisition.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Change.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Cluster.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Config.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Consumer.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/DependItem.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Dependency.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Document.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Entity.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Favorite.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Feature.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Layer.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/LoadBalance.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Mock.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Operation.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Override.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Owner.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/PageList.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Provider.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Registry.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Route.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/SearchHistory.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Test.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/User.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Weight.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/registry/ConvertUtil.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/OverrideUtils.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/ParseUtils.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/RouteRule.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/RouteRuleUtils.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/RouteUtils.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/status/DatabaseStatusChecker.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/status/LoadStatusChecker.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/status/MemoryStatusChecker.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/Coder.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/Entities.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/IntHashMap.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/LocaleUtils.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/MessageSource.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/OverrideUtils.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/StringEscapeUtils.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/Tool.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/BaseController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/RouterController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/common/auth/DubboUser.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/common/i18n/LocaleUtil.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/AccessesController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/AddressesController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/ApplicationsController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/ConsumersController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/LoadbalancesController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/NoServicePrivilegeController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/OverridesController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/OwnersController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/ProvidersController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/RoutesController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/ServicesController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/WeightsController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/home/DisableController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/home/IndexController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/home/LookupController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/home/RegController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/home/RegisterController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/home/RestfulController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/home/ResultController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/home/ServicestatusController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/home/ShellController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/home/StatusController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/home/UnregController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/home/UnregisterController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/home/UnregisterallController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/personal/InfosController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/personal/PasswdsController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/DumpController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/DumpsController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/EnvsController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/LogsController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/StatusesController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/VersionsController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysmanage/ConfigsController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysmanage/PrivilegesController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysmanage/UserownController.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/pulltool/DateFormatUtil.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/pulltool/I18nMessageTool.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/pulltool/RootContextPath.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/pulltool/Tool.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/pulltool/ToolUtil.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/application.properties
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/dubbo-admin.xml
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/i18n/message.properties
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/i18n/message_en.properties
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/i18n/message_zh.properties
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/i18n/message_zh_CN.properties
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/i18n/message_zh_TW.properties
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/log4j.properties
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/css/common.css
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/css/dubbo.css
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/css/skin.css
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/404error.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/bg01.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/bg02.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/bg03.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/bg04.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/btn_info.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/btn_service.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/button_hover.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/button_normal.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/co_01.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/co_02.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/co_03.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/co_04.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/dog.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/dubbo_list_th.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/exit.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/fav_arrow.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/fav_tab_active.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/fav_tab_normal.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/fav_title.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/head_bg.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_add.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_back.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_balance.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_cancel.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_delete.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_disable.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_down.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_edit.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_enable.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_error.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_favorite.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_forb.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_graph.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_help.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_list.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_password.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_reconnect.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_recover.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_register.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_reload.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_renotify.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_run.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_save.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_search.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_show.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_subscribe.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_tree.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_up.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_user.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/ico_warn.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/input.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/login_bg.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/login_box.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/login_btn_hover.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/login_btn_normal.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/login_shadow.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/logo.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/main_bg.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/nav_bg.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/nav_btn_bg22.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/nav_btn_bg3.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/nav_btn_bg33.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/nav_btn_bg44.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/nav_pass.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/nav_selected.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/pop_close.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/pop_left.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/pop_leftbottom.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/pop_lefttop_small.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/pop_midbottom.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/pop_midtop_small.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/pop_right.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/pop_rightbottom.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/pop_righttop_small.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/search_active.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/search_btn.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/search_global_m.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/search_input.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/search_line.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/tab_active.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/table_title_bg.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/tip_choose.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/tip_confirm.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/tip_del.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/tip_succeed.png
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/tree-blank.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/tree-down-left.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/tree-down.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/tree-left-up.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/tree-right-down.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/tree-up-right.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/images/tree-up.gif
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/js/ajax.js
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/js/box.js
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/js/dubbo.js
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/js/jquery-1.4.2.min.js
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/js/jquery.hoverIntent.js
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/js/jquery.simplemodal-1.4.js
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/js/menu.js
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/js/pop.js
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/static/js/trcolor.js
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/common/screen/error_404.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/common/screen/error_other.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/default.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/layout/default.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/layout/noServicePrivilege.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/layout/redirect.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/layout/search.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/accesses/add.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/accesses/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/addresses/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/addresses/search.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/applications/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/applications/search.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/consumers/edit.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/consumers/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/consumers/notified.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/consumers/routed.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/consumers/show.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/error.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/add.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/edit.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/show.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/noServicePrivilege.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/overrides/add.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/overrides/edit.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/overrides/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/overrides/show.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/owners/add.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/owners/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/providers/add.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/providers/edit.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/providers/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/providers/show.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/redirect.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/routes/add.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/routes/edit.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/routes/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/routes/preview.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/routes/routeselect.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/routes/show.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/services/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/services/search.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/weights/add.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/weights/edit.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/weights/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/governance/screen/weights/show.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/home/control/menu.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/home/screen/ajax.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/home/screen/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/home/screen/services.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/sysinfo/layout/default.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/sysinfo/layout/redirect.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/sysinfo/layout/search.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/sysinfo/screen/dumps/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/sysinfo/screen/envs/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/sysinfo/screen/logs/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/sysinfo/screen/redirect.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/sysinfo/screen/socketConn.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/sysinfo/screen/statuses/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/sysinfo/screen/versions/index.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/main/resources/templates/sysinfo/screen/versions/show.vm
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-admin/src/test/java/com/alibaba/dubboadmin/DubboAdminApplicationTests.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/pom.xml
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/assembly/assembly.xml
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/MonitorStarter.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/SimpleMonitorService.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/CountUtils.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/Menu.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/MenuComparator.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/Page.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/container/JettyContainer.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/container/RegistryContainer.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ApplicationsPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ChartsPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ClientsPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ConsumersPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/DependenciesPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/HomePageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/HostsPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/LogPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ProvidersPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/RegisteredPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/RegistriesPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ServersPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ServicesPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/StatisticsPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/StatusPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/SubscribedPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/SystemPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/UnregisterPageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/UnsubscribePageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/servlet/PageHandler.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/servlet/PageServlet.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/servlet/ResourceFilter.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/dump.sh
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/restart.sh
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/server.sh
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/start.bat
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/start.sh
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/stop.sh
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/resources/META-INF/dubbo/internal/com.alibaba.dubbo.container.Container
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/resources/META-INF/dubbo/internal/com.alibaba.dubbo.monitor.simple.servlet.PageHandler
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/resources/META-INF/spring/dubbo-monitor-simple.xml
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/resources/conf/dubbo.properties
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/main/resources/log4j.xml
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/test/java/com/alibaba/dubbo/monitor/simple/SimpleMonitor.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/test/java/com/alibaba/dubbo/monitor/simple/SimpleMonitorServiceTest.java
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/test/resources/dubbo.properties
create mode 100644 52.Dubbo-OPS-Mointor/dubbo-monitor-simple/src/test/resources/log4j.xml
create mode 100644 52.Dubbo-OPS-Mointor/spring-boot-dubbo-applicaiton/common-api/pom.xml
create mode 100644 52.Dubbo-OPS-Mointor/spring-boot-dubbo-applicaiton/common-api/src/main/java/cc/mrbird/common/api/HelloService.java
create mode 100644 52.Dubbo-OPS-Mointor/spring-boot-dubbo-applicaiton/pom.xml
create mode 100644 52.Dubbo-OPS-Mointor/spring-boot-dubbo-applicaiton/server-consumer/pom.xml
create mode 100644 52.Dubbo-OPS-Mointor/spring-boot-dubbo-applicaiton/server-consumer/src/main/java/cc/mrbird/ConsumerApplicaiton.java
create mode 100644 52.Dubbo-OPS-Mointor/spring-boot-dubbo-applicaiton/server-consumer/src/main/java/cc/mrbird/consumer/controller/HelloController.java
create mode 100644 52.Dubbo-OPS-Mointor/spring-boot-dubbo-applicaiton/server-consumer/src/main/resources/application.yml
create mode 100644 52.Dubbo-OPS-Mointor/spring-boot-dubbo-applicaiton/server-provider/pom.xml
create mode 100644 52.Dubbo-OPS-Mointor/spring-boot-dubbo-applicaiton/server-provider/src/main/java/cc/mrbird/ProviderApplicaiton.java
create mode 100644 52.Dubbo-OPS-Mointor/spring-boot-dubbo-applicaiton/server-provider/src/main/java/cc/mrbird/provider/service/HelloServiceImpl.java
create mode 100644 52.Dubbo-OPS-Mointor/spring-boot-dubbo-applicaiton/server-provider/src/main/resources/application.yml
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/pom.xml b/52.Dubbo-OPS-Mointor/dubbo-admin/pom.xml
new file mode 100644
index 0000000..8639254
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/pom.xml
@@ -0,0 +1,80 @@
+
+
+ 4.0.0
+
+ com.alibaba
+ dubbo-admin
+ 0.0.1-SNAPSHOT
+ jar
+
+ dubbo-admin
+ Demo project for Spring Boot
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.0.2.RELEASE
+
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ com.alibaba.boot
+ velocity-spring-boot-starter
+ 0.1.0
+
+
+
+ org.apache.commons
+ commons-lang3
+ 3.7
+
+
+
+ com.alibaba
+ dubbo
+ 2.6.2
+
+
+
+ org.apache.curator
+ curator-framework
+ 2.12.0
+
+
+ com.alibaba
+ fastjson
+ 1.2.46
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/DubboAdminApplication.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/DubboAdminApplication.java
new file mode 100644
index 0000000..58ba7c3
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/DubboAdminApplication.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.dubboadmin;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ApplicationContext;
+
+@SpringBootApplication
+public class DubboAdminApplication {
+
+ public static void main(String[] args) {
+ ApplicationContext act = SpringApplication.run(DubboAdminApplication.class, args);
+ SpringUtil.setApplicationContext(act);
+
+
+ }
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/SpringUtil.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/SpringUtil.java
new file mode 100644
index 0000000..c390c09
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/SpringUtil.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.dubboadmin;
+
+
+import com.alibaba.dubbo.common.logger.Logger;
+import com.alibaba.dubbo.common.logger.LoggerFactory;
+
+import org.springframework.context.ApplicationContext;
+
+public class SpringUtil {
+
+ public static final Logger logger = LoggerFactory.getLogger(SpringUtil.class);
+ private static ApplicationContext applicationContext = null;
+
+ public static void setApplicationContext(ApplicationContext applicationContext){
+ if(SpringUtil.applicationContext == null){
+ logger.info("set applicationcontext");
+ SpringUtil.applicationContext = applicationContext;
+ }
+
+ }
+
+ //获取applicationContext
+ public static ApplicationContext getApplicationContext() {
+ return applicationContext;
+ }
+
+ //通过name获取 Bean.
+ public static Object getBean(String name){
+ return getApplicationContext().getBean(name);
+
+ }
+
+ //通过class获取Bean.
+ public static T getBean(Class clazz){
+ return getApplicationContext().getBean(clazz);
+ }
+
+ //通过name,以及Clazz返回指定的Bean
+ public static T getBean(String name,Class clazz){
+ return getApplicationContext().getBean(name, clazz);
+ }
+
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/config/I18nConfig.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/config/I18nConfig.java
new file mode 100644
index 0000000..669949d
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/config/I18nConfig.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.dubboadmin.config;
+
+import java.util.Locale;
+
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.LocaleResolver;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
+import org.springframework.web.servlet.i18n.SessionLocaleResolver;
+
+
+@Configuration
+@EnableAutoConfiguration
+@ComponentScan
+//@ImportResource({"classpath*:dubbo-admin.xml"})
+public class I18nConfig implements WebMvcConfigurer {
+
+ @Bean
+ public LocaleResolver localeResolver() {
+ SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
+ sessionLocaleResolver.setDefaultLocale(Locale.CHINA);
+ return sessionLocaleResolver;
+
+ }
+
+ @Bean
+ public LocaleChangeInterceptor localeChangeInterceptor() {
+ LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
+ lci.setParamName("lang");
+ return lci;
+ }
+
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ registry.addInterceptor(localeChangeInterceptor());
+ }
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/config/XmlConfiguration.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/config/XmlConfiguration.java
new file mode 100644
index 0000000..9c94a83
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/config/XmlConfiguration.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.dubboadmin.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.ImportResource;
+
+
+@Configuration
+@ImportResource({"classpath*:dubbo-admin.xml"})
+public class XmlConfiguration {
+
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/filter/LoginFilter.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/filter/LoginFilter.java
new file mode 100644
index 0000000..fe6c3aa
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/filter/LoginFilter.java
@@ -0,0 +1,232 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.dubboadmin.filter;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.dubbo.common.logger.Logger;
+import com.alibaba.dubbo.common.logger.LoggerFactory;
+import com.alibaba.dubbo.common.utils.StringUtils;
+import com.alibaba.dubboadmin.governance.service.UserService;
+import com.alibaba.dubboadmin.governance.util.WebConstants;
+import com.alibaba.dubboadmin.registry.common.domain.User;
+import com.alibaba.dubboadmin.registry.common.util.Coder;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class LoginFilter implements Filter{
+
+ private static final Logger logger = LoggerFactory.getLogger(LoginFilter.class);
+ private static Pattern PARAMETER_PATTERN = Pattern.compile("(\\w+)=[\"]?([^,\"]+)[\"]?[,]?\\s*");
+ private static final String BASIC_CHALLENGE = "Basic";
+ private static final String DIGEST_CHALLENGE = "Digest";
+ private static final String CHALLENGE = BASIC_CHALLENGE;
+ private static final String REALM = User.REALM;
+
+ @Autowired
+ private UserService userService;
+ private String logout = "/logout";
+ private String logoutCookie = "logout";
+
+ static Map parseParameters(String query) {
+ Matcher matcher = PARAMETER_PATTERN.matcher(query);
+ Map map = new HashMap();
+ while (matcher.find()) {
+ String key = matcher.group(1);
+ String value = matcher.group(2);
+ map.put(key, value);
+ }
+ return map;
+ }
+
+ static byte[] readToBytes(InputStream in) throws IOException {
+ byte[] buf = new byte[in.available()];
+ in.read(buf);
+ return buf;
+ }
+
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+
+ }
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+ throws IOException, ServletException {
+
+ HttpServletRequest req = (HttpServletRequest)request;
+ HttpServletResponse resp = (HttpServletResponse) response;
+ if (logger.isInfoEnabled()) {
+ logger.info("AuthorizationValve of uri: " + req.getRequestURI());
+ }
+ String uri = req.getRequestURI();
+ String contextPath = req.getContextPath();
+ if (contextPath != null && contextPath.length() > 0 && !"/".equals(contextPath)) {
+ uri = uri.substring(contextPath.length());
+ }
+ if (uri.equals(logout)) {
+ if (!isLogout(req)) {
+ setLogout(true, resp);
+ showLoginForm(resp);
+ } else {
+ setLogout(false, resp);
+ resp.sendRedirect(contextPath == null || contextPath.length() == 0 ? "/" : contextPath);
+ }
+ return;
+ }
+ User user = null;
+ String authType = null;
+ String authorization = req.getHeader("Authorization");
+ if (authorization != null && authorization.length() > 0) {
+ int i = authorization.indexOf(' ');
+ if (i >= 0) {
+ authType = authorization.substring(0, i);
+ String authPrincipal = authorization.substring(i + 1);
+ if (BASIC_CHALLENGE.equalsIgnoreCase(authType)) {
+ user = loginByBase(authPrincipal);
+ } else if (DIGEST_CHALLENGE.equalsIgnoreCase(authType)) {
+ user = loginByDigest(authPrincipal, req);
+ }
+ }
+ }
+ if (user == null || user.getUsername() == null || user.getUsername().length() == 0) {
+ showLoginForm(resp);
+ return;
+ //pipelineContext.breakPipeline(1);
+ }
+ if (user != null && StringUtils.isNotEmpty(user.getUsername())) {
+ req.getSession().setAttribute(WebConstants.CURRENT_USER_KEY, user);
+ chain.doFilter(request, response);
+ }
+
+ }
+
+ @Override
+ public void destroy() {
+
+ }
+
+ private void showLoginForm(HttpServletResponse response) throws IOException {
+ if (DIGEST_CHALLENGE.equals(CHALLENGE)) {
+ response.setHeader("WWW-Authenticate", CHALLENGE + " realm=\"" + REALM + "\", qop=\"auth\", nonce=\""
+ + UUID.randomUUID().toString().replace("-", "") + "\", opaque=\""
+ + Coder.encodeMd5(REALM) + "\"");
+ } else {
+ response.setHeader("WWW-Authenticate", CHALLENGE + " realm=\"" + REALM + "\"");
+ }
+ response.setHeader("Cache-Control", "must-revalidate,no-cache,no-store");
+ response.setHeader("Content-Type", "text/html; charset=iso-8859-1");
+ response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
+ }
+
+ private User getUser(String username) {
+ return userService.findUser(username);
+ }
+
+ private User loginByBase(String authorization) {
+ authorization = Coder.decodeBase64(authorization);
+ int i = authorization.indexOf(':');
+ String username = authorization.substring(0, i);
+ if (username != null && username.length() > 0) {
+ String password = authorization.substring(i + 1);
+ if (password != null && password.length() > 0) {
+ String passwordDigest = Coder.encodeMd5(username + ":" + REALM + ":" + password);
+ User user = getUser(username);
+ if (user != null) {
+ String pwd = user.getPassword();
+ if (pwd != null && pwd.length() > 0) {
+ if (passwordDigest.equals(pwd)) {
+ return user;
+ }
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ private User loginByDigest(String value, HttpServletRequest request) throws IOException {
+ Map params = parseParameters(value);
+ String username = params.get("username");
+ if (username != null && username.length() > 0) {
+ String passwordDigest = params.get("response");
+ if (passwordDigest != null && passwordDigest.length() > 0) {
+ User user = getUser(username);
+ if (user != null) {
+ String pwd = user.getPassword();
+ // A valid user, validate password
+ if (pwd != null && pwd.length() > 0) {
+ String uri = params.get("uri");
+ String nonce = params.get("nonce");
+ String nc = params.get("nc");
+ String cnonce = params.get("cnonce");
+ String qop = params.get("qop");
+ String method = request.getMethod();
+ String a1 = pwd;
+
+ String a2 = "auth-int".equals(qop)
+ ? Coder.encodeMd5(method + ":" + uri + ":" + Coder.encodeMd5(readToBytes(request.getInputStream())))
+ : Coder.encodeMd5(method + ":" + uri);
+ String digest = "auth".equals(qop) || "auth-int".equals(qop)
+ ? Coder.encodeMd5(a1 + ":" + nonce + ":" + nc + ":" + cnonce + ":" + qop + ":" + a2)
+ : Coder.encodeMd5(a1 + ":" + nonce + ":" + a2);
+ if (digest.equals(passwordDigest)) {
+ return user;
+ }
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ private boolean isLogout(HttpServletRequest request) {
+ Cookie[] cookies = request.getCookies();
+ if (cookies != null && cookies.length > 0) {
+ for (Cookie cookie : cookies) {
+ if (cookie != null && logoutCookie.equals(cookie.getName())) {
+ return "true".equals(cookie.getValue());
+ }
+ }
+ }
+ return false;
+ }
+
+ private void setLogout(boolean logoutValue, HttpServletResponse response) {
+ response.addCookie(new Cookie(logoutCookie, String.valueOf(logoutValue)));
+ }
+}
+
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/biz/common/i18n/MessageResourceService.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/biz/common/i18n/MessageResourceService.java
new file mode 100644
index 0000000..e70c5ce
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/biz/common/i18n/MessageResourceService.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.biz.common.i18n;
+
+public interface MessageResourceService {
+
+ public String get(String key, Object... args);
+
+ public String getMessage(String key, Object... args);
+
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/biz/common/i18n/impl/MessageResourceServiceImpl.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/biz/common/i18n/impl/MessageResourceServiceImpl.java
new file mode 100644
index 0000000..c0b47b8
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/biz/common/i18n/impl/MessageResourceServiceImpl.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.biz.common.i18n.impl;
+
+
+import com.alibaba.dubboadmin.governance.biz.common.i18n.MessageResourceService;
+import com.alibaba.dubboadmin.web.mvc.common.i18n.LocaleUtil;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.MessageSource;
+import org.springframework.context.NoSuchMessageException;
+import org.springframework.stereotype.Component;
+
+@Component
+public class MessageResourceServiceImpl implements MessageResourceService {
+
+ @Autowired
+ private MessageSource messageSource;
+
+ public void setMessageSource(MessageSource messageSource) {
+ this.messageSource = messageSource;
+ }
+
+ public String get(String key, Object... args) {
+ try {
+ if (messageSource != null) {
+ return messageSource.getMessage(key, args, key, LocaleUtil.getLocale());
+ }
+ return key;
+ } catch (NoSuchMessageException e) {
+ return key;
+ }
+ }
+
+ public String getMessage(String key, Object... args) {
+ return get(key, args);
+ }
+
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ConfigService.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ConfigService.java
new file mode 100644
index 0000000..a3a0ee8
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ConfigService.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.dubboadmin.registry.common.domain.Config;
+
+/**
+ * TODO Comment of ConfigDAO
+ *
+ */
+public interface ConfigService {
+
+ void update(List configs);
+
+ Map findAllConfigsMap();
+
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ConsumerService.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ConsumerService.java
new file mode 100644
index 0000000..e980eeb
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ConsumerService.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.service;
+
+import java.util.List;
+
+import com.alibaba.dubboadmin.registry.common.domain.Consumer;
+
+/**
+ * Query service for consumer info
+ *
+ */
+public interface ConsumerService {
+
+ List findByService(String serviceName);
+
+ Consumer findConsumer(Long id);
+
+ List findAll();
+
+ /**
+ * query for all consumer addresses
+ */
+ List findAddresses();
+
+ List findAddressesByApplication(String application);
+
+ List findAddressesByService(String serviceName);
+
+ List findByAddress(String consumerAddress);
+
+ List findServicesByAddress(String consumerAddress);
+
+ List findApplications();
+
+ List findApplicationsByServiceName(String serviceName);
+
+ List findByApplication(String application);
+
+ List findServicesByApplication(String application);
+
+ List findServices();
+
+}
\ No newline at end of file
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/OverrideService.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/OverrideService.java
new file mode 100644
index 0000000..afa2a67
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/OverrideService.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.service;
+
+import java.util.List;
+
+import com.alibaba.dubboadmin.registry.common.domain.Override;
+
+public interface OverrideService {
+
+ void saveOverride(Override override);
+
+ void updateOverride(Override override);
+
+ void deleteOverride(Long id);
+
+ void enableOverride(Long id);
+
+ void disableOverride(Long id);
+
+ List findByService(String service);
+
+ List findByAddress(String address);
+
+ List findByServiceAndAddress(String service, String address);
+
+ List findByApplication(String application);
+
+ List findByServiceAndApplication(String service, String application);
+
+ List findAll();
+
+ Override findById(Long id);
+
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/OwnerService.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/OwnerService.java
new file mode 100644
index 0000000..367125a
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/OwnerService.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.service;
+
+import java.util.List;
+
+import com.alibaba.dubboadmin.registry.common.domain.Owner;
+
+public interface OwnerService {
+
+ List findAllServiceNames();
+
+ List findServiceNamesByUsername(String username);
+
+ List findUsernamesByServiceName(String serviceName);
+
+ List findByService(String serviceName);
+
+ List findAll();
+
+ Owner findById(Long id);
+
+ void saveOwner(Owner owner);
+
+ void deleteOwner(Owner owner);
+
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ProviderService.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ProviderService.java
new file mode 100644
index 0000000..15ba776
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ProviderService.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.service;
+
+import java.util.List;
+
+import com.alibaba.dubboadmin.registry.common.domain.Provider;
+
+/**
+ * ProviderService
+ *
+ */
+public interface ProviderService {
+
+ void create(Provider provider);
+
+ void enableProvider(Long id);
+
+ void disableProvider(Long id);
+
+ void doublingProvider(Long id);
+
+ void halvingProvider(Long id);
+
+ void deleteStaticProvider(Long id);
+
+ void updateProvider(Provider provider);
+
+ Provider findProvider(Long id);
+
+ List findServices();
+
+ List findAddresses();
+
+ List findAddressesByApplication(String application);
+
+ List findAddressesByService(String serviceName);
+
+ List findApplicationsByServiceName(String serviceName);
+
+ List findByService(String serviceName);
+
+ List findAll();
+
+ List findByAddress(String providerAddress);
+
+ List findServicesByAddress(String providerAddress);
+
+ List findApplications();
+
+ List findByApplication(String application);
+
+ List findServicesByApplication(String application);
+
+ List findMethodsByService(String serviceName);
+
+ Provider findByServiceAndAddress(String service, String address);
+
+}
\ No newline at end of file
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/RouteService.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/RouteService.java
new file mode 100644
index 0000000..236d881
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/RouteService.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.service;
+
+import java.util.List;
+
+import com.alibaba.dubboadmin.registry.common.domain.Route;
+
+/**
+ * RouteService
+ *
+ */
+public interface RouteService {
+
+ void createRoute(Route route);
+
+ void updateRoute(Route route);
+
+ void deleteRoute(Long id);
+
+ void enableRoute(Long id);
+
+ void disableRoute(Long id);
+
+ Route findRoute(Long id);
+
+ List findAll();
+
+ List findByService(String serviceName);
+
+ List findByAddress(String address);
+
+ List findByServiceAndAddress(String service, String address);
+
+ List findForceRouteByService(String service);
+
+ List findForceRouteByAddress(String address);
+
+ List findForceRouteByServiceAndAddress(String service, String address);
+
+ List findAllForceRoute();
+
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/UserService.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/UserService.java
new file mode 100644
index 0000000..1869859
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/UserService.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.service;
+
+import java.util.List;
+
+import com.alibaba.dubboadmin.registry.common.domain.User;
+
+/**
+ * UserService
+ *
+ */
+public interface UserService {
+
+ List findAllUsers();
+
+ User findUser(String username);
+
+ User findById(Long id);
+
+ void createUser(User user);
+
+ void updateUser(User user);
+
+ void modifyUser(User user);
+
+ boolean updatePassword(User user, String oldPassword);
+
+ void resetPassword(User user);
+
+ void enableUser(User user);
+
+ void disableUser(User user);
+
+ void deleteUser(User user);
+
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/AbstractService.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/AbstractService.java
new file mode 100644
index 0000000..3c01d63
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/AbstractService.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.service.impl;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentMap;
+
+import com.alibaba.dubbo.common.URL;
+import com.alibaba.dubbo.common.logger.Logger;
+import com.alibaba.dubbo.common.logger.LoggerFactory;
+import com.alibaba.dubbo.registry.RegistryService;
+import com.alibaba.dubboadmin.governance.sync.RegistryServerSync;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * IbatisDAO
+ *
+ */
+public class AbstractService {
+
+ protected static final Logger logger = LoggerFactory.getLogger(AbstractService.class);
+ @Autowired
+ protected RegistryService registryService;
+ @Autowired
+ private RegistryServerSync sync;
+
+ public ConcurrentMap>> getRegistryCache() {
+ return sync.getRegistryCache();
+ }
+
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ConfigServiceImpl.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ConfigServiceImpl.java
new file mode 100644
index 0000000..7921ac6
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ConfigServiceImpl.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.service.impl;
+
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.dubboadmin.governance.service.ConfigService;
+import com.alibaba.dubboadmin.registry.common.domain.Config;
+
+/**
+ * TODO Comment of IbatisConfigDAO
+ *
+ */
+public class ConfigServiceImpl extends AbstractService implements ConfigService {
+
+ /* (non-Javadoc)
+ * @see com.alibaba.dubbo.governance.service.ConfigService#update(java.util.List)
+ */
+ public void update(List configs) {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see com.alibaba.dubbo.governance.service.ConfigService#findAllConfigsMap()
+ */
+ public Map findAllConfigsMap() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ConsumerServiceImpl.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ConsumerServiceImpl.java
new file mode 100644
index 0000000..bf7c3da
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ConsumerServiceImpl.java
@@ -0,0 +1,223 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.service.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentMap;
+
+import com.alibaba.dubbo.common.Constants;
+import com.alibaba.dubbo.common.URL;
+import com.alibaba.dubboadmin.governance.service.ConsumerService;
+import com.alibaba.dubboadmin.governance.sync.util.Pair;
+import com.alibaba.dubboadmin.governance.sync.util.SyncUtils;
+import com.alibaba.dubboadmin.registry.common.domain.Consumer;
+
+import org.springframework.stereotype.Component;
+
+@Component
+public class ConsumerServiceImpl extends AbstractService implements ConsumerService {
+
+ public List findByService(String service) {
+ return SyncUtils.url2ConsumerList(findConsumerUrlByService(service));
+ }
+
+ public Consumer findConsumer(Long id) {
+ return SyncUtils.url2Consumer(findConsumerUrl(id));
+ }
+
+ private Pair findConsumerUrl(Long id) {
+ return SyncUtils.filterFromCategory(getRegistryCache(), Constants.CONSUMERS_CATEGORY, id);
+ }
+
+ public List findAll() {
+ return SyncUtils.url2ConsumerList(findAllConsumerUrl());
+ }
+
+ private Map findAllConsumerUrl() {
+ Map filter = new HashMap();
+ filter.put(Constants.CATEGORY_KEY, Constants.CONSUMERS_CATEGORY);
+ return SyncUtils.filterFromCategory(getRegistryCache(), filter);
+ }
+
+ public List findAddresses() {
+ List ret = new ArrayList();
+ ConcurrentMap> consumerUrls = getRegistryCache().get(Constants.CONSUMERS_CATEGORY);
+ if (null == consumerUrls) return ret;
+
+ for (Map.Entry> e1 : consumerUrls.entrySet()) {
+ Map value = e1.getValue();
+ for (Map.Entry e2 : value.entrySet()) {
+ URL u = e2.getValue();
+ String app = u.getAddress();
+ if (app != null) ret.add(app);
+ }
+ }
+
+ return ret;
+ }
+
+ public List findAddressesByApplication(String application) {
+ List ret = new ArrayList();
+ ConcurrentMap> consumerUrls = getRegistryCache().get(Constants.CONSUMERS_CATEGORY);
+
+ if(consumerUrls == null)
+ return ret;
+
+ for (Map.Entry> e1 : consumerUrls.entrySet()) {
+ Map value = e1.getValue();
+ for (Map.Entry e2 : value.entrySet()) {
+ URL u = e2.getValue();
+ if (application.equals(u.getParameter(Constants.APPLICATION_KEY))) {
+ String addr = u.getAddress();
+ if (addr != null) ret.add(addr);
+ }
+ }
+ }
+
+ return ret;
+ }
+
+ public List findAddressesByService(String service) {
+ List ret = new ArrayList();
+ ConcurrentMap> consumerUrls = getRegistryCache().get(Constants.CONSUMERS_CATEGORY);
+ if (null == consumerUrls) return ret;
+
+ for (Map.Entry e2 : consumerUrls.get(service).entrySet()) {
+ URL u = e2.getValue();
+ String app = u.getAddress();
+ if (app != null) ret.add(app);
+ }
+
+ return ret;
+ }
+
+ public List findByAddress(String consumerAddress) {
+ return SyncUtils.url2ConsumerList(findConsumerUrlByAddress(consumerAddress));
+ }
+
+ public List findServicesByAddress(String address) {
+ List ret = new ArrayList();
+ ConcurrentMap> consumerUrls = getRegistryCache().get(Constants.CONSUMERS_CATEGORY);
+ if (consumerUrls == null || address == null || address.length() == 0) return ret;
+
+ for (Map.Entry> e1 : consumerUrls.entrySet()) {
+ Map value = e1.getValue();
+ for (Map.Entry e2 : value.entrySet()) {
+ URL u = e2.getValue();
+ if (address.equals(u.getAddress())) {
+ ret.add(e1.getKey());
+ break;
+ }
+ }
+ }
+
+ return ret;
+ }
+
+ private Map findConsumerUrlByAddress(String address) {
+ Map filter = new HashMap();
+ filter.put(Constants.CATEGORY_KEY, Constants.CONSUMERS_CATEGORY);
+ filter.put(SyncUtils.ADDRESS_FILTER_KEY, address);
+
+ return SyncUtils.filterFromCategory(getRegistryCache(), filter);
+ }
+
+ public List findApplications() {
+ List ret = new ArrayList();
+ ConcurrentMap> consumerUrls = getRegistryCache().get(Constants.CONSUMERS_CATEGORY);
+ if (consumerUrls == null) return ret;
+
+ for (Map.Entry> e1 : consumerUrls.entrySet()) {
+ Map value = e1.getValue();
+ for (Map.Entry e2 : value.entrySet()) {
+ URL u = e2.getValue();
+ String app = u.getParameter(Constants.APPLICATION_KEY);
+ if (app != null) ret.add(app);
+ }
+ }
+
+ return ret;
+ }
+
+ public List findApplicationsByServiceName(String service) {
+ List ret = new ArrayList();
+ ConcurrentMap> consumerUrls = getRegistryCache().get(Constants.CONSUMERS_CATEGORY);
+ if (consumerUrls == null) return ret;
+
+ Map value = consumerUrls.get(service);
+ if (value == null) {
+ return ret;
+ }
+ for (Map.Entry e2 : value.entrySet()) {
+ URL u = e2.getValue();
+ String app = u.getParameter(Constants.APPLICATION_KEY);
+ if (app != null) ret.add(app);
+ }
+
+ return ret;
+ }
+
+ public List findByApplication(String application) {
+ return SyncUtils.url2ConsumerList(findConsumerUrlByApplication(application));
+ }
+
+ private Map findConsumerUrlByApplication(String application) {
+ Map filter = new HashMap();
+ filter.put(Constants.CATEGORY_KEY, Constants.CONSUMERS_CATEGORY);
+ filter.put(Constants.APPLICATION_KEY, application);
+
+ return SyncUtils.filterFromCategory(getRegistryCache(), filter);
+ }
+
+ public List findServicesByApplication(String application) {
+ List ret = new ArrayList();
+ ConcurrentMap> consumerUrls = getRegistryCache().get(Constants.CONSUMERS_CATEGORY);
+ if (consumerUrls == null || application == null || application.length() == 0) return ret;
+
+ for (Map.Entry> e1 : consumerUrls.entrySet()) {
+ Map value = e1.getValue();
+ for (Map.Entry e2 : value.entrySet()) {
+ URL u = e2.getValue();
+ if (application.equals(u.getParameter(Constants.APPLICATION_KEY))) {
+ ret.add(e1.getKey());
+ break;
+ }
+ }
+ }
+
+ return ret;
+ }
+
+ public List findServices() {
+ List ret = new ArrayList();
+ ConcurrentMap> consumerUrls = getRegistryCache().get(Constants.CONSUMERS_CATEGORY);
+ if (consumerUrls != null) ret.addAll(consumerUrls.keySet());
+ return ret;
+ }
+
+ public Map findConsumerUrlByService(String service) {
+ Map filter = new HashMap();
+ filter.put(Constants.CATEGORY_KEY, Constants.CONSUMERS_CATEGORY);
+ filter.put(SyncUtils.SERVICE_FILTER_KEY, service);
+
+ return SyncUtils.filterFromCategory(getRegistryCache(), filter);
+ }
+
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/OverrideServiceImpl.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/OverrideServiceImpl.java
new file mode 100644
index 0000000..151bbac
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/OverrideServiceImpl.java
@@ -0,0 +1,191 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.service.impl;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.dubbo.common.Constants;
+import com.alibaba.dubbo.common.URL;
+import com.alibaba.dubboadmin.governance.service.OverrideService;
+import com.alibaba.dubboadmin.governance.sync.util.Pair;
+import com.alibaba.dubboadmin.governance.sync.util.SyncUtils;
+import com.alibaba.dubboadmin.registry.common.domain.Override;
+
+import org.springframework.stereotype.Component;
+
+/**
+ * IbatisOverrideDAO.java
+ *
+ */
+@Component
+public class OverrideServiceImpl extends AbstractService implements OverrideService {
+
+ public void saveOverride(Override override) {
+ URL url = getUrlFromOverride(override);
+ registryService.register(url);
+ }
+
+ public void updateOverride(Override override) {
+ Long id = override.getId();
+ if (id == null) {
+ throw new IllegalStateException("no override id");
+ }
+ URL oldOverride = findOverrideUrl(id);
+ if (oldOverride == null) {
+ throw new IllegalStateException("Route was changed!");
+ }
+ URL newOverride = getUrlFromOverride(override);
+
+ registryService.unregister(oldOverride);
+ registryService.register(newOverride);
+
+ }
+
+ public void deleteOverride(Long id) {
+ URL oldOverride = findOverrideUrl(id);
+ if (oldOverride == null) {
+ throw new IllegalStateException("Route was changed!");
+ }
+ registryService.unregister(oldOverride);
+ }
+
+ public void enableOverride(Long id) {
+ if (id == null) {
+ throw new IllegalStateException("no override id");
+ }
+
+ URL oldOverride = findOverrideUrl(id);
+ if (oldOverride == null) {
+ throw new IllegalStateException("Override was changed!");
+ }
+ if (oldOverride.getParameter("enabled", true)) {
+ return;
+ }
+
+ URL newOverride = oldOverride.addParameter("enabled", true);
+ registryService.unregister(oldOverride);
+ registryService.register(newOverride);
+
+ }
+
+ public void disableOverride(Long id) {
+ if (id == null) {
+ throw new IllegalStateException("no override id");
+ }
+
+ URL oldProvider = findOverrideUrl(id);
+ if (oldProvider == null) {
+ throw new IllegalStateException("Override was changed!");
+ }
+ if (!oldProvider.getParameter("enabled", true)) {
+ return;
+ }
+
+ URL newProvider = oldProvider.addParameter("enabled", false);
+ registryService.unregister(oldProvider);
+ registryService.register(newProvider);
+
+ }
+
+ private Map findOverrideUrl(String service, String address, String application) {
+ Map filter = new HashMap();
+ filter.put(Constants.CATEGORY_KEY, Constants.CONFIGURATORS_CATEGORY);
+ if (service != null && service.length() > 0) {
+ filter.put(SyncUtils.SERVICE_FILTER_KEY, service);
+ }
+ if (address != null && address.length() > 0) {
+ filter.put(SyncUtils.ADDRESS_FILTER_KEY, address);
+ }
+ if (application != null && application.length() > 0) {
+ filter.put(Constants.APPLICATION_KEY, application);
+ }
+ return SyncUtils.filterFromCategory(getRegistryCache(), filter);
+ }
+
+ public List findByAddress(String address) {
+ return SyncUtils.url2OverrideList(findOverrideUrl(null, address, null));
+ }
+
+ public List findByServiceAndAddress(String service, String address) {
+ return SyncUtils.url2OverrideList(findOverrideUrl(service, address, null));
+ }
+
+ public List findByApplication(String application) {
+ return SyncUtils.url2OverrideList(findOverrideUrl(null, null, application));
+ }
+
+ public List findByService(String service) {
+ return SyncUtils.url2OverrideList(findOverrideUrl(service, null, null));
+ }
+
+ public List findByServiceAndApplication(String service, String application) {
+ return SyncUtils.url2OverrideList(findOverrideUrl(service, null, application));
+ }
+
+ public List findAll() {
+ return SyncUtils.url2OverrideList(findOverrideUrl(null, null, null));
+ }
+
+ private Pair findOverrideUrlPair(Long id) {
+ return SyncUtils.filterFromCategory(getRegistryCache(), Constants.CONFIGURATORS_CATEGORY, id);
+ }
+
+ public Override findById(Long id) {
+ return SyncUtils.url2Override(findOverrideUrlPair(id));
+ }
+
+ private URL getUrlFromOverride(Override override) {
+ return override.toUrl();
+ /*Map params = ConvertUtil.serviceName2Map(override.getService());
+ if(!params.containsKey(Constants.INTERFACE_KEY)) {
+ throw new IllegalArgumentException("No interface info");
+ }
+ if(!params.containsKey(Constants.VERSION_KEY)) {
+ throw new IllegalArgumentException("No version info");
+ }
+
+ boolean enabled = override.isEnabled();
+ if(!enabled) {
+ params.put("enabled", "false");
+ }
+ String application = override.getApplication();
+ if(!StringUtils.isEmpty(application)) {
+ params.put("application", application);
+ }
+ String address = override.getAddress();
+ if(!StringUtils.isEmpty(address)) {
+ params.put("address", address);
+ }
+
+ String overrideAddress = override.getOverrideAddress();
+ if(StringUtils.isEmpty(overrideAddress)) {
+ overrideAddress = "0.0.0.0";
+ }
+ params.put(Constants.CATEGORY_KEY, Constants.CONFIGURATORS_CATEGORY);
+
+ URL url = new URL("override", overrideAddress, -1, params);
+ url = url.addParameterString(override.getParams());
+ return url;*/
+ }
+
+ URL findOverrideUrl(Long id) {
+ return getUrlFromOverride(findById(id));
+ }
+
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/OwnerServiceImpl.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/OwnerServiceImpl.java
new file mode 100644
index 0000000..4fa2613
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/OwnerServiceImpl.java
@@ -0,0 +1,160 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.service.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.dubbo.common.Constants;
+import com.alibaba.dubbo.common.utils.StringUtils;
+import com.alibaba.dubboadmin.governance.service.OverrideService;
+import com.alibaba.dubboadmin.governance.service.OwnerService;
+import com.alibaba.dubboadmin.governance.service.ProviderService;
+import com.alibaba.dubboadmin.registry.common.domain.Override;
+import com.alibaba.dubboadmin.registry.common.domain.Owner;
+import com.alibaba.dubboadmin.registry.common.domain.Provider;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class OwnerServiceImpl extends AbstractService implements OwnerService {
+
+ @Autowired
+ ProviderService providerService;
+
+ @Autowired
+ OverrideService overrideService;
+
+ public List findAllServiceNames() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List findServiceNamesByUsername(String username) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List findUsernamesByServiceName(String serviceName) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List findByService(String serviceName) {
+ List pList = providerService.findByService(serviceName);
+ List cList = overrideService.findByServiceAndAddress(serviceName, Constants.ANYHOST_VALUE);
+ return toOverrideLiset(pList, cList);
+ }
+
+ public List findAll() {
+ List pList = providerService.findAll();
+ List cList = overrideService.findAll();
+ return toOverrideLiset(pList, cList);
+ }
+
+ public Owner findById(Long id) {
+
+ return null;
+ }
+
+ private List toOverrideLiset(List pList, List cList) {
+ Map oList = new HashMap();
+ for (Provider p : pList) {
+ if (p.getUsername() != null) {
+ for (String username : Constants.COMMA_SPLIT_PATTERN.split(p.getUsername())) {
+ Owner o = new Owner();
+ o.setService(p.getService());
+ o.setUsername(username);
+ oList.put(o.getService() + "/" + o.getUsername(), o);
+ }
+ }
+ }
+ for (Override c : cList) {
+ Map params = StringUtils.parseQueryString(c.getParams());
+ String usernames = params.get("owner");
+ if (usernames != null && usernames.length() > 0) {
+ for (String username : Constants.COMMA_SPLIT_PATTERN.split(usernames)) {
+ Owner o = new Owner();
+ o.setService(c.getService());
+ o.setUsername(username);
+ oList.put(o.getService() + "/" + o.getUsername(), o);
+ }
+ }
+ }
+ return new ArrayList(oList.values());
+ }
+
+ public void saveOwner(Owner owner) {
+ List overrides = overrideService.findByServiceAndAddress(owner.getService(), Constants.ANYHOST_VALUE);
+ if (overrides == null || overrides.size() == 0) {
+ Override override = new Override();
+ override.setAddress(Constants.ANYHOST_VALUE);
+ override.setService(owner.getService());
+ override.setEnabled(true);
+ override.setParams("owner=" + owner.getUsername());
+ overrideService.saveOverride(override);
+ } else {
+ for (Override override : overrides) {
+ Map params = StringUtils.parseQueryString(override.getParams());
+ String usernames = params.get("owner");
+ if (usernames == null || usernames.length() == 0) {
+ usernames = owner.getUsername();
+ } else {
+ usernames = usernames + "," + owner.getUsername();
+ }
+ params.put("owner", usernames);
+ override.setParams(StringUtils.toQueryString(params));
+ overrideService.updateOverride(override);
+ }
+ }
+ }
+
+ public void deleteOwner(Owner owner) {
+ List overrides = overrideService.findByServiceAndAddress(owner.getService(), Constants.ANYHOST_VALUE);
+ if (overrides == null || overrides.size() == 0) {
+ Override override = new Override();
+ override.setAddress(Constants.ANYHOST_VALUE);
+ override.setService(owner.getService());
+ override.setEnabled(true);
+ override.setParams("owner=" + owner.getUsername());
+ overrideService.saveOverride(override);
+ } else {
+ for (Override override : overrides) {
+ Map params = StringUtils.parseQueryString(override.getParams());
+ String usernames = params.get("owner");
+ if (usernames != null && usernames.length() > 0) {
+ if (usernames.equals(owner.getUsername())) {
+ params.remove("owner");
+ } else {
+ usernames = usernames.replace(owner.getUsername() + ",", "").replace("," + owner.getUsername(), "");
+ params.put("owner", usernames);
+ }
+ if (params.size() > 0) {
+ override.setParams(StringUtils.toQueryString(params));
+ overrideService.updateOverride(override);
+ } else {
+ overrideService.deleteOverride(override.getId());
+ }
+ }
+ }
+ }
+ }
+
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ProviderServiceImpl.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ProviderServiceImpl.java
new file mode 100644
index 0000000..8ee59e1
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ProviderServiceImpl.java
@@ -0,0 +1,461 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.service.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentMap;
+
+import com.alibaba.dubbo.common.Constants;
+import com.alibaba.dubbo.common.URL;
+import com.alibaba.dubbo.common.utils.StringUtils;
+import com.alibaba.dubboadmin.governance.service.OverrideService;
+import com.alibaba.dubboadmin.governance.service.ProviderService;
+import com.alibaba.dubboadmin.governance.sync.util.Pair;
+import com.alibaba.dubboadmin.governance.sync.util.SyncUtils;
+import com.alibaba.dubboadmin.registry.common.domain.Override;
+import com.alibaba.dubboadmin.registry.common.domain.Provider;
+import com.alibaba.dubboadmin.registry.common.route.ParseUtils;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * IbatisProviderService
+ *
+ */
+@Component
+public class ProviderServiceImpl extends AbstractService implements ProviderService {
+
+ @Autowired
+ OverrideService overrideService;
+
+ public void create(Provider provider) {
+ URL url = provider.toUrl();
+ registryService.register(url);
+ }
+
+ public void enableProvider(Long id) {
+ if (id == null) {
+ throw new IllegalStateException("no provider id");
+ }
+
+ Provider oldProvider = findProvider(id);
+
+ if (oldProvider == null) {
+ throw new IllegalStateException("Provider was changed!");
+ }
+ if (oldProvider.isDynamic()) {
+ // Make sure we only have one override configured disable property.
+ if (!oldProvider.isEnabled()) {
+ Override override = new Override();
+ override.setAddress(oldProvider.getAddress());
+ override.setService(oldProvider.getService());
+ override.setEnabled(true);
+ override.setParams(Constants.DISABLED_KEY + "=false");
+ overrideService.saveOverride(override);
+ return;
+ }
+ List oList = overrideService.findByServiceAndAddress(oldProvider.getService(), oldProvider.getAddress());
+
+ for (Override o : oList) {
+ Map params = StringUtils.parseQueryString(o.getParams());
+ if (params.containsKey(Constants.DISABLED_KEY)) {
+ if (params.get(Constants.DISABLED_KEY).equals("true")) {
+ overrideService.deleteOverride(o.getId());
+ }
+ }
+ }
+ } else {
+ oldProvider.setEnabled(true);
+ updateProvider(oldProvider);
+ }
+ }
+
+ public void disableProvider(Long id) {
+ if (id == null) {
+ throw new IllegalStateException("no provider id");
+ }
+
+ Provider oldProvider = findProvider(id);
+ if (oldProvider == null) {
+ throw new IllegalStateException("Provider was changed!");
+ }
+
+ if (oldProvider.isDynamic()) {
+ // Make sure we only have one override configured disable property.
+ if (oldProvider.isEnabled()) {
+ Override override = new Override();
+ override.setAddress(oldProvider.getAddress());
+ override.setService(oldProvider.getService());
+ override.setEnabled(true);
+ override.setParams(Constants.DISABLED_KEY + "=true");
+ overrideService.saveOverride(override);
+ return;
+ }
+ List oList = overrideService.findByServiceAndAddress(oldProvider.getService(), oldProvider.getAddress());
+
+ for (Override o : oList) {
+ Map params = StringUtils.parseQueryString(o.getParams());
+ if (params.containsKey(Constants.DISABLED_KEY)) {
+ if (params.get(Constants.DISABLED_KEY).equals("false")) {
+ overrideService.deleteOverride(o.getId());
+ }
+ }
+ }
+ } else {
+ oldProvider.setEnabled(false);
+ updateProvider(oldProvider);
+ }
+
+ }
+
+ public void doublingProvider(Long id) {
+ setWeight(id, 2F);
+ }
+
+ public void halvingProvider(Long id) {
+ setWeight(id, 0.5F);
+ }
+
+ public void setWeight(Long id, float factor) {
+ if (id == null) {
+ throw new IllegalStateException("no provider id");
+ }
+ Provider oldProvider = findProvider(id);
+ if (oldProvider == null) {
+ throw new IllegalStateException("Provider was changed!");
+ }
+ Map map = StringUtils.parseQueryString(oldProvider.getParameters());
+ String weight = map.get(Constants.WEIGHT_KEY);
+ if (oldProvider.isDynamic()) {
+ // Make sure we only have one override configured disable property.
+ List overrides = overrideService.findByServiceAndAddress(oldProvider.getService(), oldProvider.getAddress());
+ if (overrides == null || overrides.size() == 0) {
+ int value = getWeight(weight, factor);
+ if (value != Constants.DEFAULT_WEIGHT) {
+ Override override = new Override();
+ override.setAddress(oldProvider.getAddress());
+ override.setService(oldProvider.getService());
+ override.setEnabled(true);
+ override.setParams(Constants.WEIGHT_KEY + "=" + String.valueOf(value));
+ overrideService.saveOverride(override);
+ }
+ } else {
+ for (Override override : overrides) {
+ Map params = StringUtils.parseQueryString(override.getParams());
+ String overrideWeight = params.get(Constants.WEIGHT_KEY);
+ if (overrideWeight == null || overrideWeight.length() == 0) {
+ overrideWeight = weight;
+ }
+ int value = getWeight(overrideWeight, factor);
+ if (value == getWeight(weight, 1)) {
+ params.remove(Constants.WEIGHT_KEY);
+ } else {
+ params.put(Constants.WEIGHT_KEY, String.valueOf(value));
+ }
+ if (params.size() > 0) {
+ override.setParams(StringUtils.toQueryString(params));
+ overrideService.updateOverride(override);
+ } else {
+ overrideService.deleteOverride(override.getId());
+ }
+ }
+ }
+ } else {
+ int value = getWeight(weight, factor);
+ if (value == Constants.DEFAULT_WEIGHT) {
+ map.remove(Constants.WEIGHT_KEY);
+ } else {
+ map.put(Constants.WEIGHT_KEY, String.valueOf(value));
+ }
+ oldProvider.setParameters(StringUtils.toQueryString(map));
+ updateProvider(oldProvider);
+ }
+ }
+
+ private int getWeight(String value, float factor) {
+ int weight = 100;
+ if (value != null && value.length() > 0) {
+ weight = Integer.parseInt(value);
+ }
+ weight = (int) (weight * factor);
+ if (weight < 1) weight = 1;
+ if (weight == 2) weight = 3;
+ if (weight == 24) weight = 25;
+ return weight;
+ }
+
+ public void deleteStaticProvider(Long id) {
+ URL oldProvider = findProviderUrl(id);
+ if (oldProvider == null) {
+ throw new IllegalStateException("Provider was changed!");
+ }
+ registryService.unregister(oldProvider);
+ }
+
+ public void updateProvider(Provider provider) {
+ Long id = provider.getId();
+ if (id == null) {
+ throw new IllegalStateException("no provider id");
+ }
+
+ URL oldProvider = findProviderUrl(id);
+ if (oldProvider == null) {
+ throw new IllegalStateException("Provider was changed!");
+ }
+ URL newProvider = provider.toUrl();
+
+ registryService.unregister(oldProvider);
+ registryService.register(newProvider);
+ }
+
+ public Provider findProvider(Long id) {
+ return SyncUtils.url2Provider(findProviderUrlPair(id));
+ }
+
+ public Pair findProviderUrlPair(Long id) {
+ return SyncUtils.filterFromCategory(getRegistryCache(), Constants.PROVIDERS_CATEGORY, id);
+ }
+
+ public List findServices() {
+ List ret = new ArrayList();
+ ConcurrentMap> providerUrls = getRegistryCache().get(Constants.PROVIDERS_CATEGORY);
+ if (providerUrls != null) ret.addAll(providerUrls.keySet());
+ return ret;
+ }
+
+ public List findAddresses() {
+ List ret = new ArrayList();
+
+ ConcurrentMap> providerUrls = getRegistryCache().get(Constants.PROVIDERS_CATEGORY);
+ if (null == providerUrls) return ret;
+
+ for (Map.Entry> e1 : providerUrls.entrySet()) {
+ Map value = e1.getValue();
+ for (Map.Entry e2 : value.entrySet()) {
+ URL u = e2.getValue();
+ String app = u.getAddress();
+ if (app != null) ret.add(app);
+ }
+ }
+
+ return ret;
+ }
+
+ public List findAddressesByApplication(String application) {
+ List ret = new ArrayList();
+ ConcurrentMap> providerUrls = getRegistryCache().get(Constants.PROVIDERS_CATEGORY);
+ for (Map.Entry> e1 : providerUrls.entrySet()) {
+ Map value = e1.getValue();
+ for (Map.Entry e2 : value.entrySet()) {
+ URL u = e2.getValue();
+ if (application.equals(u.getParameter(Constants.APPLICATION_KEY))) {
+ String addr = u.getAddress();
+ if (addr != null) ret.add(addr);
+ }
+ }
+ }
+
+ return ret;
+ }
+
+ public List findAddressesByService(String service) {
+ List ret = new ArrayList();
+ ConcurrentMap> providerUrls = getRegistryCache().get(Constants.PROVIDERS_CATEGORY);
+ if (null == providerUrls) return ret;
+
+ for (Map.Entry e2 : providerUrls.get(service).entrySet()) {
+ URL u = e2.getValue();
+ String app = u.getAddress();
+ if (app != null) ret.add(app);
+ }
+
+ return ret;
+ }
+
+ public List findApplicationsByServiceName(String service) {
+ List ret = new ArrayList();
+ ConcurrentMap> providerUrls = getRegistryCache().get(Constants.PROVIDERS_CATEGORY);
+ if (null == providerUrls) return ret;
+
+ Map value = providerUrls.get(service);
+ if (value == null) {
+ return ret;
+ }
+ for (Map.Entry e2 : value.entrySet()) {
+ URL u = e2.getValue();
+ String app = u.getParameter(Constants.APPLICATION_KEY);
+ if (app != null) ret.add(app);
+ }
+
+ return ret;
+ }
+
+ public List findByService(String serviceName) {
+ return SyncUtils.url2ProviderList(findProviderUrlByService(serviceName));
+ }
+
+ private Map findProviderUrlByService(String service) {
+ Map filter = new HashMap();
+ filter.put(Constants.CATEGORY_KEY, Constants.PROVIDERS_CATEGORY);
+ filter.put(SyncUtils.SERVICE_FILTER_KEY, service);
+
+ return SyncUtils.filterFromCategory(getRegistryCache(), filter);
+ }
+
+ public List findAll() {
+ return SyncUtils.url2ProviderList(findAllProviderUrl());
+ }
+
+ private Map findAllProviderUrl() {
+ Map filter = new HashMap();
+ filter.put(Constants.CATEGORY_KEY, Constants.PROVIDERS_CATEGORY);
+ return SyncUtils.filterFromCategory(getRegistryCache(), filter);
+ }
+
+ public List findByAddress(String providerAddress) {
+ return SyncUtils.url2ProviderList(findProviderUrlByAddress(providerAddress));
+ }
+
+ public Map findProviderUrlByAddress(String address) {
+ Map filter = new HashMap();
+ filter.put(Constants.CATEGORY_KEY, Constants.PROVIDERS_CATEGORY);
+ filter.put(SyncUtils.ADDRESS_FILTER_KEY, address);
+
+ return SyncUtils.filterFromCategory(getRegistryCache(), filter);
+ }
+
+ public List findServicesByAddress(String address) {
+ List ret = new ArrayList();
+
+ ConcurrentMap> providerUrls = getRegistryCache().get(Constants.PROVIDERS_CATEGORY);
+ if (providerUrls == null || address == null || address.length() == 0) return ret;
+
+ for (Map.Entry> e1 : providerUrls.entrySet()) {
+ Map value = e1.getValue();
+ for (Map.Entry e2 : value.entrySet()) {
+ URL u = e2.getValue();
+ if (address.equals(u.getAddress())) {
+ ret.add(e1.getKey());
+ break;
+ }
+ }
+ }
+
+ return ret;
+ }
+
+ public List findApplications() {
+ List ret = new ArrayList();
+ ConcurrentMap> providerUrls = getRegistryCache().get(Constants.PROVIDERS_CATEGORY);
+ if (providerUrls == null) return ret;
+
+ for (Map.Entry> e1 : providerUrls.entrySet()) {
+ Map value = e1.getValue();
+ for (Map.Entry e2 : value.entrySet()) {
+ URL u = e2.getValue();
+ String app = u.getParameter(Constants.APPLICATION_KEY);
+ if (app != null) ret.add(app);
+ }
+ }
+
+ return ret;
+ }
+
+ public List findByApplication(String application) {
+ return SyncUtils.url2ProviderList(findProviderUrlByApplication(application));
+ }
+
+ private Map findProviderUrlByApplication(String application) {
+ Map filter = new HashMap();
+ filter.put(Constants.CATEGORY_KEY, Constants.PROVIDERS_CATEGORY);
+ filter.put(Constants.APPLICATION_KEY, application);
+ return SyncUtils.filterFromCategory(getRegistryCache(), filter);
+ }
+
+ public List findServicesByApplication(String application) {
+ List ret = new ArrayList();
+
+ ConcurrentMap> providerUrls = getRegistryCache().get(Constants.PROVIDERS_CATEGORY);
+ if (providerUrls == null || application == null || application.length() == 0) return ret;
+
+ for (Map.Entry> e1 : providerUrls.entrySet()) {
+ Map value = e1.getValue();
+ for (Map.Entry e2 : value.entrySet()) {
+ URL u = e2.getValue();
+ if (application.equals(u.getParameter(Constants.APPLICATION_KEY))) {
+ ret.add(e1.getKey());
+ break;
+ }
+ }
+ }
+
+ return ret;
+ }
+
+ public List findMethodsByService(String service) {
+ List ret = new ArrayList();
+
+ ConcurrentMap> providerUrls = getRegistryCache().get(Constants.PROVIDERS_CATEGORY);
+ if (providerUrls == null || service == null || service.length() == 0) return ret;
+
+ Map providers = providerUrls.get(service);
+ if (null == providers || providers.isEmpty()) return ret;
+
+ Entry p = providers.entrySet().iterator().next();
+ String value = p.getValue().getParameter("methods");
+ if (value == null || value.length() == 0) {
+ return ret;
+ }
+ String[] methods = value.split(ParseUtils.METHOD_SPLIT);
+ if (methods == null || methods.length == 0) {
+ return ret;
+ }
+
+ for (String m : methods) {
+ ret.add(m);
+ }
+ return ret;
+ }
+
+ private URL findProviderUrl(Long id) {
+ return findProvider(id).toUrl();
+ }
+
+ public Provider findByServiceAndAddress(String service, String address) {
+ return SyncUtils.url2Provider(findProviderUrl(service, address));
+ }
+
+ private Pair findProviderUrl(String service, String address) {
+ Map filter = new HashMap();
+ filter.put(Constants.CATEGORY_KEY, Constants.PROVIDERS_CATEGORY);
+ filter.put(SyncUtils.ADDRESS_FILTER_KEY, address);
+
+ Map ret = SyncUtils.filterFromCategory(getRegistryCache(), filter);
+ if (ret.isEmpty()) {
+ return null;
+ } else {
+ Long key = ret.entrySet().iterator().next().getKey();
+ return new Pair(key, ret.get(key));
+ }
+ }
+
+}
diff --git a/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/RouteServiceImpl.java b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/RouteServiceImpl.java
new file mode 100644
index 0000000..f618e90
--- /dev/null
+++ b/52.Dubbo-OPS-Mointor/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/RouteServiceImpl.java
@@ -0,0 +1,169 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.alibaba.dubboadmin.governance.service.impl;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.dubbo.common.Constants;
+import com.alibaba.dubbo.common.URL;
+import com.alibaba.dubboadmin.governance.service.RouteService;
+import com.alibaba.dubboadmin.governance.sync.util.Pair;
+import com.alibaba.dubboadmin.governance.sync.util.SyncUtils;
+import com.alibaba.dubboadmin.registry.common.domain.Route;
+
+import org.springframework.stereotype.Component;
+
+/**
+ * IbatisRouteService
+ *
+ */
+@Component
+public class RouteServiceImpl extends AbstractService implements RouteService {
+
+ public void createRoute(Route route) {
+ registryService.register(route.toUrl());
+ }
+
+ public void updateRoute(Route route) {
+ Long id = route.getId();
+ if (id == null) {
+ throw new IllegalStateException("no route id");
+ }
+ URL oldRoute = findRouteUrl(id);
+ if (oldRoute == null) {
+ throw new IllegalStateException("Route was changed!");
+ }
+
+ registryService.unregister(oldRoute);
+ registryService.register(route.toUrl());
+ }
+
+ public void deleteRoute(Long id) {
+ URL oldRoute = findRouteUrl(id);
+ if (oldRoute == null) {
+ throw new IllegalStateException("Route was changed!");
+ }
+ registryService.unregister(oldRoute);
+ }
+
+ public void enableRoute(Long id) {
+ if (id == null) {
+ throw new IllegalStateException("no route id");
+ }
+
+ URL oldRoute = findRouteUrl(id);
+ if (oldRoute == null) {
+ throw new IllegalStateException("Route was changed!");
+ }
+ if (oldRoute.getParameter("enabled", true)) {
+ return;
+ }
+
+ registryService.unregister(oldRoute);
+ URL newRoute = oldRoute.addParameter("enabled", true);
+ registryService.register(newRoute);
+
+ }
+
+ public void disableRoute(Long id) {
+ if (id == null) {
+ throw new IllegalStateException("no route id");
+ }
+
+ URL oldRoute = findRouteUrl(id);
+ if (oldRoute == null) {
+ throw new IllegalStateException("Route was changed!");
+ }
+ if (!oldRoute.getParameter("enabled", true)) {
+ return;
+ }
+
+ URL newRoute = oldRoute.addParameter("enabled", false);
+ registryService.unregister(oldRoute);
+ registryService.register(newRoute);
+
+ }
+
+ public List findAll() {
+ return SyncUtils.url2RouteList(findAllUrl());
+ }
+
+ private Map findAllUrl() {
+ Map filter = new HashMap();
+ filter.put(Constants.CATEGORY_KEY, Constants.ROUTERS_CATEGORY);
+
+ return SyncUtils.filterFromCategory(getRegistryCache(), filter);
+ }
+
+ public Route findRoute(Long id) {
+ return SyncUtils.url2Route(findRouteUrlPair(id));
+ }
+
+ public Pair findRouteUrlPair(Long id) {
+ return SyncUtils.filterFromCategory(getRegistryCache(), Constants.ROUTERS_CATEGORY, id);
+ }
+
+ private URL findRouteUrl(Long id) {
+ return findRoute(id).toUrl();
+ }
+
+ private Map findRouteUrl(String service, String address, boolean force) {
+ Map filter = new HashMap();
+ filter.put(Constants.CATEGORY_KEY, Constants.ROUTERS_CATEGORY);
+ if (service != null && service.length() > 0) {
+ filter.put(SyncUtils.SERVICE_FILTER_KEY, service);
+ }
+ if (address != null && address.length() > 0) {
+ filter.put(SyncUtils.ADDRESS_FILTER_KEY, address);
+ }
+ if (force) {
+ filter.put("force", "true");
+ }
+ return SyncUtils.filterFromCategory(getRegistryCache(), filter);
+ }
+
+ public List findByService(String serviceName) {
+ return SyncUtils.url2RouteList(findRouteUrl(serviceName, null, false));
+ }
+
+ public List findByAddress(String address) {
+ return SyncUtils.url2RouteList(findRouteUrl(null, address, false));
+ }
+
+ public List findByServiceAndAddress(String service, String address) {
+ return SyncUtils.url2RouteList(findRouteUrl(service, address, false));
+ }
+
+ public List findForceRouteByService(String service) {
+ return SyncUtils.url2RouteList(findRouteUrl(service, null, true));
+ }
+
+ public List findForceRouteByAddress(String address) {
+ return SyncUtils.url2RouteList(findRouteUrl(null, address, true));
+ }
+
+ public List