This is an automated email from the ASF dual-hosted git repository.
iluo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new e16e78f create AbstractRouter (#2909)
e16e78f is described below
commit e16e78ff18997d595139a6561bea005e043fd568
Author: Leishunyu <[email protected]>
AuthorDate: Fri Dec 7 18:25:18 2018 +0800
create AbstractRouter (#2909)
* create AbstractRouter
* router default method
* router default method
* router default method
* mockinvoker
---
.../java/org/apache/dubbo/rpc/cluster/Router.java | 27 ++++++++++++++++++++++
.../rpc/cluster/router/MockInvokersSelector.java | 5 ++++
.../cluster/router/condition/ConditionRouter.java | 13 ++++-------
.../rpc/cluster/router/script/ScriptRouter.java | 22 +++++++++++++-----
.../dubbo/rpc/cluster/router/tag/TagRouter.java | 10 +++-----
5 files changed, 55 insertions(+), 22 deletions(-)
diff --git
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Router.java
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Router.java
index 47aa251..99a46a9 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Router.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Router.java
@@ -51,4 +51,31 @@ public interface Router extends Comparable<Router> {
*/
<T> List<Invoker<T>> route(List<Invoker<T>> invokers, URL url, Invocation
invocation) throws RpcException;
+ /**
+ * priority
+ *
+ * @return
+ */
+ int getPriority();
+
+ /**
+ * compare Router
+ *
+ * @param o
+ * @return
+ */
+ @Override
+ default int compareTo(Router o) {
+ if (o == null) {
+ throw new IllegalArgumentException();
+ }
+ if (this.getPriority() == o.getPriority()) {
+ if (o.getUrl() == null) {
+ return -1;
+ }
+ return
getUrl().toFullString().compareTo(o.getUrl().toFullString());
+ } else {
+ return getPriority() > o.getPriority() ? 1 : -1;
+ }
+ }
}
\ No newline at end of file
diff --git
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/MockInvokersSelector.java
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/MockInvokersSelector.java
index 35ce7e5..18133a4 100644
---
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/MockInvokersSelector.java
+++
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/MockInvokersSelector.java
@@ -49,6 +49,11 @@ public class MockInvokersSelector implements Router {
return invokers;
}
+ @Override
+ public int getPriority() {
+ return Integer.MAX_VALUE;
+ }
+
private <T> List<Invoker<T>> getMockedInvokers(final List<Invoker<T>>
invokers) {
if (!hasMockProviders(invokers)) {
return null;
diff --git
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionRouter.java
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionRouter.java
index f45741e..9b3e527 100644
---
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionRouter.java
+++
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionRouter.java
@@ -40,7 +40,6 @@ import java.util.regex.Pattern;
/**
* ConditionRouter
- *
*/
public class ConditionRouter implements Router {
@@ -178,17 +177,13 @@ public class ConditionRouter implements Router {
}
@Override
- public URL getUrl() {
- return url;
+ public int getPriority() {
+ return priority;
}
@Override
- public int compareTo(Router o) {
- if (o == null || o.getClass() != ConditionRouter.class) {
- return 1;
- }
- ConditionRouter c = (ConditionRouter) o;
- return this.priority == c.priority ?
url.toFullString().compareTo(c.url.toFullString()) : (this.priority >
c.priority ? 1 : -1);
+ public URL getUrl() {
+ return url;
}
boolean matchWhen(URL url, Invocation invocation) {
diff --git
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptRouter.java
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptRouter.java
index 6164322..7c3070a 100644
---
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptRouter.java
+++
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptRouter.java
@@ -40,7 +40,6 @@ import java.util.concurrent.ConcurrentHashMap;
/**
* ScriptRouter
- *
*/
public class ScriptRouter implements Router {
@@ -115,12 +114,23 @@ public class ScriptRouter implements Router {
}
@Override
+ public int getPriority() {
+ return priority;
+ }
+
+ @Override
public int compareTo(Router o) {
- if (o == null || o.getClass() != ScriptRouter.class) {
- return 1;
+ if (o == null) {
+ throw new IllegalArgumentException();
+ }
+ if (this.priority == o.getPriority()) {
+ if (o instanceof ScriptRouter) {
+ ScriptRouter c = (ScriptRouter) o;
+ return rule.compareTo(c.rule);
+ }
+ return 0;
+ } else {
+ return this.priority > o.getPriority() ? 1 : -1;
}
- ScriptRouter c = (ScriptRouter) o;
- return this.priority == c.priority ? rule.compareTo(c.rule) :
(this.priority > c.priority ? 1 : -1);
}
-
}
diff --git
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java
index 4bcb43b..b133cd1 100644
---
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java
+++
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java
@@ -80,7 +80,7 @@ public class TagRouter implements Router {
}
}
}
- // Normal request
+ // Normal request
} else {
for (Invoker<T> invoker : invokers) {
// Can't access tag invoker,only normal invoker should be
selected
@@ -98,11 +98,7 @@ public class TagRouter implements Router {
}
@Override
- public int compareTo(Router o) {
- if (o == null || o.getClass() != TagRouter.class) {
- return 1;
- }
- TagRouter c = (TagRouter) o;
- return this.priority == c.priority ?
url.toFullString().compareTo(c.url.toFullString()) : (this.priority >
c.priority ? 1 : -1);
+ public int getPriority() {
+ return priority;
}
}