If the search input must not be blank, we should notify users (#383)
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ConditionRoutesController.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ConditionRoutesController.java
index cd1b894..8486d3e 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ConditionRoutesController.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ConditionRoutesController.java
@@ -82,11 +82,12 @@
@RequestParam(required = false) String service, @PathVariable String env) {
ConditionRouteDTO conditionRoute = null;
List<ConditionRouteDTO> result = new ArrayList<>();
- if (StringUtils.isNotEmpty(application)) {
+ if (StringUtils.isNotBlank(application)) {
conditionRoute = routeService.findConditionRoute(application);
- }
- if (StringUtils.isNotEmpty(service)) {
+ } else if (StringUtils.isNotBlank(service)) {
conditionRoute = routeService.findConditionRoute(service);
+ } else {
+ throw new ParamValidationException("Either Service or application is required.");
}
if (conditionRoute != null && conditionRoute.getConditions() != null) {
result.add(conditionRoute);
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/OverridesController.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/OverridesController.java
index 82ba032..c50ae01 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/OverridesController.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/OverridesController.java
@@ -83,10 +83,12 @@
@PathVariable String env) {
DynamicConfigDTO override = null;
List<DynamicConfigDTO> result = new ArrayList<>();
- if (StringUtils.isNotEmpty(service)) {
+ if (StringUtils.isNotBlank(service)) {
override = overrideService.findOverride(service);
- } else if(StringUtils.isNotEmpty(application)){
+ } else if(StringUtils.isNotBlank(application)){
override = overrideService.findOverride(application);
+ } else {
+ throw new ParamValidationException("Either Service or application is required.");
}
if (override != null) {
result.add(override);
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/TagRoutesController.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/TagRoutesController.java
index 521c9d2..f3c88ec 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/TagRoutesController.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/TagRoutesController.java
@@ -84,6 +84,9 @@
@RequestMapping(method = RequestMethod.GET)
public List<TagRouteDTO> searchRoutes(@RequestParam String application, @PathVariable String env) {
+ if (StringUtils.isBlank(application)) {
+ throw new ParamValidationException("application is required.");
+ }
List<TagRouteDTO> result = new ArrayList<>();
String version = "2.6";
try {
@@ -95,10 +98,7 @@
return result;
}
- TagRouteDTO tagRoute = null;
- if (StringUtils.isNotEmpty(application)) {
- tagRoute = routeService.findTagRoute(application);
- }
+ TagRouteDTO tagRoute = routeService.findTagRoute(application);
if (tagRoute != null) {
result.add(tagRoute);
}
diff --git a/dubbo-admin-ui/src/components/Management.vue b/dubbo-admin-ui/src/components/Management.vue
index 03522c7..d107b1e 100644
--- a/dubbo-admin-ui/src/components/Management.vue
+++ b/dubbo-admin-ui/src/components/Management.vue
@@ -256,15 +256,19 @@
}
},
submit () {
+ if (!this.filter) {
+ this.$notify.error('application is needed')
+ return
+ }
this.filter = this.filter.trim()
- this.search(this.filter)
+ this.search()
},
- search (filter) {
- this.$axios.get('/manage/config/' + filter)
+ search () {
+ this.$axios.get('/manage/config/' + this.filter)
.then(response => {
if (response.status === 200) {
this.dubboConfig = response.data
- this.$router.push({path: 'management', query: {key: filter}})
+ this.$router.push({path: 'management', query: {key: this.filter}})
}
})
}
@@ -283,7 +287,7 @@
} else {
this.filter = 'global'
}
- this.search(this.filter)
+ this.search()
}
}
</script>
diff --git a/dubbo-admin-ui/src/components/governance/AccessControl.vue b/dubbo-admin-ui/src/components/governance/AccessControl.vue
index 7104f11..9b0b74c 100644
--- a/dubbo-admin-ui/src/components/governance/AccessControl.vue
+++ b/dubbo-admin-ui/src/components/governance/AccessControl.vue
@@ -32,7 +32,7 @@
:loading="searchLoading"
:items="typeAhead"
:search-input.sync="input"
- @keyup.enter="search"
+ @keyup.enter="submit"
flat
append-icon=""
hide-no-data
@@ -53,7 +53,7 @@
</v-list-tile>
</v-list>
</v-menu>
- <v-btn @click="search" color="primary" large>{{$t('search')}}</v-btn>
+ <v-btn @click="submit" color="primary" large>{{$t('search')}}</v-btn>
</v-layout>
</v-form>
@@ -345,25 +345,29 @@
}
}, 500)
},
- search () {
+ submit: function () {
+ this.filter = document.querySelector('#serviceSearch').value.trim()
+ this.search(true)
+ },
+ search (rewrite) {
if (!this.filter) {
- this.filter = document.querySelector('#serviceSearch').value.trim()
- if (!this.filter) {
- return
- }
+ this.$notify.error('Either service or application is needed')
+ return
}
let type = this.items[this.selected].value
this.loading = true
- if (this.selected === 0) {
- this.$router.push({
- path: 'access',
- query: {service: this.filter}
- })
- } else if (this.selected === 1) {
- this.$router.push({
- path: 'access',
- query: {application: this.filter}
- })
+ if (rewrite) {
+ if (this.selected === 0) {
+ this.$router.push({
+ path: 'access',
+ query: {service: this.filter}
+ })
+ } else if (this.selected === 1) {
+ this.$router.push({
+ path: 'access',
+ query: {application: this.filter}
+ })
+ }
}
let url = '/rules/access/?' + type + '=' + this.filter
this.$axios.get(url)
@@ -537,7 +541,9 @@
this.filter = query['application']
this.selected = 1
}
- this.search()
+ if (this.filter !== null) {
+ this.search()
+ }
},
components: {
Breadcrumb,
diff --git a/dubbo-admin-ui/src/components/governance/LoadBalance.vue b/dubbo-admin-ui/src/components/governance/LoadBalance.vue
index a2a5064..7b62e00 100644
--- a/dubbo-admin-ui/src/components/governance/LoadBalance.vue
+++ b/dubbo-admin-ui/src/components/governance/LoadBalance.vue
@@ -319,19 +319,23 @@
},
submit: function () {
this.filter = document.querySelector('#serviceSearch').value.trim()
- this.search(this.filter, true)
+ this.search(true)
},
- search: function (filter, rewrite) {
+ search: function (rewrite) {
+ if (!this.filter) {
+ this.$notify.error('Either service or application is needed')
+ return
+ }
let type = this.items[this.selected].value
- let url = '/rules/balancing/?' + type + '=' + filter
+ let url = '/rules/balancing/?' + type + '=' + this.filter
this.$axios.get(url)
.then(response => {
this.loadBalances = response.data
if (rewrite) {
if (this.selected === 0) {
- this.$router.push({path: 'loadbalance', query: {service: filter}})
+ this.$router.push({path: 'loadbalance', query: {service: this.filter}})
} else if (this.selected === 1) {
- this.$router.push({path: 'loadbalance', query: {application: filter}})
+ this.$router.push({path: 'loadbalance', query: {application: this.filter}})
}
}
})
@@ -524,7 +528,7 @@
})
if (filter !== null) {
this.filter = filter
- this.search(filter, false)
+ this.search(false)
}
}
diff --git a/dubbo-admin-ui/src/components/governance/Overrides.vue b/dubbo-admin-ui/src/components/governance/Overrides.vue
index 71e3e72..fb0cd47 100644
--- a/dubbo-admin-ui/src/components/governance/Overrides.vue
+++ b/dubbo-admin-ui/src/components/governance/Overrides.vue
@@ -274,11 +274,15 @@
},
submit: function () {
this.filter = document.querySelector('#serviceSearch').value.trim()
- this.search(this.filter, true)
+ this.search(true)
},
- search: function (filter, rewrite) {
+ search: function (rewrite) {
+ if (!this.filter) {
+ this.$notify.error('Either service or application is needed')
+ return
+ }
let type = this.items[this.selected].value
- let url = '/rules/override/?' + type + '=' + filter
+ let url = '/rules/override/?' + type + '=' + this.filter
this.$axios.get(url)
.then(response => {
if (this.selected === 0) {
@@ -288,9 +292,9 @@
}
if (rewrite) {
if (this.selected === 0) {
- this.$router.push({path: 'config', query: {service: filter}})
+ this.$router.push({path: 'config', query: {service: this.filter}})
} else if (this.selected === 1) {
- this.$router.push({path: 'config', query: {application: filter}})
+ this.$router.push({path: 'config', query: {application: this.filter}})
}
}
})
@@ -511,7 +515,7 @@
})
if (filter !== null) {
this.filter = filter
- this.search(filter, false)
+ this.search(false)
}
}
}
diff --git a/dubbo-admin-ui/src/components/governance/RoutingRule.vue b/dubbo-admin-ui/src/components/governance/RoutingRule.vue
index a9ea760..41f8193 100644
--- a/dubbo-admin-ui/src/components/governance/RoutingRule.vue
+++ b/dubbo-admin-ui/src/components/governance/RoutingRule.vue
@@ -287,11 +287,15 @@
},
submit: function () {
this.filter = document.querySelector('#serviceSearch').value.trim()
- this.search(this.filter, true)
+ this.search(true)
},
- search: function (filter, rewrite) {
+ search: function (rewrite) {
+ if (!this.filter) {
+ this.$notify.error('Either service or application is needed')
+ return
+ }
let type = this.items[this.selected].value
- let url = '/rules/route/condition/?' + type + '=' + filter
+ let url = '/rules/route/condition/?' + type + '=' + this.filter
this.$axios.get(url)
.then(response => {
if (this.selected === 0) {
@@ -301,9 +305,9 @@
}
if (rewrite) {
if (this.selected === 0) {
- this.$router.push({path: 'routingRule', query: {service: filter}})
+ this.$router.push({path: 'routingRule', query: {service: this.filter}})
} else if (this.selected === 1) {
- this.$router.push({path: 'routingRule', query: {application: filter}})
+ this.$router.push({path: 'routingRule', query: {application: this.filter}})
}
}
})
@@ -519,7 +523,7 @@
})
if (filter !== null) {
this.filter = filter
- this.search(filter, false)
+ this.search(false)
}
}
diff --git a/dubbo-admin-ui/src/components/governance/TagRule.vue b/dubbo-admin-ui/src/components/governance/TagRule.vue
index 82d4f95..a7d2417 100644
--- a/dubbo-admin-ui/src/components/governance/TagRule.vue
+++ b/dubbo-admin-ui/src/components/governance/TagRule.vue
@@ -172,16 +172,20 @@
]
},
submit: function () {
+ if (!this.filter) {
+ this.$notify.error('application is needed')
+ return
+ }
this.filter = this.filter.trim()
- this.search(this.filter, true)
+ this.search(true)
},
- search: function (filter, rewrite) {
- let url = '/rules/route/tag/?application' + '=' + filter
+ search: function (rewrite) {
+ let url = '/rules/route/tag/?application' + '=' + this.filter
this.$axios.get(url)
.then(response => {
this.tagRoutingRules = response.data
if (rewrite) {
- this.$router.push({path: 'tagRule', query: {application: filter}})
+ this.$router.push({path: 'tagRule', query: {application: this.filter}})
}
})
},
@@ -352,7 +356,7 @@
})
if (filter !== null) {
this.filter = filter
- this.search(filter, false)
+ this.search(false)
}
}
diff --git a/dubbo-admin-ui/src/components/governance/WeightAdjust.vue b/dubbo-admin-ui/src/components/governance/WeightAdjust.vue
index 0bbe32c..fd3a514 100644
--- a/dubbo-admin-ui/src/components/governance/WeightAdjust.vue
+++ b/dubbo-admin-ui/src/components/governance/WeightAdjust.vue
@@ -305,19 +305,23 @@
},
submit: function () {
this.filter = document.querySelector('#serviceSearch').value.trim()
- this.search(this.filter, true)
+ this.search(true)
},
- search: function (filter, rewrite) {
+ search: function (rewrite) {
+ if (!this.filter) {
+ this.$notify.error('Either service or application is needed')
+ return
+ }
let type = this.items[this.selected].value
- let url = '/rules/weight/?' + type + '=' + filter
+ let url = '/rules/weight/?' + type + '=' + this.filter
this.$axios.get(url)
.then(response => {
this.weights = response.data
if (rewrite) {
if (this.selected === 0) {
- this.$router.push({path: 'weight', query: {service: filter}})
+ this.$router.push({path: 'weight', query: {service: this.filter}})
} else if (this.selected === 1) {
- this.$router.push({path: 'weight', query: {application: filter}})
+ this.$router.push({path: 'weight', query: {application: this.filter}})
}
}
})
@@ -500,7 +504,7 @@
})
if (filter !== null) {
this.filter = filter
- this.search(filter, false)
+ this.search(false)
}
}
}
diff --git a/dubbo-admin-ui/src/components/test/ServiceTest.vue b/dubbo-admin-ui/src/components/test/ServiceTest.vue
index 5ac9267..7902526 100644
--- a/dubbo-admin-ui/src/components/test/ServiceTest.vue
+++ b/dubbo-admin-ui/src/components/test/ServiceTest.vue
@@ -129,6 +129,7 @@
let filter = this.filter.replace('/', '*')
this.search(filter)
} else {
+ this.$notify.error('service is needed')
return false
}
},
@@ -237,8 +238,9 @@
if ('version' in query) {
this.filter = this.filter + ':' + query['version']
}
-
- this.search(this.filter.replace('/', '*'))
+ if (this.filter) {
+ this.search(this.filter.replace('/', '*'))
+ }
}
}
</script>