dubbo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] beiwei30 closed pull request #2338: 2.7.2 dev
Date Fri, 24 Aug 2018 07:54:59 GMT
beiwei30 closed pull request #2338: 2.7.2 dev
URL: https://github.com/apache/incubator-dubbo/pull/2338
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/dubbo-all/pom.xml b/dubbo-all/pom.xml
index 7a1cdd3682..3b5ea49e91 100644
--- a/dubbo-all/pom.xml
+++ b/dubbo-all/pom.xml
@@ -19,11 +19,11 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-parent</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>dubbo</artifactId>
-    <version>2.7.0-SNAPSHOT</version>
+    <version>2.7.2-SNAPSHOT</version>
     <packaging>jar</packaging>
     <name>dubbo-all</name>
     <description>The all in one project of dubbo</description>
@@ -171,13 +171,6 @@
             <scope>compile</scope>
             <optional>true</optional>
         </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-rpc-thrift</artifactId>
-            <version>${project.version}</version>
-            <scope>compile</scope>
-            <optional>true</optional>
-        </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-rpc-memcached</artifactId>
@@ -325,13 +318,6 @@
             <scope>compile</scope>
             <optional>true</optional>
         </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-compatible</artifactId>
-            <version>${project.version}</version>
-            <scope>compile</scope>
-            <optional>true</optional>
-        </dependency>
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>hessian-lite</artifactId>
@@ -387,7 +373,6 @@
                             <artifactSet>
                                 <includes>
                                     <include>com.alibaba:hessian-lite</include>
-                                    <include>org.apache.dubbo:dubbo-compatible</include>
                                     <include>org.apache.dubbo:dubbo-common</include>
                                     <include>org.apache.dubbo:dubbo-remoting-api</include>
                                     <include>org.apache.dubbo:dubbo-remoting-netty</include>
@@ -404,7 +389,6 @@
                                     <include>org.apache.dubbo:dubbo-rpc-hessian</include>
                                     <include>org.apache.dubbo:dubbo-rpc-http</include>
                                     <include>org.apache.dubbo:dubbo-rpc-webservice</include>
-                                    <include>org.apache.dubbo:dubbo-rpc-thrift</include>
                                     <include>org.apache.dubbo:dubbo-rpc-memcached</include>
                                     <include>org.apache.dubbo:dubbo-rpc-redis</include>
                                     <include>org.apache.dubbo:dubbo-rpc-rest</include>
diff --git a/dubbo-bom/pom.xml b/dubbo-bom/pom.xml
index 6c20d30374..7826d1445e 100644
--- a/dubbo-bom/pom.xml
+++ b/dubbo-bom/pom.xml
@@ -11,7 +11,7 @@
 
     <groupId>org.apache.dubbo</groupId>
     <artifactId>dubbo-bom</artifactId>
-    <version>2.7.0-SNAPSHOT</version>
+    <version>2.7.2-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>dubbo-bom</name>
@@ -173,11 +173,6 @@
                 <artifactId>dubbo-rpc-webservice</artifactId>
                 <version>${project.version}</version>
             </dependency>
-            <dependency>
-                <groupId>org.apache.dubbo</groupId>
-                <artifactId>dubbo-rpc-thrift</artifactId>
-                <version>${project.version}</version>
-            </dependency>
             <dependency>
                 <groupId>org.apache.dubbo</groupId>
                 <artifactId>dubbo-rpc-memcached</artifactId>
@@ -283,11 +278,6 @@
                 <artifactId>dubbo-bootstrap</artifactId>
                 <version>${project.version}</version>
             </dependency>
-            <dependency>
-                <groupId>org.apache.dubbo</groupId>
-                <artifactId>dubbo-compatible</artifactId>
-                <version>${project.version}</version>
-            </dependency>
         </dependencies>
     </dependencyManagement>
 
diff --git a/dubbo-bootstrap/pom.xml b/dubbo-bootstrap/pom.xml
index a082550b36..9a9e653438 100644
--- a/dubbo-bootstrap/pom.xml
+++ b/dubbo-bootstrap/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>dubbo-parent</artifactId>
         <groupId>org.apache.dubbo</groupId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/dubbo-cluster/pom.xml b/dubbo-cluster/pom.xml
index 42941d4db6..c44d64dd19 100644
--- a/dubbo-cluster/pom.xml
+++ b/dubbo-cluster/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-parent</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-cluster</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailSafeClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailSafeClusterInvokerTest.java
index fa9ac1a868..01d9aadd6e 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailSafeClusterInvokerTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailSafeClusterInvokerTest.java
@@ -85,7 +85,7 @@ public void testInvokeExceptoin() {
         resetInvokerToException();
         FailsafeClusterInvoker<DemoService> invoker = new FailsafeClusterInvoker<DemoService>(dic);
         invoker.invoke(invocation);
-        Assert.assertNull(RpcContext.getContext().getInvoker());
+        Assert.assertNull(RpcContext.getContext().getUrl());
     }
 
     @Test()
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailbackClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailbackClusterInvokerTest.java
index 42a4ec6eba..28d06d43ed 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailbackClusterInvokerTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailbackClusterInvokerTest.java
@@ -81,7 +81,7 @@ public void testInvokeExceptoin() {
         FailbackClusterInvoker<FailbackClusterInvokerTest> invoker = new FailbackClusterInvoker<FailbackClusterInvokerTest>(
                 dic);
         invoker.invoke(invocation);
-        Assert.assertNull(RpcContext.getContext().getInvoker());
+        Assert.assertNull(RpcContext.getContext().getUrl());
     }
 
     @Test()
@@ -125,7 +125,7 @@ public void testRetryFailed() {
         FailbackClusterInvoker<FailbackClusterInvokerTest> invoker = new FailbackClusterInvoker<FailbackClusterInvokerTest>(
                 dic);
         invoker.invoke(invocation);
-        Assert.assertNull(RpcContext.getContext().getInvoker());
+        Assert.assertNull(RpcContext.getContext().getUrl());
         invoker.retryFailed();// when retry the invoker which get from failed map already is not the mocked invoker,so
         // it can be invoke successfully
     }
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailfastClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailfastClusterInvokerTest.java
index 41dc79ca2e..deff647632 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailfastClusterInvokerTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/FailfastClusterInvokerTest.java
@@ -86,7 +86,7 @@ public void testInvokeExceptoin() {
         resetInvoker1ToException();
         FailfastClusterInvoker<FailfastClusterInvokerTest> invoker = new FailfastClusterInvoker<FailfastClusterInvokerTest>(dic);
         invoker.invoke(invocation);
-        Assert.assertSame(invoker1, RpcContext.getContext().getInvoker());
+        Assert.assertSame(invoker1, RpcContext.getContext().getUrl());
     }
 
     @Test()
diff --git a/dubbo-common/pom.xml b/dubbo-common/pom.xml
index 22a13222fe..3477f9b859 100644
--- a/dubbo-common/pom.xml
+++ b/dubbo-common/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-parent</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-common</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/extension/Activate.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/extension/Activate.java
deleted file mode 100644
index 9aecbce000..0000000000
--- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/extension/Activate.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.dubbo.common.extension;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * See @org.apache.dubbo.common.extension.Activate
- */
-@Documented
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.TYPE, ElementType.METHOD})
-@Deprecated
-public @interface Activate {
-
-    String[] group() default {};
-
-    String[] value() default {};
-
-    @Deprecated
-    String[] before() default {};
-
-    @Deprecated
-    String[] after() default {};
-
-    int order() default 0;
-}
\ No newline at end of file
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/Extension.java b/dubbo-common/src/main/java/org/apache/dubbo/common/Extension.java
deleted file mode 100644
index 724a0d7dcd..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/Extension.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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 org.apache.dubbo.common;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Marker for extension interface
- * <p/>
- * Changes on extension configuration file <br/>
- * Use <code>Protocol</code> as an example, its configuration file 'META-INF/dubbo/com.xxx.Protocol' is changes from: <br/>
- * <pre>
- *     com.foo.XxxProtocol
- *     com.foo.YyyProtocol
- * </pre>
- * <p>
- * to key-value pair <br/>
- * <pre>
- *     xxx=com.foo.XxxProtocol
- *     yyy=com.foo.YyyProtocol
- * </pre>
- * <br/>
- * The reason for this change is:
- * <p>
- * If there's third party library referenced by static field or by method in extension implementation, its class will
- * fail to initialize if the third party library doesn't exist. In this case, dubbo cannot figure out extension's id
- * therefore cannot be able to map the exception information with the extension, if the previous format is used.
- * <p/>
- * For example:
- * <p>
- * Fails to load Extension("mina"). When user configure to use mina, dubbo will complain the extension cannot be loaded,
- * instead of reporting which extract extension implementation fails and the extract reason.
- * </p>
- *
- * @deprecated because it's too general, switch to use {@link org.apache.dubbo.common.extension.SPI}
- */
-@Deprecated
-@Documented
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.TYPE})
-public @interface Extension {
-
-    /**
-     * @deprecated
-     */
-    @Deprecated
-    String value() default "";
-
-}
\ No newline at end of file
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/Parameters.java b/dubbo-common/src/main/java/org/apache/dubbo/common/Parameters.java
deleted file mode 100644
index 39999279ec..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/Parameters.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * 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 org.apache.dubbo.common;
-
-import org.apache.dubbo.common.extension.ExtensionLoader;
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.utils.StringUtils;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Parameters for backward compatibility for version prior to 2.0.5
- *
- * @deprecated
- */
-@Deprecated
-public class Parameters {
-    protected static final Logger logger = LoggerFactory.getLogger(Parameters.class);
-    private final Map<String, String> parameters;
-
-    public Parameters(String... pairs) {
-        this(toMap(pairs));
-    }
-
-    public Parameters(Map<String, String> parameters) {
-        this.parameters = Collections.unmodifiableMap(parameters != null ? new HashMap<String, String>(parameters) : new HashMap<String, String>(0));
-    }
-
-    private static Map<String, String> toMap(String... pairs) {
-        Map<String, String> parameters = new HashMap<String, String>();
-        if (pairs.length > 0) {
-            if (pairs.length % 2 != 0) {
-                throw new IllegalArgumentException("pairs must be even.");
-            }
-            for (int i = 0; i < pairs.length; i = i + 2) {
-                parameters.put(pairs[i], pairs[i + 1]);
-            }
-        }
-        return parameters;
-    }
-
-    public static Parameters parseParameters(String query) {
-        return new Parameters(StringUtils.parseQueryString(query));
-    }
-
-    public Map<String, String> getParameters() {
-        return parameters;
-    }
-
-    public <T> T getExtension(Class<T> type, String key) {
-        String name = getParameter(key);
-        return ExtensionLoader.getExtensionLoader(type).getExtension(name);
-    }
-
-    public <T> T getExtension(Class<T> type, String key, String defaultValue) {
-        String name = getParameter(key, defaultValue);
-        return ExtensionLoader.getExtensionLoader(type).getExtension(name);
-    }
-
-    public <T> T getMethodExtension(Class<T> type, String method, String key) {
-        String name = getMethodParameter(method, key);
-        return ExtensionLoader.getExtensionLoader(type).getExtension(name);
-    }
-
-    public <T> T getMethodExtension(Class<T> type, String method, String key, String defaultValue) {
-        String name = getMethodParameter(method, key, defaultValue);
-        return ExtensionLoader.getExtensionLoader(type).getExtension(name);
-    }
-
-    public String getDecodedParameter(String key) {
-        return getDecodedParameter(key, null);
-    }
-
-    public String getDecodedParameter(String key, String defaultValue) {
-        String value = getParameter(key, defaultValue);
-        if (value != null && value.length() > 0) {
-            try {
-                value = URLDecoder.decode(value, "UTF-8");
-            } catch (UnsupportedEncodingException e) {
-                logger.error(e.getMessage(), e);
-            }
-        }
-        return value;
-    }
-
-    public String getParameter(String key) {
-        String value = parameters.get(key);
-        if (value == null || value.length() == 0) {
-            value = parameters.get(Constants.HIDE_KEY_PREFIX + key);
-        }
-        if (value == null || value.length() == 0) {
-            value = parameters.get(Constants.DEFAULT_KEY_PREFIX + key);
-        }
-        if (value == null || value.length() == 0) {
-            value = parameters.get(Constants.HIDE_KEY_PREFIX + Constants.DEFAULT_KEY_PREFIX + key);
-        }
-        return value;
-    }
-
-    public String getParameter(String key, String defaultValue) {
-        String value = getParameter(key);
-        if (value == null || value.length() == 0) {
-            return defaultValue;
-        }
-        return value;
-    }
-
-    public int getIntParameter(String key) {
-        String value = getParameter(key);
-        if (value == null || value.length() == 0) {
-            return 0;
-        }
-        return Integer.parseInt(value);
-    }
-
-    public int getIntParameter(String key, int defaultValue) {
-        String value = getParameter(key);
-        if (value == null || value.length() == 0) {
-            return defaultValue;
-        }
-        return Integer.parseInt(value);
-    }
-
-    public int getPositiveIntParameter(String key, int defaultValue) {
-        if (defaultValue <= 0) {
-            throw new IllegalArgumentException("defaultValue <= 0");
-        }
-        String value = getParameter(key);
-        if (value == null || value.length() == 0) {
-            return defaultValue;
-        }
-        int i = Integer.parseInt(value);
-        if (i > 0) {
-            return i;
-        }
-        return defaultValue;
-    }
-
-    public boolean getBooleanParameter(String key) {
-        String value = getParameter(key);
-        if (value == null || value.length() == 0) {
-            return false;
-        }
-        return Boolean.parseBoolean(value);
-    }
-
-    public boolean getBooleanParameter(String key, boolean defaultValue) {
-        String value = getParameter(key);
-        if (value == null || value.length() == 0) {
-            return defaultValue;
-        }
-        return Boolean.parseBoolean(value);
-    }
-
-    public boolean hasParamter(String key) {
-        String value = getParameter(key);
-        return value != null && value.length() > 0;
-    }
-
-    public String getMethodParameter(String method, String key) {
-        String value = parameters.get(method + "." + key);
-        if (value == null || value.length() == 0) {
-            value = parameters.get(Constants.HIDE_KEY_PREFIX + method + "." + key);
-        }
-        if (value == null || value.length() == 0) {
-            return getParameter(key);
-        }
-        return value;
-    }
-
-    public String getMethodParameter(String method, String key, String defaultValue) {
-        String value = getMethodParameter(method, key);
-        if (value == null || value.length() == 0) {
-            return defaultValue;
-        }
-        return value;
-    }
-
-    public int getMethodIntParameter(String method, String key) {
-        String value = getMethodParameter(method, key);
-        if (value == null || value.length() == 0) {
-            return 0;
-        }
-        return Integer.parseInt(value);
-    }
-
-    public int getMethodIntParameter(String method, String key, int defaultValue) {
-        String value = getMethodParameter(method, key);
-        if (value == null || value.length() == 0) {
-            return defaultValue;
-        }
-        return Integer.parseInt(value);
-    }
-
-    public int getMethodPositiveIntParameter(String method, String key, int defaultValue) {
-        if (defaultValue <= 0) {
-            throw new IllegalArgumentException("defaultValue <= 0");
-        }
-        String value = getMethodParameter(method, key);
-        if (value == null || value.length() == 0) {
-            return defaultValue;
-        }
-        int i = Integer.parseInt(value);
-        if (i > 0) {
-            return i;
-        }
-        return defaultValue;
-    }
-
-    public boolean getMethodBooleanParameter(String method, String key) {
-        String value = getMethodParameter(method, key);
-        if (value == null || value.length() == 0) {
-            return false;
-        }
-        return Boolean.parseBoolean(value);
-    }
-
-    public boolean getMethodBooleanParameter(String method, String key, boolean defaultValue) {
-        String value = getMethodParameter(method, key);
-        if (value == null || value.length() == 0) {
-            return defaultValue;
-        }
-        return Boolean.parseBoolean(value);
-    }
-
-    public boolean hasMethodParamter(String method, String key) {
-        String value = getMethodParameter(method, key);
-        return value != null && value.length() > 0;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        return parameters.equals(o);
-    }
-
-    @Override
-    public int hashCode() {
-        return parameters.hashCode();
-    }
-
-    @Override
-    public String toString() {
-        return StringUtils.toQueryString(getParameters());
-    }
-
-}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java b/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
index a83ca91e22..c2a4073c7a 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
@@ -1240,11 +1240,6 @@ public String toServiceString() {
         return buildString(true, false, true, true);
     }
 
-    @Deprecated
-    public String getServiceName() {
-        return getServiceInterface();
-    }
-
     public String getServiceInterface() {
         return getParameter(Constants.INTERFACE_KEY, path);
     }
@@ -1253,96 +1248,6 @@ public URL setServiceInterface(String service) {
         return addParameter(Constants.INTERFACE_KEY, service);
     }
 
-    /**
-     * @see #getParameter(String, int)
-     * @deprecated Replace to <code>getParameter(String, int)</code>
-     */
-    @Deprecated
-    public int getIntParameter(String key) {
-        return getParameter(key, 0);
-    }
-
-    /**
-     * @see #getParameter(String, int)
-     * @deprecated Replace to <code>getParameter(String, int)</code>
-     */
-    @Deprecated
-    public int getIntParameter(String key, int defaultValue) {
-        return getParameter(key, defaultValue);
-    }
-
-    /**
-     * @see #getPositiveParameter(String, int)
-     * @deprecated Replace to <code>getPositiveParameter(String, int)</code>
-     */
-    @Deprecated
-    public int getPositiveIntParameter(String key, int defaultValue) {
-        return getPositiveParameter(key, defaultValue);
-    }
-
-    /**
-     * @see #getParameter(String, boolean)
-     * @deprecated Replace to <code>getParameter(String, boolean)</code>
-     */
-    @Deprecated
-    public boolean getBooleanParameter(String key) {
-        return getParameter(key, false);
-    }
-
-    /**
-     * @see #getParameter(String, boolean)
-     * @deprecated Replace to <code>getParameter(String, boolean)</code>
-     */
-    @Deprecated
-    public boolean getBooleanParameter(String key, boolean defaultValue) {
-        return getParameter(key, defaultValue);
-    }
-
-    /**
-     * @see #getMethodParameter(String, String, int)
-     * @deprecated Replace to <code>getMethodParameter(String, String, int)</code>
-     */
-    @Deprecated
-    public int getMethodIntParameter(String method, String key) {
-        return getMethodParameter(method, key, 0);
-    }
-
-    /**
-     * @see #getMethodParameter(String, String, int)
-     * @deprecated Replace to <code>getMethodParameter(String, String, int)</code>
-     */
-    @Deprecated
-    public int getMethodIntParameter(String method, String key, int defaultValue) {
-        return getMethodParameter(method, key, defaultValue);
-    }
-
-    /**
-     * @see #getMethodPositiveParameter(String, String, int)
-     * @deprecated Replace to <code>getMethodPositiveParameter(String, String, int)</code>
-     */
-    @Deprecated
-    public int getMethodPositiveIntParameter(String method, String key, int defaultValue) {
-        return getMethodPositiveParameter(method, key, defaultValue);
-    }
-
-    /**
-     * @see #getMethodParameter(String, String, boolean)
-     * @deprecated Replace to <code>getMethodParameter(String, String, boolean)</code>
-     */
-    @Deprecated
-    public boolean getMethodBooleanParameter(String method, String key) {
-        return getMethodParameter(method, key, false);
-    }
-
-    /**
-     * @see #getMethodParameter(String, String, boolean)
-     * @deprecated Replace to <code>getMethodParameter(String, String, boolean)</code>
-     */
-    @Deprecated
-    public boolean getMethodBooleanParameter(String method, String key, boolean defaultValue) {
-        return getMethodParameter(method, key, defaultValue);
-    }
-
     @Override
     public int hashCode() {
         final int prime = 31;
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/Activate.java b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/Activate.java
index ba1873e579..33573c64a2 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/Activate.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/Activate.java
@@ -65,24 +65,6 @@
      */
     String[] value() default {};
 
-    /**
-     * Relative ordering info, optional
-     * Deprecated since 2.7.0
-     *
-     * @return extension list which should be put before the current one
-     */
-    @Deprecated
-    String[] before() default {};
-
-    /**
-     * Relative ordering info, optional
-     * Deprecated since 2.7.0
-     *
-     * @return extension list which should be put after the current one
-     */
-    @Deprecated
-    String[] after() default {};
-
     /**
      * Absolute ordering info, optional
      *
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
index 666abfbaba..e94facc252 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
@@ -196,10 +196,12 @@ public String getExtensionName(Class<?> extensionClass) {
                 if (activate instanceof Activate) {
                     activateGroup = ((Activate) activate).group();
                     activateValue = ((Activate) activate).value();
-                } else if (activate instanceof com.alibaba.dubbo.common.extension.Activate) {
-                    activateGroup = ((com.alibaba.dubbo.common.extension.Activate) activate).group();
-                    activateValue = ((com.alibaba.dubbo.common.extension.Activate) activate).value();
-                } else {
+                }
+//                else if (activate instanceof com.alibaba.dubbo.common.extension.Activate) {
+//                    activateGroup = ((com.alibaba.dubbo.common.extension.Activate) activate).group();
+//                    activateValue = ((com.alibaba.dubbo.common.extension.Activate) activate).value();
+//                }
+                else {
                     continue;
                 }
                 if (isMatchGroup(group, activateGroup)) {
@@ -688,12 +690,6 @@ private void loadClass(Map<String, Class<?>> extensionClasses, java.net.URL reso
                 Activate activate = clazz.getAnnotation(Activate.class);
                 if (activate != null) {
                     cachedActivates.put(names[0], activate);
-                } else {
-                    // support com.alibaba.dubbo.common.extension.Activate
-                    com.alibaba.dubbo.common.extension.Activate oldActivate = clazz.getAnnotation(com.alibaba.dubbo.common.extension.Activate.class);
-                    if (oldActivate != null) {
-                        cachedActivates.put(names[0], oldActivate);
-                    }
                 }
                 for (String n : names) {
                     if (!cachedNames.containsKey(clazz)) {
@@ -721,15 +717,15 @@ private boolean isWrapperClass(Class<?> clazz) {
 
     @SuppressWarnings("deprecation")
     private String findAnnotationName(Class<?> clazz) {
-        org.apache.dubbo.common.Extension extension = clazz.getAnnotation(org.apache.dubbo.common.Extension.class);
-        if (extension == null) {
-            String name = clazz.getSimpleName();
-            if (name.endsWith(type.getSimpleName())) {
-                name = name.substring(0, name.length() - type.getSimpleName().length());
-            }
-            return name.toLowerCase();
-        }
-        return extension.value();
+//        org.apache.dubbo.common.Extension extension = clazz.getAnnotation(org.apache.dubbo.common.Extension.class);
+//        if (extension == null) {
+        String name = clazz.getSimpleName();
+        if (name.endsWith(type.getSimpleName())) {
+            name = name.substring(0, name.length() - type.getSimpleName().length());
+        }
+        return name.toLowerCase();
+//        }
+//        return extension.value();
     }
 
     @SuppressWarnings("unchecked")
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/support/ActivateComparator.java b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/support/ActivateComparator.java
index 766099fafa..3da5e56e48 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/support/ActivateComparator.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/support/ActivateComparator.java
@@ -31,6 +31,7 @@
 
     @Override
     public int compare(Object o1, Object o2) {
+
         if (o1 == null && o2 == null) {
             return 0;
         }
@@ -44,75 +45,9 @@ public int compare(Object o1, Object o2) {
             return 0;
         }
 
-        // to support com.alibab.dubbo.common.extension.Activate
-        String[] a1Before, a2Before, a1After, a2After;
-        int a1Order, a2Order;
-        Class<?> inf = null;
-        if (o1.getClass().getInterfaces().length > 0) {
-            inf = o1.getClass().getInterfaces()[0];
-
-            if (inf.getInterfaces().length > 0) {
-                inf = inf.getInterfaces()[0];
-            }
-        }
-
         Activate a1 = o1.getClass().getAnnotation(Activate.class);
-        if (a1 != null) {
-            a1Before = a1.before();
-            a1After = a1.after();
-            a1Order = a1.order();
-        } else {
-            com.alibaba.dubbo.common.extension.Activate oa1 = o1.getClass().getAnnotation(com.alibaba.dubbo.common.extension.Activate.class);
-            a1Before = oa1.before();
-            a1After = oa1.after();
-            a1Order = oa1.order();
-        }
         Activate a2 = o2.getClass().getAnnotation(Activate.class);
-        if (a2 != null) {
-            a2Before = a2.before();
-            a2After = a2.after();
-            a2Order = a2.order();
-        } else {
-            com.alibaba.dubbo.common.extension.Activate oa2 = o2.getClass().getAnnotation(com.alibaba.dubbo.common.extension.Activate.class);
-            a2Before = oa2.before();
-            a2After = oa2.after();
-            a2Order = oa2.order();
-        }
-        if ((a1Before.length > 0 || a1After.length > 0
-                || a2Before.length > 0 || a2After.length > 0)
-                && inf != null && inf.isAnnotationPresent(SPI.class)) {
-            ExtensionLoader<?> extensionLoader = ExtensionLoader.getExtensionLoader(inf);
-            if (a1Before.length > 0 || a1After.length > 0) {
-                String n2 = extensionLoader.getExtensionName(o2.getClass());
-                for (String before : a1Before) {
-                    if (before.equals(n2)) {
-                        return -1;
-                    }
-                }
-                for (String after : a1After) {
-                    if (after.equals(n2)) {
-                        return 1;
-                    }
-                }
-            }
-            if (a2Before.length > 0 || a2After.length > 0) {
-                String n1 = extensionLoader.getExtensionName(o1.getClass());
-                for (String before : a2Before) {
-                    if (before.equals(n1)) {
-                        return 1;
-                    }
-                }
-                for (String after : a2After) {
-                    if (after.equals(n1)) {
-                        return -1;
-                    }
-                }
-            }
-        }
-        int n1 = a1 == null ? 0 : a1Order;
-        int n2 = a2 == null ? 0 : a2Order;
-        // never return 0 even if n1 equals n2, otherwise, o1 and o2 will override each other in collection like HashSet
-        return n1 > n2 ? 1 : -1;
+        return Integer.compare(a1.order(), a2.order());
     }
 
 }
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/GenericJSONConverter.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/GenericJSONConverter.java
deleted file mode 100644
index f06089f035..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/GenericJSONConverter.java
+++ /dev/null
@@ -1,485 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-import org.apache.dubbo.common.bytecode.Wrapper;
-import org.apache.dubbo.common.io.Bytes;
-
-import java.io.IOException;
-import java.lang.reflect.Array;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicLong;
-
-@Deprecated
-public class GenericJSONConverter implements JSONConverter {
-    private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
-    private static final Map<Class<?>, Encoder> GlobalEncoderMap = new HashMap<Class<?>, Encoder>();
-    private static final Map<Class<?>, Decoder> GlobalDecoderMap = new HashMap<Class<?>, Decoder>();
-
-    static {
-        // init encoder map.
-        Encoder e = new Encoder() {
-            @Override
-            public void encode(Object obj, JSONWriter jb) throws IOException {
-                jb.valueBoolean((Boolean) obj);
-            }
-        };
-        GlobalEncoderMap.put(boolean.class, e);
-        GlobalEncoderMap.put(Boolean.class, e);
-
-        e = new Encoder() {
-            @Override
-            public void encode(Object obj, JSONWriter jb) throws IOException {
-                jb.valueInt(((Number) obj).intValue());
-            }
-        };
-        GlobalEncoderMap.put(int.class, e);
-        GlobalEncoderMap.put(Integer.class, e);
-        GlobalEncoderMap.put(short.class, e);
-        GlobalEncoderMap.put(Short.class, e);
-        GlobalEncoderMap.put(byte.class, e);
-        GlobalEncoderMap.put(Byte.class, e);
-        GlobalEncoderMap.put(AtomicInteger.class, e);
-
-        e = new Encoder() {
-            @Override
-            public void encode(Object obj, JSONWriter jb) throws IOException {
-                jb.valueString(Character.toString((Character) obj));
-            }
-        };
-        GlobalEncoderMap.put(char.class, e);
-        GlobalEncoderMap.put(Character.class, e);
-
-        e = new Encoder() {
-            @Override
-            public void encode(Object obj, JSONWriter jb) throws IOException {
-                jb.valueLong(((Number) obj).longValue());
-            }
-        };
-        GlobalEncoderMap.put(long.class, e);
-        GlobalEncoderMap.put(Long.class, e);
-        GlobalEncoderMap.put(AtomicLong.class, e);
-        GlobalEncoderMap.put(BigInteger.class, e);
-
-        e = new Encoder() {
-            @Override
-            public void encode(Object obj, JSONWriter jb) throws IOException {
-                jb.valueFloat(((Number) obj).floatValue());
-            }
-        };
-        GlobalEncoderMap.put(float.class, e);
-        GlobalEncoderMap.put(Float.class, e);
-
-        e = new Encoder() {
-            @Override
-            public void encode(Object obj, JSONWriter jb) throws IOException {
-                jb.valueDouble(((Number) obj).doubleValue());
-            }
-        };
-        GlobalEncoderMap.put(double.class, e);
-        GlobalEncoderMap.put(Double.class, e);
-        GlobalEncoderMap.put(BigDecimal.class, e);
-
-        e = new Encoder() {
-            @Override
-            public void encode(Object obj, JSONWriter jb) throws IOException {
-                jb.valueString(obj.toString());
-            }
-        };
-        GlobalEncoderMap.put(String.class, e);
-        GlobalEncoderMap.put(StringBuilder.class, e);
-        GlobalEncoderMap.put(StringBuffer.class, e);
-
-        e = new Encoder() {
-            @Override
-            public void encode(Object obj, JSONWriter jb) throws IOException {
-                jb.valueString(Bytes.bytes2base64((byte[]) obj));
-            }
-        };
-        GlobalEncoderMap.put(byte[].class, e);
-
-        e = new Encoder() {
-            @Override
-            public void encode(Object obj, JSONWriter jb) throws IOException {
-                jb.valueString(new SimpleDateFormat(DATE_FORMAT).format((Date) obj));
-            }
-        };
-        GlobalEncoderMap.put(Date.class, e);
-
-        // init decoder map.
-        Decoder d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                return jv.toString();
-            }
-        };
-        GlobalDecoderMap.put(String.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof Boolean) return ((Boolean) jv).booleanValue();
-                return false;
-            }
-        };
-        GlobalDecoderMap.put(boolean.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof Boolean) return (Boolean) jv;
-                return (Boolean) null;
-            }
-        };
-        GlobalDecoderMap.put(Boolean.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof String && ((String) jv).length() > 0) return ((String) jv).charAt(0);
-                return (char) 0;
-            }
-        };
-        GlobalDecoderMap.put(char.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof String && ((String) jv).length() > 0) return ((String) jv).charAt(0);
-                return (Character) null;
-            }
-        };
-        GlobalDecoderMap.put(Character.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof Number) return ((Number) jv).intValue();
-                return 0;
-            }
-        };
-        GlobalDecoderMap.put(int.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof Number) return Integer.valueOf(((Number) jv).intValue());
-                return (Integer) null;
-            }
-        };
-        GlobalDecoderMap.put(Integer.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof Number) return ((Number) jv).shortValue();
-                return (short) 0;
-            }
-        };
-        GlobalDecoderMap.put(short.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof Number) return Short.valueOf(((Number) jv).shortValue());
-                return (Short) null;
-            }
-        };
-        GlobalDecoderMap.put(Short.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof Number) return ((Number) jv).longValue();
-                return (long) 0;
-            }
-        };
-        GlobalDecoderMap.put(long.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof Number) return Long.valueOf(((Number) jv).longValue());
-                return (Long) null;
-            }
-        };
-        GlobalDecoderMap.put(Long.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof Number) return ((Number) jv).floatValue();
-                return (float) 0;
-            }
-        };
-        GlobalDecoderMap.put(float.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof Number) return new Float(((Number) jv).floatValue());
-                return (Float) null;
-            }
-        };
-        GlobalDecoderMap.put(Float.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof Number) return ((Number) jv).doubleValue();
-                return (double) 0;
-            }
-        };
-        GlobalDecoderMap.put(double.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof Number) return new Double(((Number) jv).doubleValue());
-                return (Double) null;
-            }
-        };
-        GlobalDecoderMap.put(Double.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof Number) return ((Number) jv).byteValue();
-                return (byte) 0;
-            }
-        };
-        GlobalDecoderMap.put(byte.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) {
-                if (jv instanceof Number) return Byte.valueOf(((Number) jv).byteValue());
-                return (Byte) null;
-            }
-        };
-        GlobalDecoderMap.put(Byte.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) throws IOException {
-                if (jv instanceof String) return Bytes.base642bytes((String) jv);
-                return (byte[]) null;
-            }
-        };
-        GlobalDecoderMap.put(byte[].class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) throws IOException {
-                return new StringBuilder(jv.toString());
-            }
-        };
-        GlobalDecoderMap.put(StringBuilder.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) throws IOException {
-                return new StringBuffer(jv.toString());
-            }
-        };
-        GlobalDecoderMap.put(StringBuffer.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) throws IOException {
-                if (jv instanceof Number) return BigInteger.valueOf(((Number) jv).longValue());
-                return (BigInteger) null;
-            }
-        };
-        GlobalDecoderMap.put(BigInteger.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) throws IOException {
-                if (jv instanceof Number) return BigDecimal.valueOf(((Number) jv).doubleValue());
-                return (BigDecimal) null;
-            }
-        };
-        GlobalDecoderMap.put(BigDecimal.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) throws IOException {
-                if (jv instanceof Number) return new AtomicInteger(((Number) jv).intValue());
-                return (AtomicInteger) null;
-            }
-        };
-        GlobalDecoderMap.put(AtomicInteger.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) throws IOException {
-                if (jv instanceof Number) return new AtomicLong(((Number) jv).longValue());
-                return (AtomicLong) null;
-            }
-        };
-        GlobalDecoderMap.put(AtomicLong.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) throws IOException {
-                if (jv instanceof String) {
-                    try {
-                        return new SimpleDateFormat(DATE_FORMAT).parse((String) jv);
-                    } catch (ParseException e) {
-                        throw new IllegalArgumentException(e.getMessage(), e);
-                    }
-                }
-                if (jv instanceof Number)
-                    return new Date(((Number) jv).longValue());
-                return (Date) null;
-            }
-        };
-        GlobalDecoderMap.put(Date.class, d);
-
-        d = new Decoder() {
-            @Override
-            public Object decode(Object jv) throws IOException {
-                if (jv instanceof String) {
-                    String[] items = ((String)jv).split("_");
-                    if(items.length == 1){
-                        return new Locale(items[0]);
-                    }
-                    if(items.length == 2){
-                        return new Locale(items[0], items[1]);
-                    }
-                    return new Locale(items[0], items[1], items[2]);
-                }
-                return (Locale)null;
-            }
-        };
-        GlobalDecoderMap.put(Locale.class, d);
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public void writeValue(Object obj, JSONWriter jb, boolean writeClass) throws IOException {
-        if (obj == null) {
-            jb.valueNull();
-            return;
-        }
-        Class<?> c = obj.getClass();
-        Encoder encoder = GlobalEncoderMap.get(c);
-
-        if (encoder != null) {
-            encoder.encode(obj, jb);
-        } else if (obj instanceof JSONNode) {
-            ((JSONNode) obj).writeJSON(this, jb, writeClass);
-        } else if (c.isEnum()) {
-            jb.valueString(((Enum<?>) obj).name());
-        } else if (c.isArray()) {
-            int len = Array.getLength(obj);
-            jb.arrayBegin();
-            for (int i = 0; i < len; i++)
-                writeValue(Array.get(obj, i), jb, writeClass);
-            jb.arrayEnd();
-        } else if (Map.class.isAssignableFrom(c)) {
-            Object key, value;
-            jb.objectBegin();
-            for (Map.Entry<Object, Object> entry : ((Map<Object, Object>) obj).entrySet()) {
-                key = entry.getKey();
-                if (key == null)
-                    continue;
-                jb.objectItem(key.toString());
-
-                value = entry.getValue();
-                if (value == null)
-                    jb.valueNull();
-                else
-                    writeValue(value, jb, writeClass);
-            }
-            jb.objectEnd();
-        } else if (Collection.class.isAssignableFrom(c)) {
-            jb.arrayBegin();
-            for (Object item : (Collection<Object>) obj) {
-                if (item == null)
-                    jb.valueNull();
-                else
-                    writeValue(item, jb, writeClass);
-            }
-            jb.arrayEnd();
-        } else if(obj instanceof Locale) {
-            jb.valueString(obj.toString());
-        } else {
-            jb.objectBegin();
-
-            Wrapper w = Wrapper.getWrapper(c);
-            String pns[] = w.getPropertyNames();
-
-            for (String pn : pns) {
-                if ((obj instanceof Throwable) && (
-                        "localizedMessage".equals(pn)
-                                || "cause".equals(pn)
-                                || "suppressed".equals(pn)
-                                || "stackTrace".equals(pn))) {
-                    continue;
-                }
-
-                jb.objectItem(pn);
-
-                Object value = w.getPropertyValue(obj, pn);
-                if (value == null || value == obj)
-                    jb.valueNull();
-                else
-                    writeValue(value, jb, writeClass);
-            }
-            if (writeClass) {
-                jb.objectItem(JSONVisitor.CLASS_PROPERTY);
-                writeValue(obj.getClass().getName(), jb, writeClass);
-            }
-            jb.objectEnd();
-        }
-    }
-
-    @Override
-    @SuppressWarnings({"unchecked", "rawtypes"})
-    public Object readValue(Class<?> c, Object jv) throws IOException {
-        if (jv == null) {
-            return null;
-        }
-        Decoder decoder = GlobalDecoderMap.get(c);
-        if (decoder != null) {
-            return decoder.decode(jv);
-        }
-        if (c.isEnum()) {
-            return Enum.valueOf((Class<Enum>) c, String.valueOf(jv));
-        }
-        return jv;
-    }
-
-    protected interface Encoder {
-        void encode(Object obj, JSONWriter jb) throws IOException;
-    }
-
-    protected interface Decoder {
-        Object decode(Object jv) throws IOException;
-    }
-}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/J2oVisitor.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/J2oVisitor.java
deleted file mode 100644
index eeeac01856..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/J2oVisitor.java
+++ /dev/null
@@ -1,364 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-import org.apache.dubbo.common.bytecode.Wrapper;
-import org.apache.dubbo.common.utils.Stack;
-import org.apache.dubbo.common.utils.StringUtils;
-
-import java.io.IOException;
-import java.lang.reflect.Array;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * JSON to Object visitor.
- */
-@Deprecated
-class J2oVisitor implements JSONVisitor {
-    public static final boolean[] EMPTY_BOOL_ARRAY = new boolean[0];
-
-    public static final byte[] EMPTY_BYTE_ARRAY = new byte[0];
-
-    public static final char[] EMPTY_CHAR_ARRAY = new char[0];
-
-    public static final short[] EMPTY_SHORT_ARRAY = new short[0];
-
-    public static final int[] EMPTY_INT_ARRAY = new int[0];
-
-    public static final long[] EMPTY_LONG_ARRAY = new long[0];
-
-    public static final float[] EMPTY_FLOAT_ARRAY = new float[0];
-
-    public static final double[] EMPTY_DOUBLE_ARRAY = new double[0];
-
-    public static final String[] EMPTY_STRING_ARRAY = new String[0];
-
-    private Class<?>[] mTypes;
-
-    private Class<?> mType = Object[].class;
-
-    private Object mValue;
-
-    private Wrapper mWrapper;
-
-    private JSONConverter mConverter;
-
-    private Stack<Object> mStack = new Stack<Object>();
-
-    J2oVisitor(Class<?> type, JSONConverter jc) {
-        mType = type;
-        mConverter = jc;
-    }
-
-    J2oVisitor(Class<?>[] types, JSONConverter jc) {
-        mTypes = types;
-        mConverter = jc;
-    }
-
-    private static Object toArray(Class<?> c, Stack<Object> list, int len) throws ParseException {
-        if (c == String.class) {
-            if (len == 0) {
-                return EMPTY_STRING_ARRAY;
-            } else {
-                Object o;
-                String ss[] = new String[len];
-                for (int i = len - 1; i >= 0; i--) {
-                    o = list.pop();
-                    ss[i] = (o == null ? null : o.toString());
-                }
-                return ss;
-            }
-        }
-        if (c == boolean.class) {
-            if (len == 0) return EMPTY_BOOL_ARRAY;
-            Object o;
-            boolean[] ret = new boolean[len];
-            for (int i = len - 1; i >= 0; i--) {
-                o = list.pop();
-                if (o instanceof Boolean)
-                    ret[i] = ((Boolean) o).booleanValue();
-            }
-            return ret;
-        }
-        if (c == int.class) {
-            if (len == 0) return EMPTY_INT_ARRAY;
-            Object o;
-            int[] ret = new int[len];
-            for (int i = len - 1; i >= 0; i--) {
-                o = list.pop();
-                if (o instanceof Number)
-                    ret[i] = ((Number) o).intValue();
-            }
-            return ret;
-        }
-        if (c == long.class) {
-            if (len == 0) return EMPTY_LONG_ARRAY;
-            Object o;
-            long[] ret = new long[len];
-            for (int i = len - 1; i >= 0; i--) {
-                o = list.pop();
-                if (o instanceof Number)
-                    ret[i] = ((Number) o).longValue();
-            }
-            return ret;
-        }
-        if (c == float.class) {
-            if (len == 0) return EMPTY_FLOAT_ARRAY;
-            Object o;
-            float[] ret = new float[len];
-            for (int i = len - 1; i >= 0; i--) {
-                o = list.pop();
-                if (o instanceof Number)
-                    ret[i] = ((Number) o).floatValue();
-            }
-            return ret;
-        }
-        if (c == double.class) {
-            if (len == 0) return EMPTY_DOUBLE_ARRAY;
-            Object o;
-            double[] ret = new double[len];
-            for (int i = len - 1; i >= 0; i--) {
-                o = list.pop();
-                if (o instanceof Number)
-                    ret[i] = ((Number) o).doubleValue();
-            }
-            return ret;
-        }
-        if (c == byte.class) {
-            if (len == 0) return EMPTY_BYTE_ARRAY;
-            Object o;
-            byte[] ret = new byte[len];
-            for (int i = len - 1; i >= 0; i--) {
-                o = list.pop();
-                if (o instanceof Number)
-                    ret[i] = ((Number) o).byteValue();
-            }
-            return ret;
-        }
-        if (c == char.class) {
-            if (len == 0) return EMPTY_CHAR_ARRAY;
-            Object o;
-            char[] ret = new char[len];
-            for (int i = len - 1; i >= 0; i--) {
-                o = list.pop();
-                if (o instanceof Character)
-                    ret[i] = ((Character) o).charValue();
-            }
-            return ret;
-        }
-        if (c == short.class) {
-            if (len == 0) return EMPTY_SHORT_ARRAY;
-            Object o;
-            short[] ret = new short[len];
-            for (int i = len - 1; i >= 0; i--) {
-                o = list.pop();
-                if (o instanceof Number)
-                    ret[i] = ((Number) o).shortValue();
-            }
-            return ret;
-        }
-
-        Object ret = Array.newInstance(c, len);
-        for (int i = len - 1; i >= 0; i--)
-            Array.set(ret, i, list.pop());
-        return ret;
-    }
-
-    private static String name(Class<?>[] types) {
-        StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < types.length; i++) {
-            if (i > 0)
-                sb.append(", ");
-            sb.append(types[i].getName());
-        }
-        return sb.toString();
-    }
-
-    @Override
-    public void begin() {
-    }
-
-    @Override
-    public Object end(Object obj, boolean isValue) throws ParseException {
-        mStack.clear();
-        try {
-            return mConverter.readValue(mType, obj);
-        } catch (IOException e) {
-            throw new IllegalStateException(e.getMessage(), e);
-        }
-    }
-
-    @Override
-    public void objectBegin() throws ParseException {
-        mStack.push(mValue);
-        mStack.push(mType);
-        mStack.push(mWrapper);
-
-        if (mType == Object.class || Map.class.isAssignableFrom(mType)) {
-            if (!mType.isInterface() && mType != Object.class) {
-                try {
-                    mValue = mType.newInstance();
-                } catch (Exception e) {
-                    throw new IllegalStateException(e.getMessage(), e);
-                }
-            } else if (mType == ConcurrentMap.class) {
-                mValue = new ConcurrentHashMap<String, Object>();
-            } else {
-                mValue = new HashMap<String, Object>();
-            }
-            mWrapper = null;
-        } else {
-            try {
-                mValue = mType.newInstance();
-                mWrapper = Wrapper.getWrapper(mType);
-            } catch (IllegalAccessException e) {
-                throw new ParseException(StringUtils.toString(e));
-            } catch (InstantiationException e) {
-                throw new ParseException(StringUtils.toString(e));
-            }
-        }
-    }
-
-    @Override
-    public Object objectEnd(int count) {
-        Object ret = mValue;
-        mWrapper = (Wrapper) mStack.pop();
-        mType = (Class<?>) mStack.pop();
-        mValue = mStack.pop();
-        return ret;
-    }
-
-    @Override
-    public void objectItem(String name) {
-        mStack.push(name); // push name.
-        mType = (mWrapper == null ? Object.class : mWrapper.getPropertyType(name));
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public void objectItemValue(Object obj, boolean isValue) throws ParseException {
-        String name = (String) mStack.pop();  // pop name.
-        if (mWrapper == null) {
-            ((Map<String, Object>) mValue).put(name, obj);
-        } else {
-            if (mType != null) {
-                if (isValue && obj != null) {
-                    try {
-                        obj = mConverter.readValue(mType, obj);
-                    } catch (IOException e) {
-                        throw new ParseException(StringUtils.toString(e));
-                    }
-                }
-                if (mValue instanceof Throwable && "message".equals(name)) {
-                    try {
-                        Field field = Throwable.class.getDeclaredField("detailMessage");
-                        if (!field.isAccessible()) {
-                            field.setAccessible(true);
-                        }
-                        field.set(mValue, obj);
-                    } catch (NoSuchFieldException e) {
-                        throw new ParseException(StringUtils.toString(e));
-                    } catch (IllegalAccessException e) {
-                        throw new ParseException(StringUtils.toString(e));
-                    }
-                } else if (!CLASS_PROPERTY.equals(name)) {
-                    mWrapper.setPropertyValue(mValue, name, obj);
-                }
-            }
-        }
-    }
-
-    @Override
-    public void arrayBegin() throws ParseException {
-        mStack.push(mType);
-
-        if (mType.isArray())
-            mType = mType.getComponentType();
-        else if (mType == Object.class || Collection.class.isAssignableFrom(mType))
-            mType = Object.class;
-        else
-            throw new ParseException("Convert error, can not load json array data into class [" + mType.getName() + "].");
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public Object arrayEnd(int count) throws ParseException {
-        Object ret;
-        mType = (Class<?>) mStack.get(-1 - count);
-
-        if (mType.isArray()) {
-            ret = toArray(mType.getComponentType(), mStack, count);
-        } else {
-            Collection<Object> items;
-            if (mType == Object.class || Collection.class.isAssignableFrom(mType)) {
-                if (!mType.isInterface() && mType != Object.class) {
-                    try {
-                        items = (Collection<Object>) mType.newInstance();
-                    } catch (Exception e) {
-                        throw new IllegalStateException(e.getMessage(), e);
-                    }
-                } else if (mType.isAssignableFrom(ArrayList.class)) { // List
-                    items = new ArrayList<Object>(count);
-                } else if (mType.isAssignableFrom(HashSet.class)) { // Set
-                    items = new HashSet<Object>(count);
-                } else if (mType.isAssignableFrom(LinkedList.class)) { // Queue
-                    items = new LinkedList<Object>();
-                } else { // Other
-                    items = new ArrayList<Object>(count);
-                }
-            } else {
-                throw new ParseException("Convert error, can not load json array data into class [" + mType.getName() + "].");
-            }
-            for (int i = 0; i < count; i++)
-                items.add(mStack.remove(i - count));
-            ret = items;
-        }
-        mStack.pop();
-        return ret;
-    }
-
-    @Override
-    public void arrayItem(int index) throws ParseException {
-        if (mTypes != null && mStack.size() == index + 1) {
-            if (index < mTypes.length)
-                mType = mTypes[index];
-            else
-                throw new ParseException("Can not load json array data into [" + name(mTypes) + "].");
-        }
-    }
-
-    @Override
-    public void arrayItemValue(int index, Object obj, boolean isValue) throws ParseException {
-        if (isValue && obj != null) {
-            try {
-                obj = mConverter.readValue(mType, obj);
-            } catch (IOException e) {
-                throw new ParseException(e.getMessage());
-            }
-        }
-
-        mStack.push(obj);
-    }
-}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSON.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSON.java
deleted file mode 100644
index 2471856899..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSON.java
+++ /dev/null
@@ -1,701 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-import org.apache.dubbo.common.bytecode.Wrapper;
-import org.apache.dubbo.common.utils.Stack;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.Writer;
-
-/**
- * JSON.
- */
-@Deprecated
-public class JSON {
-    public static final char LBRACE = '{', RBRACE = '}';
-
-    public static final char LSQUARE = '[', RSQUARE = ']';
-
-    public static final char COMMA = ',', COLON = ':', QUOTE = '"';
-
-    public static final String NULL = "null";
-    // state.
-    public static final byte END = 0, START = 1, OBJECT_ITEM = 2, OBJECT_VALUE = 3, ARRAY_ITEM = 4;
-    static final JSONConverter DEFAULT_CONVERTER = new GenericJSONConverter();
-
-    private JSON() {
-    }
-
-    /**
-     * json string.
-     *
-     * @param obj object.
-     * @return json string.
-     * @throws IOException
-     */
-    public static String json(Object obj) throws IOException {
-        if (obj == null) return NULL;
-        StringWriter sw = new StringWriter();
-        try {
-            json(obj, sw);
-            return sw.getBuffer().toString();
-        } finally {
-            sw.close();
-        }
-    }
-
-    /**
-     * write json.
-     *
-     * @param obj    object.
-     * @param writer writer.
-     * @throws IOException
-     */
-    public static void json(Object obj, Writer writer) throws IOException {
-        json(obj, writer, false);
-    }
-
-    public static void json(Object obj, Writer writer, boolean writeClass) throws IOException {
-        if (obj == null)
-            writer.write(NULL);
-        else
-            json(obj, new JSONWriter(writer), writeClass);
-    }
-
-    /**
-     * json string.
-     *
-     * @param obj        object.
-     * @param properties property name array.
-     * @return json string.
-     * @throws IOException
-     */
-    public static String json(Object obj, String[] properties) throws IOException {
-        if (obj == null) return NULL;
-        StringWriter sw = new StringWriter();
-        try {
-            json(obj, properties, sw);
-            return sw.getBuffer().toString();
-        } finally {
-            sw.close();
-        }
-    }
-
-    public static void json(Object obj, final String[] properties, Writer writer) throws IOException {
-        json(obj, properties, writer, false);
-    }
-
-    /**
-     * write json.
-     *
-     * @param obj        object.
-     * @param properties property name array.
-     * @param writer     writer.
-     * @throws IOException
-     */
-    public static void json(Object obj, final String[] properties, Writer writer, boolean writeClass) throws IOException {
-        if (obj == null)
-            writer.write(NULL);
-        else
-            json(obj, properties, new JSONWriter(writer), writeClass);
-    }
-
-    private static void json(Object obj, JSONWriter jb, boolean writeClass) throws IOException {
-        if (obj == null)
-            jb.valueNull();
-        else
-            DEFAULT_CONVERTER.writeValue(obj, jb, writeClass);
-    }
-
-    private static void json(Object obj, String[] properties, JSONWriter jb, boolean writeClass) throws IOException {
-        if (obj == null) {
-            jb.valueNull();
-        } else {
-            Wrapper wrapper = Wrapper.getWrapper(obj.getClass());
-
-            Object value;
-            jb.objectBegin();
-            for (String prop : properties) {
-                jb.objectItem(prop);
-                value = wrapper.getPropertyValue(obj, prop);
-                if (value == null)
-                    jb.valueNull();
-                else
-                    DEFAULT_CONVERTER.writeValue(value, jb, writeClass);
-            }
-            jb.objectEnd();
-        }
-    }
-
-    /**
-     * parse json.
-     *
-     * @param json json source.
-     * @return JSONObject or JSONArray or Boolean or Long or Double or String or null
-     * @throws ParseException
-     */
-    public static Object parse(String json) throws ParseException {
-        StringReader reader = new StringReader(json);
-        try {
-            return parse(reader);
-        } catch (IOException e) {
-            throw new ParseException(e.getMessage());
-        } finally {
-            reader.close();
-        }
-    }
-
-    /**
-     * parse json.
-     *
-     * @param reader reader.
-     * @return JSONObject or JSONArray or Boolean or Long or Double or String or null
-     * @throws IOException
-     * @throws ParseException
-     */
-    public static Object parse(Reader reader) throws IOException, ParseException {
-        return parse(reader, JSONToken.ANY);
-    }
-
-    /**
-     * parse json.
-     *
-     * @param json json string.
-     * @param type target type.
-     * @return result.
-     * @throws ParseException
-     */
-    public static <T> T parse(String json, Class<T> type) throws ParseException {
-        StringReader reader = new StringReader(json);
-        try {
-            return parse(reader, type);
-        } catch (IOException e) {
-            throw new ParseException(e.getMessage());
-        } finally {
-            reader.close();
-        }
-    }
-
-    /**
-     * parse json
-     *
-     * @param reader json source.
-     * @param type   target type.
-     * @return result.
-     * @throws IOException
-     * @throws ParseException
-     */
-    @SuppressWarnings("unchecked")
-    public static <T> T parse(Reader reader, Class<T> type) throws IOException, ParseException {
-        return (T) parse(reader, new J2oVisitor(type, DEFAULT_CONVERTER), JSONToken.ANY);
-    }
-
-    /**
-     * parse json.
-     *
-     * @param json  json string.
-     * @param types target type array.
-     * @return result.
-     * @throws ParseException
-     */
-    public static Object[] parse(String json, Class<?>[] types) throws ParseException {
-        StringReader reader = new StringReader(json);
-        try {
-            return (Object[]) parse(reader, types);
-        } catch (IOException e) {
-            throw new ParseException(e.getMessage());
-        } finally {
-            reader.close();
-        }
-    }
-
-    /**
-     * parse json.
-     *
-     * @param reader json source.
-     * @param types  target type array.
-     * @return result.
-     * @throws IOException
-     * @throws ParseException
-     */
-    public static Object[] parse(Reader reader, Class<?>[] types) throws IOException, ParseException {
-        return (Object[]) parse(reader, new J2oVisitor(types, DEFAULT_CONVERTER), JSONToken.LSQUARE);
-    }
-
-    /**
-     * parse json.
-     *
-     * @param json    json string.
-     * @param handler handler.
-     * @return result.
-     * @throws ParseException
-     */
-    public static Object parse(String json, JSONVisitor handler) throws ParseException {
-        StringReader reader = new StringReader(json);
-        try {
-            return parse(reader, handler);
-        } catch (IOException e) {
-            throw new ParseException(e.getMessage());
-        } finally {
-            reader.close();
-        }
-    }
-
-    /**
-     * parse json.
-     *
-     * @param reader  json source.
-     * @param handler handler.
-     * @return resule.
-     * @throws IOException
-     * @throws ParseException
-     */
-    public static Object parse(Reader reader, JSONVisitor handler) throws IOException, ParseException {
-        return parse(reader, handler, JSONToken.ANY);
-    }
-
-    private static Object parse(Reader reader, int expect) throws IOException, ParseException {
-        JSONReader jr = new JSONReader(reader);
-        JSONToken token = jr.nextToken(expect);
-
-        byte state = START;
-        Object value = null, tmp;
-        Stack<Entry> stack = new Stack<Entry>();
-
-        do {
-            switch (state) {
-                case END:
-                    throw new ParseException("JSON source format error.");
-                case START: {
-                    switch (token.type) {
-                        case JSONToken.NULL:
-                        case JSONToken.BOOL:
-                        case JSONToken.INT:
-                        case JSONToken.FLOAT:
-                        case JSONToken.STRING: {
-                            state = END;
-                            value = token.value;
-                            break;
-                        }
-                        case JSONToken.LSQUARE: {
-                            state = ARRAY_ITEM;
-                            value = new JSONArray();
-                            break;
-                        }
-                        case JSONToken.LBRACE: {
-                            state = OBJECT_ITEM;
-                            value = new JSONObject();
-                            break;
-                        }
-                        default:
-                            throw new ParseException("Unexcepted token expect [ VALUE or '[' or '{' ] get '" + JSONToken.token2string(token.type) + "'");
-                    }
-                    break;
-                }
-                case ARRAY_ITEM: {
-                    switch (token.type) {
-                        case JSONToken.COMMA:
-                            break;
-                        case JSONToken.NULL:
-                        case JSONToken.BOOL:
-                        case JSONToken.INT:
-                        case JSONToken.FLOAT:
-                        case JSONToken.STRING: {
-                            ((JSONArray) value).add(token.value);
-                            break;
-                        }
-                        case JSONToken.RSQUARE: // end of array.
-                        {
-                            if (stack.isEmpty()) {
-                                state = END;
-                            } else {
-                                Entry entry = stack.pop();
-                                state = entry.state;
-                                value = entry.value;
-                            }
-                            break;
-                        }
-                        case JSONToken.LSQUARE: // array begin.
-                        {
-                            tmp = new JSONArray();
-                            ((JSONArray) value).add(tmp);
-                            stack.push(new Entry(state, value));
-
-                            state = ARRAY_ITEM;
-                            value = tmp;
-                            break;
-                        }
-                        case JSONToken.LBRACE: // object begin.
-                        {
-                            tmp = new JSONObject();
-                            ((JSONArray) value).add(tmp);
-                            stack.push(new Entry(state, value));
-
-                            state = OBJECT_ITEM;
-                            value = tmp;
-                            break;
-                        }
-                        default:
-                            throw new ParseException("Unexcepted token expect [ VALUE or ',' or ']' or '[' or '{' ] get '" + JSONToken.token2string(token.type) + "'");
-                    }
-                    break;
-                }
-                case OBJECT_ITEM: {
-                    switch (token.type) {
-                        case JSONToken.COMMA:
-                            break;
-                        case JSONToken.IDENT: // item name.
-                        {
-                            stack.push(new Entry(OBJECT_ITEM, (String) token.value));
-                            state = OBJECT_VALUE;
-                            break;
-                        }
-                        case JSONToken.NULL: {
-                            stack.push(new Entry(OBJECT_ITEM, "null"));
-                            state = OBJECT_VALUE;
-                            break;
-                        }
-                        case JSONToken.BOOL:
-                        case JSONToken.INT:
-                        case JSONToken.FLOAT:
-                        case JSONToken.STRING: {
-                            stack.push(new Entry(OBJECT_ITEM, token.value.toString()));
-                            state = OBJECT_VALUE;
-                            break;
-                        }
-                        case JSONToken.RBRACE: // end of object.
-                        {
-                            if (stack.isEmpty()) {
-                                state = END;
-                            } else {
-                                Entry entry = stack.pop();
-                                state = entry.state;
-                                value = entry.value;
-                            }
-                            break;
-                        }
-                        default:
-                            throw new ParseException("Unexcepted token expect [ IDENT or VALUE or ',' or '}' ] get '" + JSONToken.token2string(token.type) + "'");
-                    }
-                    break;
-                }
-                case OBJECT_VALUE: {
-                    switch (token.type) {
-                        case JSONToken.COLON:
-                            break;
-                        case JSONToken.NULL:
-                        case JSONToken.BOOL:
-                        case JSONToken.INT:
-                        case JSONToken.FLOAT:
-                        case JSONToken.STRING: {
-                            ((JSONObject) value).put((String) stack.pop().value, token.value);
-                            state = OBJECT_ITEM;
-                            break;
-                        }
-                        case JSONToken.LSQUARE: // array begin.
-                        {
-                            tmp = new JSONArray();
-                            ((JSONObject) value).put((String) stack.pop().value, tmp);
-                            stack.push(new Entry(OBJECT_ITEM, value));
-
-                            state = ARRAY_ITEM;
-                            value = tmp;
-                            break;
-                        }
-                        case JSONToken.LBRACE: // object begin.
-                        {
-                            tmp = new JSONObject();
-                            ((JSONObject) value).put((String) stack.pop().value, tmp);
-                            stack.push(new Entry(OBJECT_ITEM, value));
-
-                            state = OBJECT_ITEM;
-                            value = tmp;
-                            break;
-                        }
-                        default:
-                            throw new ParseException("Unexcepted token expect [ VALUE or '[' or '{' ] get '" + JSONToken.token2string(token.type) + "'");
-                    }
-                    break;
-                }
-                default:
-                    throw new ParseException("Unexcepted state.");
-            }
-        }
-        while ((token = jr.nextToken()) != null);
-        stack.clear();
-        return value;
-    }
-
-    private static Object parse(Reader reader, JSONVisitor handler, int expect) throws IOException, ParseException {
-        JSONReader jr = new JSONReader(reader);
-        JSONToken token = jr.nextToken(expect);
-
-        Object value = null;
-        int state = START, index = 0;
-        Stack<int[]> states = new Stack<int[]>();
-        boolean pv = false;
-
-        handler.begin();
-        do {
-            switch (state) {
-                case END:
-                    throw new ParseException("JSON source format error.");
-                case START: {
-                    switch (token.type) {
-                        case JSONToken.NULL: {
-                            value = token.value;
-                            state = END;
-                            pv = true;
-                            break;
-                        }
-                        case JSONToken.BOOL: {
-                            value = token.value;
-                            state = END;
-                            pv = true;
-                            break;
-                        }
-                        case JSONToken.INT: {
-                            value = token.value;
-                            state = END;
-                            pv = true;
-                            break;
-                        }
-                        case JSONToken.FLOAT: {
-                            value = token.value;
-                            state = END;
-                            pv = true;
-                            break;
-                        }
-                        case JSONToken.STRING: {
-                            value = token.value;
-                            state = END;
-                            pv = true;
-                            break;
-                        }
-                        case JSONToken.LSQUARE: {
-                            handler.arrayBegin();
-                            state = ARRAY_ITEM;
-                            break;
-                        }
-                        case JSONToken.LBRACE: {
-                            handler.objectBegin();
-                            state = OBJECT_ITEM;
-                            break;
-                        }
-                        default:
-                            throw new ParseException("Unexcepted token expect [ VALUE or '[' or '{' ] get '" + JSONToken.token2string(token.type) + "'");
-                    }
-                    break;
-                }
-                case ARRAY_ITEM: {
-                    switch (token.type) {
-                        case JSONToken.COMMA:
-                            break;
-                        case JSONToken.NULL: {
-                            handler.arrayItem(index++);
-                            handler.arrayItemValue(index, token.value, true);
-                            break;
-                        }
-                        case JSONToken.BOOL: {
-                            handler.arrayItem(index++);
-                            handler.arrayItemValue(index, token.value, true);
-                            break;
-                        }
-                        case JSONToken.INT: {
-                            handler.arrayItem(index++);
-                            handler.arrayItemValue(index, token.value, true);
-                            break;
-                        }
-                        case JSONToken.FLOAT: {
-                            handler.arrayItem(index++);
-                            handler.arrayItemValue(index, token.value, true);
-                            break;
-                        }
-                        case JSONToken.STRING: {
-                            handler.arrayItem(index++);
-                            handler.arrayItemValue(index, token.value, true);
-                            break;
-                        }
-                        case JSONToken.LSQUARE: {
-                            handler.arrayItem(index++);
-                            states.push(new int[]{state, index});
-
-                            index = 0;
-                            state = ARRAY_ITEM;
-                            handler.arrayBegin();
-                            break;
-                        }
-                        case JSONToken.LBRACE: {
-                            handler.arrayItem(index++);
-                            states.push(new int[]{state, index});
-
-                            index = 0;
-                            state = OBJECT_ITEM;
-                            handler.objectBegin();
-                            break;
-                        }
-                        case JSONToken.RSQUARE: {
-                            if (states.isEmpty()) {
-                                value = handler.arrayEnd(index);
-                                state = END;
-                            } else {
-                                value = handler.arrayEnd(index);
-                                int[] tmp = states.pop();
-                                state = tmp[0];
-                                index = tmp[1];
-
-                                switch (state) {
-                                    case ARRAY_ITEM: {
-                                        handler.arrayItemValue(index, value, false);
-                                        break;
-                                    }
-                                    case OBJECT_ITEM: {
-                                        handler.objectItemValue(value, false);
-                                        break;
-                                    }
-                                }
-                            }
-                            break;
-                        }
-                        default:
-                            throw new ParseException("Unexcepted token expect [ VALUE or ',' or ']' or '[' or '{' ] get '" + JSONToken.token2string(token.type) + "'");
-                    }
-                    break;
-                }
-                case OBJECT_ITEM: {
-                    switch (token.type) {
-                        case JSONToken.COMMA:
-                            break;
-                        case JSONToken.IDENT: {
-                            handler.objectItem((String) token.value);
-                            state = OBJECT_VALUE;
-                            break;
-                        }
-                        case JSONToken.NULL: {
-                            handler.objectItem("null");
-                            state = OBJECT_VALUE;
-                            break;
-                        }
-                        case JSONToken.BOOL:
-                        case JSONToken.INT:
-                        case JSONToken.FLOAT:
-                        case JSONToken.STRING: {
-                            handler.objectItem(token.value.toString());
-                            state = OBJECT_VALUE;
-                            break;
-                        }
-                        case JSONToken.RBRACE: {
-                            if (states.isEmpty()) {
-                                value = handler.objectEnd(index);
-                                state = END;
-                            } else {
-                                value = handler.objectEnd(index);
-                                int[] tmp = states.pop();
-                                state = tmp[0];
-                                index = tmp[1];
-
-                                switch (state) {
-                                    case ARRAY_ITEM: {
-                                        handler.arrayItemValue(index, value, false);
-                                        break;
-                                    }
-                                    case OBJECT_ITEM: {
-                                        handler.objectItemValue(value, false);
-                                        break;
-                                    }
-                                }
-                            }
-                            break;
-                        }
-                        default:
-                            throw new ParseException("Unexcepted token expect [ IDENT or VALUE or ',' or '}' ] get '" + JSONToken.token2string(token.type) + "'");
-                    }
-                    break;
-                }
-                case OBJECT_VALUE: {
-                    switch (token.type) {
-                        case JSONToken.COLON:
-                            break;
-                        case JSONToken.NULL: {
-                            handler.objectItemValue(token.value, true);
-                            state = OBJECT_ITEM;
-                            break;
-                        }
-                        case JSONToken.BOOL: {
-                            handler.objectItemValue(token.value, true);
-                            state = OBJECT_ITEM;
-                            break;
-                        }
-                        case JSONToken.INT: {
-                            handler.objectItemValue(token.value, true);
-                            state = OBJECT_ITEM;
-                            break;
-                        }
-                        case JSONToken.FLOAT: {
-                            handler.objectItemValue(token.value, true);
-                            state = OBJECT_ITEM;
-                            break;
-                        }
-                        case JSONToken.STRING: {
-                            handler.objectItemValue(token.value, true);
-                            state = OBJECT_ITEM;
-                            break;
-                        }
-                        case JSONToken.LSQUARE: {
-                            states.push(new int[]{OBJECT_ITEM, index});
-
-                            index = 0;
-                            state = ARRAY_ITEM;
-                            handler.arrayBegin();
-                            break;
-                        }
-                        case JSONToken.LBRACE: {
-                            states.push(new int[]{OBJECT_ITEM, index});
-
-                            index = 0;
-                            state = OBJECT_ITEM;
-                            handler.objectBegin();
-                            break;
-                        }
-                        default:
-                            throw new ParseException("Unexcepted token expect [ VALUE or '[' or '{' ] get '" + JSONToken.token2string(token.type) + "'");
-                    }
-                    break;
-                }
-                default:
-                    throw new ParseException("Unexcepted state.");
-            }
-        }
-        while ((token = jr.nextToken()) != null);
-        states.clear();
-        return handler.end(value, pv);
-    }
-
-    private static class Entry {
-        byte state;
-        Object value;
-
-        Entry(byte s, Object v) {
-            state = s;
-            value = v;
-        }
-    }
-}
\ No newline at end of file
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONArray.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONArray.java
deleted file mode 100644
index 9c9cadf340..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONArray.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * JSONArray.
- */
-@Deprecated
-public class JSONArray implements JSONNode {
-    private List<Object> mArray = new ArrayList<Object>();
-
-    /**
-     * get.
-     *
-     * @param index index.
-     * @return boolean or long or double or String or JSONArray or JSONObject or null.
-     */
-    public Object get(int index) {
-        return mArray.get(index);
-    }
-
-    /**
-     * get boolean value.
-     *
-     * @param index index.
-     * @param def   default value.
-     * @return value or default value.
-     */
-    public boolean getBoolean(int index, boolean def) {
-        Object tmp = mArray.get(index);
-        return tmp != null && tmp instanceof Boolean ? ((Boolean) tmp).booleanValue() : def;
-    }
-
-    /**
-     * get int value.
-     *
-     * @param index index.
-     * @param def   default value.
-     * @return value or default value.
-     */
-    public int getInt(int index, int def) {
-        Object tmp = mArray.get(index);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).intValue() : def;
-    }
-
-    /**
-     * get long value.
-     *
-     * @param index index.
-     * @param def   default value.
-     * @return value or default value.
-     */
-    public long getLong(int index, long def) {
-        Object tmp = mArray.get(index);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).longValue() : def;
-    }
-
-    /**
-     * get float value.
-     *
-     * @param index index.
-     * @param def   default value.
-     * @return value or default value.
-     */
-    public float getFloat(int index, float def) {
-        Object tmp = mArray.get(index);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).floatValue() : def;
-    }
-
-    /**
-     * get double value.
-     *
-     * @param index index.
-     * @param def   default value.
-     * @return value or default value.
-     */
-    public double getDouble(int index, double def) {
-        Object tmp = mArray.get(index);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).doubleValue() : def;
-    }
-
-    /**
-     * get string value.
-     *
-     * @param index index.
-     * @return value or default value.
-     */
-    public String getString(int index) {
-        Object tmp = mArray.get(index);
-        return tmp == null ? null : tmp.toString();
-    }
-
-    /**
-     * get JSONArray value.
-     *
-     * @param index index.
-     * @return value or default value.
-     */
-    public JSONArray getArray(int index) {
-        Object tmp = mArray.get(index);
-        return tmp == null ? null : tmp instanceof JSONArray ? (JSONArray) tmp : null;
-    }
-
-    /**
-     * get JSONObject value.
-     *
-     * @param index index.
-     * @return value or default value.
-     */
-    public JSONObject getObject(int index) {
-        Object tmp = mArray.get(index);
-        return tmp == null ? null : tmp instanceof JSONObject ? (JSONObject) tmp : null;
-    }
-
-    /**
-     * get array length.
-     *
-     * @return length.
-     */
-    public int length() {
-        return mArray.size();
-    }
-
-    /**
-     * add item.
-     */
-    public void add(Object ele) {
-        mArray.add(ele);
-    }
-
-    /**
-     * add items.
-     */
-    public void addAll(Object[] eles) {
-        for (Object ele : eles)
-            mArray.add(ele);
-    }
-
-    /**
-     * add items.
-     */
-    public void addAll(Collection<?> c) {
-        mArray.addAll(c);
-    }
-
-    /**
-     * write json.
-     *
-     * @param jc json converter
-     * @param jb json builder.
-     */
-    @Override
-    public void writeJSON(JSONConverter jc, JSONWriter jb, boolean writeClass) throws IOException {
-        jb.arrayBegin();
-        for (Object item : mArray) {
-            if (item == null)
-                jb.valueNull();
-            else
-                jc.writeValue(item, jb, writeClass);
-        }
-        jb.arrayEnd();
-    }
-}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONConverter.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONConverter.java
deleted file mode 100644
index e9fe94c03e..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONConverter.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-import java.io.IOException;
-
-/**
- * JSON converter.
- */
-@Deprecated
-public interface JSONConverter {
-    /**
-     * write object.
-     *
-     * @param obj     obj.
-     * @param builder builder.
-     * @throws IOException
-     */
-    void writeValue(Object obj, JSONWriter builder, boolean writeClass) throws IOException;
-
-    /**
-     * convert json value to target class.
-     *
-     * @param type target type.
-     * @param jv   json value.
-     * @return target object.
-     * @throws IOException
-     */
-    Object readValue(Class<?> type, Object jv) throws IOException;
-}
\ No newline at end of file
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONNode.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONNode.java
deleted file mode 100644
index 0e7531b164..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONNode.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-import java.io.IOException;
-
-/**
- * JSONSerializable.
- */
-@Deprecated
-interface JSONNode {
-    /**
-     * write json string.
-     *
-     * @param jc json converter.
-     * @param jb json builder.
-     * @throws IOException
-     */
-    void writeJSON(JSONConverter jc, JSONWriter jb, boolean writeClass) throws IOException;
-}
\ No newline at end of file
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONObject.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONObject.java
deleted file mode 100644
index 52c1990ba0..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONObject.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * JSONObject.
- */
-@Deprecated
-public class JSONObject implements JSONNode {
-    private Map<String, Object> mMap = new HashMap<String, Object>();
-
-    /**
-     * get.
-     *
-     * @param key key.
-     * @return boolean or long or double or String or JSONArray or JSONObject or null.
-     */
-    public Object get(String key) {
-        return mMap.get(key);
-    }
-
-    /**
-     * get boolean value.
-     *
-     * @param key key.
-     * @param def default value.
-     * @return value or default value.
-     */
-    public boolean getBoolean(String key, boolean def) {
-        Object tmp = mMap.get(key);
-        return tmp != null && tmp instanceof Boolean ? (Boolean) tmp : def;
-    }
-
-    /**
-     * get int value.
-     *
-     * @param key key.
-     * @param def default value.
-     * @return value or default value.
-     */
-    public int getInt(String key, int def) {
-        Object tmp = mMap.get(key);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).intValue() : def;
-    }
-
-    /**
-     * get long value.
-     *
-     * @param key key.
-     * @param def default value.
-     * @return value or default value.
-     */
-    public long getLong(String key, long def) {
-        Object tmp = mMap.get(key);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).longValue() : def;
-    }
-
-    /**
-     * get float value.
-     *
-     * @param key key.
-     * @param def default value.
-     * @return value or default value.
-     */
-    public float getFloat(String key, float def) {
-        Object tmp = mMap.get(key);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).floatValue() : def;
-    }
-
-    /**
-     * get double value.
-     *
-     * @param key key.
-     * @param def default value.
-     * @return value or default value.
-     */
-    public double getDouble(String key, double def) {
-        Object tmp = mMap.get(key);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).doubleValue() : def;
-    }
-
-    /**
-     * get string value.
-     *
-     * @param key key.
-     * @return value or default value.
-     */
-    public String getString(String key) {
-        Object tmp = mMap.get(key);
-        return tmp == null ? null : tmp.toString();
-    }
-
-    /**
-     * get JSONArray value.
-     *
-     * @param key key.
-     * @return value or default value.
-     */
-    public JSONArray getArray(String key) {
-        Object tmp = mMap.get(key);
-        return tmp == null ? null : tmp instanceof JSONArray ? (JSONArray) tmp : null;
-    }
-
-    /**
-     * get JSONObject value.
-     *
-     * @param key key.
-     * @return value or default value.
-     */
-    public JSONObject getObject(String key) {
-        Object tmp = mMap.get(key);
-        return tmp == null ? null : tmp instanceof JSONObject ? (JSONObject) tmp : null;
-    }
-
-    /**
-     * get key iterator.
-     *
-     * @return key iterator.
-     */
-    public Iterator<String> keys() {
-        return mMap.keySet().iterator();
-    }
-
-    /**
-     * contains key.
-     *
-     * @param key key.
-     * @return contains or not.
-     */
-    public boolean contains(String key) {
-        return mMap.containsKey(key);
-    }
-
-    /**
-     * put value.
-     *
-     * @param name  name.
-     * @param value value.
-     */
-    public void put(String name, Object value) {
-        mMap.put(name, value);
-    }
-
-    /**
-     * put all.
-     *
-     * @param names  name array.
-     * @param values value array.
-     */
-    public void putAll(String[] names, Object[] values) {
-        for (int i = 0, len = Math.min(names.length, values.length); i < len; i++)
-            mMap.put(names[i], values[i]);
-    }
-
-    /**
-     * put all.
-     *
-     * @param map map.
-     */
-    public void putAll(Map<String, Object> map) {
-        for (Map.Entry<String, Object> entry : map.entrySet())
-            mMap.put(entry.getKey(), entry.getValue());
-    }
-
-    /**
-     * write json.
-     *
-     * @param jc json converter.
-     * @param jb json builder.
-     */
-    @Override
-    public void writeJSON(JSONConverter jc, JSONWriter jb, boolean writeClass) throws IOException {
-        String key;
-        Object value;
-        jb.objectBegin();
-        for (Map.Entry<String, Object> entry : mMap.entrySet()) {
-            key = entry.getKey();
-            jb.objectItem(key);
-            value = entry.getValue();
-            if (value == null)
-                jb.valueNull();
-            else
-                jc.writeValue(value, jb, writeClass);
-        }
-        jb.objectEnd();
-    }
-}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONReader.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONReader.java
deleted file mode 100644
index 2fbf4f6df2..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONReader.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-
-/**
- * JSON reader.
- */
-@Deprecated
-public class JSONReader {
-    private static ThreadLocal<Yylex> LOCAL_LEXER = new ThreadLocal<Yylex>() {
-    };
-
-    private Yylex mLex;
-
-    public JSONReader(InputStream is, String charset) throws UnsupportedEncodingException {
-        this(new InputStreamReader(is, charset));
-    }
-
-    public JSONReader(Reader reader) {
-        mLex = getLexer(reader);
-    }
-
-    private static Yylex getLexer(Reader reader) {
-        Yylex ret = LOCAL_LEXER.get();
-        if (ret == null) {
-            ret = new Yylex(reader);
-            LOCAL_LEXER.set(ret);
-        } else {
-            ret.yyreset(reader);
-        }
-        return ret;
-    }
-
-    public JSONToken nextToken() throws IOException, ParseException {
-        return mLex.yylex();
-    }
-
-    public JSONToken nextToken(int expect) throws IOException, ParseException {
-        JSONToken ret = mLex.yylex();
-        if (ret == null)
-            throw new ParseException("EOF error.");
-        if (expect != JSONToken.ANY && expect != ret.type)
-            throw new ParseException("Unexpected token.");
-        return ret;
-    }
-}
\ No newline at end of file
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONToken.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONToken.java
deleted file mode 100644
index 7e363c9f20..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONToken.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-/**
- * JSONToken.
- */
-@Deprecated
-public class JSONToken {
-    // token type
-    public static final int ANY = 0, IDENT = 0x01, LBRACE = 0x02, LSQUARE = 0x03, RBRACE = 0x04, RSQUARE = 0x05, COMMA = 0x06, COLON = 0x07;
-
-    public static final int NULL = 0x10, BOOL = 0x11, INT = 0x12, FLOAT = 0x13, STRING = 0x14, ARRAY = 0x15, OBJECT = 0x16;
-
-    public final int type;
-
-    public final Object value;
-
-    JSONToken(int t) {
-        this(t, null);
-    }
-
-    JSONToken(int t, Object v) {
-        type = t;
-        value = v;
-    }
-
-    static String token2string(int t) {
-        switch (t) {
-            case LBRACE:
-                return "{";
-            case RBRACE:
-                return "}";
-            case LSQUARE:
-                return "[";
-            case RSQUARE:
-                return "]";
-            case COMMA:
-                return ",";
-            case COLON:
-                return ":";
-            case IDENT:
-                return "IDENT";
-            case NULL:
-                return "NULL";
-            case BOOL:
-                return "BOOL VALUE";
-            case INT:
-                return "INT VALUE";
-            case FLOAT:
-                return "FLOAT VALUE";
-            case STRING:
-                return "STRING VALUE";
-            default:
-                return "ANY";
-        }
-    }
-}
\ No newline at end of file
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONVisitor.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONVisitor.java
deleted file mode 100644
index 6c9b1b69ca..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONVisitor.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-/**
- * JSONVisitor.
- */
-@Deprecated
-public interface JSONVisitor {
-    public static final String CLASS_PROPERTY = "class";
-
-    /**
-     * parse begin .
-     */
-    void begin();
-
-    /**
-     * parse end.
-     *
-     * @param obj     root obj.
-     * @param isValue is json value.
-     * @return parse result.
-     * @throws ParseException
-     */
-    Object end(Object obj, boolean isValue) throws ParseException;
-
-    /**
-     * object begin.
-     *
-     * @throws ParseException
-     */
-    void objectBegin() throws ParseException;
-
-    /**
-     * object end, return object value.
-     *
-     * @param count property count.
-     * @return object value.
-     * @throws ParseException
-     */
-    Object objectEnd(int count) throws ParseException;
-
-    /**
-     * object property name.
-     *
-     * @param name name.
-     * @throws ParseException
-     */
-    void objectItem(String name) throws ParseException;
-
-    /**
-     * object property value.
-     *
-     * @param obj     obj.
-     * @param isValue is json value.
-     * @throws ParseException
-     */
-    void objectItemValue(Object obj, boolean isValue) throws ParseException;
-
-    /**
-     * array begin.
-     *
-     * @throws ParseException
-     */
-    void arrayBegin() throws ParseException;
-
-    /**
-     * array end, return array value.
-     *
-     * @param count count.
-     * @return array value.
-     * @throws ParseException
-     */
-    Object arrayEnd(int count) throws ParseException;
-
-    /**
-     * array item.
-     *
-     * @param index index.
-     * @throws ParseException
-     */
-    void arrayItem(int index) throws ParseException;
-
-    /**
-     * array item.
-     *
-     * @param index   index.
-     * @param obj     item.
-     * @param isValue is json value.
-     * @throws ParseException
-     */
-    void arrayItemValue(int index, Object obj, boolean isValue) throws ParseException;
-}
\ No newline at end of file
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONWriter.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONWriter.java
deleted file mode 100644
index ee45e129bf..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONWriter.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-import org.apache.dubbo.common.utils.Stack;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-
-/**
- * JSON Writer.
- * <p>
- * w.objectBegin().objectItem("name").valueString("qianlei").objectEnd() = {name:"qianlei"}.
- */
-@Deprecated
-public class JSONWriter {
-    private static final byte UNKNOWN = 0, ARRAY = 1, OBJECT = 2, OBJECT_VALUE = 3;
-    private static final String[] CONTROL_CHAR_MAP = new String[]{
-            "\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006", "\\u0007",
-            "\\b", "\\t", "\\n", "\\u000b", "\\f", "\\r", "\\u000e", "\\u000f",
-            "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014", "\\u0015", "\\u0016", "\\u0017",
-            "\\u0018", "\\u0019", "\\u001a", "\\u001b", "\\u001c", "\\u001d", "\\u001e", "\\u001f"
-    };
-    private Writer mWriter;
-
-    private State mState = new State(UNKNOWN);
-
-    private Stack<State> mStack = new Stack<State>();
-
-    public JSONWriter(Writer writer) {
-        mWriter = writer;
-    }
-
-    public JSONWriter(OutputStream is, String charset) throws UnsupportedEncodingException {
-        mWriter = new OutputStreamWriter(is, charset);
-    }
-
-    private static String escape(String str) {
-        if (str == null)
-            return str;
-        int len = str.length();
-        if (len == 0)
-            return str;
-
-        char c;
-        StringBuilder sb = null;
-        for (int i = 0; i < len; i++) {
-            c = str.charAt(i);
-            if (c < ' ') // control char.
-            {
-                if (sb == null) {
-                    sb = new StringBuilder(len << 1);
-                    sb.append(str, 0, i);
-                }
-                sb.append(CONTROL_CHAR_MAP[c]);
-            } else {
-                switch (c) {
-                    case '\\':
-                    case '/':
-                    case '"':
-                        if (sb == null) {
-                            sb = new StringBuilder(len << 1);
-                            sb.append(str, 0, i);
-                        }
-                        sb.append('\\').append(c);
-                        break;
-                    default:
-                        if (sb != null)
-                            sb.append(c);
-                }
-            }
-        }
-        return sb == null ? str : sb.toString();
-    }
-
-    /**
-     * object begin.
-     *
-     * @return this.
-     * @throws IOException
-     */
-    public JSONWriter objectBegin() throws IOException {
-        beforeValue();
-
-        mWriter.write(JSON.LBRACE);
-        mStack.push(mState);
-        mState = new State(OBJECT);
-        return this;
-    }
-
-    /**
-     * object end.
-     *
-     * @return this.
-     * @throws IOException
-     */
-    public JSONWriter objectEnd() throws IOException {
-        mWriter.write(JSON.RBRACE);
-        mState = mStack.pop();
-        return this;
-    }
-
-    /**
-     * object item.
-     *
-     * @param name name.
-     * @return this.
-     * @throws IOException
-     */
-    public JSONWriter objectItem(String name) throws IOException {
-        beforeObjectItem();
-
-        mWriter.write(JSON.QUOTE);
-        mWriter.write(escape(name));
-        mWriter.write(JSON.QUOTE);
-        mWriter.write(JSON.COLON);
-        return this;
-    }
-
-    /**
-     * array begin.
-     *
-     * @return this.
-     * @throws IOException
-     */
-    public JSONWriter arrayBegin() throws IOException {
-        beforeValue();
-
-        mWriter.write(JSON.LSQUARE);
-        mStack.push(mState);
-        mState = new State(ARRAY);
-        return this;
-    }
-
-    /**
-     * array end, return array value.
-     *
-     * @return this.
-     * @throws IOException
-     */
-    public JSONWriter arrayEnd() throws IOException {
-        mWriter.write(JSON.RSQUARE);
-        mState = mStack.pop();
-        return this;
-    }
-
-    /**
-     * value.
-     *
-     * @return this.
-     * @throws IOException
-     */
-    public JSONWriter valueNull() throws IOException {
-        beforeValue();
-
-        mWriter.write(JSON.NULL);
-        return this;
-    }
-
-    /**
-     * value.
-     *
-     * @param value value.
-     * @return this.
-     * @throws IOException
-     */
-    public JSONWriter valueString(String value) throws IOException {
-        beforeValue();
-
-        mWriter.write(JSON.QUOTE);
-        mWriter.write(escape(value));
-        mWriter.write(JSON.QUOTE);
-        return this;
-    }
-
-    /**
-     * value.
-     *
-     * @param value value.
-     * @return this.
-     * @throws IOException
-     */
-    public JSONWriter valueBoolean(boolean value) throws IOException {
-        beforeValue();
-
-        mWriter.write(value ? "true" : "false");
-        return this;
-    }
-
-    /**
-     * value.
-     *
-     * @param value value.
-     * @return this.
-     * @throws IOException
-     */
-    public JSONWriter valueInt(int value) throws IOException {
-        beforeValue();
-
-        mWriter.write(String.valueOf(value));
-        return this;
-    }
-
-    /**
-     * value.
-     *
-     * @param value value.
-     * @return this.
-     * @throws IOException
-     */
-    public JSONWriter valueLong(long value) throws IOException {
-        beforeValue();
-
-        mWriter.write(String.valueOf(value));
-        return this;
-    }
-
-    /**
-     * value.
-     *
-     * @param value value.
-     * @return this.
-     * @throws IOException
-     */
-    public JSONWriter valueFloat(float value) throws IOException {
-        beforeValue();
-
-        mWriter.write(String.valueOf(value));
-        return this;
-    }
-
-    /**
-     * value.
-     *
-     * @param value value.
-     * @return this.
-     * @throws IOException
-     */
-    public JSONWriter valueDouble(double value) throws IOException {
-        beforeValue();
-
-        mWriter.write(String.valueOf(value));
-        return this;
-    }
-
-    private void beforeValue() throws IOException {
-        switch (mState.type) {
-            case ARRAY:
-                if (mState.itemCount++ > 0)
-                    mWriter.write(JSON.COMMA);
-                return;
-            case OBJECT:
-                throw new IOException("Must call objectItem first.");
-            case OBJECT_VALUE:
-                mState.type = OBJECT;
-                return;
-        }
-    }
-
-    private void beforeObjectItem() throws IOException {
-        switch (mState.type) {
-            case OBJECT_VALUE:
-                mWriter.write(JSON.NULL);
-            case OBJECT:
-                mState.type = OBJECT_VALUE;
-                if (mState.itemCount++ > 0)
-                    mWriter.write(JSON.COMMA);
-                return;
-            default:
-                throw new IOException("Must call objectBegin first.");
-        }
-    }
-
-    private static class State {
-        private byte type;
-        private int itemCount = 0;
-
-        State(byte t) {
-            type = t;
-        }
-    }
-}
\ No newline at end of file
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/ParseException.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/ParseException.java
deleted file mode 100644
index 4994e44ce3..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/ParseException.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-/**
- * ParseException.
- */
-@Deprecated
-public class ParseException extends Exception {
-    private static final long serialVersionUID = 8611884051738966316L;
-
-    public ParseException() {
-        super();
-    }
-
-    public ParseException(String message) {
-        super(message);
-    }
-}
\ No newline at end of file
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/Yylex.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/Yylex.java
deleted file mode 100644
index c7b11e9529..0000000000
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/Yylex.java
+++ /dev/null
@@ -1,834 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-/**
- * This class is a scanner generated by
- * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
- * on 7/3/10 3:12 AM from the specification file
- * <tt>/Users/qianlei/dev/proj/dubbo-1.1/dubbo.common/src/main/java/org.apache.dubbo/common/json/json.flex</tt>
- */
-@Deprecated
-public class Yylex {
-
-    /**
-     * This character denotes the end of file
-     */
-    public static final int YYEOF = -1;
-    /**
-     * lexical states
-     */
-    public static final int STR2 = 4;
-    public static final int STR1 = 2;
-    public static final int YYINITIAL = 0;
-    /**
-     * initial size of the lookahead buffer
-     */
-    private static final int ZZ_BUFFERSIZE = 16384;
-    /**
-     * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
-     * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
-     * at the beginning of a line
-     * l is of the form l = 2*k, k a non negative integer
-     */
-    private static final int ZZ_LEXSTATE[] = {
-            0, 0, 1, 1, 2, 2
-    };
-
-    /**
-     * Translates characters to character classes
-     */
-    private static final String ZZ_CMAP_PACKED =
-            "\11\0\1\13\1\13\2\0\1\13\22\0\1\13\1\0\1\10\1\0" +
-                    "\1\2\2\0\1\11\3\0\1\7\1\43\1\4\1\5\1\14\12\1" +
-                    "\1\44\6\0\1\33\3\3\1\6\1\32\5\2\1\34\1\2\1\36" +
-                    "\3\2\1\25\1\35\1\24\1\26\5\2\1\41\1\12\1\42\1\0" +
-                    "\1\2\1\0\1\27\1\15\2\3\1\23\1\16\5\2\1\30\1\2" +
-                    "\1\17\3\2\1\20\1\31\1\21\1\22\5\2\1\37\1\0\1\40" +
-                    "\uff82\0";
-
-    /**
-     * Translates characters to character classes
-     */
-    private static final char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
-    private static final String ZZ_ACTION_PACKED_0 =
-            "\3\0\1\1\1\2\1\3\1\1\1\4\1\5\1\6" +
-                    "\6\3\1\7\1\10\1\11\1\12\1\13\1\14\1\15" +
-                    "\1\16\1\0\1\15\3\0\6\3\1\17\1\20\1\21" +
-                    "\1\22\1\23\1\24\1\25\1\26\1\0\1\27\2\30" +
-                    "\1\0\6\3\1\0\1\3\1\31\1\32\1\3\1\0" +
-                    "\1\33\1\0\1\34";
-    /**
-     * Translates DFA states to action switch labels.
-     */
-    private static final int[] ZZ_ACTION = zzUnpackAction();
-    private static final String ZZ_ROWMAP_PACKED_0 =
-            "\0\0\0\45\0\112\0\157\0\224\0\271\0\336\0\157" +
-                    "\0\157\0\u0103\0\u0128\0\u014d\0\u0172\0\u0197\0\u01bc\0\u01e1" +
-                    "\0\157\0\157\0\157\0\157\0\157\0\157\0\u0206\0\157" +
-                    "\0\u022b\0\u0250\0\u0275\0\u029a\0\u02bf\0\u02e4\0\u0309\0\u032e" +
-                    "\0\u0353\0\u0378\0\u039d\0\157\0\157\0\157\0\157\0\157" +
-                    "\0\157\0\157\0\157\0\u03c2\0\157\0\u03e7\0\u040c\0\u040c" +
-                    "\0\u0431\0\u0456\0\u047b\0\u04a0\0\u04c5\0\u04ea\0\u050f\0\u0534" +
-                    "\0\271\0\271\0\u0559\0\u057e\0\271\0\u05a3\0\157";
-    /**
-     * Translates a state to a row index in the transition table
-     */
-    private static final int[] ZZ_ROWMAP = zzUnpackRowMap();
-    /**
-     * The transition table of the DFA
-     */
-    private static final int ZZ_TRANS[] = {
-            3, 4, 5, 5, 6, 3, 5, 3, 7, 8,
-            3, 9, 3, 5, 10, 11, 5, 12, 5, 5,
-            13, 5, 5, 5, 5, 5, 14, 5, 5, 5,
-            15, 16, 17, 18, 19, 20, 21, 22, 22, 22,
-            22, 22, 22, 22, 22, 23, 22, 24, 22, 22,
-            22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
-            22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
-            22, 22, 22, 22, 25, 25, 25, 25, 25, 25,
-            25, 25, 25, 23, 26, 25, 25, 25, 25, 25,
-            25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
-            25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
-            25, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, 4,
-            -1, -1, -1, 27, 28, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, 28, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, 5, 5, 5, -1,
-            -1, 5, -1, -1, -1, -1, -1, -1, 5, 5,
-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-            5, 5, 5, 5, 5, 5, -1, -1, -1, -1,
-            -1, -1, -1, 4, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, 5, 5, 5,
-            -1, -1, 5, -1, -1, -1, -1, -1, -1, 5,
-            5, 5, 5, 5, 5, 5, 5, 5, 5, 29,
-            5, 5, 5, 5, 5, 5, 5, -1, -1, -1,
-            -1, -1, -1, -1, 5, 5, 5, -1, -1, 5,
-            -1, -1, -1, -1, -1, -1, 5, 5, 5, 5,
-            5, 30, 5, 5, 5, 5, 5, 5, 5, 5,
-            5, 5, 5, 5, -1, -1, -1, -1, -1, -1,
-            -1, 5, 5, 5, -1, -1, 5, -1, -1, -1,
-            -1, -1, -1, 5, 5, 5, 31, 5, 5, 5,
-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-            5, -1, -1, -1, -1, -1, -1, -1, 5, 5,
-            5, -1, -1, 5, -1, -1, -1, -1, -1, -1,
-            5, 5, 5, 5, 5, 5, 5, 5, 32, 5,
-            5, 5, 5, 5, 5, 5, 5, 5, -1, -1,
-            -1, -1, -1, -1, -1, 5, 5, 5, -1, -1,
-            5, -1, -1, -1, -1, -1, -1, 5, 5, 5,
-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-            5, 33, 5, 5, 5, -1, -1, -1, -1, -1,
-            -1, -1, 5, 5, 5, -1, -1, 5, -1, -1,
-            -1, -1, -1, -1, 5, 5, 5, 5, 5, 5,
-            5, 5, 5, 34, 5, 5, 5, 5, 5, 5,
-            5, 5, -1, -1, -1, -1, -1, -1, 22, 22,
-            22, 22, 22, 22, 22, 22, -1, 22, -1, 22,
-            22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
-            22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
-            22, 22, 22, 22, 22, -1, -1, -1, -1, -1,
-            -1, -1, -1, 35, -1, 36, -1, 37, 38, 39,
-            40, 41, 42, 43, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, 25, 25, 25, 25, 25, 25, 25, 25,
-            25, -1, -1, 25, 25, 25, 25, 25, 25, 25,
-            25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
-            25, 25, 25, 25, 25, 25, 25, 25, 25, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, 44, 36,
-            -1, 37, 38, 39, 40, 41, 42, 43, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, 45, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, 46, -1, -1, 47, -1, -1,
-            47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, 5, 5, 5, -1, -1, 5, -1, -1, -1,
-            -1, -1, -1, 5, 5, 5, 5, 5, 5, 5,
-            5, 5, 5, 5, 48, 5, 5, 5, 5, 5,
-            5, -1, -1, -1, -1, -1, -1, -1, 5, 5,
-            5, -1, -1, 5, -1, -1, -1, -1, -1, -1,
-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-            5, 49, 5, 5, 5, 5, 5, 5, -1, -1,
-            -1, -1, -1, -1, -1, 5, 5, 5, -1, -1,
-            5, -1, -1, -1, -1, -1, -1, 5, 5, 5,
-            5, 5, 50, 5, 5, 5, 5, 5, 5, 5,
-            5, 5, 5, 5, 5, -1, -1, -1, -1, -1,
-            -1, -1, 5, 5, 5, -1, -1, 5, -1, -1,
-            -1, -1, -1, -1, 5, 5, 5, 5, 5, 5,
-            5, 5, 5, 51, 5, 5, 5, 5, 5, 5,
-            5, 5, -1, -1, -1, -1, -1, -1, -1, 5,
-            5, 5, -1, -1, 5, -1, -1, -1, -1, -1,
-            -1, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-            5, 5, 5, 5, 5, 5, 52, 5, 5, -1,
-            -1, -1, -1, -1, -1, -1, 5, 5, 5, -1,
-            -1, 5, -1, -1, -1, -1, -1, -1, 5, 5,
-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-            5, 5, 5, 53, 5, 5, -1, -1, -1, -1,
-            -1, -1, -1, 54, -1, 54, -1, -1, 54, -1,
-            -1, -1, -1, -1, -1, 54, 54, -1, -1, -1,
-            -1, 54, -1, -1, -1, 54, -1, -1, 54, 54,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            45, -1, -1, -1, -1, 28, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, 28, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, 46, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, 5, 5, 5, -1, -1, 5,
-            -1, -1, -1, -1, -1, -1, 5, 5, 5, 5,
-            5, 5, 5, 5, 5, 5, 5, 5, 55, 5,
-            5, 5, 5, 5, -1, -1, -1, -1, -1, -1,
-            -1, 5, 5, 5, -1, -1, 5, -1, -1, -1,
-            -1, -1, -1, 5, 5, 5, 5, 5, 5, 5,
-            5, 5, 5, 5, 56, 5, 5, 5, 5, 5,
-            5, -1, -1, -1, -1, -1, -1, -1, 5, 5,
-            5, -1, -1, 5, -1, -1, -1, -1, -1, -1,
-            5, 5, 5, 5, 5, 5, 57, 5, 5, 5,
-            5, 5, 5, 5, 5, 5, 5, 5, -1, -1,
-            -1, -1, -1, -1, -1, 5, 5, 5, -1, -1,
-            57, -1, -1, -1, -1, -1, -1, 5, 5, 5,
-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-            5, 5, 5, 5, 5, -1, -1, -1, -1, -1,
-            -1, -1, 5, 5, 5, -1, -1, 5, -1, -1,
-            -1, -1, -1, -1, 5, 5, 5, 5, 5, 5,
-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-            58, 5, -1, -1, -1, -1, -1, -1, -1, 5,
-            5, 5, -1, -1, 5, -1, -1, -1, -1, -1,
-            -1, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-            5, 5, 5, 5, 5, 5, 56, 5, 5, -1,
-            -1, -1, -1, -1, -1, -1, 59, -1, 59, -1,
-            -1, 59, -1, -1, -1, -1, -1, -1, 59, 59,
-            -1, -1, -1, -1, 59, -1, -1, -1, 59, -1,
-            -1, 59, 59, -1, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, 5, 5, 5, -1, -1, 5, -1,
-            -1, -1, -1, -1, -1, 5, 5, 5, 5, 5,
-            5, 60, 5, 5, 5, 5, 5, 5, 5, 5,
-            5, 5, 5, -1, -1, -1, -1, -1, -1, -1,
-            5, 5, 5, -1, -1, 60, -1, -1, -1, -1,
-            -1, -1, 5, 5, 5, 5, 5, 5, 5, 5,
-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-            -1, -1, -1, -1, -1, -1, -1, 61, -1, 61,
-            -1, -1, 61, -1, -1, -1, -1, -1, -1, 61,
-            61, -1, -1, -1, -1, 61, -1, -1, -1, 61,
-            -1, -1, 61, 61, -1, -1, -1, -1, -1, -1,
-            -1, -1, -1, -1, 62, -1, 62, -1, -1, 62,
-            -1, -1, -1, -1, -1, -1, 62, 62, -1, -1,
-            -1, -1, 62, -1, -1, -1, 62, -1, -1, 62,
-            62, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    };
-    /* error codes */
-    private static final int ZZ_UNKNOWN_ERROR = 0;
-    private static final int ZZ_NO_MATCH = 1;
-    private static final int ZZ_PUSHBACK_2BIG = 2;
-    /* error messages for the codes above */
-    private static final String ZZ_ERROR_MSG[] = {
-            "Unkown internal scanner error",
-            "Error: could not match input",
-            "Error: pushback value was too large"
-    };
-    private static final String ZZ_ATTRIBUTE_PACKED_0 =
-            "\3\0\1\11\3\1\2\11\7\1\6\11\1\1\1\11" +
-                    "\1\0\1\1\3\0\6\1\10\11\1\0\1\11\2\1" +
-                    "\1\0\6\1\1\0\4\1\1\0\1\1\1\0\1\11";
-    /**
-     * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
-     */
-    private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute();
-    /**
-     * the input device
-     */
-    private java.io.Reader zzReader;
-    /**
-     * the current state of the DFA
-     */
-    private int zzState;
-    /**
-     * the current lexical state
-     */
-    private int zzLexicalState = YYINITIAL;
-    /**
-     * this buffer contains the current text to be matched and is
-     * the source of the yytext() string
-     */
-    private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
-    /**
-     * the textposition at the last accepting state
-     */
-    private int zzMarkedPos;
-    /**
-     * the current text position in the buffer
-     */
-    private int zzCurrentPos;
-    /**
-     * startRead marks the beginning of the yytext() string in the buffer
-     */
-    private int zzStartRead;
-    /**
-     * endRead marks the last character in the buffer, that has been read
-     * from input
-     */
-    private int zzEndRead;
-    /**
-     * zzAtEOF == true <=> the scanner is at the EOF
-     */
-    private boolean zzAtEOF;
-    /**
-     * denotes if the user-EOF-code has already been executed
-     */
-    //private boolean zzEOFDone;
-
-  /* user code: */
-    private StringBuffer sb;
-
-    /**
-     * Creates a new scanner
-     * There is also a java.io.InputStream version of this constructor.
-     *
-     * @param in the java.io.Reader to read input from.
-     */
-    Yylex(java.io.Reader in) {
-        this.zzReader = in;
-    }
-
-    /**
-     * Creates a new scanner.
-     * There is also java.io.Reader version of this constructor.
-     *
-     * @param in the java.io.Inputstream to read input from.
-     */
-    Yylex(java.io.InputStream in) {
-        this(new java.io.InputStreamReader(in));
-    }
-
-    private static int[] zzUnpackAction() {
-        int[] result = new int[63];
-        int offset = 0;
-        offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
-        return result;
-    }
-
-    private static int zzUnpackAction(String packed, int offset, int[] result) {
-        int i = 0;       /* index in packed string  */
-        int j = offset;  /* index in unpacked array */
-        int l = packed.length();
-        while (i < l) {
-            int count = packed.charAt(i++);
-            int value = packed.charAt(i++);
-            do result[j++] = value; while (--count > 0);
-        }
-        return j;
-    }
-
-    /** number of newlines encountered up to the start of the matched text */
-    //private int yyline;
-
-    /** the number of characters up to the start of the matched text */
-    //private int yychar;
-
-    /**
-     * the number of characters from the last newline up to the start of the
-     * matched text
-     */
-    //private int yycolumn;
-
-    /**
-     * zzAtBOL == true <=> the scanner is currently at the beginning of a line
-     */
-    //private boolean zzAtBOL = true;
-    private static int[] zzUnpackRowMap() {
-        int[] result = new int[63];
-        int offset = 0;
-        offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
-        return result;
-    }
-
-    private static int zzUnpackRowMap(String packed, int offset, int[] result) {
-        int i = 0;  /* index in packed string  */
-        int j = offset;  /* index in unpacked array */
-        int l = packed.length();
-        while (i < l) {
-            int high = packed.charAt(i++) << 16;
-            result[j++] = high | packed.charAt(i++);
-        }
-        return j;
-    }
-
-    private static int[] zzUnpackAttribute() {
-        int[] result = new int[63];
-        int offset = 0;
-        offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
-        return result;
-    }
-
-    private static int zzUnpackAttribute(String packed, int offset, int[] result) {
-        int i = 0;       /* index in packed string  */
-        int j = offset;  /* index in unpacked array */
-        int l = packed.length();
-        while (i < l) {
-            int count = packed.charAt(i++);
-            int value = packed.charAt(i++);
-            do result[j++] = value; while (--count > 0);
-        }
-        return j;
-    }
-
-    /**
-     * Unpacks the compressed character translation table.
-     *
-     * @param packed the packed character translation table
-     * @return the unpacked character translation table
-     */
-    private static char[] zzUnpackCMap(String packed) {
-        char[] map = new char[0x10000];
-        int i = 0;  /* index in packed string  */
-        int j = 0;  /* index in unpacked array */
-        while (i < 122) {
-            int count = packed.charAt(i++);
-            char value = packed.charAt(i++);
-            do map[j++] = value; while (--count > 0);
-        }
-        return map;
-    }
-
-
-    /**
-     * Refills the input buffer.
-     *
-     * @return <code>false</code>, iff there was new input.
-     * @throws java.io.IOException if any I/O-Error occurs
-     */
-    private boolean zzRefill() throws java.io.IOException {
-
-    /* first: make room (if you can) */
-        if (zzStartRead > 0) {
-            System.arraycopy(zzBuffer, zzStartRead,
-                    zzBuffer, 0,
-                    zzEndRead - zzStartRead);
-
-      /* translate stored positions */
-            zzEndRead -= zzStartRead;
-            zzCurrentPos -= zzStartRead;
-            zzMarkedPos -= zzStartRead;
-            zzStartRead = 0;
-        }
-
-    /* is the buffer big enough? */
-        if (zzCurrentPos >= zzBuffer.length) {
-      /* if not: blow it up */
-            char newBuffer[] = new char[zzCurrentPos * 2];
-            System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
-            zzBuffer = newBuffer;
-        }
-
-    /* finally: fill the buffer with new input */
-        int numRead = zzReader.read(zzBuffer, zzEndRead,
-                zzBuffer.length - zzEndRead);
-
-        if (numRead > 0) {
-            zzEndRead += numRead;
-            return false;
-        }
-        // unlikely but not impossible: read 0 characters, but not at end of stream
-        if (numRead == 0) {
-            int c = zzReader.read();
-            if (c == -1) {
-                return true;
-            } else {
-                zzBuffer[zzEndRead++] = (char) c;
-                return false;
-            }
-        }
-
-        // numRead < 0
-        return true;
-    }
-
-
-    /**
-     * Closes the input stream.
-     */
-    public final void yyclose() throws java.io.IOException {
-        zzAtEOF = true;            /* indicate end of file */
-        zzEndRead = zzStartRead;  /* invalidate buffer    */
-
-        if (zzReader != null)
-            zzReader.close();
-    }
-
-
-    /**
-     * Resets the scanner to read from a new input stream.
-     * Does not close the old reader.
-     * <p>
-     * All internal variables are reset, the old input stream
-     * <b>cannot</b> be reused (internal buffer is discarded and lost).
-     * Lexical state is set to <tt>ZZ_INITIAL</tt>.
-     *
-     * @param reader the new input stream
-     */
-    public final void yyreset(java.io.Reader reader) {
-        zzReader = reader;
-        //zzAtBOL  = true;
-        zzAtEOF = false;
-        //zzEOFDone = false;
-        zzEndRead = zzStartRead = 0;
-        zzCurrentPos = zzMarkedPos = 0;
-        //yyline = yychar = yycolumn = 0;
-        zzLexicalState = YYINITIAL;
-    }
-
-
-    /**
-     * Returns the current lexical state.
-     */
-    public final int yystate() {
-        return zzLexicalState;
-    }
-
-
-    /**
-     * Enters a new lexical state
-     *
-     * @param newState the new lexical state
-     */
-    public final void yybegin(int newState) {
-        zzLexicalState = newState;
-    }
-
-
-    /**
-     * Returns the text matched by the current regular expression.
-     */
-    public final String yytext() {
-        return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead);
-    }
-
-
-    /**
-     * Returns the character at position <tt>pos</tt> from the
-     * matched text.
-     * <p>
-     * It is equivalent to yytext().charAt(pos), but faster
-     *
-     * @param pos the position of the character to fetch.
-     *            A value from 0 to yylength()-1.
-     * @return the character at position pos
-     */
-    public final char yycharat(int pos) {
-        return zzBuffer[zzStartRead + pos];
-    }
-
-
-    /**
-     * Returns the length of the matched text region.
-     */
-    public final int yylength() {
-        return zzMarkedPos - zzStartRead;
-    }
-
-
-    /**
-     * Reports an error that occured while scanning.
-     * <p>
-     * In a wellformed scanner (no or only correct usage of
-     * yypushback(int) and a match-all fallback rule) this method
-     * will only be called with things that "Can't Possibly Happen".
-     * If this method is called, something is seriously wrong
-     * (e.g. a JFlex bug producing a faulty scanner etc.).
-     * <p>
-     * Usual syntax/scanner level error handling should be done
-     * in error fallback rules.
-     *
-     * @param errorCode the code of the errormessage to display
-     */
-    private void zzScanError(int errorCode) {
-        String message;
-        try {
-            message = ZZ_ERROR_MSG[errorCode];
-        } catch (ArrayIndexOutOfBoundsException e) {
-            message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
-        }
-
-        throw new Error(message);
-    }
-
-
-    /**
-     * Pushes the specified amount of characters back into the input stream.
-     * <p>
-     * They will be read again by then next call of the scanning method
-     *
-     * @param number the number of characters to be read again.
-     *               This number must not be greater than yylength()!
-     */
-    public void yypushback(int number) {
-        if (number > yylength())
-            zzScanError(ZZ_PUSHBACK_2BIG);
-
-        zzMarkedPos -= number;
-    }
-
-
-    /**
-     * Resumes scanning until the next regular expression is matched,
-     * the end of input is encountered or an I/O-Error occurs.
-     *
-     * @return the next token
-     * @throws java.io.IOException if any I/O-Error occurs
-     */
-    public JSONToken yylex() throws java.io.IOException, ParseException {
-        int zzInput;
-        int zzAction;
-
-        // cached fields:
-        int zzCurrentPosL;
-        int zzMarkedPosL;
-        int zzEndReadL = zzEndRead;
-        char[] zzBufferL = zzBuffer;
-        char[] zzCMapL = ZZ_CMAP;
-
-        int[] zzTransL = ZZ_TRANS;
-        int[] zzRowMapL = ZZ_ROWMAP;
-        int[] zzAttrL = ZZ_ATTRIBUTE;
-
-        while (true) {
-            zzMarkedPosL = zzMarkedPos;
-
-            zzAction = -1;
-
-            zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
-
-            zzState = ZZ_LEXSTATE[zzLexicalState];
-
-
-            zzForAction:
-            {
-                while (true) {
-
-                    if (zzCurrentPosL < zzEndReadL)
-                        zzInput = zzBufferL[zzCurrentPosL++];
-                    else if (zzAtEOF) {
-                        zzInput = YYEOF;
-                        break zzForAction;
-                    } else {
-                        // store back cached positions
-                        zzCurrentPos = zzCurrentPosL;
-                        zzMarkedPos = zzMarkedPosL;
-                        boolean eof = zzRefill();
-                        // get translated positions and possibly new buffer
-                        zzCurrentPosL = zzCurrentPos;
-                        zzMarkedPosL = zzMarkedPos;
-                        zzBufferL = zzBuffer;
-                        zzEndReadL = zzEndRead;
-                        if (eof) {
-                            zzInput = YYEOF;
-                            break zzForAction;
-                        } else {
-                            zzInput = zzBufferL[zzCurrentPosL++];
-                        }
-                    }
-                    int zzNext = zzTransL[zzRowMapL[zzState] + zzCMapL[zzInput]];
-                    if (zzNext == -1) break zzForAction;
-                    zzState = zzNext;
-
-                    int zzAttributes = zzAttrL[zzState];
-                    if ((zzAttributes & 1) == 1) {
-                        zzAction = zzState;
-                        zzMarkedPosL = zzCurrentPosL;
-                        if ((zzAttributes & 8) == 8) break zzForAction;
-                    }
-
-                }
-            }
-
-            // store back cached position
-            zzMarkedPos = zzMarkedPosL;
-
-            switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
-                case 25: {
-                    return new JSONToken(JSONToken.NULL, null);
-                }
-                case 29:
-                    break;
-                case 13: {
-                    sb.append(yytext());
-                }
-                case 30:
-                    break;
-                case 18: {
-                    sb.append('\b');
-                }
-                case 31:
-                    break;
-                case 9: {
-                    return new JSONToken(JSONToken.LSQUARE);
-                }
-                case 32:
-                    break;
-                case 2: {
-                    Long val = Long.valueOf(yytext());
-                    return new JSONToken(JSONToken.INT, val);
-                }
-                case 33:
-                    break;
-                case 16: {
-                    sb.append('\\');
-                }
-                case 34:
-                    break;
-                case 8: {
-                    return new JSONToken(JSONToken.RBRACE);
-                }
-                case 35:
-                    break;
-                case 26: {
-                    return new JSONToken(JSONToken.BOOL, Boolean.TRUE);
-                }
-                case 36:
-                    break;
-                case 23: {
-                    sb.append('\'');
-                }
-                case 37:
-                    break;
-                case 5: {
-                    sb = new StringBuffer();
-                    yybegin(STR2);
-                }
-                case 38:
-                    break;
-                case 27: {
-                    return new JSONToken(JSONToken.BOOL, Boolean.FALSE);
-                }
-                case 39:
-                    break;
-                case 12: {
-                    return new JSONToken(JSONToken.COLON);
-                }
-                case 40:
-                    break;
-                case 21: {
-                    sb.append('\r');
-                }
-                case 41:
-                    break;
-                case 3: {
-                    return new JSONToken(JSONToken.IDENT, yytext());
-                }
-                case 42:
-                    break;
-                case 28: {
-                    try {
-                        sb.append((char) Integer.parseInt(yytext().substring(2), 16));
-                    } catch (Exception e) {
-                        throw new ParseException(e.getMessage());
-                    }
-                }
-                case 43:
-                    break;
-                case 10: {
-                    return new JSONToken(JSONToken.RSQUARE);
-                }
-                case 44:
-                    break;
-                case 17: {
-                    sb.append('/');
-                }
-                case 45:
-                    break;
-                case 11: {
-                    return new JSONToken(JSONToken.COMMA);
-                }
-                case 46:
-                    break;
-                case 15: {
-                    sb.append('"');
-                }
-                case 47:
-                    break;
-                case 24: {
-                    Double val = Double.valueOf(yytext());
-                    return new JSONToken(JSONToken.FLOAT, val);
-                }
-                case 48:
-                    break;
-                case 1: {
-                    throw new ParseException("Unexpected char [" + yytext() + "]");
-                }
-                case 49:
-                    break;
-                case 19: {
-                    sb.append('\f');
-                }
-                case 50:
-                    break;
-                case 7: {
-                    return new JSONToken(JSONToken.LBRACE);
-                }
-                case 51:
-                    break;
-                case 14: {
-                    yybegin(YYINITIAL);
-                    return new JSONToken(JSONToken.STRING, sb.toString());
-                }
-                case 52:
-                    break;
-                case 22: {
-                    sb.append('\t');
-                }
-                case 53:
-                    break;
-                case 4: {
-                    sb = new StringBuffer();
-                    yybegin(STR1);
-                }
-                case 54:
-                    break;
-                case 20: {
-                    sb.append('\n');
-                }
-                case 55:
-                    break;
-                case 6: {
-                }
-                case 56:
-                    break;
-                default:
-                    if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
-                        zzAtEOF = true;
-                        return null;
-                    } else {
-                        zzScanError(ZZ_NO_MATCH);
-                    }
-            }
-        }
-    }
-
-
-}
\ No newline at end of file
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoaderTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoaderTest.java
index b141707501..d8ca30dcee 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoaderTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoaderTest.java
@@ -64,7 +64,7 @@
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
-import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.hamcrest.CoreMatchers.containsString;
 
 public class ExtensionLoaderTest {
     @Test
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoader_Adaptive_Test.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoader_Adaptive_Test.java
index 47942030a1..b86531a78f 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoader_Adaptive_Test.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/ExtensionLoader_Adaptive_Test.java
@@ -41,7 +41,7 @@
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
-import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.hamcrest.CoreMatchers.containsString;
 
 public class ExtensionLoader_Adaptive_Test {
 
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl2.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl2.java
index c4aa3c1e97..3c0f693620 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl2.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl2.java
@@ -16,7 +16,8 @@
  */
 package org.apache.dubbo.common.extension.activate.impl;
 
-import com.alibaba.dubbo.common.extension.Activate;
+
+import org.apache.dubbo.common.extension.Activate;
 import org.apache.dubbo.common.extension.activate.ActivateExt1;
 
 @Activate(group = "old_group")
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl3.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl3.java
index 497db35252..e14c8330ba 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl3.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/activate/impl/OldActivateExt1Impl3.java
@@ -16,7 +16,7 @@
  */
 package org.apache.dubbo.common.extension.activate.impl;
 
-import com.alibaba.dubbo.common.extension.Activate;
+import org.apache.dubbo.common.extension.Activate;
 import org.apache.dubbo.common.extension.activate.ActivateExt1;
 
 @Activate(group = "old_group")
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/compatible/impl/CompatibleExtImpl1.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/compatible/impl/CompatibleExtImpl1.java
index 9148fa18dc..d1713cb63f 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/compatible/impl/CompatibleExtImpl1.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/compatible/impl/CompatibleExtImpl1.java
@@ -16,11 +16,11 @@
  */
 package org.apache.dubbo.common.extension.compatible.impl;
 
-import org.apache.dubbo.common.Extension;
 import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.extension.SPI;
 import org.apache.dubbo.common.extension.compatible.CompatibleExt;
 
-@Extension("impl1")
+@SPI("impl1")
 public class CompatibleExtImpl1 implements CompatibleExt {
     public String echo(URL url, String s) {
         return "Ext1Impl1-echo";
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/compatible/impl/CompatibleExtImpl2.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/compatible/impl/CompatibleExtImpl2.java
index 316f4fdc41..39068e2b9c 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/compatible/impl/CompatibleExtImpl2.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/compatible/impl/CompatibleExtImpl2.java
@@ -17,8 +17,10 @@
 package org.apache.dubbo.common.extension.compatible.impl;
 
 import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.extension.SPI;
 import org.apache.dubbo.common.extension.compatible.CompatibleExt;
 
+@SPI("impl1")
 public class CompatibleExtImpl2 implements CompatibleExt {
     public String echo(URL url, String s) {
         return "Ext1Impl2-echo";
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/ActivateComparatorTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/ActivateComparatorTest.java
index dcc43d170b..323c72e932 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/ActivateComparatorTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/ActivateComparatorTest.java
@@ -28,11 +28,11 @@
 
     @Test
     public void testActivateComparator(){
-        Filter1 f1 = new Filter1();
-        Filter2 f2 = new Filter2();
-        Filter3 f3 = new Filter3();
-        Filter4 f4 = new Filter4();
-        OldFilter5 f5 = new OldFilter5();
+        Filter1 f1 = new Filter1();//4
+        Filter2 f2 = new Filter2();//3
+        Filter3 f3 = new Filter3();//2
+        Filter4 f4 = new Filter4();//0
+        OldFilter5 f5 = new OldFilter5();//1
         List<Filter0> filters = new ArrayList<>();
         filters.add(f1);
         filters.add(f2);
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter1.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter1.java
index 5f30dd650e..58a01ae007 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter1.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter1.java
@@ -18,6 +18,6 @@
 
 import org.apache.dubbo.common.extension.Activate;
 
-@Activate
+@Activate(order = 4)
 public class Filter1 implements Filter0{
 }
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter2.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter2.java
index df93fa6eaf..426d7d3f57 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter2.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter2.java
@@ -18,6 +18,6 @@
 
 import org.apache.dubbo.common.extension.Activate;
 
-@Activate(before = "_1")
+@Activate(order = 3)
 public class Filter2 implements Filter0{
 }
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter3.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter3.java
index c02aaa13c2..aa16a2b51c 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter3.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter3.java
@@ -18,6 +18,6 @@
 
 import org.apache.dubbo.common.extension.Activate;
 
-@Activate(after = "_4")
+@Activate(order = 2)
 public class Filter3 implements Filter0{
 }
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter4.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter4.java
index 353874bc9a..b552e76668 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter4.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/Filter4.java
@@ -18,6 +18,6 @@
 
 import org.apache.dubbo.common.extension.Activate;
 
-@Activate(before = "_2")
+@Activate
 public class Filter4 implements Filter0{
 }
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/OldFilter5.java b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/OldFilter5.java
index 58feca1692..972bded411 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/OldFilter5.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/extension/support/OldFilter5.java
@@ -17,8 +17,8 @@
 package org.apache.dubbo.common.extension.support;
 
 
-import com.alibaba.dubbo.common.extension.Activate;
+import org.apache.dubbo.common.extension.Activate;
 
-@Activate(after = "_4")
+@Activate(order = 1)
 public class OldFilter5 implements OldFilter0 {
 }
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/json/JSONReaderTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/json/JSONReaderTest.java
deleted file mode 100644
index 8607e56e43..0000000000
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/json/JSONReaderTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-import org.apache.dubbo.common.io.UnsafeStringReader;
-
-import junit.framework.TestCase;
-
-public class JSONReaderTest extends TestCase {
-    public void testMain() throws Exception {
-        String json = "{ name: 'name', friends: [ 1, null, 3.2, ] }";
-        JSONReader reader = new JSONReader(new UnsafeStringReader(json));
-        assertEquals(reader.nextToken().type, JSONToken.LBRACE);
-        assertEquals(reader.nextToken().type, JSONToken.IDENT);
-        assertEquals(reader.nextToken().type, JSONToken.COLON);
-        assertEquals(reader.nextToken().type, JSONToken.STRING);
-        assertEquals(reader.nextToken().type, JSONToken.COMMA);
-        assertEquals(reader.nextToken().type, JSONToken.IDENT);
-        assertEquals(reader.nextToken().type, JSONToken.COLON);
-        assertEquals(reader.nextToken().type, JSONToken.LSQUARE);
-        assertEquals(reader.nextToken().type, JSONToken.INT);
-        assertEquals(reader.nextToken().type, JSONToken.COMMA);
-        assertEquals(reader.nextToken().type, JSONToken.NULL);
-        assertEquals(reader.nextToken().type, JSONToken.COMMA);
-        assertEquals(reader.nextToken().type, JSONToken.FLOAT);
-        assertEquals(reader.nextToken().type, JSONToken.COMMA);
-        assertEquals(reader.nextToken().type, JSONToken.RSQUARE);
-        assertEquals(reader.nextToken().type, JSONToken.RBRACE);
-    }
-}
\ No newline at end of file
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/json/JSONTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/json/JSONTest.java
deleted file mode 100644
index 21050e2a83..0000000000
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/json/JSONTest.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-
-@Deprecated
-public class JSONTest {
-    static byte[] DEFAULT_BYTES = {3, 12, 14, 41, 12, 2, 3, 12, 4, 67, 23};
-    static int DEFAULT_$$ = 152;
-
-    @Test
-    public void testException() throws Exception {
-        MyException e = new MyException("001", "AAAAAAAA");
-
-        StringWriter writer = new StringWriter();
-        JSON.json(e, writer);
-        String json = writer.getBuffer().toString();
-        System.out.println(json);
-        // Assert.assertEquals("{\"code\":\"001\",\"message\":\"AAAAAAAA\"}", json);
-
-        StringReader reader = new StringReader(json);
-        MyException result = JSON.parse(reader, MyException.class);
-        Assert.assertEquals("001", result.getCode());
-        Assert.assertEquals("AAAAAAAA", result.getMessage());
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    public void testMap() throws Exception {
-        Map<String, String> map = new HashMap<String, String>();
-        map.put("aaa", "bbb");
-
-        StringWriter writer = new StringWriter();
-        JSON.json(map, writer);
-        String json = writer.getBuffer().toString();
-        Assert.assertEquals("{\"aaa\":\"bbb\"}", json);
-
-        StringReader reader = new StringReader(json);
-        Map<String, String> result = JSON.parse(reader, Map.class);
-        Assert.assertEquals("bbb", result.get("aaa"));
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    public void testMapArray() throws Exception {
-        Map<String, String> map = new HashMap<String, String>();
-        map.put("aaa", "bbb");
-
-        StringWriter writer = new StringWriter();
-        JSON.json(new Object[]{map}, writer); // args
-        String json = writer.getBuffer().toString();
-        Assert.assertEquals("[{\"aaa\":\"bbb\"}]", json);
-
-        StringReader reader = new StringReader(json);
-        Object[] result = JSON.parse(reader, new Class<?>[]{Map.class});
-        Assert.assertEquals(1, result.length);
-        Assert.assertEquals("bbb", ((Map<String, String>) result[0]).get("aaa"));
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    public void testLinkedMap() throws Exception {
-        LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
-        map.put("aaa", "bbb");
-
-        StringWriter writer = new StringWriter();
-        JSON.json(map, writer);
-        String json = writer.getBuffer().toString();
-        Assert.assertEquals("{\"aaa\":\"bbb\"}", json);
-
-        StringReader reader = new StringReader(json);
-        LinkedHashMap<String, String> result = JSON.parse(reader, LinkedHashMap.class);
-        Assert.assertEquals("bbb", result.get("aaa"));
-    }
-
-    @Test
-    public void testObject2Json() throws Exception {
-        Bean bean = new Bean();
-        bean.array = new int[]{1, 3, 4};
-        bean.setName("ql");
-
-        String json = JSON.json(bean);
-        bean = JSON.parse(json, Bean.class);
-        assertEquals(bean.getName(), "ql");
-        assertEquals(bean.getDisplayName(), "钱磊");
-        assertEquals(bean.bytes.length, DEFAULT_BYTES.length);
-        assertEquals(bean.$$, DEFAULT_$$);
-
-        assertEquals("{\"name\":\"ql\",\"array\":[1,3,4]}", JSON.json(bean, new String[]{"name", "array"}));
-    }
-
-    @Test
-    public void testParse2JSONObject() throws Exception {
-        JSONObject jo = (JSONObject) JSON.parse("{name:'qianlei',array:[1,2,3,4,98.123],b1:TRUE,$1:NULL,$2:FALSE,__3:NULL}");
-        assertEquals(jo.getString("name"), "qianlei");
-        assertEquals(jo.getArray("array").length(), 5);
-        assertEquals(jo.get("$2"), Boolean.FALSE);
-        assertEquals(jo.get("__3"), null);
-
-        for (int i = 0; i < 10000; i++)
-            JSON.parse("{\"name\":\"qianlei\",\"array\":[1,2,3,4,98.123],\"displayName\":\"钱磊\"}");
-
-        long now = System.currentTimeMillis();
-        for (int i = 0; i < 10000; i++)
-            JSON.parse("{\"name\":\"qianlei\",\"array\":[1,2,3,4,98.123],\"displayName\":\"钱磊\"}");
-        System.out.println("parse to JSONObject 10000 times in: " + (System.currentTimeMillis() - now));
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    public void testParse2Class() throws Exception {
-        int[] o1 = {1, 2, 3, 4, 5}, o2 = JSON.parse("[1.2,2,3,4,5]", int[].class);
-        assertEquals(o2.length, 5);
-        for (int i = 0; i < 5; i++)
-            assertEquals(o1[i], o2[i]);
-
-        List l1 = (List) JSON.parse("[1.2,2,3,4,5]", List.class);
-        assertEquals(l1.size(), 5);
-        for (int i = 0; i < 5; i++)
-            assertEquals(o1[i], ((Number) l1.get(i)).intValue());
-
-        Bean bean = JSON.parse("{name:'qianlei',array:[1,2,3,4,98.123],displayName:'钱磊',$$:214726,$b:TRUE}", Bean.class);
-        assertEquals(bean.getName(), "qianlei");
-        assertEquals(bean.getDisplayName(), "钱磊");
-        assertEquals(bean.array.length, 5);
-        assertEquals(bean.$$, 214726);
-        assertEquals(bean.$b, true);
-
-        for (int i = 0; i < 10000; i++)
-            JSON.parse("{name:'qianlei',array:[1,2,3,4,98.123],displayName:'钱磊'}", Bean1.class);
-
-        long now = System.currentTimeMillis();
-        for (int i = 0; i < 10000; i++)
-            JSON.parse("{name:'qianlei',array:[1,2,3,4,98.123],displayName:'钱磊'}", Bean1.class);
-        System.out.println("parse to Class 10000 times in: " + (System.currentTimeMillis() - now));
-    }
-
-    @Test
-    public void testParse2Arguments() throws Exception {
-        Object[] test = JSON.parse("[1.2, 2, {name:'qianlei',array:[1,2,3,4,98.123]} ]", new Class<?>[]{int.class, int.class, Bean.class});
-        assertEquals(test[1], 2);
-        assertEquals(test[2].getClass(), Bean.class);
-        test = JSON.parse("[1.2, 2]", new Class<?>[]{int.class, int.class});
-        assertEquals(test[0], 1);
-    }
-
-    @Test
-    public void testLocale() throws Exception {
-        Locale obj = Locale.US;
-        String str = JSON.json(obj);
-        assertEquals("\"en_US\"", str);
-        assertEquals(obj, JSON.parse(str, Locale.class));
-    }
-
-    public static class Bean1 {
-        public int[] array;
-        private String name, displayName;
-
-        public String getDisplayName() {
-            return displayName;
-        }
-
-        public void setDisplayName(String displayName) {
-            this.displayName = displayName;
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public void setName(String name) {
-            this.name = name;
-        }
-    }
-
-    public static class Bean {
-        public int[] array;
-        public boolean $b;
-        public int $$ = DEFAULT_$$;
-        public byte[] bytes = DEFAULT_BYTES;
-        private String name, displayName = "钱磊";
-
-        public String getDisplayName() {
-            return displayName;
-        }
-
-        public void setDisplayName(String displayName) {
-            this.displayName = displayName;
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public void setName(String name) {
-            this.name = name;
-        }
-    }
-}
\ No newline at end of file
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/json/JSONWriterTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/json/JSONWriterTest.java
deleted file mode 100644
index 9066c904ea..0000000000
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/json/JSONWriterTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-import junit.framework.TestCase;
-
-import java.io.StringWriter;
-
-public class JSONWriterTest extends TestCase {
-    public void testWriteJson() throws Exception {
-        StringWriter w = new StringWriter();
-        JSONWriter writer = new JSONWriter(w);
-
-        writer.valueNull();
-        assertEquals(w.getBuffer().toString(), "null");
-
-        // write array.
-        w.getBuffer().setLength(0);
-        writer.arrayBegin().valueNull().valueBoolean(false).valueInt(16).arrayEnd();
-        assertEquals(w.getBuffer().toString(), "[null,false,16]");
-
-        // write object.
-        w.getBuffer().setLength(0);
-        writer.objectBegin().objectItem("type").valueString("org.apache.dubbo.TestService").objectItem("version").valueString("1.1.0").objectEnd();
-        assertEquals(w.getBuffer().toString(), "{\"type\":\"org.apache.dubbo.TestService\",\"version\":\"1.1.0\"}");
-
-        w.getBuffer().setLength(0);
-        writer.objectBegin();
-        writer.objectItem("name").objectItem("displayName");
-        writer.objectItem("emptyList").arrayBegin().arrayEnd();
-        writer.objectItem("list").arrayBegin().valueNull().valueBoolean(false).valueInt(16).valueString("stri'''ng").arrayEnd();
-        writer.objectItem("service").objectBegin().objectItem("type").valueString("org.apache.dubbo.TestService").objectItem("version").valueString("1.1.0").objectEnd();
-        writer.objectEnd();
-    }
-}
\ No newline at end of file
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/json/MyException.java b/dubbo-common/src/test/java/org/apache/dubbo/common/json/MyException.java
deleted file mode 100644
index 3d2df874cb..0000000000
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/json/MyException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.json;
-
-public class MyException extends Exception {
-
-    private static final long serialVersionUID = 2905707783883694687L;
-
-    private String code;
-
-    public MyException() {
-    }
-
-    public MyException(String code, String message) {
-        super(message);
-        this.code = code;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-}
\ No newline at end of file
diff --git a/dubbo-common/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.compatible.CompatibleExt b/dubbo-common/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.compatible.CompatibleExt
index 2489f407b7..2fcdb34549 100644
--- a/dubbo-common/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.compatible.CompatibleExt
+++ b/dubbo-common/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.compatible.CompatibleExt
@@ -1,2 +1,2 @@
-org.apache.dubbo.common.extension.compatible.impl.CompatibleExtImpl1
+impl1=org.apache.dubbo.common.extension.compatible.impl.CompatibleExtImpl1
 impl2=org.apache.dubbo.common.extension.compatible.impl.CompatibleExtImpl2
\ No newline at end of file
diff --git a/dubbo-compatible/README.md b/dubbo-compatible/README.md
deleted file mode 100644
index c59273251c..0000000000
--- a/dubbo-compatible/README.md
+++ /dev/null
@@ -1,30 +0,0 @@
-### dubbo-compatible
-
-Hi, all
-
-From 2.7.x, `Dubbo` has renamed package to `org.apache.dubbo`, so `dubbo-compatible` module is provided.
-
-For compatibility with older versions, we provider the following most popular APIs(classes/interfaces):
-
-* com.alibaba.dubbo.rpc.Filter / Invocation / Invoker / Result / RpcContext / RpcException
-* com.alibaba.dubbo.config.annotation.Reference / Service
-* com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo
-* com.alibaba.dubbo.common.Constants / URL
-* com.alibaba.dubbo.common.extension.ExtensionFactory
-* com.alibaba.dubbo.common.serialize.Serialization / ObjectInput / ObjectOutput
-* com.alibaba.dubbo.cache.CacheFactory / Cache
-* com.alibaba.dubbo.rpc.service.EchoService / GenericService
-
-The above APIs work fine with some unit tests in the test root. 
-
-Except these APIs, others provided in `dubbo-compatible` are just bridge APIs without any unit tests, they may work with wrong. If you have any demand for them, you could: 
-
-* Implement your own extensions with new APIs. (RECOMMENDED) 
-* Follow `com.alibaba.dubbo.rpc.Filter` to implement bridge APIs, and then contribute to community. 
-* Open issue on github.
-
-By the way, We will remove this module some day, so it's recommended that implementing your extensions with new APIs at the right time. 
-
-Now we need your help: Any other popular APIs are missing?
-
-For compatible module, any suggestions are welcome. Thanks.
\ No newline at end of file
diff --git a/dubbo-compatible/pom.xml b/dubbo-compatible/pom.xml
deleted file mode 100644
index 1da947fa71..0000000000
--- a/dubbo-compatible/pom.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<!--
-  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.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-parent</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
-    </parent>
-    <artifactId>dubbo-compatible</artifactId>
-    <packaging>jar</packaging>
-    <name>${project.artifactId}</name>
-    <description>The compatible module of dubbo project</description>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-filter-cache</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-config-spring</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-qos</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-remoting-http</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-remoting-p2p</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-remoting-zookeeper</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-rpc-rest</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-rpc-thrift</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-serialization-hessian2</artifactId>
-            <version>${project.parent.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-registry-multicast</artifactId>
-            <version>${project.parent.version}</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-</project>
\ No newline at end of file
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/cache/Cache.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/cache/Cache.java
deleted file mode 100644
index 62539d233e..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/cache/Cache.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.cache;
-
-@Deprecated
-public interface Cache extends org.apache.dubbo.cache.Cache {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/cache/CacheFactory.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/cache/CacheFactory.java
deleted file mode 100644
index 3d18fc4825..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/cache/CacheFactory.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.dubbo.cache;
-
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.rpc.Invocation;
-
-@Deprecated
-public interface CacheFactory extends org.apache.dubbo.cache.CacheFactory {
-
-    Cache getCache(URL url, Invocation invocation);
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/cache/support/AbstractCacheFactory.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/cache/support/AbstractCacheFactory.java
deleted file mode 100644
index 26aa6e3160..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/cache/support/AbstractCacheFactory.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.dubbo.cache.support;
-
-import com.alibaba.dubbo.cache.Cache;
-import com.alibaba.dubbo.cache.CacheFactory;
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.rpc.Invocation;
-
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-@Deprecated
-public abstract class AbstractCacheFactory implements CacheFactory {
-
-    private final ConcurrentMap<String, Cache> caches = new ConcurrentHashMap<String, Cache>();
-
-    @Override
-    public Cache getCache(URL url, Invocation invocation) {
-        url = url.addParameter(Constants.METHOD_KEY, invocation.getMethodName());
-        String key = url.toFullString();
-        Cache cache = caches.get(key);
-        if (cache == null) {
-            caches.put(key, createCache(url));
-            cache = caches.get(key);
-        }
-        return cache;
-    }
-
-    protected abstract Cache createCache(URL url);
-
-    @Override
-    public org.apache.dubbo.cache.Cache getCache(org.apache.dubbo.common.URL url, org.apache.dubbo.rpc.Invocation invocation) {
-        return getCache(new URL(url), new Invocation.CompatibleInvocation(invocation));
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/Constants.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/Constants.java
deleted file mode 100644
index 10a28831a2..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/Constants.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.common;
-
-@Deprecated
-public class Constants extends org.apache.dubbo.common.Constants {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/URL.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/URL.java
deleted file mode 100644
index 2f479ce897..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/URL.java
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- * 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.dubbo.common;
-
-import org.apache.dubbo.common.utils.CollectionUtils;
-
-import java.net.InetSocketAddress;
-import java.util.Collection;
-import java.util.Map;
-
-@Deprecated
-public class URL extends org.apache.dubbo.common.URL {
-
-    public URL(org.apache.dubbo.common.URL url) {
-        super(url.getProtocol(), url.getUsername(), url.getPassword(), url.getHost(), url.getPort(), url.getPath(), url.getParameters());
-    }
-
-    public URL(String protocol, String host, int port) {
-        super(protocol, null, null, host, port, null, (Map<String, String>) null);
-    }
-
-    public URL(String protocol, String host, int port, String[] pairs) {
-        super(protocol, null, null, host, port, null, CollectionUtils.toStringMap(pairs));
-    }
-
-    public URL(String protocol, String host, int port, Map<String, String> parameters) {
-        super(protocol, null, null, host, port, null, parameters);
-    }
-
-    public URL(String protocol, String host, int port, String path) {
-        super(protocol, null, null, host, port, path, (Map<String, String>) null);
-    }
-
-    public URL(String protocol, String host, int port, String path, String... pairs) {
-        super(protocol, null, null, host, port, path, CollectionUtils.toStringMap(pairs));
-    }
-
-    public URL(String protocol, String host, int port, String path, Map<String, String> parameters) {
-        super(protocol, null, null, host, port, path, parameters);
-    }
-
-    public URL(String protocol, String username, String password, String host, int port, String path) {
-        super(protocol, username, password, host, port, path, (Map<String, String>) null);
-    }
-
-    public URL(String protocol, String username, String password, String host, int port, String path, String... pairs) {
-        super(protocol, username, password, host, port, path, CollectionUtils.toStringMap(pairs));
-    }
-
-    public URL(String protocol, String username, String password, String host, int port, String path, Map<String, String> parameters) {
-        super(protocol, username, password, host, port, path, parameters);
-    }
-
-    public static URL valueOf(String url) {
-        org.apache.dubbo.common.URL result = org.apache.dubbo.common.URL.valueOf(url);
-        return new URL(result);
-    }
-
-    public static String encode(String value) {
-        return org.apache.dubbo.common.URL.encode(value);
-    }
-
-    public static String decode(String value) {
-        return org.apache.dubbo.common.URL.decode(value);
-    }
-
-    public String getProtocol() {
-        return super.getProtocol();
-    }
-
-    public URL setProtocol(String protocol) {
-        return new URL(protocol, super.getUsername(), super.getPassword(), super.getHost(), super.getPort(), super.getPath(), super.getParameters());
-    }
-
-    public String getUsername() {
-        return super.getUsername();
-    }
-
-    public URL setUsername(String username) {
-        return new URL(super.getProtocol(), username, super.getPassword(), super.getHost(), super.getPort(), super.getPath(), super.getParameters());
-    }
-
-    public String getPassword() {
-        return super.getPassword();
-    }
-
-    public URL setPassword(String password) {
-        return new URL(super.getProtocol(), super.getUsername(), password, super.getHost(), super.getPort(), super.getPath(), super.getParameters());
-    }
-
-    public String getAuthority() {
-        return super.getAuthority();
-    }
-
-    public String getHost() {
-        return super.getHost();
-    }
-
-    public URL setHost(String host) {
-        return new URL(super.getProtocol(), super.getUsername(), super.getPassword(), host, super.getPort(), super.getPath(), super.getParameters());
-    }
-
-    public String getIp() {
-        return super.getIp();
-    }
-
-    public int getPort() {
-        return super.getPort();
-    }
-
-    public URL setPort(int port) {
-        return new URL(super.getProtocol(), super.getUsername(), super.getPassword(), super.getHost(), port, super.getPath(), super.getParameters());
-    }
-
-    public int getPort(int defaultPort) {
-        return super.getPort();
-    }
-
-    public String getAddress() {
-        return super.getAddress();
-    }
-
-    public URL setAddress(String address) {
-        org.apache.dubbo.common.URL result = super.setAddress(address);
-        return new URL(result);
-    }
-
-    public String getBackupAddress() {
-        return super.getBackupAddress();
-    }
-
-    public String getBackupAddress(int defaultPort) {
-        return super.getBackupAddress(defaultPort);
-    }
-
-//    public List<URL> getBackupUrls() {
-//        List<org.apache.dubbo.common.URL> res = super.getBackupUrls();
-//        return res.stream().map(url -> new URL(url)).collect(Collectors.toList());
-//    }
-
-    public String getPath() {
-        return super.getPath();
-    }
-
-    public URL setPath(String path) {
-        return new URL(super.getProtocol(), super.getUsername(), super.getPassword(), super.getHost(), super.getPort(), path, super.getParameters());
-    }
-
-    public String getAbsolutePath() {
-        return super.getAbsolutePath();
-    }
-
-    public Map<String, String> getParameters() {
-        return super.getParameters();
-    }
-
-    public String getParameterAndDecoded(String key) {
-        return super.getParameterAndDecoded(key);
-    }
-
-    public String getParameterAndDecoded(String key, String defaultValue) {
-        return super.decode(getParameter(key, defaultValue));
-    }
-
-    public String getParameter(String key) {
-        return super.getParameter(key);
-    }
-
-    public String getParameter(String key, String defaultValue) {
-        return super.getParameter(key, defaultValue);
-    }
-
-    public String[] getParameter(String key, String[] defaultValue) {
-        return super.getParameter(key, defaultValue);
-    }
-
-    public URL getUrlParameter(String key) {
-        org.apache.dubbo.common.URL result = super.getUrlParameter(key);
-        return new URL(result);
-    }
-
-    public double getParameter(String key, double defaultValue) {
-        return super.getParameter(key, defaultValue);
-    }
-
-    public float getParameter(String key, float defaultValue) {
-        return super.getParameter(key, defaultValue);
-    }
-
-    public long getParameter(String key, long defaultValue) {
-        return super.getParameter(key, defaultValue);
-    }
-
-    public int getParameter(String key, int defaultValue) {
-        return super.getParameter(key, defaultValue);
-    }
-
-    public short getParameter(String key, short defaultValue) {
-        return super.getParameter(key, defaultValue);
-    }
-
-    public byte getParameter(String key, byte defaultValue) {
-        return super.getParameter(key, defaultValue);
-    }
-
-    public float getPositiveParameter(String key, float defaultValue) {
-        return super.getPositiveParameter(key, defaultValue);
-    }
-
-    public double getPositiveParameter(String key, double defaultValue) {
-        return super.getPositiveParameter(key, defaultValue);
-    }
-
-    public long getPositiveParameter(String key, long defaultValue) {
-        return super.getPositiveParameter(key, defaultValue);
-    }
-
-    public int getPositiveParameter(String key, int defaultValue) {
-        return super.getPositiveParameter(key, defaultValue);
-    }
-
-    public short getPositiveParameter(String key, short defaultValue) {
-        return super.getPositiveParameter(key, defaultValue);
-    }
-
-    public byte getPositiveParameter(String key, byte defaultValue) {
-        return super.getPositiveParameter(key, defaultValue);
-    }
-
-    public char getParameter(String key, char defaultValue) {
-        return super.getParameter(key, defaultValue);
-    }
-
-    public boolean getParameter(String key, boolean defaultValue) {
-        return super.getParameter(key, defaultValue);
-    }
-
-    public boolean hasParameter(String key) {
-        return super.hasParameter(key);
-    }
-
-    public String getMethodParameterAndDecoded(String method, String key) {
-        return super.getMethodParameterAndDecoded(method, key);
-    }
-
-    public String getMethodParameterAndDecoded(String method, String key, String defaultValue) {
-        return super.getMethodParameterAndDecoded(method, key, defaultValue);
-    }
-
-    public String getMethodParameter(String method, String key) {
-        return super.getMethodParameter(method, key);
-    }
-
-    public String getMethodParameter(String method, String key, String defaultValue) {
-        return super.getMethodParameter(method, key, defaultValue);
-    }
-
-    public double getMethodParameter(String method, String key, double defaultValue) {
-        return super.getMethodParameter(method, key, defaultValue);
-    }
-
-    public float getMethodParameter(String method, String key, float defaultValue) {
-        return super.getMethodParameter(method, key, defaultValue);
-    }
-
-    public long getMethodParameter(String method, String key, long defaultValue) {
-        return super.getMethodParameter(method, key, defaultValue);
-    }
-
-    public int getMethodParameter(String method, String key, int defaultValue) {
-        return super.getMethodParameter(method, key, defaultValue);
-    }
-
-    public short getMethodParameter(String method, String key, short defaultValue) {
-        return super.getMethodParameter(method, key, defaultValue);
-    }
-
-    public byte getMethodParameter(String method, String key, byte defaultValue) {
-        return super.getMethodParameter(method, key, defaultValue);
-    }
-
-    public double getMethodPositiveParameter(String method, String key, double defaultValue) {
-        return super.getMethodPositiveParameter(method, key, defaultValue);
-    }
-
-    public float getMethodPositiveParameter(String method, String key, float defaultValue) {
-        return super.getMethodPositiveParameter(method, key, defaultValue);
-    }
-
-    public long getMethodPositiveParameter(String method, String key, long defaultValue) {
-        return super.getMethodPositiveParameter(method, key, defaultValue);
-    }
-
-    public int getMethodPositiveParameter(String method, String key, int defaultValue) {
-        return super.getMethodPositiveParameter(method, key, defaultValue);
-    }
-
-    public short getMethodPositiveParameter(String method, String key, short defaultValue) {
-        return super.getMethodPositiveParameter(method, key, defaultValue);
-    }
-
-    public byte getMethodPositiveParameter(String method, String key, byte defaultValue) {
-        return super.getMethodPositiveParameter(method, key, defaultValue);
-    }
-
-    public char getMethodParameter(String method, String key, char defaultValue) {
-        return super.getMethodParameter(method, key, defaultValue);
-    }
-
-    public boolean getMethodParameter(String method, String key, boolean defaultValue) {
-        return super.getMethodParameter(method, key, defaultValue);
-    }
-
-    public boolean hasMethodParameter(String method, String key) {
-        return super.hasMethodParameter(method, key);
-    }
-
-    public boolean isLocalHost() {
-        return super.isLocalHost();
-    }
-
-    public boolean isAnyHost() {
-        return super.isAnyHost();
-    }
-
-    public URL addParameterAndEncoded(String key, String value) {
-        if (value == null || value.length() == 0) {
-            return this;
-        }
-        return addParameter(key, encode(value));
-    }
-
-    public URL addParameter(String key, boolean value) {
-        return addParameter(key, String.valueOf(value));
-    }
-
-    public URL addParameter(String key, char value) {
-        return addParameter(key, String.valueOf(value));
-    }
-
-    public URL addParameter(String key, byte value) {
-        return addParameter(key, String.valueOf(value));
-    }
-
-    public URL addParameter(String key, short value) {
-        return addParameter(key, String.valueOf(value));
-    }
-
-    public URL addParameter(String key, int value) {
-        return addParameter(key, String.valueOf(value));
-    }
-
-    public URL addParameter(String key, long value) {
-        return addParameter(key, String.valueOf(value));
-    }
-
-    public URL addParameter(String key, float value) {
-        return addParameter(key, String.valueOf(value));
-    }
-
-    public URL addParameter(String key, double value) {
-        return addParameter(key, String.valueOf(value));
-    }
-
-    public URL addParameter(String key, Enum<?> value) {
-        if (value == null) return this;
-        return addParameter(key, String.valueOf(value));
-    }
-
-    public URL addParameter(String key, Number value) {
-        if (value == null) return this;
-        return addParameter(key, String.valueOf(value));
-    }
-
-    public URL addParameter(String key, CharSequence value) {
-        if (value == null || value.length() == 0) return this;
-        return addParameter(key, String.valueOf(value));
-    }
-
-    public URL addParameter(String key, String value) {
-        org.apache.dubbo.common.URL result = super.addParameter(key, value);
-        return new URL(result);
-    }
-
-    public URL addParameterIfAbsent(String key, String value) {
-        org.apache.dubbo.common.URL result = super.addParameterIfAbsent(key, value);
-        return new URL(result);
-    }
-
-    public URL addParameters(Map<String, String> parameters) {
-        org.apache.dubbo.common.URL result = super.addParameters(parameters);
-        return new URL(result);
-    }
-
-    public URL addParametersIfAbsent(Map<String, String> parameters) {
-        org.apache.dubbo.common.URL result = super.addParametersIfAbsent(parameters);
-        return new URL(result);
-    }
-
-    public URL addParameters(String... pairs) {
-        org.apache.dubbo.common.URL result = super.addParameters(pairs);
-        return new URL(result);
-    }
-
-    public URL addParameterString(String query) {
-        org.apache.dubbo.common.URL result = super.addParameterString(query);
-        return new URL(result);
-    }
-
-    public URL removeParameter(String key) {
-        org.apache.dubbo.common.URL result = super.removeParameter(key);
-        return new URL(result);
-    }
-
-    public URL removeParameters(Collection<String> keys) {
-        org.apache.dubbo.common.URL result = super.removeParameters(keys);
-        return new URL(result);
-    }
-
-    public URL removeParameters(String... keys) {
-        org.apache.dubbo.common.URL result = super.removeParameters(keys);
-        return new URL(result);
-    }
-
-    public URL clearParameters() {
-        org.apache.dubbo.common.URL result = super.clearParameters();
-        return new URL(result);
-    }
-
-    public String getRawParameter(String key) {
-        return super.getRawParameter(key);
-    }
-
-    public Map<String, String> toMap() {
-        return super.toMap();
-    }
-
-    @Override
-    public String toString() {
-        return super.toString();
-    }
-
-    public String toString(String... parameters) {
-        return super.toString(parameters);
-    }
-
-    public String toIdentityString() {
-        return super.toIdentityString();
-    }
-
-    public String toIdentityString(String... parameters) {
-        return super.toIdentityString(parameters);
-    }
-
-    public String toFullString() {
-        return super.toFullString();
-    }
-
-    public String toFullString(String... parameters) {
-        return super.toFullString(parameters);
-    }
-
-    public String toParameterString() {
-        return super.toParameterString();
-    }
-
-    public String toParameterString(String... parameters) {
-        return super.toParameterString(parameters);
-    }
-
-    public java.net.URL toJavaURL() {
-        return super.toJavaURL();
-    }
-
-    public InetSocketAddress toInetSocketAddress() {
-        return super.toInetSocketAddress();
-    }
-
-    public String getServiceKey() {
-        return super.getServiceKey();
-    }
-
-    public String toServiceStringWithoutResolving() {
-        return super.toServiceStringWithoutResolving();
-    }
-
-    public String toServiceString() {
-        return super.toServiceString();
-    }
-
-    public String getServiceInterface() {
-        return super.getServiceInterface();
-    }
-
-    public URL setServiceInterface(String service) {
-        org.apache.dubbo.common.URL result = super.setServiceInterface(service);
-        return new URL(result);
-    }
-
-    public org.apache.dubbo.common.URL getOriginalURL() {
-        return new org.apache.dubbo.common.URL(super.getProtocol(), super.getUsername(), super.getPassword(),
-                super.getHost(), super.getPort(), super.getPath(), super.getParameters());
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/compiler/Compiler.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/compiler/Compiler.java
deleted file mode 100644
index 548a6ab9a6..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/compiler/Compiler.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.common.compiler;
-
-@Deprecated
-public interface Compiler extends org.apache.dubbo.common.compiler.Compiler {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/extension/ExtensionFactory.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/extension/ExtensionFactory.java
deleted file mode 100644
index 9c8599bec9..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/extension/ExtensionFactory.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.common.extension;
-
-@Deprecated
-public interface ExtensionFactory extends org.apache.dubbo.common.extension.ExtensionFactory {
-
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/logger/LoggerAdapter.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/logger/LoggerAdapter.java
deleted file mode 100644
index ed26a62034..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/logger/LoggerAdapter.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.common.logger;
-
-@Deprecated
-public interface LoggerAdapter extends org.apache.dubbo.common.logger.LoggerAdapter {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/serialize/ObjectInput.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/serialize/ObjectInput.java
deleted file mode 100644
index a6caf8828e..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/serialize/ObjectInput.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.common.serialize;
-
-@Deprecated
-public interface ObjectInput extends org.apache.dubbo.common.serialize.ObjectInput {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/serialize/ObjectOutput.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/serialize/ObjectOutput.java
deleted file mode 100644
index 5d57dc7762..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/serialize/ObjectOutput.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.common.serialize;
-
-@Deprecated
-public interface ObjectOutput extends org.apache.dubbo.common.serialize.ObjectOutput {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/serialize/Serialization.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/serialize/Serialization.java
deleted file mode 100644
index f5f59989bd..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/serialize/Serialization.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.dubbo.common.serialize;
-
-import com.alibaba.dubbo.common.URL;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-@Deprecated
-public interface Serialization extends org.apache.dubbo.common.serialize.Serialization {
-
-    ObjectOutput serialize(URL url, OutputStream output) throws IOException;
-
-    ObjectInput deserialize(URL url, InputStream input) throws IOException;
-
-    @Override
-    default org.apache.dubbo.common.serialize.ObjectOutput serialize(org.apache.dubbo.common.URL url, OutputStream output) throws IOException {
-        return this.serialize(new URL(url), output);
-    }
-
-    @Override
-    default org.apache.dubbo.common.serialize.ObjectInput deserialize(org.apache.dubbo.common.URL url, InputStream input) throws IOException {
-        return this.deserialize(new URL(url), input);
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/status/Status.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/status/Status.java
deleted file mode 100644
index 04600acf3c..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/status/Status.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.dubbo.common.status;
-
-@Deprecated
-public class Status extends org.apache.dubbo.common.status.Status {
-
-    public Status(Level level) {
-        super(level);
-    }
-
-    public Status(Level level, String message) {
-        super(level, message);
-    }
-
-    public Status(Level level, String message, String description) {
-        super(level, message, description);
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/status/StatusChecker.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/status/StatusChecker.java
deleted file mode 100644
index a140547545..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/status/StatusChecker.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.dubbo.common.status;
-
-@Deprecated
-public interface StatusChecker extends org.apache.dubbo.common.status.StatusChecker {
-
-    Status check();
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/store/DataStore.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/store/DataStore.java
deleted file mode 100644
index 81a25a8c4f..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/store/DataStore.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.common.store;
-
-@Deprecated
-public interface DataStore extends org.apache.dubbo.common.store.DataStore {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/threadpool/ThreadPool.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/threadpool/ThreadPool.java
deleted file mode 100644
index 45bb6f4566..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/threadpool/ThreadPool.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.dubbo.common.threadpool;
-
-import org.apache.dubbo.common.URL;
-
-import java.util.concurrent.Executor;
-
-@Deprecated
-public interface ThreadPool extends org.apache.dubbo.common.threadpool.ThreadPool {
-
-    Executor getExecutor(com.alibaba.dubbo.common.URL url);
-
-    @Override
-    default Executor getExecutor(URL url) {
-        return getExecutor(new com.alibaba.dubbo.common.URL(url));
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java
deleted file mode 100644
index f17e7ed516..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.dubbo.config;
-
-@Deprecated
-public class ApplicationConfig extends org.apache.dubbo.config.ApplicationConfig {
-
-    public ApplicationConfig() {
-        super();
-    }
-
-    public ApplicationConfig(String name) {
-        super(name);
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ArgumentConfig.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ArgumentConfig.java
deleted file mode 100644
index 2ba33bbdf4..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ArgumentConfig.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.config;
-
-@Deprecated
-public class ArgumentConfig extends org.apache.dubbo.config.ArgumentConfig {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ConsumerConfig.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ConsumerConfig.java
deleted file mode 100644
index 320ec47ec6..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ConsumerConfig.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.config;
-
-@Deprecated
-public class ConsumerConfig extends org.apache.dubbo.config.ConsumerConfig {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/MethodConfig.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/MethodConfig.java
deleted file mode 100644
index c3d13e9216..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/MethodConfig.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * 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.dubbo.config;
-
-@Deprecated
-public class MethodConfig extends org.apache.dubbo.config.MethodConfig {
-
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ModuleConfig.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ModuleConfig.java
deleted file mode 100644
index 8b75279f8c..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ModuleConfig.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.dubbo.config;
-
-@Deprecated
-public class ModuleConfig extends org.apache.dubbo.config.ModuleConfig {
-
-    public ModuleConfig() {
-    }
-
-    public ModuleConfig(String name) {
-        super(name);
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/MonitorConfig.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/MonitorConfig.java
deleted file mode 100644
index 0c5d17525b..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/MonitorConfig.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.dubbo.config;
-
-@Deprecated
-public class MonitorConfig extends org.apache.dubbo.config.MonitorConfig {
-    public MonitorConfig() {
-    }
-
-    public MonitorConfig(String address) {
-        super(address);
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ProtocolConfig.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ProtocolConfig.java
deleted file mode 100644
index 0835ef0cb8..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ProtocolConfig.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.dubbo.config;
-
-@Deprecated
-public class ProtocolConfig extends org.apache.dubbo.config.ProtocolConfig {
-
-    public ProtocolConfig() {
-    }
-
-    public ProtocolConfig(String name) {
-        super(name);
-    }
-
-    public ProtocolConfig(String name, int port) {
-        super(name, port);
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ProviderConfig.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ProviderConfig.java
deleted file mode 100644
index fb353bf2f0..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ProviderConfig.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.config;
-
-@Deprecated
-public class ProviderConfig extends org.apache.dubbo.config.ProviderConfig {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ReferenceConfig.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ReferenceConfig.java
deleted file mode 100644
index 026fe4e989..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ReferenceConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.dubbo.config;
-
-import org.apache.dubbo.config.annotation.Reference;
-
-@Deprecated
-public class ReferenceConfig<T> extends org.apache.dubbo.config.ReferenceConfig<T> {
-
-    public ReferenceConfig() {
-    }
-
-    public ReferenceConfig(Reference reference) {
-        super(reference);
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/RegistryConfig.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/RegistryConfig.java
deleted file mode 100644
index 501f918ba0..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/RegistryConfig.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.dubbo.config;
-
-@Deprecated
-public class RegistryConfig extends org.apache.dubbo.config.RegistryConfig {
-
-    public RegistryConfig() {
-    }
-
-    public RegistryConfig(String address) {
-        super(address);
-    }
-
-    public RegistryConfig(String address, String protocol) {
-        super(address, protocol);
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ServiceConfig.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ServiceConfig.java
deleted file mode 100644
index f0f22d76cb..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ServiceConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.dubbo.config;
-
-import org.apache.dubbo.config.annotation.Service;
-
-@Deprecated
-public class ServiceConfig<T> extends org.apache.dubbo.config.ServiceConfig<T> {
-
-    public ServiceConfig() {
-    }
-
-    public ServiceConfig(Service service) {
-        super(service);
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/annotation/Reference.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/annotation/Reference.java
deleted file mode 100644
index 4c1ca979a1..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/annotation/Reference.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * 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.dubbo.config.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Deprecated
-@Documented
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
-public @interface Reference {
-
-    Class<?> interfaceClass() default void.class;
-
-    String interfaceName() default "";
-
-    String version() default "";
-
-    String group() default "";
-
-    String url() default "";
-
-    String client() default "";
-
-    boolean generic() default false;
-
-    boolean injvm() default false;
-
-    boolean check() default true;
-
-    boolean init() default false;
-
-    boolean lazy() default false;
-
-    boolean stubevent() default false;
-
-    String reconnect() default "";
-
-    boolean sticky() default false;
-
-    String proxy() default "";
-
-    String stub() default "";
-
-    String cluster() default "";
-
-    int connections() default 0;
-
-    int callbacks() default 0;
-
-    String onconnect() default "";
-
-    String ondisconnect() default "";
-
-    String owner() default "";
-
-    String layer() default "";
-
-    int retries() default 2;
-
-    String loadbalance() default "";
-
-    boolean async() default false;
-
-    int actives() default 0;
-
-    boolean sent() default false;
-
-    String mock() default "";
-
-    String validation() default "";
-
-    int timeout() default 0;
-
-    String cache() default "";
-
-    String[] filter() default {};
-
-    String[] listener() default {};
-
-    String[] parameters() default {};
-
-    String application() default "";
-
-    String module() default "";
-
-    String consumer() default "";
-
-    String monitor() default "";
-
-    String[] registry() default {};
-
-}
-
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/annotation/Service.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/annotation/Service.java
deleted file mode 100644
index 1919a1ec29..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/annotation/Service.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * 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.dubbo.config.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Deprecated
-@Documented
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.TYPE})
-@Inherited
-public @interface Service {
-
-    Class<?> interfaceClass() default void.class;
-
-    String interfaceName() default "";
-
-    String version() default "";
-
-    String group() default "";
-
-    String path() default "";
-
-    boolean export() default false;
-
-    String token() default "";
-
-    boolean deprecated() default false;
-
-    boolean dynamic() default false;
-
-    String accesslog() default "";
-
-    int executes() default 0;
-
-    boolean register() default false;
-
-    int weight() default 0;
-
-    String document() default "";
-
-    int delay() default 0;
-
-    String local() default "";
-
-    String stub() default "";
-
-    String cluster() default "";
-
-    String proxy() default "";
-
-    int connections() default 0;
-
-    int callbacks() default 0;
-
-    String onconnect() default "";
-
-    String ondisconnect() default "";
-
-    String owner() default "";
-
-    String layer() default "";
-
-    int retries() default 0;
-
-    String loadbalance() default "";
-
-    boolean async() default false;
-
-    int actives() default 0;
-
-    boolean sent() default false;
-
-    String mock() default "";
-
-    String validation() default "";
-
-    int timeout() default 0;
-
-    String cache() default "";
-
-    String[] filter() default {};
-
-    String[] listener() default {};
-
-    String[] parameters() default {};
-
-    String application() default "";
-
-    String module() default "";
-
-    String provider() default "";
-
-    String[] protocol() default {};
-
-    String monitor() default "";
-
-    String[] registry() default {};
-
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/spring/context/annotation/EnableDubbo.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/spring/context/annotation/EnableDubbo.java
deleted file mode 100644
index 0c25432403..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/spring/context/annotation/EnableDubbo.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.dubbo.config.spring.context.annotation;
-
-import org.apache.dubbo.config.AbstractConfig;
-import org.apache.dubbo.config.spring.context.annotation.CompatibleDubboComponentScan;
-import org.apache.dubbo.config.spring.context.annotation.EnableDubboConfig;
-import org.springframework.core.annotation.AliasFor;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Deprecated
-@Target({ElementType.TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-@Inherited
-@Documented
-@EnableDubboConfig
-@CompatibleDubboComponentScan
-public @interface EnableDubbo {
-
-    /**
-     * Base packages to scan for annotated @Service classes.
-     * <p>
-     * Use {@link #scanBasePackageClasses()} for a type-safe alternative to String-based
-     * package names.
-     *
-     * @return the base packages to scan
-     * @see CompatibleDubboComponentScan#basePackages()
-     */
-    @AliasFor(annotation = CompatibleDubboComponentScan.class, attribute = "basePackages")
-    String[] scanBasePackages() default {};
-
-    /**
-     * Type-safe alternative to {@link #scanBasePackages()} for specifying the packages to
-     * scan for annotated @Service classes. The package of each class specified will be
-     * scanned.
-     *
-     * @return classes from the base packages to scan
-     * @see CompatibleDubboComponentScan#basePackageClasses
-     */
-    @AliasFor(annotation = CompatibleDubboComponentScan.class, attribute = "basePackageClasses")
-    Class<?>[] scanBasePackageClasses() default {};
-
-
-    /**
-     * It indicates whether {@link AbstractConfig} binding to multiple Spring Beans.
-     *
-     * @return the default value is <code>false</code>
-     * @see EnableDubboConfig#multiple()
-     */
-    @AliasFor(annotation = EnableDubboConfig.class, attribute = "multiple")
-    boolean multipleConfig() default false;
-
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/Container.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/Container.java
deleted file mode 100644
index 4f236dd93a..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/container/Container.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.container;
-
-@Deprecated
-public interface Container extends org.apache.dubbo.container.Container {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/monitor/Monitor.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/monitor/Monitor.java
deleted file mode 100644
index 7444d86573..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/monitor/Monitor.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.dubbo.monitor;
-
-import org.apache.dubbo.common.URL;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-@Deprecated
-public interface Monitor extends org.apache.dubbo.monitor.Monitor {
-
-    com.alibaba.dubbo.common.URL getUrl();
-
-    void collect(com.alibaba.dubbo.common.URL statistics);
-
-    List<com.alibaba.dubbo.common.URL> lookup(com.alibaba.dubbo.common.URL query);
-
-    @Override
-    default void collect(URL statistics) {
-        this.collect(new com.alibaba.dubbo.common.URL(statistics));
-    }
-
-    @Override
-    default List<URL> lookup(URL query) {
-        return this.lookup(new com.alibaba.dubbo.common.URL(query)).stream().map(url -> url.getOriginalURL()).collect(Collectors.toList());
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/monitor/MonitorFactory.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/monitor/MonitorFactory.java
deleted file mode 100644
index ec9e6a524d..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/monitor/MonitorFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.dubbo.monitor;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.monitor.Monitor;
-
-@Deprecated
-public interface MonitorFactory extends org.apache.dubbo.monitor.MonitorFactory {
-
-    Monitor getMonitor(com.alibaba.dubbo.common.URL url);
-
-    @Override
-    default Monitor getMonitor(URL url) {
-        return this.getMonitor(new com.alibaba.dubbo.common.URL(url));
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/qos/command/BaseCommand.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/qos/command/BaseCommand.java
deleted file mode 100644
index 1f7bc5ba4c..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/qos/command/BaseCommand.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.dubbo.qos.command;
-
-import org.apache.dubbo.qos.command.CommandContext;
-
-@Deprecated
-public interface BaseCommand extends org.apache.dubbo.qos.command.BaseCommand {
-
-    String execute(com.alibaba.dubbo.qos.command.CommandContext commandContext, String[] args);
-
-    @Override
-    default String execute(CommandContext commandContext, String[] args) {
-        return this.execute(new com.alibaba.dubbo.qos.command.CommandContext(commandContext), args);
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/qos/command/CommandContext.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/qos/command/CommandContext.java
deleted file mode 100644
index 2b6a4d9da2..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/qos/command/CommandContext.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.dubbo.qos.command;
-
-@Deprecated
-public class CommandContext extends org.apache.dubbo.qos.command.CommandContext {
-
-    public CommandContext(org.apache.dubbo.qos.command.CommandContext context) {
-        super(context.getCommandName(), context.getArgs(), context.isHttp());
-        setRemote(context.getRemote());
-        setOrginRequest(context.getOrginRequest());
-    }
-
-    public CommandContext(String commandName) {
-        super(commandName);
-    }
-
-    public CommandContext(String commandName, String[] args, boolean isHttp) {
-        super(commandName, args, isHttp);
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/registry/NotifyListener.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/registry/NotifyListener.java
deleted file mode 100644
index d7e82b5e14..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/registry/NotifyListener.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.dubbo.registry;
-
-import com.alibaba.dubbo.common.URL;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-@Deprecated
-public interface NotifyListener {
-
-    void notify(List<URL> urls);
-
-    class CompatibleNotifyListener implements NotifyListener {
-
-        private org.apache.dubbo.registry.NotifyListener listener;
-
-        public CompatibleNotifyListener(org.apache.dubbo.registry.NotifyListener listener) {
-            this.listener = listener;
-        }
-
-        @Override
-        public void notify(List<URL> urls) {
-            if (listener != null) {
-                listener.notify(urls.stream().map(url -> url.getOriginalURL()).collect(Collectors.toList()));
-            }
-        }
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/registry/Registry.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/registry/Registry.java
deleted file mode 100644
index c5a84231a4..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/registry/Registry.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.dubbo.registry;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.registry.NotifyListener;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-@Deprecated
-public interface Registry extends org.apache.dubbo.registry.Registry {
-
-    com.alibaba.dubbo.common.URL getUrl();
-
-    void register(com.alibaba.dubbo.common.URL url);
-
-    void unregister(com.alibaba.dubbo.common.URL url);
-
-    void subscribe(com.alibaba.dubbo.common.URL url, com.alibaba.dubbo.registry.NotifyListener listener);
-
-    void unsubscribe(com.alibaba.dubbo.common.URL url, com.alibaba.dubbo.registry.NotifyListener listener);
-
-    List<com.alibaba.dubbo.common.URL> lookup(com.alibaba.dubbo.common.URL url);
-
-    @Override
-    default void register(URL url) {
-        this.register(new com.alibaba.dubbo.common.URL(url));
-    }
-
-    @Override
-    default void unregister(URL url) {
-        this.unregister(new com.alibaba.dubbo.common.URL(url));
-    }
-
-    @Override
-    default void subscribe(URL url, NotifyListener listener) {
-        this.subscribe(new com.alibaba.dubbo.common.URL(url),
-                new com.alibaba.dubbo.registry.NotifyListener.CompatibleNotifyListener(listener));
-    }
-
-    @Override
-    default void unsubscribe(URL url, NotifyListener listener) {
-        this.unsubscribe(new com.alibaba.dubbo.common.URL(url),
-                new com.alibaba.dubbo.registry.NotifyListener.CompatibleNotifyListener(listener));
-    }
-
-    @Override
-    default List<URL> lookup(URL url) {
-        return this.lookup(new com.alibaba.dubbo.common.URL(url)).stream().map(u -> u.getOriginalURL()).
-                collect(Collectors.toList());
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/registry/RegistryFactory.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/registry/RegistryFactory.java
deleted file mode 100644
index 9e27883911..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/registry/RegistryFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.dubbo.registry;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.registry.Registry;
-
-@Deprecated
-public interface RegistryFactory extends org.apache.dubbo.registry.RegistryFactory {
-
-    Registry getRegistry(com.alibaba.dubbo.common.URL url);
-
-    @Override
-    default Registry getRegistry(URL url) {
-        return this.getRegistry(new com.alibaba.dubbo.common.URL(url));
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Channel.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Channel.java
deleted file mode 100644
index c1606e7fac..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Channel.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.dubbo.remoting;
-
-@Deprecated
-public interface Channel extends org.apache.dubbo.remoting.Channel {
-
-    com.alibaba.dubbo.common.URL getUrl();
-
-    com.alibaba.dubbo.remoting.ChannelHandler getChannelHandler();
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/ChannelHandler.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/ChannelHandler.java
deleted file mode 100644
index 4be71fe31a..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/ChannelHandler.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.dubbo.remoting;
-
-import org.apache.dubbo.remoting.Channel;
-import org.apache.dubbo.remoting.RemotingException;
-
-@Deprecated
-public interface ChannelHandler extends org.apache.dubbo.remoting.ChannelHandler {
-
-    void connected(com.alibaba.dubbo.remoting.Channel channel) throws com.alibaba.dubbo.remoting.RemotingException;
-
-    void disconnected(com.alibaba.dubbo.remoting.Channel channel) throws com.alibaba.dubbo.remoting.RemotingException;
-
-    void sent(com.alibaba.dubbo.remoting.Channel channel, Object message) throws com.alibaba.dubbo.remoting.RemotingException;
-
-    void received(com.alibaba.dubbo.remoting.Channel channel, Object message) throws com.alibaba.dubbo.remoting.RemotingException;
-
-    void caught(com.alibaba.dubbo.remoting.Channel channel, Throwable exception) throws com.alibaba.dubbo.remoting.RemotingException;
-
-    @Override
-    default void connected(Channel channel) throws RemotingException {
-
-    }
-
-    @Override
-    default void disconnected(Channel channel) throws RemotingException {
-
-    }
-
-    @Override
-    default void sent(Channel channel, Object message) throws RemotingException {
-
-    }
-
-    @Override
-    default void received(Channel channel, Object message) throws RemotingException {
-
-    }
-
-    @Override
-    default void caught(Channel channel, Throwable exception) throws RemotingException {
-
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Codec.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Codec.java
deleted file mode 100644
index c398fe7110..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Codec.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.remoting;
-
-@Deprecated
-public interface Codec extends org.apache.dubbo.remoting.Codec {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Codec2.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Codec2.java
deleted file mode 100644
index 5bb4bb25ff..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Codec2.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.remoting;
-
-@Deprecated
-public interface Codec2 extends org.apache.dubbo.remoting.Codec2 {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Dispatcher.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Dispatcher.java
deleted file mode 100644
index 3ec02d45c2..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Dispatcher.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.dubbo.remoting;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.remoting.ChannelHandler;
-
-@Deprecated
-public interface Dispatcher extends org.apache.dubbo.remoting.Dispatcher {
-
-    com.alibaba.dubbo.remoting.ChannelHandler dispatch(com.alibaba.dubbo.remoting.ChannelHandler handler,
-                                                       com.alibaba.dubbo.common.URL url);
-
-    @Override
-    default ChannelHandler dispatch(ChannelHandler handler, URL url) {
-        return null;
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/RemotingException.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/RemotingException.java
deleted file mode 100644
index 32d6fcd4d2..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/RemotingException.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.dubbo.remoting;
-
-import org.apache.dubbo.remoting.Channel;
-
-import java.net.InetSocketAddress;
-
-@Deprecated
-public class RemotingException extends org.apache.dubbo.remoting.RemotingException {
-
-    public RemotingException(Channel channel, String msg) {
-        super(channel, msg);
-    }
-
-    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, String message) {
-        super(localAddress, remoteAddress, message);
-    }
-
-    public RemotingException(Channel channel, Throwable cause) {
-        super(channel, cause);
-    }
-
-    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, Throwable cause) {
-        super(localAddress, remoteAddress, cause);
-    }
-
-    public RemotingException(Channel channel, String message, Throwable cause) {
-        super(channel, message, cause);
-    }
-
-    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, String message, Throwable cause) {
-        super(localAddress, remoteAddress, message, cause);
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Transporter.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Transporter.java
deleted file mode 100644
index 72d81fd615..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/Transporter.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.remoting;
-
-@Deprecated
-public interface Transporter extends org.apache.dubbo.remoting.Transporter {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/exchange/Exchanger.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/exchange/Exchanger.java
deleted file mode 100644
index b8f20f65b2..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/exchange/Exchanger.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.remoting.exchange;
-
-@Deprecated
-public interface Exchanger extends org.apache.dubbo.remoting.exchange.Exchanger {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/http/HttpBinder.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/http/HttpBinder.java
deleted file mode 100644
index 6deaab96f3..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/http/HttpBinder.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.remoting.http;
-
-@Deprecated
-public interface HttpBinder extends org.apache.dubbo.remoting.http.HttpBinder {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/p2p/Networker.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/p2p/Networker.java
deleted file mode 100644
index a2f9f41d21..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/p2p/Networker.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.remoting.p2p;
-
-@Deprecated
-public interface Networker extends org.apache.dubbo.remoting.p2p.Networker {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/telnet/TelnetHandler.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/telnet/TelnetHandler.java
deleted file mode 100644
index 0cd3e5d127..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/telnet/TelnetHandler.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.dubbo.remoting.telnet;
-
-import org.apache.dubbo.remoting.Channel;
-import org.apache.dubbo.remoting.RemotingException;
-
-@Deprecated
-public interface TelnetHandler extends org.apache.dubbo.remoting.telnet.TelnetHandler {
-
-    String telnet(com.alibaba.dubbo.remoting.Channel channel, String message) throws com.alibaba.dubbo.remoting.RemotingException;
-
-    @Override
-    default String telnet(Channel channel, String message) throws RemotingException {
-        return null;
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/zookeeper/ZookeeperTransporter.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/zookeeper/ZookeeperTransporter.java
deleted file mode 100644
index 61252825e8..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/remoting/zookeeper/ZookeeperTransporter.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.remoting.zookeeper;
-
-@Deprecated
-public interface ZookeeperTransporter extends org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Exporter.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Exporter.java
deleted file mode 100644
index 84ef9fe06f..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Exporter.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.dubbo.rpc;
-
-@Deprecated
-public interface Exporter<T> extends org.apache.dubbo.rpc.Exporter<T> {
-
-    Invoker<T> getInvoker();
-
-    class CompatibleExporter<T> implements Exporter<T> {
-
-        private org.apache.dubbo.rpc.Exporter<T> delegate;
-
-        public CompatibleExporter(org.apache.dubbo.rpc.Exporter<T> delegate) {
-            this.delegate = delegate;
-        }
-
-        @Override
-        public Invoker<T> getInvoker() {
-            return new Invoker.CompatibleInvoker<>(delegate.getInvoker());
-        }
-
-        @Override
-        public void unexport() {
-            delegate.unexport();
-        }
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Filter.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Filter.java
deleted file mode 100644
index 8da7202763..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Filter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.dubbo.rpc;
-
-@Deprecated
-public interface Filter extends org.apache.dubbo.rpc.Filter {
-
-    Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException;
-
-    default org.apache.dubbo.rpc.Result invoke(org.apache.dubbo.rpc.Invoker<?> invoker,
-                                               org.apache.dubbo.rpc.Invocation invocation)
-            throws org.apache.dubbo.rpc.RpcException {
-        Result.CompatibleResult result = (Result.CompatibleResult) invoke(new Invoker.CompatibleInvoker<>(invoker),
-                new Invocation.CompatibleInvocation(invocation));
-        return result.getDelegate();
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Invocation.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Invocation.java
deleted file mode 100644
index 2306e3ecb5..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Invocation.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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.dubbo.rpc;
-
-import java.util.Map;
-
-@Deprecated
-public interface Invocation extends org.apache.dubbo.rpc.Invocation {
-
-    Invoker<?> getInvoker();
-
-    default org.apache.dubbo.rpc.Invocation getOriginal() {
-        return null;
-    }
-
-    class CompatibleInvocation implements Invocation {
-
-        private org.apache.dubbo.rpc.Invocation delegate;
-
-        public CompatibleInvocation(org.apache.dubbo.rpc.Invocation invocation) {
-            this.delegate = invocation;
-        }
-
-        @Override
-        public String getMethodName() {
-            return delegate.getMethodName();
-        }
-
-        @Override
-        public Class<?>[] getParameterTypes() {
-            return delegate.getParameterTypes();
-        }
-
-        @Override
-        public Object[] getArguments() {
-            return delegate.getArguments();
-        }
-
-        @Override
-        public Map<String, String> getAttachments() {
-            return delegate.getAttachments();
-        }
-
-        @Override
-        public String getAttachment(String key) {
-            return delegate.getAttachment(key);
-        }
-
-        @Override
-        public String getAttachment(String key, String defaultValue) {
-            return delegate.getAttachment(key, defaultValue);
-        }
-
-        @Override
-        public Invoker<?> getInvoker() {
-            return new Invoker.CompatibleInvoker(delegate.getInvoker());
-        }
-
-        public org.apache.dubbo.rpc.Invocation getOriginal() {
-            return delegate;
-        }
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Invoker.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Invoker.java
deleted file mode 100644
index 3e79676540..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Invoker.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.dubbo.rpc;
-
-import org.apache.dubbo.common.URL;
-
-@Deprecated
-public interface Invoker<T> extends org.apache.dubbo.rpc.Invoker<T> {
-
-    Result invoke(org.apache.dubbo.rpc.Invocation invocation) throws RpcException;
-
-    default org.apache.dubbo.rpc.Invoker<T> getOriginal() {
-        return null;
-    }
-
-    class CompatibleInvoker<T> implements Invoker<T> {
-
-        private org.apache.dubbo.rpc.Invoker<T> invoker;
-
-        public CompatibleInvoker(org.apache.dubbo.rpc.Invoker<T> invoker) {
-            this.invoker = invoker;
-        }
-
-        @Override
-        public Class<T> getInterface() {
-            return invoker.getInterface();
-        }
-
-        @Override
-        public Result invoke(org.apache.dubbo.rpc.Invocation invocation) throws RpcException {
-            return new Result.CompatibleResult(invoker.invoke(((Invocation) invocation).getOriginal()));
-        }
-
-        @Override
-        public URL getUrl() {
-            return invoker.getUrl();
-        }
-
-        @Override
-        public boolean isAvailable() {
-            return invoker.isAvailable();
-        }
-
-        @Override
-        public void destroy() {
-            invoker.destroy();
-        }
-
-        public org.apache.dubbo.rpc.Invoker<T> getOriginal() {
-            return invoker;
-        }
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/InvokerListener.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/InvokerListener.java
deleted file mode 100644
index 6ba4a37b47..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/InvokerListener.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.dubbo.rpc;
-
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.RpcException;
-
-@Deprecated
-public interface InvokerListener extends org.apache.dubbo.rpc.InvokerListener {
-
-    void referred(com.alibaba.dubbo.rpc.Invoker<?> invoker) throws com.alibaba.dubbo.rpc.RpcException;
-
-    void destroyed(com.alibaba.dubbo.rpc.Invoker<?> invoker);
-
-    @Override
-    default void referred(Invoker<?> invoker) throws RpcException {
-        this.referred(new com.alibaba.dubbo.rpc.Invoker.CompatibleInvoker<>(invoker));
-    }
-
-    @Override
-    default void destroyed(Invoker<?> invoker) {
-        this.destroyed(new com.alibaba.dubbo.rpc.Invoker.CompatibleInvoker<>(invoker));
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Protocol.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Protocol.java
deleted file mode 100644
index 34d56a8e74..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Protocol.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.rpc;
-
-@Deprecated
-public interface Protocol extends org.apache.dubbo.rpc.Protocol {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/ProxyFactory.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/ProxyFactory.java
deleted file mode 100644
index 4c3c51edf8..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/ProxyFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.dubbo.rpc;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.RpcException;
-
-@Deprecated
-public interface ProxyFactory extends org.apache.dubbo.rpc.ProxyFactory {
-
-    <T> T getProxy(com.alibaba.dubbo.rpc.Invoker<T> invoker) throws com.alibaba.dubbo.rpc.RpcException;
-
-    <T> T getProxy(com.alibaba.dubbo.rpc.Invoker<T> invoker, boolean generic) throws com.alibaba.dubbo.rpc.RpcException;
-
-    <T> com.alibaba.dubbo.rpc.Invoker<T> getInvoker(T proxy, Class<T> type, com.alibaba.dubbo.common.URL url) throws com.alibaba.dubbo.rpc.RpcException;
-
-    @Override
-    default <T> T getProxy(Invoker<T> invoker) throws RpcException {
-        return getProxy(new com.alibaba.dubbo.rpc.Invoker.CompatibleInvoker<>(invoker));
-    }
-
-    @Override
-    default <T> T getProxy(Invoker<T> invoker, boolean generic) throws RpcException {
-        return getProxy(new com.alibaba.dubbo.rpc.Invoker.CompatibleInvoker<>(invoker), generic);
-    }
-
-    @Override
-    default <T> Invoker<T> getInvoker(T proxy, Class<T> type, URL url) throws RpcException {
-        return getInvoker(proxy, type, new com.alibaba.dubbo.common.URL(url));
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Result.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Result.java
deleted file mode 100644
index a661b2b6b5..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Result.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * 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.dubbo.rpc;
-
-import java.util.Map;
-
-@Deprecated
-public interface Result extends org.apache.dubbo.rpc.Result {
-
-    class CompatibleResult implements Result {
-        private org.apache.dubbo.rpc.Result delegate;
-
-        public CompatibleResult(org.apache.dubbo.rpc.Result result) {
-            this.delegate = result;
-        }
-
-        public org.apache.dubbo.rpc.Result getDelegate() {
-            return delegate;
-        }
-
-        @Override
-        public Object getValue() {
-            return delegate.getValue();
-        }
-
-        @Override
-        public Throwable getException() {
-            return delegate.getException();
-        }
-
-        @Override
-        public boolean hasException() {
-            return delegate.hasException();
-        }
-
-        @Override
-        public Object recreate() throws Throwable {
-            return delegate.recreate();
-        }
-
-        @Override
-        public Object getResult() {
-            return delegate.getResult();
-        }
-
-        @Override
-        public Map<String, String> getAttachments() {
-            return delegate.getAttachments();
-        }
-
-        @Override
-        public void addAttachments(Map<String, String> map) {
-            delegate.addAttachments(map);
-        }
-
-        @Override
-        public void setAttachments(Map<String, String> map) {
-            delegate.setAttachments(map);
-        }
-
-        @Override
-        public String getAttachment(String key) {
-            return delegate.getAttachment(key);
-        }
-
-        @Override
-        public String getAttachment(String key, String defaultValue) {
-            return delegate.getAttachment(key, defaultValue);
-        }
-
-        @Override
-        public void setAttachment(String key, String value) {
-            delegate.setAttachment(key, value);
-        }
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/RpcContext.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/RpcContext.java
deleted file mode 100644
index a5db891beb..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/RpcContext.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.rpc;
-
-@Deprecated
-public class RpcContext extends org.apache.dubbo.rpc.RpcContext {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/RpcException.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/RpcException.java
deleted file mode 100644
index 07923c6ee5..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/RpcException.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.dubbo.rpc;
-
-@Deprecated
-public class RpcException extends org.apache.dubbo.rpc.RpcException {
-    
-    public RpcException() {
-        super();
-    }
-
-    public RpcException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    public RpcException(String message) {
-        super(message);
-    }
-
-    public RpcException(Throwable cause) {
-        super(cause);
-    }
-
-    public RpcException(int code) {
-        super(code);
-    }
-
-    public RpcException(int code, String message, Throwable cause) {
-        super(code, message, cause);
-    }
-
-    public RpcException(int code, String message) {
-        super(code, message);
-    }
-
-    public RpcException(int code, Throwable cause) {
-        super(code, cause);
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/Cluster.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/Cluster.java
deleted file mode 100644
index e17ebc1dff..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/Cluster.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.dubbo.rpc.cluster;
-
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.RpcException;
-import org.apache.dubbo.rpc.cluster.Directory;
-
-@Deprecated
-public interface Cluster extends org.apache.dubbo.rpc.cluster.Cluster {
-
-    <T> com.alibaba.dubbo.rpc.Invoker<T> join(com.alibaba.dubbo.rpc.cluster.Directory<T> directory) throws
-            com.alibaba.dubbo.rpc.RpcException;
-
-    @Override
-    default <T> Invoker<T> join(Directory<T> directory) throws RpcException {
-        return null;
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/ConfiguratorFactory.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/ConfiguratorFactory.java
deleted file mode 100644
index 32798b2344..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/ConfiguratorFactory.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * 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.dubbo.rpc.cluster;
-
-@Deprecated
-public interface ConfiguratorFactory extends org.apache.dubbo.rpc.cluster.ConfiguratorFactory {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/Directory.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/Directory.java
deleted file mode 100644
index d883f84abc..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/Directory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.dubbo.rpc.cluster;
-
-import com.alibaba.dubbo.common.URL;
-
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.RpcException;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-@Deprecated
-public interface Directory<T> extends org.apache.dubbo.rpc.cluster.Directory<T> {
-
-    URL getUrl();
-
-    List<com.alibaba.dubbo.rpc.Invoker<T>> list(com.alibaba.dubbo.rpc.Invocation invocation) throws com.alibaba.dubbo.rpc.RpcException;
-
-    @Override
-    default List<Invoker<T>> list(Invocation invocation) throws RpcException {
-        List<com.alibaba.dubbo.rpc.Invoker<T>> res = this.list(new com.alibaba.dubbo.rpc.Invocation.CompatibleInvocation(invocation));
-        return res.stream().map(i -> i.getOriginal()).collect(Collectors.toList());
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/LoadBalance.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/LoadBalance.java
deleted file mode 100644
index 4c215e4e5f..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/LoadBalance.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.dubbo.rpc.cluster;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.RpcException;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-@Deprecated
-public interface LoadBalance extends org.apache.dubbo.rpc.cluster.LoadBalance {
-
-    <T> com.alibaba.dubbo.rpc.Invoker<T> select(List<com.alibaba.dubbo.rpc.Invoker<T>> invokers,
-                                                com.alibaba.dubbo.common.URL url,
-                                                com.alibaba.dubbo.rpc.Invocation invocation) throws RpcException;
-
-    @Override
-    default <T> Invoker<T> select(List<Invoker<T>> invokers, URL url, Invocation invocation) throws RpcException {
-        List<com.alibaba.dubbo.rpc.Invoker<T>> invs = invokers.stream().
-                map(invoker -> new com.alibaba.dubbo.rpc.Invoker.CompatibleInvoker<T>(invoker)).
-                collect(Collectors.toList());
-
-        return select(invs, new com.alibaba.dubbo.common.URL(url),
-                new com.alibaba.dubbo.rpc.Invocation.CompatibleInvocation(invocation));
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/Merger.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/Merger.java
deleted file mode 100644
index b5f37fbcb2..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/Merger.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.rpc.cluster;
-
-@Deprecated
-public interface Merger extends org.apache.dubbo.rpc.cluster.Merger {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/Router.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/Router.java
deleted file mode 100644
index f3d5ddca59..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/Router.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.dubbo.rpc.cluster;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.RpcException;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-@Deprecated
-public interface Router extends org.apache.dubbo.rpc.cluster.Router {
-
-    com.alibaba.dubbo.common.URL getUrl();
-
-    <T> List<com.alibaba.dubbo.rpc.Invoker<T>> route(List<com.alibaba.dubbo.rpc.Invoker<T>> invokers,
-                                                     com.alibaba.dubbo.common.URL url,
-                                                     com.alibaba.dubbo.rpc.Invocation invocation)
-            throws com.alibaba.dubbo.rpc.RpcException;
-
-    @Override
-    default <T> List<Invoker<T>> route(List<Invoker<T>> invokers, URL url, Invocation invocation) throws RpcException {
-        List<com.alibaba.dubbo.rpc.Invoker<T>> invs = invokers.stream().map(invoker ->
-                new com.alibaba.dubbo.rpc.Invoker.CompatibleInvoker<T>(invoker)).
-                collect(Collectors.toList());
-
-        List<com.alibaba.dubbo.rpc.Invoker<T>> res = this.route(invs, new com.alibaba.dubbo.common.URL(url),
-                new com.alibaba.dubbo.rpc.Invocation.CompatibleInvocation(invocation));
-
-        return res.stream().map(inv -> inv.getOriginal()).collect(Collectors.toList());
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/RouterFactory.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/RouterFactory.java
deleted file mode 100644
index 2f7a303e6b..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/RouterFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.dubbo.rpc.cluster;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.rpc.cluster.Router;
-
-@Deprecated
-public interface RouterFactory extends org.apache.dubbo.rpc.cluster.RouterFactory {
-
-    Router getRouter(com.alibaba.dubbo.common.URL url);
-
-    @Override
-    default Router getRouter(URL url) {
-        return this.getRouter(new com.alibaba.dubbo.common.URL(url));
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/RuleConverter.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/RuleConverter.java
deleted file mode 100644
index 0c53e6c7a7..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/RuleConverter.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.dubbo.rpc.cluster;
-
-import org.apache.dubbo.common.URL;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-@Deprecated
-public interface RuleConverter extends org.apache.dubbo.rpc.cluster.RuleConverter {
-
-    List<com.alibaba.dubbo.common.URL> convert(com.alibaba.dubbo.common.URL subscribeUrl, Object source);
-
-    @Override
-    default List<URL> convert(URL subscribeUrl, Object source) {
-        return this.convert(new com.alibaba.dubbo.common.URL(subscribeUrl), source).
-                stream().map(url -> url.getOriginalURL()).collect(Collectors.toList());
-    }
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java
deleted file mode 100644
index 3ec1c78522..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.rpc.cluster.loadbalance;
-
-@Deprecated
-public abstract class AbstractLoadBalance extends org.apache.dubbo.rpc.cluster.loadbalance.AbstractLoadBalance {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/support/ContentType.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/support/ContentType.java
deleted file mode 100644
index e47b1ca17f..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/support/ContentType.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.rpc.protocol.rest.support;
-
-@Deprecated
-public class ContentType extends org.apache.dubbo.rpc.protocol.rest.support.ContentType {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/protocol/thrift/ClassNameGenerator.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/protocol/thrift/ClassNameGenerator.java
deleted file mode 100644
index dec29d3d79..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/protocol/thrift/ClassNameGenerator.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.rpc.protocol.thrift;
-
-@Deprecated
-public interface ClassNameGenerator extends org.apache.dubbo.rpc.protocol.thrift.ClassNameGenerator {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/validation/Validation.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/validation/Validation.java
deleted file mode 100644
index 4881f3395a..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/validation/Validation.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.validation;
-
-@Deprecated
-public interface Validation extends org.apache.dubbo.validation.Validation {
-}
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/validation/Validator.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/validation/Validator.java
deleted file mode 100644
index 97719c2c00..0000000000
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/validation/Validator.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.validation;
-
-@Deprecated
-public interface Validator extends org.apache.dubbo.validation.Validator {
-}
diff --git a/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/CompatibleReferenceAnnotationBeanPostProcessor.java b/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/CompatibleReferenceAnnotationBeanPostProcessor.java
deleted file mode 100644
index 009bd28f80..0000000000
--- a/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/CompatibleReferenceAnnotationBeanPostProcessor.java
+++ /dev/null
@@ -1,507 +0,0 @@
-/*
- * 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 org.apache.dubbo.config.spring.beans.factory.annotation;
-
-import com.alibaba.dubbo.config.annotation.Reference;
-
-import org.apache.dubbo.config.spring.ReferenceBean;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.PropertyValues;
-import org.springframework.beans.factory.BeanClassLoaderAware;
-import org.springframework.beans.factory.BeanCreationException;
-import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.annotation.InjectionMetadata;
-import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessorAdapter;
-import org.springframework.beans.factory.support.MergedBeanDefinitionPostProcessor;
-import org.springframework.beans.factory.support.RootBeanDefinition;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.core.PriorityOrdered;
-import org.springframework.core.env.Environment;
-import org.springframework.util.ClassUtils;
-import org.springframework.util.ReflectionUtils;
-import org.springframework.util.StringUtils;
-
-import java.beans.PropertyDescriptor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import static org.springframework.core.BridgeMethodResolver.findBridgedMethod;
-import static org.springframework.core.BridgeMethodResolver.isVisibilityBridgeMethodPair;
-import static org.springframework.core.annotation.AnnotationUtils.findAnnotation;
-import static org.springframework.core.annotation.AnnotationUtils.getAnnotation;
-
-/**
- * {@link org.springframework.beans.factory.config.BeanPostProcessor} implementation
- * that Consumer service {@link Reference} annotated fields
- *
- * @since 2.5.7 deprecated since 2.7.0
- */
-@Deprecated
-public class CompatibleReferenceAnnotationBeanPostProcessor extends InstantiationAwareBeanPostProcessorAdapter
-        implements MergedBeanDefinitionPostProcessor, PriorityOrdered, ApplicationContextAware, BeanClassLoaderAware,
-        DisposableBean {
-
-    /**
-     * The bean name of {@link CompatibleReferenceAnnotationBeanPostProcessor}
-     */
-    public static final String BEAN_NAME = "compatibleReferenceAnnotationBeanPostProcessor";
-
-    private final Log logger = LogFactory.getLog(getClass());
-
-    private ApplicationContext applicationContext;
-
-    private ClassLoader classLoader;
-
-    private final ConcurrentMap<String, ReferenceInjectionMetadata> injectionMetadataCache =
-            new ConcurrentHashMap<String, ReferenceInjectionMetadata>(256);
-
-    private final ConcurrentMap<String, ReferenceBean<?>> referenceBeansCache =
-            new ConcurrentHashMap<String, ReferenceBean<?>>();
-
-    @Override
-    public PropertyValues postProcessPropertyValues(
-            PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName) throws BeanCreationException {
-
-        InjectionMetadata metadata = findReferenceMetadata(beanName, bean.getClass(), pvs);
-        try {
-            metadata.inject(bean, beanName, pvs);
-        } catch (BeanCreationException ex) {
-            throw ex;
-        } catch (Throwable ex) {
-            throw new BeanCreationException(beanName, "Injection of @Reference dependencies failed", ex);
-        }
-        return pvs;
-    }
-
-
-    /**
-     * Finds {@link InjectionMetadata.InjectedElement} Metadata from annotated {@link Reference @Reference} fields
-     *
-     * @param beanClass The {@link Class} of Bean
-     * @return non-null {@link List}
-     */
-    private List<ReferenceFieldElement> findFieldReferenceMetadata(final Class<?> beanClass) {
-
-        final List<ReferenceFieldElement> elements = new LinkedList<ReferenceFieldElement>();
-
-        ReflectionUtils.doWithFields(beanClass, new ReflectionUtils.FieldCallback() {
-            @Override
-            public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException {
-
-                Reference reference = getAnnotation(field, Reference.class);
-
-                if (reference != null) {
-
-                    if (Modifier.isStatic(field.getModifiers())) {
-                        if (logger.isWarnEnabled()) {
-                            logger.warn("@Reference annotation is not supported on static fields: " + field);
-                        }
-                        return;
-                    }
-
-                    elements.add(new ReferenceFieldElement(field, reference));
-                }
-
-            }
-        });
-
-        return elements;
-
-    }
-
-    /**
-     * Finds {@link InjectionMetadata.InjectedElement} Metadata from annotated {@link Reference @Reference} methods
-     *
-     * @param beanClass The {@link Class} of Bean
-     * @return non-null {@link List}
-     */
-    private List<ReferenceMethodElement> findMethodReferenceMetadata(final Class<?> beanClass) {
-
-        final List<ReferenceMethodElement> elements = new LinkedList<ReferenceMethodElement>();
-
-        ReflectionUtils.doWithMethods(beanClass, new ReflectionUtils.MethodCallback() {
-            @Override
-            public void doWith(Method method) throws IllegalArgumentException, IllegalAccessException {
-
-                Method bridgedMethod = findBridgedMethod(method);
-
-                if (!isVisibilityBridgeMethodPair(method, bridgedMethod)) {
-                    return;
-                }
-
-                Reference reference = findAnnotation(bridgedMethod, Reference.class);
-
-                if (reference != null && method.equals(ClassUtils.getMostSpecificMethod(method, beanClass))) {
-                    if (Modifier.isStatic(method.getModifiers())) {
-                        if (logger.isWarnEnabled()) {
-                            logger.warn("@Reference annotation is not supported on static methods: " + method);
-                        }
-                        return;
-                    }
-                    if (method.getParameterTypes().length == 0) {
-                        if (logger.isWarnEnabled()) {
-                            logger.warn("@Reference  annotation should only be used on methods with parameters: " +
-                                    method);
-                        }
-                    }
-                    PropertyDescriptor pd = BeanUtils.findPropertyForMethod(bridgedMethod, beanClass);
-                    elements.add(new ReferenceMethodElement(method, pd, reference));
-                }
-            }
-        });
-
-        return elements;
-
-    }
-
-
-    /**
-     * @param beanClass
-     * @return
-     */
-    private ReferenceInjectionMetadata buildReferenceMetadata(final Class<?> beanClass) {
-        Collection<ReferenceFieldElement> fieldElements = findFieldReferenceMetadata(beanClass);
-        Collection<ReferenceMethodElement> methodElements = findMethodReferenceMetadata(beanClass);
-        return new ReferenceInjectionMetadata(beanClass, fieldElements, methodElements);
-
-    }
-
-    private InjectionMetadata findReferenceMetadata(String beanName, Class<?> clazz, PropertyValues pvs) {
-        // Fall back to class name as cache key, for backwards compatibility with custom callers.
-        String cacheKey = (StringUtils.hasLength(beanName) ? beanName : clazz.getName());
-        // Quick check on the concurrent map first, with minimal locking.
-        ReferenceInjectionMetadata metadata = this.injectionMetadataCache.get(cacheKey);
-        if (InjectionMetadata.needsRefresh(metadata, clazz)) {
-            synchronized (this.injectionMetadataCache) {
-                metadata = this.injectionMetadataCache.get(cacheKey);
-                if (InjectionMetadata.needsRefresh(metadata, clazz)) {
-                    if (metadata != null) {
-                        metadata.clear(pvs);
-                    }
-                    try {
-                        metadata = buildReferenceMetadata(clazz);
-                        this.injectionMetadataCache.put(cacheKey, metadata);
-                    } catch (NoClassDefFoundError err) {
-                        throw new IllegalStateException("Failed to introspect bean class [" + clazz.getName() +
-                                "] for reference metadata: could not find class that it depends on", err);
-                    }
-                }
-            }
-        }
-        return metadata;
-    }
-
-    @Override
-    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
-        this.applicationContext = applicationContext;
-    }
-
-    @Override
-    public void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName) {
-        if (beanType != null) {
-            InjectionMetadata metadata = findReferenceMetadata(beanName, beanType, null);
-            metadata.checkConfigMembers(beanDefinition);
-        }
-    }
-
-    @Override
-    public int getOrder() {
-        return LOWEST_PRECEDENCE;
-    }
-
-    @Override
-    public void destroy() throws Exception {
-
-        for (ReferenceBean referenceBean : referenceBeansCache.values()) {
-            if (logger.isInfoEnabled()) {
-                logger.info(referenceBean + " was destroying!");
-            }
-            referenceBean.destroy();
-        }
-
-        injectionMetadataCache.clear();
-        referenceBeansCache.clear();
-
-        if (logger.isInfoEnabled()) {
-            logger.info(getClass() + " was destroying!");
-        }
-
-    }
-
-    @Override
-    public void setBeanClassLoader(ClassLoader classLoader) {
-        this.classLoader = classLoader;
-    }
-
-
-    /**
-     * Gets all beans of {@link ReferenceBean}
-     *
-     * @return non-null {@link Collection}
-     * @since 2.5.9
-     */
-    public Collection<ReferenceBean<?>> getReferenceBeans() {
-        return this.referenceBeansCache.values();
-    }
-
-
-    /**
-     * {@link Reference} {@link InjectionMetadata} implementation
-     *
-     * @since 2.5.11
-     */
-    private static class ReferenceInjectionMetadata extends InjectionMetadata {
-
-        private final Collection<ReferenceFieldElement> fieldElements;
-
-        private final Collection<ReferenceMethodElement> methodElements;
-
-
-        public ReferenceInjectionMetadata(Class<?> targetClass, Collection<ReferenceFieldElement> fieldElements,
-                                          Collection<ReferenceMethodElement> methodElements) {
-            super(targetClass, combine(fieldElements, methodElements));
-            this.fieldElements = fieldElements;
-            this.methodElements = methodElements;
-        }
-
-        private static <T> Collection<T> combine(Collection<? extends T>... elements) {
-            List<T> allElements = new ArrayList<T>();
-            for (Collection<? extends T> e : elements) {
-                allElements.addAll(e);
-            }
-            return allElements;
-        }
-
-        public Collection<ReferenceFieldElement> getFieldElements() {
-            return fieldElements;
-        }
-
-        public Collection<ReferenceMethodElement> getMethodElements() {
-            return methodElements;
-        }
-    }
-
-    /**
-     * {@link Reference} {@link Method} {@link InjectionMetadata.InjectedElement}
-     */
-    private class ReferenceMethodElement extends InjectionMetadata.InjectedElement {
-
-        private final Method method;
-
-        private final Reference reference;
-
-        private volatile ReferenceBean<?> referenceBean;
-
-        protected ReferenceMethodElement(Method method, PropertyDescriptor pd, Reference reference) {
-            super(method, pd);
-            this.method = method;
-            this.reference = reference;
-        }
-
-        @Override
-        protected void inject(Object bean, String beanName, PropertyValues pvs) throws Throwable {
-
-            Class<?> referenceClass = pd.getPropertyType();
-
-            referenceBean = buildReferenceBean(reference, referenceClass);
-
-            ReflectionUtils.makeAccessible(method);
-
-            method.invoke(bean, referenceBean.getObject());
-
-        }
-
-    }
-
-    /**
-     * {@link Reference} {@link Field} {@link InjectionMetadata.InjectedElement}
-     */
-    private class ReferenceFieldElement extends InjectionMetadata.InjectedElement {
-
-        private final Field field;
-
-        private final Reference reference;
-
-        private volatile ReferenceBean<?> referenceBean;
-
-        protected ReferenceFieldElement(Field field, Reference reference) {
-            super(field, null);
-            this.field = field;
-            this.reference = reference;
-        }
-
-        @Override
-        protected void inject(Object bean, String beanName, PropertyValues pvs) throws Throwable {
-
-            Class<?> referenceClass = field.getType();
-
-            referenceBean = buildReferenceBean(reference, referenceClass);
-
-            ReflectionUtils.makeAccessible(field);
-
-            field.set(bean, referenceBean.getObject());
-
-        }
-
-    }
-
-    private ReferenceBean<?> buildReferenceBean(Reference reference, Class<?> referenceClass) throws Exception {
-
-        String referenceBeanCacheKey = generateReferenceBeanCacheKey(reference, referenceClass);
-
-        ReferenceBean<?> referenceBean = referenceBeansCache.get(referenceBeanCacheKey);
-
-        if (referenceBean == null) {
-
-            CompatibleReferenceBeanBuilder beanBuilder = CompatibleReferenceBeanBuilder
-                    .create(reference, classLoader, applicationContext)
-                    .interfaceClass(referenceClass);
-
-            referenceBean = beanBuilder.build();
-
-            referenceBeansCache.putIfAbsent(referenceBeanCacheKey, referenceBean);
-
-        }
-
-        return referenceBean;
-
-    }
-
-
-    /**
-     * Generate a cache key of {@link ReferenceBean}
-     *
-     * @param reference {@link Reference}
-     * @param beanClass {@link Class}
-     * @return
-     */
-    private String generateReferenceBeanCacheKey(Reference reference, Class<?> beanClass) {
-
-        String interfaceName = resolveInterfaceName(reference, beanClass);
-
-        String key = reference.url() + "/" + interfaceName +
-                "/" + reference.version() +
-                "/" + reference.group();
-
-        Environment environment = applicationContext.getEnvironment();
-
-        key = environment.resolvePlaceholders(key);
-
-        return key;
-
-    }
-
-    private static String resolveInterfaceName(Reference reference, Class<?> beanClass)
-            throws IllegalStateException {
-
-        String interfaceName;
-        if (!"".equals(reference.interfaceName())) {
-            interfaceName = reference.interfaceName();
-        } else if (!void.class.equals(reference.interfaceClass())) {
-            interfaceName = reference.interfaceClass().getName();
-        } else if (beanClass.isInterface()) {
-            interfaceName = beanClass.getName();
-        } else {
-            throw new IllegalStateException(
-                    "The @Reference undefined interfaceClass or interfaceName, and the property type "
-                            + beanClass.getName() + " is not a interface.");
-        }
-
-        return interfaceName;
-
-    }
-
-
-    /**
-     * Get {@link ReferenceBean} {@link Map} in injected field.
-     *
-     * @return non-null {@link Map}
-     * @since 2.5.11
-     */
-    public Map<InjectionMetadata.InjectedElement, ReferenceBean<?>> getInjectedFieldReferenceBeanMap() {
-
-        Map<InjectionMetadata.InjectedElement, ReferenceBean<?>> injectedElementReferenceBeanMap =
-                new LinkedHashMap<InjectionMetadata.InjectedElement, ReferenceBean<?>>();
-
-        for (ReferenceInjectionMetadata metadata : injectionMetadataCache.values()) {
-
-            Collection<ReferenceFieldElement> fieldElements = metadata.getFieldElements();
-
-            for (ReferenceFieldElement fieldElement : fieldElements) {
-
-                injectedElementReferenceBeanMap.put(fieldElement, fieldElement.referenceBean);
-
-            }
-
-        }
-
-        return injectedElementReferenceBeanMap;
-
-    }
-
-    /**
-     * Get {@link ReferenceBean} {@link Map} in injected method.
-     *
-     * @return non-null {@link Map}
-     * @since 2.5.11
-     */
-    public Map<InjectionMetadata.InjectedElement, ReferenceBean<?>> getInjectedMethodReferenceBeanMap() {
-
-        Map<InjectionMetadata.InjectedElement, ReferenceBean<?>> injectedElementReferenceBeanMap =
-                new LinkedHashMap<InjectionMetadata.InjectedElement, ReferenceBean<?>>();
-
-        for (ReferenceInjectionMetadata metadata : injectionMetadataCache.values()) {
-
-            Collection<ReferenceMethodElement> methodElements = metadata.getMethodElements();
-
-            for (ReferenceMethodElement methodElement : methodElements) {
-
-                injectedElementReferenceBeanMap.put(methodElement, methodElement.referenceBean);
-
-            }
-
-        }
-
-        return injectedElementReferenceBeanMap;
-
-    }
-
-    private <T> T getFieldValue(Object object, String fieldName, Class<T> fieldType) {
-
-        Field field = ReflectionUtils.findField(object.getClass(), fieldName, fieldType);
-
-        ReflectionUtils.makeAccessible(field);
-
-        return (T) ReflectionUtils.getField(field, object);
-
-    }
-
-
-}
diff --git a/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/CompatibleReferenceBeanBuilder.java b/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/CompatibleReferenceBeanBuilder.java
deleted file mode 100644
index 924ffcbee3..0000000000
--- a/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/CompatibleReferenceBeanBuilder.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * 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 org.apache.dubbo.config.spring.beans.factory.annotation;
-
-import com.alibaba.dubbo.config.annotation.Reference;
-
-import org.apache.dubbo.config.ConsumerConfig;
-import org.apache.dubbo.config.spring.ReferenceBean;
-import org.apache.dubbo.config.spring.convert.converter.StringArrayToMapConverter;
-import org.apache.dubbo.config.spring.convert.converter.StringArrayToStringConverter;
-import org.springframework.context.ApplicationContext;
-import org.springframework.core.convert.ConversionService;
-import org.springframework.core.convert.support.DefaultConversionService;
-import org.springframework.util.Assert;
-import org.springframework.util.ClassUtils;
-import org.springframework.util.StringUtils;
-import org.springframework.validation.DataBinder;
-
-import static org.apache.dubbo.config.spring.util.BeanFactoryUtils.getOptionalBean;
-import static org.apache.dubbo.config.spring.util.ObjectUtils.of;
-
-/**
- * {@link ReferenceBean} Builder
- *
- * @since 2.5.7 deprecated since 2.7.0
- */
-@Deprecated
-class CompatibleReferenceBeanBuilder extends AbstractAnnotationConfigBeanBuilder<Reference, ReferenceBean> {
-
-
-    private CompatibleReferenceBeanBuilder(Reference annotation, ClassLoader classLoader, ApplicationContext applicationContext) {
-        super(annotation, classLoader, applicationContext);
-    }
-
-    private void configureInterface(Reference reference, ReferenceBean referenceBean) {
-
-        Class<?> interfaceClass = reference.interfaceClass();
-
-        if (void.class.equals(interfaceClass)) {
-
-            interfaceClass = null;
-
-            String interfaceClassName = reference.interfaceName();
-
-            if (StringUtils.hasText(interfaceClassName)) {
-                if (ClassUtils.isPresent(interfaceClassName, classLoader)) {
-                    interfaceClass = ClassUtils.resolveClassName(interfaceClassName, classLoader);
-                }
-            }
-
-        }
-
-        if (interfaceClass == null) {
-            interfaceClass = this.interfaceClass;
-        }
-
-        Assert.isTrue(interfaceClass.isInterface(),
-                "The class of field or method that was annotated @Reference is not an interface!");
-
-        referenceBean.setInterface(interfaceClass);
-
-    }
-
-
-    private void configureConsumerConfig(Reference reference, ReferenceBean<?> referenceBean) {
-
-        String consumerBeanName = reference.consumer();
-
-        ConsumerConfig consumerConfig = getOptionalBean(applicationContext, consumerBeanName, ConsumerConfig.class);
-
-        referenceBean.setConsumer(consumerConfig);
-
-    }
-
-    @Override
-    protected ReferenceBean doBuild() {
-        return new ReferenceBean<Object>();
-    }
-
-    @Override
-    protected void preConfigureBean(Reference reference, ReferenceBean referenceBean) {
-        Assert.notNull(interfaceClass, "The interface class must set first!");
-        DataBinder dataBinder = new DataBinder(referenceBean);
-        // Set ConversionService
-        dataBinder.setConversionService(getConversionService());
-        // Ignore those fields
-        String[] ignoreAttributeNames = of("application", "module", "consumer", "monitor", "registry");
-//        dataBinder.setDisallowedFields(ignoreAttributeNames);
-        // Bind annotation attributes
-        dataBinder.bind(new AnnotationPropertyValuesAdapter(reference, applicationContext.getEnvironment(), ignoreAttributeNames));
-    }
-
-    private ConversionService getConversionService() {
-        DefaultConversionService conversionService = new DefaultConversionService();
-        conversionService.addConverter(new StringArrayToStringConverter());
-        conversionService.addConverter(new StringArrayToMapConverter());
-        return conversionService;
-    }
-
-
-    @Override
-    protected String resolveModuleConfigBeanName(Reference annotation) {
-        return annotation.module();
-    }
-
-    @Override
-    protected String resolveApplicationConfigBeanName(Reference annotation) {
-        return annotation.application();
-    }
-
-    @Override
-    protected String[] resolveRegistryConfigBeanNames(Reference annotation) {
-        return annotation.registry();
-    }
-
-    @Override
-    protected String resolveMonitorConfigBeanName(Reference annotation) {
-        return annotation.monitor();
-    }
-
-    @Override
-    protected void postConfigureBean(Reference annotation, ReferenceBean bean) throws Exception {
-
-        bean.setApplicationContext(applicationContext);
-
-        configureInterface(annotation, bean);
-
-        configureConsumerConfig(annotation, bean);
-
-        bean.afterPropertiesSet();
-
-    }
-
-    public static CompatibleReferenceBeanBuilder create(Reference annotation, ClassLoader classLoader,
-                                                        ApplicationContext applicationContext) {
-        return new CompatibleReferenceBeanBuilder(annotation, classLoader, applicationContext);
-    }
-
-}
diff --git a/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/CompatibleServiceAnnotationBeanPostProcessor.java b/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/CompatibleServiceAnnotationBeanPostProcessor.java
deleted file mode 100644
index b2ab6151be..0000000000
--- a/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/CompatibleServiceAnnotationBeanPostProcessor.java
+++ /dev/null
@@ -1,505 +0,0 @@
-/*
- * 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 org.apache.dubbo.config.spring.beans.factory.annotation;
-
-import com.alibaba.dubbo.config.annotation.Service;
-
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.config.spring.ServiceBean;
-import org.apache.dubbo.config.spring.context.annotation.DubboClassPathBeanDefinitionScanner;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.MutablePropertyValues;
-import org.springframework.beans.factory.BeanClassLoaderAware;
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.config.BeanDefinitionHolder;
-import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
-import org.springframework.beans.factory.config.RuntimeBeanReference;
-import org.springframework.beans.factory.config.SingletonBeanRegistry;
-import org.springframework.beans.factory.support.AbstractBeanDefinition;
-import org.springframework.beans.factory.support.BeanDefinitionBuilder;
-import org.springframework.beans.factory.support.BeanDefinitionRegistry;
-import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
-import org.springframework.beans.factory.support.BeanNameGenerator;
-import org.springframework.beans.factory.support.ManagedList;
-import org.springframework.context.EnvironmentAware;
-import org.springframework.context.ResourceLoaderAware;
-import org.springframework.context.annotation.AnnotationBeanNameGenerator;
-import org.springframework.context.annotation.AnnotationConfigUtils;
-import org.springframework.context.annotation.ClassPathBeanDefinitionScanner;
-import org.springframework.context.annotation.ConfigurationClassPostProcessor;
-import org.springframework.core.env.Environment;
-import org.springframework.core.io.ResourceLoader;
-import org.springframework.core.type.filter.AnnotationTypeFilter;
-import org.springframework.util.Assert;
-import org.springframework.util.ClassUtils;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.ObjectUtils;
-import org.springframework.util.StringUtils;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-import static org.apache.dubbo.config.spring.util.ObjectUtils.of;
-import static org.springframework.beans.factory.support.BeanDefinitionBuilder.rootBeanDefinition;
-import static org.springframework.context.annotation.AnnotationConfigUtils.CONFIGURATION_BEAN_NAME_GENERATOR;
-import static org.springframework.core.annotation.AnnotationUtils.findAnnotation;
-import static org.springframework.util.ClassUtils.resolveClassName;
-
-/**
- * {@link Service} Annotation
- * {@link BeanDefinitionRegistryPostProcessor Bean Definition Registry Post Processor}
- *
- * @since 2.5.8 deprecated since 2.7.0
- */
-@Deprecated
-public class CompatibleServiceAnnotationBeanPostProcessor implements BeanDefinitionRegistryPostProcessor, EnvironmentAware,
-        ResourceLoaderAware, BeanClassLoaderAware {
-
-    private static final String SEPARATOR = ":";
-
-    private final Logger logger = LoggerFactory.getLogger(getClass());
-
-    private final Set<String> packagesToScan;
-
-    private Environment environment;
-
-    private ResourceLoader resourceLoader;
-
-    private ClassLoader classLoader;
-
-    public CompatibleServiceAnnotationBeanPostProcessor(String... packagesToScan) {
-        this(Arrays.asList(packagesToScan));
-    }
-
-    public CompatibleServiceAnnotationBeanPostProcessor(Collection<String> packagesToScan) {
-        this(new LinkedHashSet<String>(packagesToScan));
-    }
-
-    public CompatibleServiceAnnotationBeanPostProcessor(Set<String> packagesToScan) {
-        this.packagesToScan = packagesToScan;
-    }
-
-    @Override
-    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
-
-        Set<String> resolvedPackagesToScan = resolvePackagesToScan(packagesToScan);
-
-        if (!CollectionUtils.isEmpty(resolvedPackagesToScan)) {
-            registerServiceBeans(resolvedPackagesToScan, registry);
-        } else {
-            if (logger.isWarnEnabled()) {
-                logger.warn("packagesToScan is empty , ServiceBean registry will be ignored!");
-            }
-        }
-
-    }
-
-
-    /**
-     * Registers Beans whose classes was annotated {@link Service}
-     *
-     * @param packagesToScan The base packages to scan
-     * @param registry       {@link BeanDefinitionRegistry}
-     */
-    private void registerServiceBeans(Set<String> packagesToScan, BeanDefinitionRegistry registry) {
-
-        DubboClassPathBeanDefinitionScanner scanner =
-                new DubboClassPathBeanDefinitionScanner(registry, environment, resourceLoader);
-
-        BeanNameGenerator beanNameGenerator = resolveBeanNameGenerator(registry);
-
-        scanner.setBeanNameGenerator(beanNameGenerator);
-
-        scanner.addIncludeFilter(new AnnotationTypeFilter(Service.class));
-
-        for (String packageToScan : packagesToScan) {
-
-            // Registers @Service Bean first
-            scanner.scan(packageToScan);
-
-            // Finds all BeanDefinitionHolders of @Service whether @ComponentScan scans or not.
-            Set<BeanDefinitionHolder> beanDefinitionHolders =
-                    findServiceBeanDefinitionHolders(scanner, packageToScan, registry, beanNameGenerator);
-
-            if (!CollectionUtils.isEmpty(beanDefinitionHolders)) {
-
-                for (BeanDefinitionHolder beanDefinitionHolder : beanDefinitionHolders) {
-                    registerServiceBean(beanDefinitionHolder, registry, scanner);
-                }
-
-                if (logger.isInfoEnabled()) {
-                    logger.info(beanDefinitionHolders.size() + " annotated Dubbo's @Service Components { " +
-                            beanDefinitionHolders +
-                            " } were scanned under package[" + packageToScan + "]");
-                }
-
-            } else {
-
-                if (logger.isWarnEnabled()) {
-                    logger.warn("No Spring Bean annotating Dubbo's @Service was found under package["
-                            + packageToScan + "]");
-                }
-
-            }
-
-        }
-
-    }
-
-    /**
-     * It'd better to use BeanNameGenerator instance that should reference
-     * {@link ConfigurationClassPostProcessor#componentScanBeanNameGenerator},
-     * thus it maybe a potential problem on bean name generation.
-     *
-     * @param registry {@link BeanDefinitionRegistry}
-     * @return {@link BeanNameGenerator} instance
-     * @see SingletonBeanRegistry
-     * @see AnnotationConfigUtils#CONFIGURATION_BEAN_NAME_GENERATOR
-     * @see ConfigurationClassPostProcessor#processConfigBeanDefinitions
-     * @since 2.5.8
-     */
-    private BeanNameGenerator resolveBeanNameGenerator(BeanDefinitionRegistry registry) {
-
-        BeanNameGenerator beanNameGenerator = null;
-
-        if (registry instanceof SingletonBeanRegistry) {
-            SingletonBeanRegistry singletonBeanRegistry = SingletonBeanRegistry.class.cast(registry);
-            beanNameGenerator = (BeanNameGenerator) singletonBeanRegistry.getSingleton(CONFIGURATION_BEAN_NAME_GENERATOR);
-        }
-
-        if (beanNameGenerator == null) {
-
-            if (logger.isInfoEnabled()) {
-
-                logger.info("BeanNameGenerator bean can't be found in BeanFactory with name ["
-                        + CONFIGURATION_BEAN_NAME_GENERATOR + "]");
-                logger.info("BeanNameGenerator will be a instance of " +
-                        AnnotationBeanNameGenerator.class.getName() +
-                        " , it maybe a potential problem on bean name generation.");
-            }
-
-            beanNameGenerator = new AnnotationBeanNameGenerator();
-
-        }
-
-        return beanNameGenerator;
-
-    }
-
-    /**
-     * Finds a {@link Set} of {@link BeanDefinitionHolder BeanDefinitionHolders} whose bean type annotated
-     * {@link Service} Annotation.
-     *
-     * @param scanner       {@link ClassPathBeanDefinitionScanner}
-     * @param packageToScan pachage to scan
-     * @param registry      {@link BeanDefinitionRegistry}
-     * @return non-null
-     * @since 2.5.8
-     */
-    private Set<BeanDefinitionHolder> findServiceBeanDefinitionHolders(
-            ClassPathBeanDefinitionScanner scanner, String packageToScan, BeanDefinitionRegistry registry,
-            BeanNameGenerator beanNameGenerator) {
-
-        Set<BeanDefinition> beanDefinitions = scanner.findCandidateComponents(packageToScan);
-
-        Set<BeanDefinitionHolder> beanDefinitionHolders = new LinkedHashSet<BeanDefinitionHolder>(beanDefinitions.size());
-
-        for (BeanDefinition beanDefinition : beanDefinitions) {
-
-            String beanName = beanNameGenerator.generateBeanName(beanDefinition, registry);
-            BeanDefinitionHolder beanDefinitionHolder = new BeanDefinitionHolder(beanDefinition, beanName);
-            beanDefinitionHolders.add(beanDefinitionHolder);
-
-        }
-
-        return beanDefinitionHolders;
-
-    }
-
-    /**
-     * Registers {@link ServiceBean} from new annotated {@link Service} {@link BeanDefinition}
-     *
-     * @param beanDefinitionHolder
-     * @param registry
-     * @param scanner
-     * @see ServiceBean
-     * @see BeanDefinition
-     */
-    private void registerServiceBean(BeanDefinitionHolder beanDefinitionHolder, BeanDefinitionRegistry registry,
-                                     DubboClassPathBeanDefinitionScanner scanner) {
-
-        Class<?> beanClass = resolveClass(beanDefinitionHolder);
-
-        Service service = findAnnotation(beanClass, Service.class);
-
-        Class<?> interfaceClass = resolveServiceInterfaceClass(beanClass, service);
-
-        String annotatedServiceBeanName = beanDefinitionHolder.getBeanName();
-
-        AbstractBeanDefinition serviceBeanDefinition =
-                buildServiceBeanDefinition(service, interfaceClass, annotatedServiceBeanName);
-
-        // ServiceBean Bean name
-        String beanName = generateServiceBeanName(service, interfaceClass, annotatedServiceBeanName);
-
-        if (scanner.checkCandidate(beanName, serviceBeanDefinition)) { // check duplicated candidate bean
-            registry.registerBeanDefinition(beanName, serviceBeanDefinition);
-
-            if (logger.isInfoEnabled()) {
-                logger.warn("The BeanDefinition[" + serviceBeanDefinition +
-                        "] of ServiceBean has been registered with name : " + beanName);
-            }
-
-        } else {
-
-            if (logger.isWarnEnabled()) {
-                logger.warn("The Duplicated BeanDefinition[" + serviceBeanDefinition +
-                        "] of ServiceBean[ bean name : " + beanName +
-                        "] was be found , Did @CompatibleDubboComponentScan scan to same package in many times?");
-            }
-
-        }
-
-    }
-
-    /**
-     * Generates the bean name of {@link ServiceBean}
-     *
-     * @param service
-     * @param interfaceClass           the class of interface annotated {@link Service}
-     * @param annotatedServiceBeanName the bean name of annotated {@link Service}
-     * @return ServiceBean@interfaceClassName#annotatedServiceBeanName
-     * @since 2.5.9
-     */
-    private String generateServiceBeanName(Service service, Class<?> interfaceClass, String annotatedServiceBeanName) {
-
-        StringBuilder beanNameBuilder = new StringBuilder(ServiceBean.class.getSimpleName());
-
-        beanNameBuilder.append(SEPARATOR).append(annotatedServiceBeanName);
-
-        String interfaceClassName = interfaceClass.getName();
-
-        beanNameBuilder.append(SEPARATOR).append(interfaceClassName);
-
-        String version = service.version();
-
-        if (StringUtils.hasText(version)) {
-            beanNameBuilder.append(SEPARATOR).append(version);
-        }
-
-        String group = service.group();
-
-        if (StringUtils.hasText(group)) {
-            beanNameBuilder.append(SEPARATOR).append(group);
-        }
-
-        return beanNameBuilder.toString();
-
-    }
-
-    private Class<?> resolveServiceInterfaceClass(Class<?> annotatedServiceBeanClass, Service service) {
-
-        Class<?> interfaceClass = service.interfaceClass();
-
-        if (void.class.equals(interfaceClass)) {
-
-            interfaceClass = null;
-
-            String interfaceClassName = service.interfaceName();
-
-            if (StringUtils.hasText(interfaceClassName)) {
-                if (ClassUtils.isPresent(interfaceClassName, classLoader)) {
-                    interfaceClass = resolveClassName(interfaceClassName, classLoader);
-                }
-            }
-
-        }
-
-        if (interfaceClass == null) {
-
-            Class<?>[] allInterfaces = annotatedServiceBeanClass.getInterfaces();
-
-            if (allInterfaces.length > 0) {
-                interfaceClass = allInterfaces[0];
-            }
-
-        }
-
-        Assert.notNull(interfaceClass,
-                "@Service interfaceClass() or interfaceName() or interface class must be present!");
-
-        Assert.isTrue(interfaceClass.isInterface(),
-                "The type that was annotated @Service is not an interface!");
-
-        return interfaceClass;
-    }
-
-    private Class<?> resolveClass(BeanDefinitionHolder beanDefinitionHolder) {
-
-        BeanDefinition beanDefinition = beanDefinitionHolder.getBeanDefinition();
-
-        return resolveClass(beanDefinition);
-
-    }
-
-    private Class<?> resolveClass(BeanDefinition beanDefinition) {
-
-        String beanClassName = beanDefinition.getBeanClassName();
-
-        return resolveClassName(beanClassName, classLoader);
-
-    }
-
-    private Set<String> resolvePackagesToScan(Set<String> packagesToScan) {
-        Set<String> resolvedPackagesToScan = new LinkedHashSet<String>(packagesToScan.size());
-        for (String packageToScan : packagesToScan) {
-            if (StringUtils.hasText(packageToScan)) {
-                String resolvedPackageToScan = environment.resolvePlaceholders(packageToScan.trim());
-                resolvedPackagesToScan.add(resolvedPackageToScan);
-            }
-        }
-        return resolvedPackagesToScan;
-    }
-
-    private AbstractBeanDefinition buildServiceBeanDefinition(Service service, Class<?> interfaceClass,
-                                                              String annotatedServiceBeanName) {
-
-        BeanDefinitionBuilder builder = rootBeanDefinition(ServiceBean.class);
-
-        AbstractBeanDefinition beanDefinition = builder.getBeanDefinition();
-
-        MutablePropertyValues propertyValues = beanDefinition.getPropertyValues();
-
-        String[] ignoreAttributeNames = of("provider", "monitor", "application", "module", "registry", "protocol", "interface");
-
-        propertyValues.addPropertyValues(new AnnotationPropertyValuesAdapter(service, environment, ignoreAttributeNames));
-
-        // References "ref" property to annotated-@Service Bean
-        addPropertyReference(builder, "ref", annotatedServiceBeanName);
-        // Set interface
-        builder.addPropertyValue("interface", interfaceClass.getName());
-
-        /**
-         * Add {@link org.apache.dubbo.config.ProviderConfig} Bean reference
-         */
-        String providerConfigBeanName = service.provider();
-        if (StringUtils.hasText(providerConfigBeanName)) {
-            addPropertyReference(builder, "provider", providerConfigBeanName);
-        }
-
-        /**
-         * Add {@link org.apache.dubbo.config.MonitorConfig} Bean reference
-         */
-        String monitorConfigBeanName = service.monitor();
-        if (StringUtils.hasText(monitorConfigBeanName)) {
-            addPropertyReference(builder, "monitor", monitorConfigBeanName);
-        }
-
-        /**
-         * Add {@link org.apache.dubbo.config.ApplicationConfig} Bean reference
-         */
-        String applicationConfigBeanName = service.application();
-        if (StringUtils.hasText(applicationConfigBeanName)) {
-            addPropertyReference(builder, "application", applicationConfigBeanName);
-        }
-
-        /**
-         * Add {@link org.apache.dubbo.config.ModuleConfig} Bean reference
-         */
-        String moduleConfigBeanName = service.module();
-        if (StringUtils.hasText(moduleConfigBeanName)) {
-            addPropertyReference(builder, "module", moduleConfigBeanName);
-        }
-
-
-        /**
-         * Add {@link org.apache.dubbo.config.RegistryConfig} Bean reference
-         */
-        String[] registryConfigBeanNames = service.registry();
-
-        List<RuntimeBeanReference> registryRuntimeBeanReferences = toRuntimeBeanReferences(registryConfigBeanNames);
-
-        if (!registryRuntimeBeanReferences.isEmpty()) {
-            builder.addPropertyValue("registries", registryRuntimeBeanReferences);
-        }
-
-        /**
-         * Add {@link org.apache.dubbo.config.ProtocolConfig} Bean reference
-         */
-        String[] protocolConfigBeanNames = service.protocol();
-
-        List<RuntimeBeanReference> protocolRuntimeBeanReferences = toRuntimeBeanReferences(protocolConfigBeanNames);
-
-        if (!protocolRuntimeBeanReferences.isEmpty()) {
-            builder.addPropertyValue("protocols", protocolRuntimeBeanReferences);
-        }
-
-        return builder.getBeanDefinition();
-
-    }
-
-
-    private ManagedList<RuntimeBeanReference> toRuntimeBeanReferences(String... beanNames) {
-
-        ManagedList<RuntimeBeanReference> runtimeBeanReferences = new ManagedList<RuntimeBeanReference>();
-
-        if (!ObjectUtils.isEmpty(beanNames)) {
-
-            for (String beanName : beanNames) {
-
-                String resolvedBeanName = environment.resolvePlaceholders(beanName);
-
-                runtimeBeanReferences.add(new RuntimeBeanReference(resolvedBeanName));
-            }
-
-        }
-
-        return runtimeBeanReferences;
-
-    }
-
-    private void addPropertyReference(BeanDefinitionBuilder builder, String propertyName, String beanName) {
-        String resolvedBeanName = environment.resolvePlaceholders(beanName);
-        builder.addPropertyReference(propertyName, resolvedBeanName);
-    }
-
-
-    @Override
-    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
-
-    }
-
-    @Override
-    public void setEnvironment(Environment environment) {
-        this.environment = environment;
-    }
-
-    @Override
-    public void setResourceLoader(ResourceLoader resourceLoader) {
-        this.resourceLoader = resourceLoader;
-    }
-
-    @Override
-    public void setBeanClassLoader(ClassLoader classLoader) {
-        this.classLoader = classLoader;
-    }
-
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/context/annotation/CompatibleDubboComponentScan.java b/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/context/annotation/CompatibleDubboComponentScan.java
deleted file mode 100644
index 4b8e229d2f..0000000000
--- a/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/context/annotation/CompatibleDubboComponentScan.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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 org.apache.dubbo.config.spring.context.annotation;
-
-import org.springframework.context.annotation.Import;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @since 2.5.7 deprecated since 2.7.0
- */
-@Deprecated
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Import(CompatibleDubboComponentScanRegistrar.class)
-public @interface CompatibleDubboComponentScan {
-
-    /**
-     * Alias for the {@link #basePackages()} attribute. Allows for more concise annotation
-     * declarations e.g.: {@code @CompatibleDubboComponentScan("org.my.pkg")} instead of
-     * {@code @CompatibleDubboComponentScan(basePackages="org.my.pkg")}.
-     *
-     * @return the base packages to scan
-     */
-    String[] value() default {};
-
-    /**
-     * Base packages to scan for annotated @Service classes. {@link #value()} is an
-     * alias for (and mutually exclusive with) this attribute.
-     * <p>
-     * Use {@link #basePackageClasses()} for a type-safe alternative to String-based
-     * package names.
-     *
-     * @return the base packages to scan
-     */
-    String[] basePackages() default {};
-
-    /**
-     * Type-safe alternative to {@link #basePackages()} for specifying the packages to
-     * scan for annotated @Service classes. The package of each class specified will be
-     * scanned.
-     *
-     * @return classes from the base packages to scan
-     */
-    Class<?>[] basePackageClasses() default {};
-
-}
diff --git a/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/context/annotation/CompatibleDubboComponentScanRegistrar.java b/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/context/annotation/CompatibleDubboComponentScanRegistrar.java
deleted file mode 100644
index df41b6e131..0000000000
--- a/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/context/annotation/CompatibleDubboComponentScanRegistrar.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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 org.apache.dubbo.config.spring.context.annotation;
-
-import org.apache.dubbo.config.spring.beans.factory.annotation.CompatibleReferenceAnnotationBeanPostProcessor;
-import org.apache.dubbo.config.spring.beans.factory.annotation.CompatibleServiceAnnotationBeanPostProcessor;
-import org.apache.dubbo.config.spring.util.BeanRegistrar;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.support.AbstractBeanDefinition;
-import org.springframework.beans.factory.support.BeanDefinitionBuilder;
-import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
-import org.springframework.beans.factory.support.BeanDefinitionRegistry;
-import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
-import org.springframework.core.annotation.AnnotationAttributes;
-import org.springframework.core.type.AnnotationMetadata;
-import org.springframework.util.ClassUtils;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-import static org.springframework.beans.factory.support.BeanDefinitionBuilder.rootBeanDefinition;
-
-/**
- * Dubbo Bean Registrar
- * @see ImportBeanDefinitionRegistrar
- * @see CompatibleServiceAnnotationBeanPostProcessor
- * @see CompatibleReferenceAnnotationBeanPostProcessor
- * @since 2.5.7 deprecated since 2.7.0
- */
-@Deprecated
-public class CompatibleDubboComponentScanRegistrar implements ImportBeanDefinitionRegistrar {
-
-    @Override
-    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
-
-        Set<String> packagesToScan = getPackagesToScan(importingClassMetadata);
-
-        registerServiceAnnotationBeanPostProcessor(packagesToScan, registry);
-
-        registerReferenceAnnotationBeanPostProcessor(registry);
-
-    }
-
-    /**
-     * Registers {@link CompatibleServiceAnnotationBeanPostProcessor}
-     *
-     * @param packagesToScan packages to scan without resolving placeholders
-     * @param registry       {@link BeanDefinitionRegistry}
-     * @since 2.5.8 deprecated since 2.7.0
-     */
-    private void registerServiceAnnotationBeanPostProcessor(Set<String> packagesToScan, BeanDefinitionRegistry registry) {
-
-        BeanDefinitionBuilder builder = rootBeanDefinition(CompatibleServiceAnnotationBeanPostProcessor.class);
-        builder.addConstructorArgValue(packagesToScan);
-        builder.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
-        AbstractBeanDefinition beanDefinition = builder.getBeanDefinition();
-        BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, registry);
-
-    }
-
-    /**
-     * Registers {@link CompatibleReferenceAnnotationBeanPostProcessor} into {@link BeanFactory}
-     *
-     * @param registry {@link BeanDefinitionRegistry}
-     */
-    private void registerReferenceAnnotationBeanPostProcessor(BeanDefinitionRegistry registry) {
-
-        // Register @Reference Annotation Bean Processor
-        BeanRegistrar.registerInfrastructureBean(registry,
-                CompatibleReferenceAnnotationBeanPostProcessor.BEAN_NAME, CompatibleReferenceAnnotationBeanPostProcessor.class);
-
-    }
-
-    private Set<String> getPackagesToScan(AnnotationMetadata metadata) {
-        AnnotationAttributes attributes = AnnotationAttributes.fromMap(
-                metadata.getAnnotationAttributes(CompatibleDubboComponentScan.class.getName()));
-        String[] basePackages = attributes.getStringArray("basePackages");
-        Class<?>[] basePackageClasses = attributes.getClassArray("basePackageClasses");
-        String[] value = attributes.getStringArray("value");
-        // Appends value array attributes
-        Set<String> packagesToScan = new LinkedHashSet<String>(Arrays.asList(value));
-        packagesToScan.addAll(Arrays.asList(basePackages));
-        for (Class<?> basePackageClass : basePackageClasses) {
-            packagesToScan.add(ClassUtils.getPackageName(basePackageClass));
-        }
-        if (packagesToScan.isEmpty()) {
-            return Collections.singleton(ClassUtils.getPackageName(metadata.getClassName()));
-        }
-        return packagesToScan;
-    }
-
-}
diff --git a/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/schema/CompatibleAnnotationBeanDefinitionParser.java b/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/schema/CompatibleAnnotationBeanDefinitionParser.java
deleted file mode 100644
index c5e7bfaca8..0000000000
--- a/dubbo-compatible/src/main/java/org/apache/dubbo/config/spring/schema/CompatibleAnnotationBeanDefinitionParser.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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 org.apache.dubbo.config.spring.schema;
-
-import org.apache.dubbo.config.spring.AnnotationBean;
-
-import org.apache.dubbo.config.spring.beans.factory.annotation.CompatibleReferenceAnnotationBeanPostProcessor;
-import org.apache.dubbo.config.spring.beans.factory.annotation.CompatibleServiceAnnotationBeanPostProcessor;
-
-import org.apache.dubbo.config.spring.util.BeanRegistrar;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.support.BeanDefinitionBuilder;
-import org.springframework.beans.factory.support.BeanDefinitionRegistry;
-import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
-import org.springframework.beans.factory.xml.BeanDefinitionParser;
-import org.springframework.beans.factory.xml.ParserContext;
-import org.w3c.dom.Element;
-
-import static org.springframework.util.StringUtils.commaDelimitedListToStringArray;
-import static org.springframework.util.StringUtils.trimArrayElements;
-
-/**
- * {@link AnnotationBean} {@link BeanDefinitionParser}
- *
- * @see CompatibleServiceAnnotationBeanPostProcessor
- * @see CompatibleReferenceAnnotationBeanPostProcessor
- * @since 2.5.9 deprecated since 2.7.0
- */
-@Deprecated
-public class CompatibleAnnotationBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {
-
-    /**
-     * parse
-     * <prev>
-     * &lt;dubbo:annotation package="" /&gt;
-     * </prev>
-     *
-     * @param element
-     * @param parserContext
-     * @param builder
-     */
-    @Override
-    protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
-
-        String packageToScan = element.getAttribute("package");
-
-        String[] packagesToScan = trimArrayElements(commaDelimitedListToStringArray(packageToScan));
-
-        builder.addConstructorArgValue(packagesToScan);
-
-        builder.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
-
-        // Registers CompatibleReferenceAnnotationBeanPostProcessor
-        registerReferenceAnnotationBeanPostProcessor(parserContext.getRegistry());
-
-    }
-
-    @Override
-    protected boolean shouldGenerateIdAsFallback() {
-        return true;
-    }
-
-    /**
-     * Registers {@link CompatibleReferenceAnnotationBeanPostProcessor} into {@link BeanFactory}
-     *
-     * @param registry {@link BeanDefinitionRegistry}
-     */
-    private void registerReferenceAnnotationBeanPostProcessor(BeanDefinitionRegistry registry) {
-
-        // Register @Reference Annotation Bean Processor
-        BeanRegistrar.registerInfrastructureBean(registry,
-                CompatibleReferenceAnnotationBeanPostProcessor.BEAN_NAME, CompatibleReferenceAnnotationBeanPostProcessor.class);
-
-    }
-
-    @Override
-    protected Class<?> getBeanClass(Element element) {
-        return CompatibleServiceAnnotationBeanPostProcessor.class;
-    }
-
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/cache/CacheTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/cache/CacheTest.java
deleted file mode 100644
index 6ff4d8b4ae..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/cache/CacheTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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 org.apache.dubbo.cache;
-
-import com.alibaba.dubbo.cache.Cache;
-import com.alibaba.dubbo.cache.CacheFactory;
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.rpc.Invocation;
-import com.alibaba.dubbo.rpc.Invoker;
-
-import org.apache.dubbo.rpc.RpcInvocation;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.Map;
-
-public class CacheTest {
-
-    @Test
-    public void testCacheFactory() {
-        URL url = URL.valueOf("test://test:11/test?cache=jacache&.cache.write.expire=1");
-        CacheFactory cacheFactory = new MyCacheFactory();
-        Invocation invocation = new NullInvocation();
-        Cache cache = cacheFactory.getCache(url, invocation);
-        cache.put("testKey", "testValue");
-
-        org.apache.dubbo.cache.CacheFactory factory = cacheFactory;
-        org.apache.dubbo.common.URL u = org.apache.dubbo.common.URL.valueOf("test://test:11/test?cache=jacache&.cache.write.expire=1");
-        org.apache.dubbo.rpc.Invocation inv = new RpcInvocation();
-        org.apache.dubbo.cache.Cache c = factory.getCache(u, inv);
-        String v = (String) c.get("testKey");
-        Assert.assertEquals("testValue", v);
-    }
-
-    static class NullInvocation implements Invocation {
-        @Override
-        public String getMethodName() {
-            return null;
-        }
-
-        @Override
-        public Class<?>[] getParameterTypes() {
-            return new Class[0];
-        }
-
-        @Override
-        public Object[] getArguments() {
-            return new Object[0];
-        }
-
-        @Override
-        public Map<String, String> getAttachments() {
-            return null;
-        }
-
-        @Override
-        public String getAttachment(String key) {
-            return null;
-        }
-
-        @Override
-        public String getAttachment(String key, String defaultValue) {
-            return null;
-        }
-
-        @Override
-        public Invoker<?> getInvoker() {
-            return null;
-        }
-    }
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/cache/MyCache.java b/dubbo-compatible/src/test/java/org/apache/dubbo/cache/MyCache.java
deleted file mode 100644
index c7a7528350..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/cache/MyCache.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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 org.apache.dubbo.cache;
-
-import com.alibaba.dubbo.cache.Cache;
-import com.alibaba.dubbo.common.URL;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class MyCache implements Cache {
-
-    private Map<Object, Object> map = new HashMap<Object, Object>();
-
-    public MyCache(URL url) {
-    }
-
-    @Override
-    public void put(Object key, Object value) {
-        map.put(key, value);
-    }
-
-    @Override
-    public Object get(Object key) {
-        return map.get(key);
-    }
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/cache/MyCacheFactory.java b/dubbo-compatible/src/test/java/org/apache/dubbo/cache/MyCacheFactory.java
deleted file mode 100644
index aa22fbe4a7..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/cache/MyCacheFactory.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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 org.apache.dubbo.cache;
-
-import com.alibaba.dubbo.cache.Cache;
-import com.alibaba.dubbo.cache.support.AbstractCacheFactory;
-import com.alibaba.dubbo.common.URL;
-
-public class MyCacheFactory extends AbstractCacheFactory {
-
-    @Override
-    protected Cache createCache(URL url) {
-        return new MyCache(url);
-    }
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/ExtensionTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/ExtensionTest.java
deleted file mode 100644
index 124382711e..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/ExtensionTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.extension;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.fail;
-
-public class ExtensionTest {
-
-    @Test
-    public void testExtensionFactory() {
-        try {
-            ExtensionFactory factory = ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getExtension("myfactory");
-            Assert.assertTrue(factory instanceof ExtensionFactory);
-            Assert.assertTrue(factory instanceof com.alibaba.dubbo.common.extension.ExtensionFactory);
-            Assert.assertTrue(factory instanceof MyExtensionFactory);
-
-            ExtensionFactory spring = ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getExtension("spring");
-            Assert.assertTrue(spring instanceof ExtensionFactory);
-            Assert.assertFalse(spring instanceof com.alibaba.dubbo.common.extension.ExtensionFactory);
-        } catch (IllegalArgumentException expected) {
-            fail();
-        }
-    }
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/MyExtensionFactory.java b/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/MyExtensionFactory.java
deleted file mode 100644
index f9602b44ae..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/MyExtensionFactory.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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 org.apache.dubbo.common.extension;
-
-import com.alibaba.dubbo.common.extension.ExtensionFactory;
-
-public class MyExtensionFactory implements ExtensionFactory {
-
-    @Override
-    public <T> T getExtension(Class<T> type, String name) {
-        return null;
-    }
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ApplicationConfigTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/config/ApplicationConfigTest.java
deleted file mode 100644
index fe4c2ff537..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ApplicationConfigTest.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * 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 org.apache.dubbo.config;
-
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.config.ApplicationConfig;
-import com.alibaba.dubbo.config.MonitorConfig;
-import com.alibaba.dubbo.config.RegistryConfig;
-import org.junit.Test;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.hamcrest.Matchers.contains;
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.hasEntry;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.sameInstance;
-import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
-import static org.junit.Assert.assertThat;
-
-public class ApplicationConfigTest {
-    @Test
-    public void testName() throws Exception {
-        ApplicationConfig application = new ApplicationConfig();
-        application.setName("app");
-        assertThat(application.getName(), equalTo("app"));
-        application = new ApplicationConfig("app2");
-        assertThat(application.getName(), equalTo("app2"));
-        Map<String, String> parameters = new HashMap<String, String>();
-        ApplicationConfig.appendParameters(parameters, application);
-        assertThat(parameters, hasEntry(Constants.APPLICATION_KEY, "app2"));
-    }
-
-    @Test
-    public void testVersion() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        application.setVersion("1.0.0");
-        assertThat(application.getVersion(), equalTo("1.0.0"));
-        Map<String, String> parameters = new HashMap<String, String>();
-        ApplicationConfig.appendParameters(parameters, application);
-        assertThat(parameters, hasEntry("application.version", "1.0.0"));
-    }
-
-    @Test
-    public void testOwner() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        application.setOwner("owner");
-        assertThat(application.getOwner(), equalTo("owner"));
-    }
-
-    @Test
-    public void testOrganization() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        application.setOrganization("org");
-        assertThat(application.getOrganization(), equalTo("org"));
-    }
-
-    @Test
-    public void testArchitecture() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        application.setArchitecture("arch");
-        assertThat(application.getArchitecture(), equalTo("arch"));
-    }
-
-    @Test
-    public void testEnvironment1() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        application.setEnvironment("develop");
-        assertThat(application.getEnvironment(), equalTo("develop"));
-        application.setEnvironment("test");
-        assertThat(application.getEnvironment(), equalTo("test"));
-        application.setEnvironment("product");
-        assertThat(application.getEnvironment(), equalTo("product"));
-    }
-
-    @Test(expected = IllegalStateException.class)
-    public void testEnvironment2() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        application.setEnvironment("illegal-env");
-    }
-
-    @Test
-    public void testRegistry() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        RegistryConfig registry = new RegistryConfig();
-        application.setRegistry(registry);
-        assertThat(application.getRegistry(), sameInstance(registry));
-        application.setRegistries(Collections.singletonList(registry));
-        assertThat(application.getRegistries(), contains(registry));
-        assertThat(application.getRegistries(), hasSize(1));
-    }
-
-    @Test
-    public void testMonitor() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        application.setMonitor(new MonitorConfig("monitor-addr"));
-        assertThat(application.getMonitor().getAddress(), equalTo("monitor-addr"));
-        application.setMonitor("monitor-addr");
-        assertThat(application.getMonitor().getAddress(), equalTo("monitor-addr"));
-    }
-
-    @Test
-    public void testLogger() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        application.setLogger("log4j");
-        assertThat(application.getLogger(), equalTo("log4j"));
-    }
-
-    @Test
-    public void testDefault() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        application.setDefault(true);
-        assertThat(application.isDefault(), is(true));
-    }
-
-    @Test
-    public void testDumpDirectory() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        application.setDumpDirectory("/dump");
-        assertThat(application.getDumpDirectory(), equalTo("/dump"));
-        Map<String, String> parameters = new HashMap<String, String>();
-        ApplicationConfig.appendParameters(parameters, application);
-        assertThat(parameters, hasEntry(Constants.DUMP_DIRECTORY, "/dump"));
-    }
-
-    @Test
-    public void testQosEnable() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        application.setQosEnable(true);
-        assertThat(application.getQosEnable(), is(true));
-        Map<String, String> parameters = new HashMap<String, String>();
-        ApplicationConfig.appendParameters(parameters, application);
-        assertThat(parameters, hasEntry(Constants.QOS_ENABLE, "true"));
-    }
-
-    @Test
-    public void testQosPort() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        application.setQosPort(8080);
-        assertThat(application.getQosPort(), equalTo(8080));
-    }
-
-    @Test
-    public void testQosAcceptForeignIp() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        application.setQosAcceptForeignIp(true);
-        assertThat(application.getQosAcceptForeignIp(), is(true));
-        Map<String, String> parameters = new HashMap<String, String>();
-        ApplicationConfig.appendParameters(parameters, application);
-        assertThat(parameters, hasEntry(Constants.ACCEPT_FOREIGN_IP, "true"));
-    }
-
-    @Test
-    public void testParameters() throws Exception {
-        ApplicationConfig application = new ApplicationConfig("app");
-        application.setQosAcceptForeignIp(true);
-        Map<String, String> parameters = new HashMap<String, String>();
-        parameters.put("k1", "v1");
-        ApplicationConfig.appendParameters(parameters, application);
-        assertThat(parameters, hasEntry("k1", "v1"));
-        assertThat(parameters, hasEntry(Constants.ACCEPT_FOREIGN_IP, "true"));
-    }
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ArgumentConfigTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/config/ArgumentConfigTest.java
deleted file mode 100644
index 2f73c51591..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ArgumentConfigTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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 org.apache.dubbo.config;
-
-import org.junit.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.alibaba.dubbo.config.ArgumentConfig;
-
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.hasEntry;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
-public class ArgumentConfigTest {
-    @Test
-    public void testIndex() throws Exception {
-        ArgumentConfig argument = new ArgumentConfig();
-        argument.setIndex(1);
-        assertThat(argument.getIndex(), is(1));
-    }
-
-    @Test
-    public void testType() throws Exception {
-        ArgumentConfig argument = new ArgumentConfig();
-        argument.setType("int");
-        assertThat(argument.getType(), equalTo("int"));
-    }
-
-    @Test
-    public void testCallback() throws Exception {
-        ArgumentConfig argument = new ArgumentConfig();
-        argument.setCallback(true);
-        assertThat(argument.isCallback(), is(true));
-    }
-
-    @Test
-    public void testArguments() throws Exception {
-        ArgumentConfig argument = new ArgumentConfig();
-        argument.setIndex(1);
-        argument.setType("int");
-        argument.setCallback(true);
-        Map<String, String> parameters = new HashMap<String, String>();
-        AbstractServiceConfig.appendParameters(parameters, argument);
-        assertThat(parameters, hasEntry("callback", "true"));
-        assertThat(parameters.size(), is(1));
-    }
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ConfigTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/config/ConfigTest.java
deleted file mode 100644
index 2e57fec180..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ConfigTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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 org.apache.dubbo.config;
-
-import org.apache.dubbo.service.DemoService;
-import org.apache.dubbo.service.DemoServiceImpl;
-
-import com.alibaba.dubbo.config.ApplicationConfig;
-import com.alibaba.dubbo.config.ReferenceConfig;
-import com.alibaba.dubbo.config.RegistryConfig;
-import com.alibaba.dubbo.config.ServiceConfig;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-public class ConfigTest {
-
-    @Before
-    public void setup() {
-        // In IDE env, make sure adding the following argument to VM options
-        System.setProperty("java.net.preferIPv4Stack", "true");
-    }
-
-    @Test
-    public void testConfig() {
-        com.alibaba.dubbo.config.ServiceConfig<DemoService> service = new ServiceConfig<>();
-        service.setApplication(new com.alibaba.dubbo.config.ApplicationConfig("first-dubbo-provider"));
-        service.setRegistry(new com.alibaba.dubbo.config.RegistryConfig("multicast://224.5.6.7:1234"));
-        service.setInterface(DemoService.class);
-        service.setRef(new DemoServiceImpl());
-        service.export();
-
-        com.alibaba.dubbo.config.ReferenceConfig<DemoService> reference = new ReferenceConfig<>();
-        reference.setApplication(new ApplicationConfig("first-dubbo-client"));
-        reference.setRegistry(new RegistryConfig("multicast://224.5.6.7:1234"));
-        reference.setInterface(DemoService.class);
-        DemoService demoService = reference.get();
-        String message = demoService.sayHello("dubbo");
-        Assert.assertEquals("hello dubbo", message);
-    }
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ConsumerConfigTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/config/ConsumerConfigTest.java
deleted file mode 100644
index 2b08c79d78..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ConsumerConfigTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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 org.apache.dubbo.config;
-
-import org.junit.Test;
-
-import com.alibaba.dubbo.config.ConsumerConfig;
-
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
-public class ConsumerConfigTest {
-    @Test
-    public void testTimeout() throws Exception {
-        try {
-            System.clearProperty("sun.rmi.transport.tcp.responseTimeout");
-            ConsumerConfig consumer = new ConsumerConfig();
-            consumer.setTimeout(10);
-            assertThat(consumer.getTimeout(), is(10));
-            assertThat(System.getProperty("sun.rmi.transport.tcp.responseTimeout"), equalTo("10"));
-        } finally {
-            System.clearProperty("sun.rmi.transport.tcp.responseTimeout");
-        }
-    }
-
-    @Test
-    public void testDefault() throws Exception {
-        ConsumerConfig consumer = new ConsumerConfig();
-        consumer.setDefault(true);
-        assertThat(consumer.isDefault(), is(true));
-    }
-
-    @Test
-    public void testClient() throws Exception {
-        ConsumerConfig consumer = new ConsumerConfig();
-        consumer.setClient("client");
-        assertThat(consumer.getClient(), equalTo("client"));
-    }
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/config/MethodConfigTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/config/MethodConfigTest.java
deleted file mode 100644
index a7c5e99a03..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/config/MethodConfigTest.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * 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 org.apache.dubbo.config;
-
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.config.MethodConfig;
-import com.alibaba.dubbo.config.ArgumentConfig;
-import org.hamcrest.Matchers;
-import org.junit.Test;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.hamcrest.Matchers.contains;
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.hasEntry;
-import static org.hamcrest.Matchers.hasKey;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.not;
-import static org.junit.Assert.assertThat;
-
-public class MethodConfigTest {
-    @Test
-    public void testName() throws Exception {
-        MethodConfig method = new MethodConfig();
-        method.setName("hello");
-        assertThat(method.getName(), equalTo("hello"));
-        Map<String, String> parameters = new HashMap<String, String>();
-        MethodConfig.appendParameters(parameters, method);
-        assertThat(parameters, not(hasKey("name")));
-    }
-
-    @Test
-    public void testStat() throws Exception {
-        MethodConfig method = new MethodConfig();
-        method.setStat(10);
-        assertThat(method.getStat(), equalTo(10));
-    }
-
-    @Test
-    public void testRetry() throws Exception {
-        MethodConfig method = new MethodConfig();
-        method.setRetry(true);
-        assertThat(method.isRetry(), is(true));
-    }
-
-    @Test
-    public void testReliable() throws Exception {
-        MethodConfig method = new MethodConfig();
-        method.setReliable(true);
-        assertThat(method.isReliable(), is(true));
-    }
-
-    @Test
-    public void testExecutes() throws Exception {
-        MethodConfig method = new MethodConfig();
-        method.setExecutes(10);
-        assertThat(method.getExecutes(), equalTo(10));
-    }
-
-    @Test
-    public void testDeprecated() throws Exception {
-        MethodConfig method = new MethodConfig();
-        method.setDeprecated(true);
-        assertThat(method.getDeprecated(), is(true));
-    }
-
-    @Test
-    public void testArguments() throws Exception {
-        MethodConfig method = new MethodConfig();
-        ArgumentConfig argument = new ArgumentConfig();
-        method.setArguments(Collections.singletonList(argument));
-        assertThat(method.getArguments(), contains(argument));
-        assertThat(method.getArguments(), Matchers.<org.apache.dubbo.config.ArgumentConfig>hasSize(1));
-    }
-
-    @Test
-    public void testSticky() throws Exception {
-        MethodConfig method = new MethodConfig();
-        method.setSticky(true);
-        assertThat(method.getSticky(), is(true));
-    }
-
-    @Test
-    public void testOnreturn() throws Exception {
-        MethodConfig method = new MethodConfig();
-        method.setOnreturn("on-return-object");
-        assertThat(method.getOnreturn(), equalTo((Object) "on-return-object"));
-        Map<Object, Object> attribute = new HashMap<Object, Object>();
-        MethodConfig.appendAttributes(attribute, method);
-        assertThat(attribute, hasEntry((Object) Constants.ON_RETURN_INSTANCE_KEY, (Object) "on-return-object"));
-        Map<String, String> parameters = new HashMap<String, String>();
-        MethodConfig.appendParameters(parameters, method);
-        assertThat(parameters.size(), is(0));
-    }
-
-    @Test
-    public void testOnreturnMethod() throws Exception {
-        MethodConfig method = new MethodConfig();
-        method.setOnreturnMethod("on-return-method");
-        assertThat(method.getOnreturnMethod(), equalTo("on-return-method"));
-        Map<Object, Object> attribute = new HashMap<Object, Object>();
-        MethodConfig.appendAttributes(attribute, method);
-        assertThat(attribute, hasEntry((Object) Constants.ON_RETURN_METHOD_KEY, (Object) "on-return-method"));
-        Map<String, String> parameters = new HashMap<String, String>();
-        MethodConfig.appendParameters(parameters, method);
-        assertThat(parameters.size(), is(0));
-    }
-
-    @Test
-    public void testOnthrow() throws Exception {
-        MethodConfig method = new MethodConfig();
-        method.setOnthrow("on-throw-object");
-        assertThat(method.getOnthrow(), equalTo((Object) "on-throw-object"));
-        Map<Object, Object> attribute = new HashMap<Object, Object>();
-        MethodConfig.appendAttributes(attribute, method);
-        assertThat(attribute, hasEntry((Object) Constants.ON_THROW_INSTANCE_KEY, (Object) "on-throw-object"));
-        Map<String, String> parameters = new HashMap<String, String>();
-        MethodConfig.appendParameters(parameters, method);
-        assertThat(parameters.size(), is(0));
-    }
-
-    @Test
-    public void testOnthrowMethod() throws Exception {
-        MethodConfig method = new MethodConfig();
-        method.setOnthrowMethod("on-throw-method");
-        assertThat(method.getOnthrowMethod(), equalTo("on-throw-method"));
-        Map<Object, Object> attribute = new HashMap<Object, Object>();
-        MethodConfig.appendAttributes(attribute, method);
-        assertThat(attribute, hasEntry((Object) Constants.ON_THROW_METHOD_KEY, (Object) "on-throw-method"));
-        Map<String, String> parameters = new HashMap<String, String>();
-        MethodConfig.appendParameters(parameters, method);
-        assertThat(parameters.size(), is(0));
-    }
-
-    @Test
-    public void testOninvoke() throws Exception {
-        MethodConfig method = new MethodConfig();
-        method.setOninvoke("on-invoke-object");
-        assertThat(method.getOninvoke(), equalTo((Object) "on-invoke-object"));
-        Map<Object, Object> attribute = new HashMap<Object, Object>();
-        MethodConfig.appendAttributes(attribute, method);
-        assertThat(attribute, hasEntry((Object) Constants.ON_INVOKE_INSTANCE_KEY, (Object) "on-invoke-object"));
-        Map<String, String> parameters = new HashMap<String, String>();
-        MethodConfig.appendParameters(parameters, method);
-        assertThat(parameters.size(), is(0));
-    }
-
-    @Test
-    public void testOninvokeMethod() throws Exception {
-        MethodConfig method = new MethodConfig();
-        method.setOninvokeMethod("on-invoke-method");
-        assertThat(method.getOninvokeMethod(), equalTo("on-invoke-method"));
-        Map<Object, Object> attribute = new HashMap<Object, Object>();
-        MethodConfig.appendAttributes(attribute, method);
-        assertThat(attribute, hasEntry((Object) Constants.ON_INVOKE_METHOD_KEY, (Object) "on-invoke-method"));
-        Map<String, String> parameters = new HashMap<String, String>();
-        MethodConfig.appendParameters(parameters, method);
-        assertThat(parameters.size(), is(0));
-    }
-
-    @Test
-    public void testReturn() throws Exception {
-        MethodConfig method = new MethodConfig();
-        method.setReturn(true);
-        assertThat(method.isReturn(), is(true));
-    }
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ModuleConfigTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/config/ModuleConfigTest.java
deleted file mode 100644
index 5dc9701a06..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ModuleConfigTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * 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 org.apache.dubbo.config;
-
-import com.alibaba.dubbo.config.ModuleConfig;
-import com.alibaba.dubbo.config.RegistryConfig;
-
-import org.hamcrest.Matchers;
-import org.junit.Test;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.hamcrest.Matchers.contains;
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.hasEntry;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.sameInstance;
-import static org.junit.Assert.assertThat;
-
-public class ModuleConfigTest {
-    @Test(expected = IllegalStateException.class)
-    public void testName1() throws Exception {
-        ModuleConfig module = new ModuleConfig();
-        Map<String, String> parameters = new HashMap<String, String>();
-        ModuleConfig.appendParameters(parameters, module);
-    }
-
-    @Test
-    public void testName2() throws Exception {
-        ModuleConfig module = new ModuleConfig();
-        module.setName("module-name");
-        assertThat(module.getName(), equalTo("module-name"));
-        assertThat(module.getId(), equalTo("module-name"));
-        Map<String, String> parameters = new HashMap<String, String>();
-        ModuleConfig.appendParameters(parameters, module);
-        assertThat(parameters, hasEntry("module", "module-name"));
-    }
-
-    @Test
-    public void testVersion() throws Exception {
-        ModuleConfig module = new ModuleConfig();
-        module.setName("module-name");
-        module.setVersion("1.0.0");
-        assertThat(module.getVersion(), equalTo("1.0.0"));
-        Map<String, String> parameters = new HashMap<String, String>();
-        ModuleConfig.appendParameters(parameters, module);
-        assertThat(parameters, hasEntry("module.version", "1.0.0"));
-    }
-
-    @Test
-    public void testOwner() throws Exception {
-        ModuleConfig module = new ModuleConfig();
-        module.setOwner("owner");
-        assertThat(module.getOwner(), equalTo("owner"));
-    }
-
-    @Test
-    public void testOrganization() throws Exception {
-        ModuleConfig module = new ModuleConfig();
-        module.setOrganization("org");
-        assertThat(module.getOrganization(), equalTo("org"));
-    }
-
-    @Test
-    public void testRegistry() throws Exception {
-        ModuleConfig module = new ModuleConfig();
-        RegistryConfig registry = new RegistryConfig();
-        module.setRegistry(registry);
-        assertThat(module.getRegistry(), sameInstance(registry));
-    }
-
-    @Test
-    public void testRegistries() throws Exception {
-        ModuleConfig module = new ModuleConfig();
-        RegistryConfig registry = new RegistryConfig();
-        module.setRegistries(Collections.singletonList(registry));
-        assertThat(module.getRegistries(), Matchers.<org.apache.dubbo.config.RegistryConfig>hasSize(1));
-        assertThat(module.getRegistries(), contains(registry));
-    }
-
-    @Test
-    public void testMonitor() throws Exception {
-        ModuleConfig module = new ModuleConfig();
-        module.setMonitor("monitor-addr1");
-        assertThat(module.getMonitor().getAddress(), equalTo("monitor-addr1"));
-        module.setMonitor(new MonitorConfig("monitor-addr2"));
-        assertThat(module.getMonitor().getAddress(), equalTo("monitor-addr2"));
-    }
-
-    @Test
-    public void testDefault() throws Exception {
-        ModuleConfig module = new ModuleConfig();
-        module.setDefault(true);
-        assertThat(module.isDefault(), is(true));
-    }
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ProtocolConfigTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/config/ProtocolConfigTest.java
deleted file mode 100644
index 48de8a1e6e..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ProtocolConfigTest.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * 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 org.apache.dubbo.config;
-
-import com.alibaba.dubbo.rpc.Protocol;
-import com.alibaba.dubbo.config.ProtocolConfig;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.hasEntry;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
-public class ProtocolConfigTest {
-
-    @Test
-    public void testName() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setName("name");
-        Map<String, String> parameters = new HashMap<String, String>();
-        ProtocolConfig.appendParameters(parameters, protocol);
-        assertThat(protocol.getName(), equalTo("name"));
-        assertThat(protocol.getId(), equalTo("name"));
-        assertThat(parameters.isEmpty(), is(true));
-    }
-
-    @Test
-    public void testHost() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setHost("host");
-        Map<String, String> parameters = new HashMap<String, String>();
-        ProtocolConfig.appendParameters(parameters, protocol);
-        assertThat(protocol.getHost(), equalTo("host"));
-        assertThat(parameters.isEmpty(), is(true));
-    }
-
-    @Test
-    public void testPort() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setPort(8080);
-        Map<String, String> parameters = new HashMap<String, String>();
-        ProtocolConfig.appendParameters(parameters, protocol);
-        assertThat(protocol.getPort(), equalTo(8080));
-        assertThat(parameters.isEmpty(), is(true));
-    }
-
-    @Test
-    public void testPath() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setContextpath("context-path");
-        Map<String, String> parameters = new HashMap<String, String>();
-        ProtocolConfig.appendParameters(parameters, protocol);
-        assertThat(protocol.getPath(), equalTo("context-path"));
-        assertThat(protocol.getContextpath(), equalTo("context-path"));
-        assertThat(parameters.isEmpty(), is(true));
-        protocol.setPath("path");
-        assertThat(protocol.getPath(), equalTo("path"));
-        assertThat(protocol.getContextpath(), equalTo("path"));
-    }
-
-    @Test
-    public void testThreads() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setThreads(10);
-        assertThat(protocol.getThreads(), is(10));
-    }
-
-    @Test
-    public void testIothreads() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setIothreads(10);
-        assertThat(protocol.getIothreads(), is(10));
-    }
-
-    @Test
-    public void testQueues() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setQueues(10);
-        assertThat(protocol.getQueues(), is(10));
-    }
-
-    @Test
-    public void testAccepts() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setAccepts(10);
-        assertThat(protocol.getAccepts(), is(10));
-    }
-
-    @Test
-    public void testAccesslog() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setAccesslog("access.log");
-        assertThat(protocol.getAccesslog(), equalTo("access.log"));
-    }
-
-    @Test
-    public void testRegister() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setRegister(true);
-        assertThat(protocol.isRegister(), is(true));
-    }
-
-    @Test
-    public void testParameters() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setParameters(Collections.singletonMap("k1", "v1"));
-        assertThat(protocol.getParameters(), hasEntry("k1", "v1"));
-    }
-
-    @Test
-    public void testDefault() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setDefault(true);
-        assertThat(protocol.isDefault(), is(true));
-    }
-
-    @Test
-    public void testKeepAlive() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setKeepAlive(true);
-        assertThat(protocol.getKeepAlive(), is(true));
-    }
-
-    @Test
-    public void testOptimizer() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setOptimizer("optimizer");
-        assertThat(protocol.getOptimizer(), equalTo("optimizer"));
-    }
-
-    @Test
-    public void testExtension() throws Exception {
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setExtension("extension");
-        assertThat(protocol.getExtension(), equalTo("extension"));
-    }
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ProviderConfigTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/config/ProviderConfigTest.java
deleted file mode 100644
index 10bdeb7956..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ProviderConfigTest.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * 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 org.apache.dubbo.config;
-
-import com.alibaba.dubbo.config.ProviderConfig;
-
-import org.junit.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.hasEntry;
-import static org.hamcrest.Matchers.hasKey;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.not;
-import static org.junit.Assert.assertThat;
-
-public class ProviderConfigTest {
-    @Test
-    public void testProtocol() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setProtocol("protocol");
-        assertThat(provider.getProtocol().getName(), equalTo("protocol"));
-    }
-
-    @Test
-    public void testDefault() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setDefault(true);
-        Map<String, String> parameters = new HashMap<String, String>();
-        ProviderConfig.appendParameters(parameters, provider);
-        assertThat(provider.isDefault(), is(true));
-        assertThat(parameters, not(hasKey("default")));
-    }
-
-    @Test
-    public void testHost() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setHost("demo-host");
-        Map<String, String> parameters = new HashMap<String, String>();
-        ProviderConfig.appendParameters(parameters, provider);
-        assertThat(provider.getHost(), equalTo("demo-host"));
-        assertThat(parameters, not(hasKey("host")));
-    }
-
-    @Test
-    public void testPort() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setPort(8080);
-        Map<String, String> parameters = new HashMap<String, String>();
-        ProviderConfig.appendParameters(parameters, provider);
-        assertThat(provider.getPort(), is(8080));
-        assertThat(parameters, not(hasKey("port")));
-    }
-
-    @Test
-    public void testPath() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setPath("/path");
-        Map<String, String> parameters = new HashMap<String, String>();
-        ProviderConfig.appendParameters(parameters, provider);
-        assertThat(provider.getPath(), equalTo("/path"));
-        assertThat(provider.getContextpath(), equalTo("/path"));
-        assertThat(parameters, not(hasKey("path")));
-    }
-
-    @Test
-    public void testContextPath() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setContextpath("/context-path");
-        Map<String, String> parameters = new HashMap<String, String>();
-        ProviderConfig.appendParameters(parameters, provider);
-        assertThat(provider.getContextpath(), equalTo("/context-path"));
-        assertThat(parameters, not(hasKey("/context-path")));
-    }
-
-
-    @Test
-    public void testThreads() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setThreads(10);
-        assertThat(provider.getThreads(), is(10));
-    }
-
-    @Test
-    public void testIothreads() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setIothreads(10);
-        assertThat(provider.getIothreads(), is(10));
-    }
-
-    @Test
-    public void testQueues() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setQueues(10);
-        assertThat(provider.getQueues(), is(10));
-    }
-
-    @Test
-    public void testAccepts() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setAccepts(10);
-        assertThat(provider.getAccepts(), is(10));
-    }
-
-    @Test
-    public void testCharset() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setCharset("utf-8");
-        assertThat(provider.getCharset(), equalTo("utf-8"));
-    }
-
-    @Test
-    public void testPayload() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setPayload(10);
-        assertThat(provider.getPayload(), is(10));
-    }
-
-    @Test
-    public void testBuffer() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setBuffer(10);
-        assertThat(provider.getBuffer(), is(10));
-    }
-
-    @Test
-    public void testServer() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setServer("demo-server");
-        assertThat(provider.getServer(), equalTo("demo-server"));
-    }
-
-    @Test
-    public void testClient() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setClient("client");
-        assertThat(provider.getClient(), equalTo("client"));
-    }
-
-    @Test
-    public void testPrompt() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setPrompt("#");
-        Map<String, String> parameters = new HashMap<String, String>();
-        ProviderConfig.appendParameters(parameters, provider);
-        assertThat(provider.getPrompt(), equalTo("#"));
-        assertThat(parameters, hasEntry("prompt", "%23"));
-    }
-
-    @Test
-    public void testDispatcher() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setDispatcher("mockdispatcher");
-        assertThat(provider.getDispatcher(), equalTo("mockdispatcher"));
-    }
-
-    @Test
-    public void testNetworker() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setNetworker("networker");
-        assertThat(provider.getNetworker(), equalTo("networker"));
-    }
-
-    @Test
-    public void testWait() throws Exception {
-        ProviderConfig provider = new ProviderConfig();
-        provider.setWait(10);
-        assertThat(provider.getWait(), equalTo(10));
-    }
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
deleted file mode 100644
index 7f331e60ae..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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 org.apache.dubbo.config;
-
-import org.apache.dubbo.service.DemoService;
-import org.apache.dubbo.service.DemoServiceImpl;
-
-import com.alibaba.dubbo.config.ApplicationConfig;
-import com.alibaba.dubbo.config.RegistryConfig;
-import com.alibaba.dubbo.config.ProtocolConfig;
-import com.alibaba.dubbo.config.ServiceConfig;
-import com.alibaba.dubbo.config.ReferenceConfig;
-
-import org.junit.Test;
-
-public class ReferenceConfigTest {
-
-    @Test
-    public void testInjvm() throws Exception {
-        ApplicationConfig application = new ApplicationConfig();
-        application.setName("test-protocol-random-port");
-
-        RegistryConfig registry = new RegistryConfig();
-        registry.setAddress("multicast://224.5.6.7:1234");
-
-        ProtocolConfig protocol = new ProtocolConfig();
-        protocol.setName("dubbo");
-
-        ServiceConfig<DemoService> demoService;
-        demoService = new ServiceConfig<DemoService>();
-        demoService.setInterface(DemoService.class);
-        demoService.setRef(new DemoServiceImpl());
-        demoService.setApplication(application);
-        demoService.setRegistry(registry);
-        demoService.setProtocol(protocol);
-
-        ReferenceConfig<DemoService> rc = new ReferenceConfig<DemoService>();
-        rc.setApplication(application);
-        rc.setRegistry(registry);
-        rc.setInterface(DemoService.class.getName());
-        rc.setInjvm(false);
-
-        try {
-            demoService.export();
-            rc.get();
-        } finally {
-            demoService.unexport();
-        }
-    }
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/config/RegistryConfigTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/config/RegistryConfigTest.java
deleted file mode 100644
index 1511f42a66..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/config/RegistryConfigTest.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * 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 org.apache.dubbo.config;
-
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.config.RegistryConfig;
-import org.junit.Test;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.hasEntry;
-import static org.hamcrest.Matchers.hasKey;
-import static org.hamcrest.Matchers.not;
-import static org.junit.Assert.assertThat;
-
-public class RegistryConfigTest {
-    @Test
-    public void testProtocol() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setProtocol("protocol");
-        assertThat(registry.getProtocol(), equalTo(registry.getProtocol()));
-    }
-
-    @Test
-    public void testAddress() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setAddress("localhost");
-        assertThat(registry.getAddress(), equalTo("localhost"));
-        Map<String, String> parameters = new HashMap<String, String>();
-        RegistryConfig.appendParameters(parameters, registry);
-        assertThat(parameters, not(hasKey("address")));
-    }
-
-    @Test
-    public void testUsername() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setUsername("username");
-        assertThat(registry.getUsername(), equalTo("username"));
-    }
-
-    @Test
-    public void testPassword() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setPassword("password");
-        assertThat(registry.getPassword(), equalTo("password"));
-    }
-
-    @Test
-    public void testWait() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setWait(10);
-        assertThat(registry.getWait(), is(10));
-        assertThat(System.getProperty(Constants.SHUTDOWN_WAIT_KEY), equalTo("10"));
-    }
-
-    @Test
-    public void testCheck() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setCheck(true);
-        assertThat(registry.isCheck(), is(true));
-    }
-
-    @Test
-    public void testFile() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setFile("file");
-        assertThat(registry.getFile(), equalTo("file"));
-    }
-
-    @Test
-    public void testTransporter() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setTransporter("transporter");
-        assertThat(registry.getTransporter(), equalTo("transporter"));
-    }
-
-    @Test
-    public void testClient() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setClient("client");
-        assertThat(registry.getClient(), equalTo("client"));
-    }
-
-    @Test
-    public void testTimeout() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setTimeout(10);
-        assertThat(registry.getTimeout(), is(10));
-    }
-
-    @Test
-    public void testSession() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setSession(10);
-        assertThat(registry.getSession(), is(10));
-    }
-
-    @Test
-    public void testDynamic() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setDynamic(true);
-        assertThat(registry.isDynamic(), is(true));
-    }
-
-    @Test
-    public void testRegister() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setRegister(true);
-        assertThat(registry.isRegister(), is(true));
-    }
-
-    @Test
-    public void testSubscribe() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setSubscribe(true);
-        assertThat(registry.isSubscribe(), is(true));
-    }
-
-    @Test
-    public void testCluster() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setCluster("cluster");
-        assertThat(registry.getCluster(), equalTo("cluster"));
-    }
-
-    @Test
-    public void testGroup() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setGroup("group");
-        assertThat(registry.getGroup(), equalTo("group"));
-    }
-
-    @Test
-    public void testVersion() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setVersion("1.0.0");
-        assertThat(registry.getVersion(), equalTo("1.0.0"));
-    }
-
-    @Test
-    public void testParameters() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setParameters(Collections.singletonMap("k1", "v1"));
-        assertThat(registry.getParameters(), hasEntry("k1", "v1"));
-        Map<String, String> parameters = new HashMap<String, String>();
-        RegistryConfig.appendParameters(parameters, registry);
-        assertThat(parameters, hasEntry("k1", "v1"));
-    }
-
-    @Test
-    public void testDefault() throws Exception {
-        RegistryConfig registry = new RegistryConfig();
-        registry.setDefault(true);
-        assertThat(registry.isDefault(), is(true));
-    }
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/echo/EchoServiceTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/echo/EchoServiceTest.java
deleted file mode 100644
index b9d1cf761d..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/echo/EchoServiceTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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 org.apache.dubbo.echo;
-
-import com.alibaba.dubbo.rpc.service.EchoService;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.ExtensionLoader;
-import org.apache.dubbo.service.DemoService;
-import org.apache.dubbo.service.DemoServiceImpl;
-import org.apache.dubbo.rpc.Exporter;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.Protocol;
-import org.apache.dubbo.rpc.ProxyFactory;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class EchoServiceTest {
-
-    @Test
-    public void testEcho() {
-        DemoService server = new DemoServiceImpl();
-        ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
-        Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
-        URL url = URL.valueOf("dubbo://127.0.0.1:5342/" + DemoService.class.getName() + "?version=1.0.0");
-        Exporter<DemoService> exporter = protocol.export(proxyFactory.getInvoker(server, DemoService.class, url));
-        Invoker<DemoService> invoker = protocol.refer(DemoService.class, url);
-        EchoService client = (EchoService) proxyFactory.getProxy(invoker);
-        Object result = client.$echo("haha");
-        Assert.assertEquals("haha", result);
-
-        org.apache.dubbo.rpc.service.EchoService newClient = (org.apache.dubbo.rpc.service.EchoService) proxyFactory.getProxy(invoker);
-        Object res = newClient.$echo("hehe");
-        Assert.assertEquals("hehe", res);
-        invoker.destroy();
-        exporter.unexport();
-    }
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/filter/FilterTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/filter/FilterTest.java
deleted file mode 100644
index 53a2db320c..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/filter/FilterTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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 org.apache.dubbo.filter;
-
-import org.apache.dubbo.service.MockInvocation;
-import org.apache.dubbo.rpc.Filter;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.Result;
-import org.apache.dubbo.rpc.RpcException;
-
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.fail;
-
-public class FilterTest {
-
-    Filter myFilter = new MyFilter();
-
-    @Test
-    public void testInvokeException() {
-        try {
-            Invoker<FilterTest> invoker = new MyInvoker<FilterTest>(null);
-            Invocation invocation = new MockInvocation("aa");
-            myFilter.invoke(invoker, invocation);
-            fail();
-        } catch (RpcException e) {
-            Assert.assertTrue(e.getMessage().contains("arg0 illegal"));
-        }
-    }
-
-    @Test
-    public void testDefault() {
-        Invoker<FilterTest> invoker = new MyInvoker<FilterTest>(null);
-        Invocation invocation = new MockInvocation("bbb");
-        Result res = myFilter.invoke(invoker, invocation);
-        System.out.println(res);
-    }
-
-    @AfterClass
-    public static void tear() {
-        Assert.assertEquals(2, MyFilter.count);
-    }
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/filter/MyFilter.java b/dubbo-compatible/src/test/java/org/apache/dubbo/filter/MyFilter.java
deleted file mode 100644
index b7d7e24e70..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/filter/MyFilter.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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 org.apache.dubbo.filter;
-
-import com.alibaba.dubbo.rpc.Filter;
-import com.alibaba.dubbo.rpc.Invocation;
-import com.alibaba.dubbo.rpc.Invoker;
-import com.alibaba.dubbo.rpc.Result;
-import com.alibaba.dubbo.rpc.RpcException;
-
-
-public class MyFilter implements Filter {
-
-    public static int count = 0;
-
-    @Override
-    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
-        count++;
-
-        if (invocation.getArguments()[0].equals("aa")) {
-            throw new RpcException(new IllegalArgumentException("arg0 illegal"));
-        }
-
-        Result tmp = invoker.invoke(invocation);
-        return tmp;
-    }
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/filter/MyInvoker.java b/dubbo-compatible/src/test/java/org/apache/dubbo/filter/MyInvoker.java
deleted file mode 100644
index 5d69754c93..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/filter/MyInvoker.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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 org.apache.dubbo.filter;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.service.DemoService;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.Result;
-import org.apache.dubbo.rpc.RpcException;
-import org.apache.dubbo.rpc.RpcResult;
-
-public class MyInvoker<T> implements Invoker<T> {
-
-    URL url;
-    Class<T> type;
-    boolean hasException = false;
-
-    public MyInvoker(URL url) {
-        this.url = url;
-        type = (Class<T>) DemoService.class;
-    }
-
-    public MyInvoker(URL url, boolean hasException) {
-        this.url = url;
-        type = (Class<T>) DemoService.class;
-        this.hasException = hasException;
-    }
-
-    @Override
-    public Class<T> getInterface() {
-        return type;
-    }
-
-    public URL getUrl() {
-        return url;
-    }
-
-    @Override
-    public boolean isAvailable() {
-        return false;
-    }
-
-    public Result invoke(Invocation invocation) throws RpcException {
-        RpcResult result = new RpcResult();
-        if (hasException == false) {
-            result.setValue("alibaba");
-            return result;
-        } else {
-            result.setException(new RuntimeException("mocked exception"));
-            return result;
-        }
-
-    }
-
-    @Override
-    public void destroy() {
-    }
-
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java
deleted file mode 100644
index f31234b1e5..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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 org.apache.dubbo.generic;
-
-import com.alibaba.dubbo.rpc.service.GenericService;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.ExtensionLoader;
-import org.apache.dubbo.service.DemoService;
-import org.apache.dubbo.service.DemoServiceImpl;
-import org.apache.dubbo.rpc.Exporter;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.Protocol;
-import org.apache.dubbo.rpc.ProxyFactory;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class GenericServiceTest {
-
-    @Test
-    public void testGeneric() {
-        DemoService server = new DemoServiceImpl();
-        ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
-        Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
-        URL url = URL.valueOf("dubbo://127.0.0.1:5342/" + DemoService.class.getName() + "?version=1.0.0");
-        Exporter<DemoService> exporter = protocol.export(proxyFactory.getInvoker(server, DemoService.class, url));
-        Invoker<DemoService> invoker = protocol.refer(DemoService.class, url);
-
-        GenericService client = (GenericService) proxyFactory.getProxy(invoker, true);
-        Object result = client.$invoke("sayHello", new String[]{"java.lang.String"}, new Object[]{"haha"});
-        Assert.assertEquals("hello haha", result);
-
-        org.apache.dubbo.rpc.service.GenericService newClient = (org.apache.dubbo.rpc.service.GenericService) proxyFactory.getProxy(invoker, true);
-        Object res = newClient.$invoke("sayHello", new String[]{"java.lang.String"}, new Object[]{"hehe"});
-        Assert.assertEquals("hello hehe", res);
-        invoker.destroy();
-        exporter.unexport();
-    }
-
-    @Test
-    public void testGeneric2() {
-        DemoService server = new DemoServiceImpl();
-        ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
-        Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
-        URL url = URL.valueOf("dubbo://127.0.0.1:5342/" + DemoService.class.getName() + "?version=1.0.0&generic=true");
-        Exporter<DemoService> exporter = protocol.export(proxyFactory.getInvoker(server, DemoService.class, url));
-        Invoker<GenericService> invoker = protocol.refer(GenericService.class, url);
-
-        GenericService client = proxyFactory.getProxy(invoker, true);
-        Object result = client.$invoke("sayHello", new String[]{"java.lang.String"}, new Object[]{"haha"});
-        Assert.assertEquals("hello haha", result);
-
-        Invoker<DemoService> invoker2 = protocol.refer(DemoService.class, url);
-
-        GenericService client2 = (GenericService) proxyFactory.getProxy(invoker2, true);
-        Object result2 = client2.$invoke("sayHello", new String[]{"java.lang.String"}, new Object[]{"haha"});
-        Assert.assertEquals("hello haha", result2);
-
-        invoker.destroy();
-        exporter.unexport();
-    }
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/serialization/MyObjectInput.java b/dubbo-compatible/src/test/java/org/apache/dubbo/serialization/MyObjectInput.java
deleted file mode 100644
index 0e1d96c9e3..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/serialization/MyObjectInput.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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 org.apache.dubbo.serialization;
-
-import com.alibaba.dubbo.common.serialize.ObjectInput;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.lang.reflect.Type;
-
-public class MyObjectInput implements ObjectInput {
-
-    private final BufferedReader reader;
-
-    public MyObjectInput(InputStream inputStream) {
-        this.reader = new BufferedReader(new InputStreamReader(inputStream));
-    }
-
-    @Override
-    public Object readObject() throws IOException, ClassNotFoundException {
-        return null;
-    }
-
-    @Override
-    public <T> T readObject(Class<T> cls) throws IOException, ClassNotFoundException {
-        return null;
-    }
-
-    @Override
-    public <T> T readObject(Class<T> cls, Type type) throws IOException, ClassNotFoundException {
-        return null;
-    }
-
-    @Override
-    public boolean readBool() throws IOException {
-        return false;
-    }
-
-    @Override
-    public byte readByte() throws IOException {
-        return 0;
-    }
-
-    @Override
-    public short readShort() throws IOException {
-        return 0;
-    }
-
-    @Override
-    public int readInt() throws IOException {
-        return 0;
-    }
-
-    @Override
-    public long readLong() throws IOException {
-        return 0;
-    }
-
-    @Override
-    public float readFloat() throws IOException {
-        return 0;
-    }
-
-    @Override
-    public double readDouble() throws IOException {
-        return 0;
-    }
-
-    @Override
-    public String readUTF() throws IOException {
-        return reader.readLine();
-    }
-
-    @Override
-    public byte[] readBytes() throws IOException {
-        return new byte[0];
-    }
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/serialization/MyObjectOutput.java b/dubbo-compatible/src/test/java/org/apache/dubbo/serialization/MyObjectOutput.java
deleted file mode 100644
index 7147515a66..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/serialization/MyObjectOutput.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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 org.apache.dubbo.serialization;
-
-import com.alibaba.dubbo.common.serialize.ObjectOutput;
-
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-
-public class MyObjectOutput implements ObjectOutput {
-
-    private final BufferedWriter writer;
-
-    public MyObjectOutput(OutputStream outputStream) {
-        writer = new BufferedWriter(new OutputStreamWriter(outputStream));
-    }
-
-    @Override
-    public void writeObject(Object obj) throws IOException {
-
-    }
-
-    @Override
-    public void writeBool(boolean v) throws IOException {
-
-    }
-
-    @Override
-    public void writeByte(byte v) throws IOException {
-
-    }
-
-    @Override
-    public void writeShort(short v) throws IOException {
-
-    }
-
-    @Override
-    public void writeInt(int v) throws IOException {
-
-    }
-
-    @Override
-    public void writeLong(long v) throws IOException {
-
-    }
-
-    @Override
-    public void writeFloat(float v) throws IOException {
-
-    }
-
-    @Override
-    public void writeDouble(double v) throws IOException {
-
-    }
-
-    @Override
-    public void writeUTF(String v) throws IOException {
-        writer.write(v);
-        writer.write('\n');
-    }
-
-    @Override
-    public void writeBytes(byte[] v) throws IOException {
-
-    }
-
-    @Override
-    public void writeBytes(byte[] v, int off, int len) throws IOException {
-
-    }
-
-    @Override
-    public void flushBuffer() throws IOException {
-        writer.flush();
-    }
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/serialization/MySerialization.java b/dubbo-compatible/src/test/java/org/apache/dubbo/serialization/MySerialization.java
deleted file mode 100644
index 94db7059f9..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/serialization/MySerialization.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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 org.apache.dubbo.serialization;
-
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.serialize.ObjectInput;
-import com.alibaba.dubbo.common.serialize.ObjectOutput;
-import com.alibaba.dubbo.common.serialize.Serialization;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-public class MySerialization implements Serialization {
-
-    @Override
-    public ObjectOutput serialize(URL url, OutputStream output) throws IOException {
-        return new MyObjectOutput(output);
-    }
-
-    @Override
-    public ObjectInput deserialize(URL url, InputStream input) throws IOException {
-        return new MyObjectInput(input);
-    }
-
-    @Override
-    public byte getContentTypeId() {
-        return 101;
-    }
-
-    @Override
-    public String getContentType() {
-        return "x-application/my";
-    }
-}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/serialization/SerializationTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/serialization/SerializationTest.java
deleted file mode 100644
index b2adac4355..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/serialization/SerializationTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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 org.apache.dubbo.serialization;
-
-import org.apache.dubbo.common.serialize.ObjectInput;
-import org.apache.dubbo.common.serialize.ObjectOutput;
-import org.hamcrest.CoreMatchers;
-import org.hamcrest.Matchers;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-import static org.mockito.Mockito.mock;
-
-public class SerializationTest {
-
-    private MySerialization mySerialization;
-
-    private MyObjectOutput myObjectOutput;
-    private MyObjectInput myObjectInput;
-    private ByteArrayOutputStream byteArrayOutputStream;
-    private ByteArrayInputStream byteArrayInputStream;
-
-    @Before
-    public void setUp() throws Exception {
-        this.mySerialization = new MySerialization();
-
-        this.byteArrayOutputStream = new ByteArrayOutputStream();
-        this.myObjectOutput = new MyObjectOutput(byteArrayOutputStream);
-    }
-
-    @Test
-    public void testContentType() {
-        assertThat(mySerialization.getContentType(), is("x-application/my"));
-    }
-
-    @Test
-    public void testContentTypeId() {
-        assertThat(mySerialization.getContentTypeId(), is((byte) 101));
-    }
-
-    @Test
-    public void testObjectOutput() throws IOException {
-        ObjectOutput objectOutput = mySerialization.serialize(null, mock(OutputStream.class));
-        assertThat(objectOutput, Matchers.<ObjectOutput>instanceOf(MyObjectOutput.class));
-    }
-
-    @Test
-    public void testObjectInput() throws IOException {
-        ObjectInput objectInput = mySerialization.deserialize(null, mock(InputStream.class));
-        assertThat(objectInput, Matchers.<ObjectInput>instanceOf(MyObjectInput.class));
-    }
-
-    @Test
-    public void testWriteUTF() throws IOException {
-        myObjectOutput.writeUTF("Pace");
-        myObjectOutput.writeUTF("和平");
-        myObjectOutput.writeUTF(" Мир");
-        flushToInput();
-
-        assertThat(myObjectInput.readUTF(), CoreMatchers.is("Pace"));
-        assertThat(myObjectInput.readUTF(), CoreMatchers.is("和平"));
-        assertThat(myObjectInput.readUTF(), CoreMatchers.is(" Мир"));
-    }
-
-    private void flushToInput() throws IOException {
-        this.myObjectOutput.flushBuffer();
-        this.byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
-        this.myObjectInput = new MyObjectInput(byteArrayInputStream);
-    }
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/service/CustomArgument.java b/dubbo-compatible/src/test/java/org/apache/dubbo/service/CustomArgument.java
deleted file mode 100644
index 76ffeb429d..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/service/CustomArgument.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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 org.apache.dubbo.service;
-
-import java.io.Serializable;
-
-@SuppressWarnings("serial")
-public class CustomArgument implements Serializable {
-
-    Type type;
-    String name;
-
-    public CustomArgument() {
-    }
-    public CustomArgument(Type type, String name) {
-        super();
-        this.type = type;
-        this.name = name;
-    }
-
-    public Type getType() {
-        return type;
-    }
-
-    public void setType(Type type) {
-        this.type = type;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/service/DemoService.java b/dubbo-compatible/src/test/java/org/apache/dubbo/service/DemoService.java
deleted file mode 100644
index b73fa49fe1..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/service/DemoService.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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 org.apache.dubbo.service;
-
-public interface DemoService {
-    String sayHello(String name);
-
-    long timestamp();
-
-    String getThreadName();
-
-    int getSize(String[] strs);
-
-    int getSize(Object[] os);
-
-    Object invoke(String service, String method) throws Exception;
-
-    int stringLength(String str);
-
-    Type enumlength(Type... types);
-
-//	Type enumlength(Type type);
-
-    String get(CustomArgument arg1);
-
-    byte getbyte(byte arg);
-
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/service/DemoServiceImpl.java b/dubbo-compatible/src/test/java/org/apache/dubbo/service/DemoServiceImpl.java
deleted file mode 100644
index cfbcf80151..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/service/DemoServiceImpl.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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 org.apache.dubbo.service;
-
-import org.apache.dubbo.rpc.RpcContext;
-
-/**
- * DemoServiceImpl
- */
-
-public class DemoServiceImpl implements DemoService {
-    public DemoServiceImpl() {
-        super();
-    }
-
-    public String sayHello(String name) {
-        return "hello " + name;
-    }
-
-    public long timestamp() {
-        return System.currentTimeMillis();
-    }
-
-    public String getThreadName() {
-        return Thread.currentThread().getName();
-    }
-
-    public int getSize(String[] strs) {
-        if (strs == null)
-            return -1;
-        return strs.length;
-    }
-
-    public int getSize(Object[] os) {
-        if (os == null)
-            return -1;
-        return os.length;
-    }
-
-    public Object invoke(String service, String method) throws Exception {
-        System.out.println("RpcContext.getContext().getRemoteHost()=" + RpcContext.getContext().getRemoteHost());
-        return service + ":" + method;
-    }
-
-    public Type enumlength(Type... types) {
-        if (types.length == 0)
-            return Type.Lower;
-        return types[0];
-    }
-
-    public Type enumlength(Type type) {
-        return type;
-    }
-
-    public int stringLength(String str) {
-        return str.length();
-    }
-
-    public String get(CustomArgument arg1) {
-        return arg1.toString();
-    }
-
-    public byte getbyte(byte arg) {
-        return arg;
-    }
-
-    public Person gerPerson(Person person) {
-        return person;
-    }
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/service/MockInvocation.java b/dubbo-compatible/src/test/java/org/apache/dubbo/service/MockInvocation.java
deleted file mode 100644
index 148b5bce5f..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/service/MockInvocation.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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 org.apache.dubbo.service;
-
-import org.apache.dubbo.common.Constants;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * MockInvocation.java
- */
-public class MockInvocation implements Invocation {
-
-    private String arg0;
-
-    public MockInvocation(String arg0) {
-        this.arg0 = arg0;
-    }
-
-    public String getMethodName() {
-        return "echo";
-    }
-
-    public Class<?>[] getParameterTypes() {
-        return new Class[]{String.class};
-    }
-
-    public Object[] getArguments() {
-        return new Object[]{arg0};
-    }
-
-    public Map<String, String> getAttachments() {
-        Map<String, String> attachments = new HashMap<String, String>();
-        attachments.put(Constants.PATH_KEY, "dubbo");
-        attachments.put(Constants.GROUP_KEY, "dubbo");
-        attachments.put(Constants.VERSION_KEY, "1.0.0");
-        attachments.put(Constants.DUBBO_VERSION_KEY, "1.0.0");
-        attachments.put(Constants.TOKEN_KEY, "sfag");
-        attachments.put(Constants.TIMEOUT_KEY, "1000");
-        return attachments;
-    }
-
-    public Invoker<?> getInvoker() {
-        return null;
-    }
-
-    public String getAttachment(String key) {
-        return getAttachments().get(key);
-    }
-
-    public String getAttachment(String key, String defaultValue) {
-        return getAttachments().get(key);
-    }
-
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/service/Person.java b/dubbo-compatible/src/test/java/org/apache/dubbo/service/Person.java
deleted file mode 100644
index 3a856a1940..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/service/Person.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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 org.apache.dubbo.service;
-
-import java.io.Serializable;
-
-/**
- * Person.java
- */
-public class Person implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-    private String name;
-    private int age;
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public int getAge() {
-        return age;
-    }
-
-    public void setAge(int age) {
-        this.age = age;
-    }
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/service/Type.java b/dubbo-compatible/src/test/java/org/apache/dubbo/service/Type.java
deleted file mode 100644
index 070ceaad12..0000000000
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/service/Type.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * 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 org.apache.dubbo.service;
-
-public enum Type {
-    High, Normal, Lower
-}
\ No newline at end of file
diff --git a/dubbo-compatible/src/test/resources/META-INF/services/com.alibaba.dubbo.common.extension.ExtensionFactory b/dubbo-compatible/src/test/resources/META-INF/services/com.alibaba.dubbo.common.extension.ExtensionFactory
deleted file mode 100644
index e4e4b437c1..0000000000
--- a/dubbo-compatible/src/test/resources/META-INF/services/com.alibaba.dubbo.common.extension.ExtensionFactory
+++ /dev/null
@@ -1 +0,0 @@
-myfactory=org.apache.dubbo.common.extension.MyExtensionFactory
\ No newline at end of file
diff --git a/dubbo-config/dubbo-config-api/pom.xml b/dubbo-config/dubbo-config-api/pom.xml
index da0a2877f9..21fd5272f4 100644
--- a/dubbo-config/dubbo-config-api/pom.xml
+++ b/dubbo-config/dubbo-config-api/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-config</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-config-api</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
index 70ab62e449..dfa1f34c01 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
@@ -50,8 +50,8 @@
 
     private static final long serialVersionUID = -1559314110797223229L;
 
-    // local impl class name for the service interface
-    protected String local;
+//    // local impl class name for the service interface
+//    protected String local;
 
     // local stub class name for the service interface
     protected String stub;
@@ -287,17 +287,17 @@ protected void checkInterfaceAndMethods(Class<?> interfaceClass, List<MethodConf
     }
 
     protected void checkStubAndMock(Class<?> interfaceClass) {
-        if (ConfigUtils.isNotEmpty(local)) {
-            Class<?> localClass = ConfigUtils.isDefault(local) ? ReflectUtils.forName(interfaceClass.getName() + "Local") : ReflectUtils.forName(local);
-            if (!interfaceClass.isAssignableFrom(localClass)) {
-                throw new IllegalStateException("The local implementation class " + localClass.getName() + " not implement interface " + interfaceClass.getName());
-            }
-            try {
-                ReflectUtils.findConstructor(localClass, interfaceClass);
-            } catch (NoSuchMethodException e) {
-                throw new IllegalStateException("No such constructor \"public " + localClass.getSimpleName() + "(" + interfaceClass.getName() + ")\" in local implementation class " + localClass.getName());
-            }
-        }
+//        if (ConfigUtils.isNotEmpty(local)) {
+//            Class<?> localClass = ConfigUtils.isDefault(local) ? ReflectUtils.forName(interfaceClass.getName() + "Local") : ReflectUtils.forName(local);
+//            if (!interfaceClass.isAssignableFrom(localClass)) {
+//                throw new IllegalStateException("The local implementation class " + localClass.getName() + " not implement interface " + interfaceClass.getName());
+//            }
+//            try {
+//                ReflectUtils.findConstructor(localClass, interfaceClass);
+//            } catch (NoSuchMethodException e) {
+//                throw new IllegalStateException("No such constructor \"public " + localClass.getSimpleName() + "(" + interfaceClass.getName() + ")\" in local implementation class " + localClass.getName());
+//            }
+//        }
         if (ConfigUtils.isNotEmpty(stub)) {
             Class<?> localClass = ConfigUtils.isDefault(stub) ? ReflectUtils.forName(interfaceClass.getName() + "Stub") : ReflectUtils.forName(stub);
             if (!interfaceClass.isAssignableFrom(localClass)) {
@@ -330,38 +330,38 @@ protected void checkStubAndMock(Class<?> interfaceClass) {
             }
         }
     }
-
-    /**
-     * @return local
-     * @deprecated Replace to <code>getStub()</code>
-     */
-    @Deprecated
-    public String getLocal() {
-        return local;
-    }
-
-    /**
-     * @param local
-     * @deprecated Replace to <code>setStub(Boolean)</code>
-     */
-    @Deprecated
-    public void setLocal(Boolean local) {
-        if (local == null) {
-            setLocal((String) null);
-        } else {
-            setLocal(String.valueOf(local));
-        }
-    }
-
-    /**
-     * @param local
-     * @deprecated Replace to <code>setStub(String)</code>
-     */
-    @Deprecated
-    public void setLocal(String local) {
-        checkName("local", local);
-        this.local = local;
-    }
+//
+//    /**
+//     * @return local
+//     * @deprecated Replace to <code>getStub()</code>
+//     */
+//    @Deprecated
+//    public String getLocal() {
+//        return local;
+//    }
+//
+//    /**
+//     * @param local
+//     * @deprecated Replace to <code>setStub(Boolean)</code>
+//     */
+//    @Deprecated
+//    public void setLocal(Boolean local) {
+//        if (local == null) {
+//            setLocal((String) null);
+//        } else {
+//            setLocal(String.valueOf(local));
+//        }
+//    }
+//
+//    /**
+//     * @param local
+//     * @deprecated Replace to <code>setStub(String)</code>
+//     */
+//    @Deprecated
+//    public void setLocal(String local) {
+//        checkName("local", local);
+//        this.local = local;
+//    }
 
     public String getStub() {
         return stub;
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
index 552ccf1e4a..b97ad5fcad 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractReferenceConfig.java
@@ -96,24 +96,6 @@ public void setGeneric(String generic) {
         this.generic = generic;
     }
 
-    /**
-     * @return
-     * @deprecated instead, use scope to judge if it's in jvm, scope=local
-     */
-    @Deprecated
-    public Boolean isInjvm() {
-        return injvm;
-    }
-
-    /**
-     * @param injvm
-     * @deprecated instead, use scope to judge if it's in jvm, scope=local
-     */
-    @Deprecated
-    public void setInjvm(Boolean injvm) {
-        this.injvm = injvm;
-    }
-
     @Override
     @Parameter(key = Constants.REFERENCE_FILTER_KEY, append = true)
     public String getFilter() {
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ProtocolConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ProtocolConfig.java
index 3ae33291ad..fca4449038 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ProtocolConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ProtocolConfig.java
@@ -21,7 +21,8 @@
 import org.apache.dubbo.common.status.StatusChecker;
 import org.apache.dubbo.common.threadpool.ThreadPool;
 import org.apache.dubbo.config.support.Parameter;
-import org.apache.dubbo.remoting.Codec;
+//import org.apache.dubbo.remoting.Codec;
+import org.apache.dubbo.remoting.Codec2;
 import org.apache.dubbo.remoting.Dispatcher;
 import org.apache.dubbo.remoting.Transporter;
 import org.apache.dubbo.remoting.exchange.Exchanger;
@@ -256,7 +257,7 @@ public String getCodec() {
 
     public void setCodec(String codec) {
         if ("dubbo".equals(name)) {
-            checkMultiExtension(Codec.class, "codec", codec);
+            checkMultiExtension(Codec2.class, "codec", codec);
         }
         this.codec = codec;
     }
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
index 7901c78415..1eb1dd0af3 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
@@ -342,7 +342,8 @@ private void init() {
     private T createProxy(Map<String, String> map) {
         URL tmpUrl = new URL("temp", "localhost", 0, map);
         final boolean isJvmRefer;
-        if (isInjvm() == null) {
+        //TODO remove isInjvm
+        if (this.getScope() == null) {
             if (url != null && url.length() > 0) { // if a url is specified, don't do local reference
                 isJvmRefer = false;
             } else if (InjvmProtocol.getInjvmProtocol().isInjvmRefer(tmpUrl)) {
@@ -352,7 +353,7 @@ private T createProxy(Map<String, String> map) {
                 isJvmRefer = false;
             }
         } else {
-            isJvmRefer = isInjvm().booleanValue();
+            isJvmRefer = this.getScope().equals(Constants.SCOPE_LOCAL);
         }
 
         if (isJvmRefer) {
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
index e9d5e6b567..c2835b1bd6 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
@@ -278,20 +278,20 @@ protected synchronized void doExport() {
             checkRef();
             generic = Boolean.FALSE.toString();
         }
-        if (local != null) {
-            if ("true".equals(local)) {
-                local = interfaceName + "Local";
-            }
-            Class<?> localClass;
-            try {
-                localClass = ClassHelper.forNameWithThreadContextClassLoader(local);
-            } catch (ClassNotFoundException e) {
-                throw new IllegalStateException(e.getMessage(), e);
-            }
-            if (!interfaceClass.isAssignableFrom(localClass)) {
-                throw new IllegalStateException("The local implementation class " + localClass.getName() + " not implement interface " + interfaceName);
-            }
-        }
+//        if (local != null) {
+//            if ("true".equals(local)) {
+//                local = interfaceName + "Local";
+//            }
+//            Class<?> localClass;
+//            try {
+//                localClass = ClassHelper.forNameWithThreadContextClassLoader(local);
+//            } catch (ClassNotFoundException e) {
+//                throw new IllegalStateException(e.getMessage(), e);
+//            }
+//            if (!interfaceClass.isAssignableFrom(localClass)) {
+//                throw new IllegalStateException("The local implementation class " + localClass.getName() + " not implement interface " + interfaceName);
+//            }
+//        }
         if (stub != null) {
             if ("true".equals(stub)) {
                 stub = interfaceName + "Stub";
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java
index 2ea6fb4a0e..665ce1f3f6 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/AbstractInterfaceConfigTest.java
@@ -184,21 +184,21 @@ public void checkInterfaceAndMethod5() throws Exception {
     @Test(expected = IllegalStateException.class)
     public void checkStubAndMock1() throws Exception {
         InterfaceConfig interfaceConfig = new InterfaceConfig();
-        interfaceConfig.setLocal(GreetingLocal1.class.getName());
+        interfaceConfig.setStub(GreetingLocal1.class.getName());
         interfaceConfig.checkStubAndMock(Greeting.class);
     }
 
     @Test(expected = IllegalStateException.class)
     public void checkStubAndMock2() throws Exception {
         InterfaceConfig interfaceConfig = new InterfaceConfig();
-        interfaceConfig.setLocal(GreetingLocal2.class.getName());
+        interfaceConfig.setStub(GreetingLocal2.class.getName());
         interfaceConfig.checkStubAndMock(Greeting.class);
     }
 
     @Test
     public void checkStubAndMock3() throws Exception {
         InterfaceConfig interfaceConfig = new InterfaceConfig();
-        interfaceConfig.setLocal(GreetingLocal3.class.getName());
+        interfaceConfig.setStub(GreetingLocal3.class.getName());
         interfaceConfig.checkStubAndMock(Greeting.class);
     }
 
@@ -247,12 +247,12 @@ public void checkStubAndMock9() throws Exception {
     @Test
     public void testLocal() throws Exception {
         InterfaceConfig interfaceConfig = new InterfaceConfig();
-        interfaceConfig.setLocal((Boolean) null);
-        TestCase.assertNull(interfaceConfig.getLocal());
-        interfaceConfig.setLocal(true);
-        TestCase.assertEquals("true", interfaceConfig.getLocal());
-        interfaceConfig.setLocal("GreetingMock");
-        TestCase.assertEquals("GreetingMock", interfaceConfig.getLocal());
+        interfaceConfig.setStub((Boolean) null);
+        TestCase.assertNull(interfaceConfig.getStub());
+        interfaceConfig.setStub(true);
+        TestCase.assertEquals("true", interfaceConfig.getStub());
+        interfaceConfig.setStub("GreetingMock");
+        TestCase.assertEquals("GreetingMock", interfaceConfig.getStub());
     }
 
     @Test
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
index c8cb048d89..cf8dc5079b 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
@@ -48,7 +48,7 @@ public void testInjvm() throws Exception {
         rc.setApplication(application);
         rc.setRegistry(registry);
         rc.setInterface(DemoService.class.getName());
-        rc.setInjvm(false);
+        rc.setScope(Constants.SCOPE_REMOTE);
 
         try {
             demoService.export();
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockCodec.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockCodec.java
index c1aac425e5..09f32f014b 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockCodec.java
+++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockCodec.java
@@ -18,19 +18,18 @@
 package org.apache.dubbo.config.mock;
 
 import org.apache.dubbo.remoting.Channel;
-import org.apache.dubbo.remoting.Codec;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 
-public class MockCodec implements Codec {
-    @Override
+public class MockCodec  {
+//    @Override
     public void encode(Channel channel, OutputStream output, Object message) throws IOException {
 
     }
 
-    @Override
+//    @Override
     public Object decode(Channel channel, InputStream input) throws IOException {
         return null;
     }
diff --git a/dubbo-config/dubbo-config-spring/pom.xml b/dubbo-config/dubbo-config-spring/pom.xml
index 995209db45..3acf2a00e3 100644
--- a/dubbo-config/dubbo-config-spring/pom.xml
+++ b/dubbo-config/dubbo-config-spring/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-config</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-config-spring</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/AnnotationBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/AnnotationBean.java
deleted file mode 100644
index 7612c3302a..0000000000
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/AnnotationBean.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * 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 org.apache.dubbo.config.spring;
-
-import org.apache.dubbo.common.Constants;
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.utils.ConcurrentHashSet;
-import org.apache.dubbo.common.utils.ReflectUtils;
-import org.apache.dubbo.config.AbstractConfig;
-import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.config.ConsumerConfig;
-import org.apache.dubbo.config.ModuleConfig;
-import org.apache.dubbo.config.MonitorConfig;
-import org.apache.dubbo.config.ProtocolConfig;
-import org.apache.dubbo.config.ProviderConfig;
-import org.apache.dubbo.config.ReferenceConfig;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.ServiceConfig;
-import org.apache.dubbo.config.annotation.Reference;
-import org.apache.dubbo.config.annotation.Service;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
-import org.springframework.beans.factory.config.BeanPostProcessor;
-import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
-import org.springframework.beans.factory.support.BeanDefinitionRegistry;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * AnnotationBean
- *
- * @export
- */
-@Deprecated
-public class AnnotationBean extends AbstractConfig implements DisposableBean, BeanFactoryPostProcessor, BeanPostProcessor, ApplicationContextAware {
-
-    private static final long serialVersionUID = -7582802454287589552L;
-
-    private static final Logger logger = LoggerFactory.getLogger(Logger.class);
-    private final Set<ServiceConfig<?>> serviceConfigs = new ConcurrentHashSet<ServiceConfig<?>>();
-    private final ConcurrentMap<String, ReferenceBean<?>> referenceConfigs = new ConcurrentHashMap<String, ReferenceBean<?>>();
-    private String annotationPackage;
-    private String[] annotationPackages;
-    private ApplicationContext applicationContext;
-
-    public String getPackage() {
-        return annotationPackage;
-    }
-
-    public void setPackage(String annotationPackage) {
-        this.annotationPackage = annotationPackage;
-        this.annotationPackages = (annotationPackage == null || annotationPackage.length() == 0) ? null
-                : Constants.COMMA_SPLIT_PATTERN.split(annotationPackage);
-    }
-
-    @Override
-    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
-        this.applicationContext = applicationContext;
-    }
-
-    @Override
-    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
-            throws BeansException {
-        if (annotationPackage == null || annotationPackage.length() == 0) {
-            return;
-        }
-        if (beanFactory instanceof BeanDefinitionRegistry) {
-            try {
-                // init scanner
-                Class<?> scannerClass = ReflectUtils.forName("org.springframework.context.annotation.ClassPathBeanDefinitionScanner");
-                Object scanner = scannerClass.getConstructor(new Class<?>[]{BeanDefinitionRegistry.class, boolean.class}).newInstance((BeanDefinitionRegistry) beanFactory, true);
-                // add filter
-                Class<?> filterClass = ReflectUtils.forName("org.springframework.core.type.filter.AnnotationTypeFilter");
-                Object filter = filterClass.getConstructor(Class.class).newInstance(Service.class);
-                Method addIncludeFilter = scannerClass.getMethod("addIncludeFilter", ReflectUtils.forName("org.springframework.core.type.filter.TypeFilter"));
-                addIncludeFilter.invoke(scanner, filter);
-                // scan packages
-                String[] packages = Constants.COMMA_SPLIT_PATTERN.split(annotationPackage);
-                Method scan = scannerClass.getMethod("scan", String[].class);
-                scan.invoke(scanner, new Object[]{packages});
-            } catch (Throwable e) {
-                // spring 2.0
-            }
-        }
-    }
-
-    @Override
-    public void destroy() {
-
-        //  This will only be called for singleton scope bean, and expected to be called by spring shutdown hook when BeanFactory/ApplicationContext destroys.
-        //  We will guarantee dubbo related resources being released with dubbo shutdown hook.
-
-        //  for (ServiceConfig<?> serviceConfig : serviceConfigs) {
-        //      try {
-        //          serviceConfig.unexport();
-        //      } catch (Throwable e) {
-        //          logger.error(e.getMessage(), e);
-        //      }
-        //  }
-
-        for (ReferenceConfig<?> referenceConfig : referenceConfigs.values()) {
-            try {
-                referenceConfig.destroy();
-            } catch (Throwable e) {
-                logger.error(e.getMessage(), e);
-            }
-        }
-    }
-
-    @Override
-    public Object postProcessAfterInitialization(Object bean, String beanName)
-            throws BeansException {
-        if (!isMatchPackage(bean)) {
-            return bean;
-        }
-        Service service = bean.getClass().getAnnotation(Service.class);
-        if (service != null) {
-            ServiceBean<Object> serviceConfig = new ServiceBean<Object>(service);
-            serviceConfig.setRef(bean);
-            if (void.class.equals(service.interfaceClass())
-                    && "".equals(service.interfaceName())) {
-                if (bean.getClass().getInterfaces().length > 0) {
-                    serviceConfig.setInterface(bean.getClass().getInterfaces()[0]);
-                } else {
-                    throw new IllegalStateException("Failed to export remote service class " + bean.getClass().getName() + ", cause: The @Service undefined interfaceClass or interfaceName, and the service class unimplemented any interfaces.");
-                }
-            }
-            if (applicationContext != null) {
-                serviceConfig.setApplicationContext(applicationContext);
-                if (service.registry().length > 0) {
-                    List<RegistryConfig> registryConfigs = new ArrayList<RegistryConfig>();
-                    for (String registryId : service.registry()) {
-                        if (registryId != null && registryId.length() > 0) {
-                            registryConfigs.add(applicationContext.getBean(registryId, RegistryConfig.class));
-                        }
-                    }
-                    serviceConfig.setRegistries(registryConfigs);
-                }
-                if (service.provider().length() > 0) {
-                    serviceConfig.setProvider(applicationContext.getBean(service.provider(), ProviderConfig.class));
-                }
-                if (service.monitor().length() > 0) {
-                    serviceConfig.setMonitor(applicationContext.getBean(service.monitor(), MonitorConfig.class));
-                }
-                if (service.application().length() > 0) {
-                    serviceConfig.setApplication(applicationContext.getBean(service.application(), ApplicationConfig.class));
-                }
-                if (service.module().length() > 0) {
-                    serviceConfig.setModule(applicationContext.getBean(service.module(), ModuleConfig.class));
-                }
-                if (service.provider().length() > 0) {
-                    serviceConfig.setProvider(applicationContext.getBean(service.provider(), ProviderConfig.class));
-                }
-                if (service.protocol().length > 0) {
-                    List<ProtocolConfig> protocolConfigs = new ArrayList<ProtocolConfig>();
-                    for (String protocolId : service.protocol()) {
-                        if (protocolId != null && protocolId.length() > 0) {
-                            protocolConfigs.add(applicationContext.getBean(protocolId, ProtocolConfig.class));
-                        }
-                    }
-                    serviceConfig.setProtocols(protocolConfigs);
-                }
-                if (service.tag().length() > 0) {
-                    serviceConfig.setTag(service.tag());
-                }
-                try {
-                    serviceConfig.afterPropertiesSet();
-                } catch (RuntimeException e) {
-                    throw e;
-                } catch (Exception e) {
-                    throw new IllegalStateException(e.getMessage(), e);
-                }
-            }
-            serviceConfigs.add(serviceConfig);
-            serviceConfig.export();
-        }
-        return bean;
-    }
-
-    @Override
-    public Object postProcessBeforeInitialization(Object bean, String beanName)
-            throws BeansException {
-        if (!isMatchPackage(bean)) {
-            return bean;
-        }
-        Method[] methods = bean.getClass().getMethods();
-        for (Method method : methods) {
-            String name = method.getName();
-            if (name.length() > 3 && name.startsWith("set")
-                    && method.getParameterTypes().length == 1
-                    && Modifier.isPublic(method.getModifiers())
-                    && !Modifier.isStatic(method.getModifiers())) {
-                try {
-                    Reference reference = method.getAnnotation(Reference.class);
-                    if (reference != null) {
-                        Object value = refer(reference, method.getParameterTypes()[0]);
-                        if (value != null) {
-                            method.invoke(bean, value);
-                        }
-                    }
-                } catch (Throwable e) {
-                    logger.error("Failed to init remote service reference at method " + name + " in class " + bean.getClass().getName() + ", cause: " + e.getMessage(), e);
-                }
-            }
-        }
-        Field[] fields = bean.getClass().getDeclaredFields();
-        for (Field field : fields) {
-            try {
-                if (!field.isAccessible()) {
-                    field.setAccessible(true);
-                }
-                Reference reference = field.getAnnotation(Reference.class);
-                if (reference != null) {
-                    Object value = refer(reference, field.getType());
-                    if (value != null) {
-                        field.set(bean, value);
-                    }
-                }
-            } catch (Throwable e) {
-                logger.error("Failed to init remote service reference at filed " + field.getName() + " in class " + bean.getClass().getName() + ", cause: " + e.getMessage(), e);
-            }
-        }
-        return bean;
-    }
-
-    private Object refer(Reference reference, Class<?> referenceClass) { //method.getParameterTypes()[0]
-        String interfaceName;
-        if (!"".equals(reference.interfaceName())) {
-            interfaceName = reference.interfaceName();
-        } else if (!void.class.equals(reference.interfaceClass())) {
-            interfaceName = reference.interfaceClass().getName();
-        } else if (referenceClass.isInterface()) {
-            interfaceName = referenceClass.getName();
-        } else {
-            throw new IllegalStateException("The @Reference undefined interfaceClass or interfaceName, and the property type " + referenceClass.getName() + " is not a interface.");
-        }
-        String key = reference.group() + "/" + interfaceName + ":" + reference.version();
-        ReferenceBean<?> referenceConfig = referenceConfigs.get(key);
-        if (referenceConfig == null) {
-            referenceConfig = new ReferenceBean<Object>(reference);
-            if (void.class.equals(reference.interfaceClass())
-                    && "".equals(reference.interfaceName())
-                    && referenceClass.isInterface()) {
-                referenceConfig.setInterface(referenceClass);
-            }
-            if (applicationContext != null) {
-                referenceConfig.setApplicationContext(applicationContext);
-                if (reference.registry().length > 0) {
-                    List<RegistryConfig> registryConfigs = new ArrayList<RegistryConfig>();
-                    for (String registryId : reference.registry()) {
-                        if (registryId != null && registryId.length() > 0) {
-                            registryConfigs.add(applicationContext.getBean(registryId, RegistryConfig.class));
-                        }
-                    }
-                    referenceConfig.setRegistries(registryConfigs);
-                }
-                if (reference.consumer().length() > 0) {
-                    referenceConfig.setConsumer(applicationContext.getBean(reference.consumer(), ConsumerConfig.class));
-                }
-                if (reference.monitor().length() > 0) {
-                    referenceConfig.setMonitor(applicationContext.getBean(reference.monitor(), MonitorConfig.class));
-                }
-                if (reference.application().length() > 0) {
-                    referenceConfig.setApplication(applicationContext.getBean(reference.application(), ApplicationConfig.class));
-                }
-                if (reference.module().length() > 0) {
-                    referenceConfig.setModule(applicationContext.getBean(reference.module(), ModuleConfig.class));
-                }
-                if (reference.consumer().length() > 0) {
-                    referenceConfig.setConsumer(applicationContext.getBean(reference.consumer(), ConsumerConfig.class));
-                }
-                try {
-                    referenceConfig.afterPropertiesSet();
-                } catch (RuntimeException e) {
-                    throw e;
-                } catch (Exception e) {
-                    throw new IllegalStateException(e.getMessage(), e);
-                }
-            }
-            referenceConfigs.putIfAbsent(key, referenceConfig);
-            referenceConfig = referenceConfigs.get(key);
-        }
-        return referenceConfig.get();
-    }
-
-    private boolean isMatchPackage(Object bean) {
-        if (annotationPackages == null || annotationPackages.length == 0) {
-            return true;
-        }
-        String beanClassName = bean.getClass().getName();
-        for (String pkg : annotationPackages) {
-            if (beanClassName.startsWith(pkg)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-}
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationBeanPostProcessor.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationBeanPostProcessor.java
index 389ef21736..08829502be 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationBeanPostProcessor.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationBeanPostProcessor.java
@@ -21,6 +21,8 @@
 import org.apache.dubbo.config.annotation.Service;
 import org.apache.dubbo.config.spring.ServiceBean;
 import org.apache.dubbo.config.spring.context.annotation.DubboClassPathBeanDefinitionScanner;
+import org.apache.dubbo.config.spring.convert.converter.StringArrayToMapConverter;
+import org.apache.dubbo.config.spring.convert.converter.StringArrayToStringConverter;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.MutablePropertyValues;
 import org.springframework.beans.factory.BeanClassLoaderAware;
@@ -41,6 +43,8 @@
 import org.springframework.context.annotation.AnnotationConfigUtils;
 import org.springframework.context.annotation.ClassPathBeanDefinitionScanner;
 import org.springframework.context.annotation.ConfigurationClassPostProcessor;
+import org.springframework.core.convert.ConversionService;
+import org.springframework.core.convert.support.DefaultConversionService;
 import org.springframework.core.env.Environment;
 import org.springframework.core.io.ResourceLoader;
 import org.springframework.core.type.filter.AnnotationTypeFilter;
@@ -50,11 +54,7 @@
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 import static org.apache.dubbo.config.spring.util.ObjectUtils.of;
 import static org.springframework.beans.factory.support.BeanDefinitionBuilder.rootBeanDefinition;
@@ -386,7 +386,7 @@ private AbstractBeanDefinition buildServiceBeanDefinition(Service service, Class
 
         MutablePropertyValues propertyValues = beanDefinition.getPropertyValues();
 
-        String[] ignoreAttributeNames = of("provider", "monitor", "application", "module", "registry", "protocol", "interface");
+        String[] ignoreAttributeNames = of("provider", "monitor", "application", "module", "registry", "protocol", "interface", "parameters");
 
         propertyValues.addPropertyValues(new AnnotationPropertyValuesAdapter(service, environment, ignoreAttributeNames));
 
@@ -450,10 +450,24 @@ private AbstractBeanDefinition buildServiceBeanDefinition(Service service, Class
             builder.addPropertyValue("protocols", protocolRuntimeBeanReferences);
         }
 
+        String[] parametersStr = service.parameters();
+        if(parametersStr.length>0){
+            ConversionService conversionService = getConversionService();
+            Map parameters = conversionService.convert(parametersStr, Map.class);
+            builder.addPropertyValue("parameters", parameters);
+        }
+
         return builder.getBeanDefinition();
 
     }
 
+    private ConversionService getConversionService() {
+        DefaultConversionService conversionService = new DefaultConversionService();
+        conversionService.addConverter(new StringArrayToStringConverter());
+        conversionService.addConverter(new StringArrayToMapConverter());
+        return conversionService;
+    }
+
 
     private ManagedList<RuntimeBeanReference> toRuntimeBeanReferences(String... beanNames) {
 
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/AnnotationBeanDefinitionParser.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/AnnotationBeanDefinitionParser.java
index 833f816cd4..e4ea645294 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/AnnotationBeanDefinitionParser.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/schema/AnnotationBeanDefinitionParser.java
@@ -16,7 +16,6 @@
  */
 package org.apache.dubbo.config.spring.schema;
 
-import org.apache.dubbo.config.spring.AnnotationBean;
 import org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor;
 import org.apache.dubbo.config.spring.beans.factory.annotation.ServiceAnnotationBeanPostProcessor;
 import org.apache.dubbo.config.spring.util.BeanRegistrar;
@@ -33,7 +32,7 @@
 import static org.springframework.util.StringUtils.trimArrayElements;
 
 /**
- * {@link AnnotationBean} {@link BeanDefinitionParser}
+ * {@link BeanDefinitionParser}
  *
  * @see ServiceAnnotationBeanPostProcessor
  * @see ReferenceAnnotationBeanPostProcessor
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ConfigTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ConfigTest.java
index 5698277bdd..d1f7476dff 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ConfigTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/ConfigTest.java
@@ -61,7 +61,7 @@
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
-import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.hamcrest.CoreMatchers.containsString;
 
 
 /**
@@ -663,7 +663,7 @@ public void testSystemPropertyOverrideReferenceConfig() throws Exception {
 
             ReferenceConfig<DemoService> reference = new ReferenceConfig<DemoService>();
             reference.setInterface(DemoService.class);
-            reference.setInjvm(true);
+            reference.setScope(Constants.SCOPE_LOCAL);
             reference.setRetries(2);
             reference.get();
             assertEquals(Integer.valueOf(5), reference.getRetries());
@@ -982,7 +982,7 @@ public void testGenericServiceConfigThroughSpring() throws Exception {
             URL url = (URL) serviceConfig.getExportedUrls().get(0);
             Assert.assertEquals(Constants.GENERIC_SERIALIZATION_BEAN, url.getParameter(Constants.GENERIC_KEY));
         } finally {
-            ctx.destroy();
+            ctx.close();
         }
     }
 }
\ No newline at end of file
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java
index 94148e66d7..77d12a30c2 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java
@@ -17,6 +17,7 @@
 package org.apache.dubbo.config.spring.beans.factory.annotation;
 
 
+import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.utils.CollectionUtils;
 import org.apache.dubbo.config.annotation.Reference;
 import org.apache.dubbo.config.spring.ReferenceBean;
@@ -95,7 +96,7 @@ public String convert(String[] source) {
         Assert.assertEquals("dubbo://localhost:12345", referenceBean.getUrl());
         Assert.assertEquals("client", referenceBean.getClient());
         Assert.assertEquals(true, referenceBean.isGeneric());
-        Assert.assertEquals(true, referenceBean.isInjvm());
+        Assert.assertEquals(true, Constants.SCOPE_LOCAL.equals(referenceBean.getScope()));
         Assert.assertEquals(false, referenceBean.isCheck());
         Assert.assertEquals(true, referenceBean.isInit());
         Assert.assertEquals(true, referenceBean.getLazy());
diff --git a/dubbo-config/pom.xml b/dubbo-config/pom.xml
index 9a75eea5cd..dc8c043da9 100644
--- a/dubbo-config/pom.xml
+++ b/dubbo-config/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-parent</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-config</artifactId>
     <packaging>pom</packaging>
diff --git a/dubbo-container/dubbo-container-api/pom.xml b/dubbo-container/dubbo-container-api/pom.xml
index 13efee6964..ce4ba47f56 100644
--- a/dubbo-container/dubbo-container-api/pom.xml
+++ b/dubbo-container/dubbo-container-api/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-container</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-container-api</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-container/dubbo-container-log4j/pom.xml b/dubbo-container/dubbo-container-log4j/pom.xml
index 2197134743..07e125c456 100644
--- a/dubbo-container/dubbo-container-log4j/pom.xml
+++ b/dubbo-container/dubbo-container-log4j/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-container</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-container-log4j</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-container/dubbo-container-logback/pom.xml b/dubbo-container/dubbo-container-logback/pom.xml
index 6227931bc7..8e3d4150ca 100644
--- a/dubbo-container/dubbo-container-logback/pom.xml
+++ b/dubbo-container/dubbo-container-logback/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-container</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-container-logback</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-container/dubbo-container-spring/pom.xml b/dubbo-container/dubbo-container-spring/pom.xml
index cbcc43e511..ba4559a32f 100644
--- a/dubbo-container/dubbo-container-spring/pom.xml
+++ b/dubbo-container/dubbo-container-spring/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-container</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-container-spring</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-container/pom.xml b/dubbo-container/pom.xml
index 753a0cdfa6..7e17a60175 100644
--- a/dubbo-container/pom.xml
+++ b/dubbo-container/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-parent</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-container</artifactId>
     <packaging>pom</packaging>
diff --git a/dubbo-demo/dubbo-demo-api/pom.xml b/dubbo-demo/dubbo-demo-api/pom.xml
index 120f87f703..0925effda0 100644
--- a/dubbo-demo/dubbo-demo-api/pom.xml
+++ b/dubbo-demo/dubbo-demo-api/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-demo</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-demo-api</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-demo/dubbo-demo-consumer/pom.xml b/dubbo-demo/dubbo-demo-consumer/pom.xml
index de9962b952..43d80dbd5e 100644
--- a/dubbo-demo/dubbo-demo-consumer/pom.xml
+++ b/dubbo-demo/dubbo-demo-consumer/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-demo</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-demo-consumer</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-demo/dubbo-demo-provider/pom.xml b/dubbo-demo/dubbo-demo-provider/pom.xml
index 7dd3541f8c..e5cb9b3cba 100644
--- a/dubbo-demo/dubbo-demo-provider/pom.xml
+++ b/dubbo-demo/dubbo-demo-provider/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-demo</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-demo-provider</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-demo/pom.xml b/dubbo-demo/pom.xml
index b181adc15d..1ed9e8fad3 100644
--- a/dubbo-demo/pom.xml
+++ b/dubbo-demo/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-parent</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-demo</artifactId>
     <packaging>pom</packaging>
diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml
index 8a0738e626..410d862ea3 100644
--- a/dubbo-dependencies-bom/pom.xml
+++ b/dubbo-dependencies-bom/pom.xml
@@ -10,7 +10,7 @@
 
     <groupId>org.apache.dubbo</groupId>
     <artifactId>dubbo-dependencies-bom</artifactId>
-    <version>2.7.0-SNAPSHOT</version>
+    <version>2.7.2-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>dubbo-dependencies-bom</name>
@@ -72,7 +72,7 @@
 
     <properties>
         <!-- Common libs -->
-        <spring_version>4.3.16.RELEASE</spring_version>
+        <spring_version>5.0.8.RELEASE</spring_version>
         <javassist_version>3.20.0-GA</javassist_version>
         <netty_version>3.2.5.Final</netty_version>
         <netty4_version>4.1.25.Final</netty4_version>
@@ -87,7 +87,6 @@
         <jedis_version>2.9.0</jedis_version>
         <xmemcached_version>1.3.6</xmemcached_version>
         <cxf_version>3.1.15</cxf_version>
-        <thrift_version>0.8.0</thrift_version>
         <hessian_version>4.0.38</hessian_version>
         <servlet_version>3.1.0</servlet_version>
         <jetty_version>9.4.11.v20180605</jetty_version>
@@ -172,11 +171,6 @@
                 <artifactId>zookeeper</artifactId>
                 <version>${zookeeper_version}</version>
             </dependency>
-            <dependency>
-                <groupId>com.101tec</groupId>
-                <artifactId>zkclient</artifactId>
-                <version>${zkclient_version}</version>
-            </dependency>
             <dependency>
                 <groupId>org.apache.curator</groupId>
                 <artifactId>curator-framework</artifactId>
@@ -202,11 +196,6 @@
                 <artifactId>cxf-rt-transports-http</artifactId>
                 <version>${cxf_version}</version>
             </dependency>
-            <dependency>
-                <groupId>org.apache.thrift</groupId>
-                <artifactId>libthrift</artifactId>
-                <version>${thrift_version}</version>
-            </dependency>
             <dependency>
                 <groupId>com.caucho</groupId>
                 <artifactId>hessian</artifactId>
diff --git a/dubbo-distribution/pom.xml b/dubbo-distribution/pom.xml
index d8d53ecf2e..fd3eaf85a9 100644
--- a/dubbo-distribution/pom.xml
+++ b/dubbo-distribution/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-parent</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-distribution</artifactId>
     <packaging>pom</packaging>
@@ -130,11 +130,6 @@
             <artifactId>dubbo-rpc-webservice</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-rpc-thrift</artifactId>
-            <version>${project.version}</version>
-        </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-rpc-memcached</artifactId>
@@ -240,11 +235,6 @@
             <artifactId>dubbo</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-compatible</artifactId>
-            <version>${project.version}</version>
-        </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-bootstrap</artifactId>
diff --git a/dubbo-filter/dubbo-filter-cache/pom.xml b/dubbo-filter/dubbo-filter-cache/pom.xml
index 43f72b36ef..e5f8ff7295 100644
--- a/dubbo-filter/dubbo-filter-cache/pom.xml
+++ b/dubbo-filter/dubbo-filter-cache/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-filter</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-filter-cache</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-filter/dubbo-filter-validation/pom.xml b/dubbo-filter/dubbo-filter-validation/pom.xml
index 9cebd4b805..7bb6504a3f 100644
--- a/dubbo-filter/dubbo-filter-validation/pom.xml
+++ b/dubbo-filter/dubbo-filter-validation/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-filter</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-filter-validation</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-filter/pom.xml b/dubbo-filter/pom.xml
index 7b20497710..958a1830bd 100644
--- a/dubbo-filter/pom.xml
+++ b/dubbo-filter/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-parent</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-filter</artifactId>
     <packaging>pom</packaging>
diff --git a/dubbo-metrics/dubbo-metrics-api/pom.xml b/dubbo-metrics/dubbo-metrics-api/pom.xml
index 493955fb3e..e40a21f602 100644
--- a/dubbo-metrics/dubbo-metrics-api/pom.xml
+++ b/dubbo-metrics/dubbo-metrics-api/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>dubbo-metrics</artifactId>
         <groupId>org.apache.dubbo</groupId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/dubbo-metrics/pom.xml b/dubbo-metrics/pom.xml
index d76e4e737d..08d9934671 100644
--- a/dubbo-metrics/pom.xml
+++ b/dubbo-metrics/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-parent</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/dubbo-monitor/dubbo-monitor-api/pom.xml b/dubbo-monitor/dubbo-monitor-api/pom.xml
index 899a511b0a..c34a4f2933 100644
--- a/dubbo-monitor/dubbo-monitor-api/pom.xml
+++ b/dubbo-monitor/dubbo-monitor-api/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-monitor</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-monitor-api</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-monitor/dubbo-monitor-default/pom.xml b/dubbo-monitor/dubbo-monitor-default/pom.xml
index a786f42ffa..0b84690a52 100644
--- a/dubbo-monitor/dubbo-monitor-default/pom.xml
+++ b/dubbo-monitor/dubbo-monitor-default/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-monitor</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-monitor-default</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-monitor/pom.xml b/dubbo-monitor/pom.xml
index 37923da0f2..35eca044fe 100644
--- a/dubbo-monitor/pom.xml
+++ b/dubbo-monitor/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-parent</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-monitor</artifactId>
     <packaging>pom</packaging>
diff --git a/dubbo-plugin/dubbo-qos/pom.xml b/dubbo-plugin/dubbo-qos/pom.xml
index 8058fda215..e203795659 100644
--- a/dubbo-plugin/dubbo-qos/pom.xml
+++ b/dubbo-plugin/dubbo-qos/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-plugin</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/decoder/HttpCommandDecoder.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/decoder/HttpCommandDecoder.java
index 5a16a136e0..b941bfe237 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/decoder/HttpCommandDecoder.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/decoder/HttpCommandDecoder.java
@@ -34,14 +34,14 @@
     public static CommandContext decode(HttpRequest request) {
         CommandContext commandContext = null;
         if (request != null) {
-            QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.getUri());
+            QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.uri());
             String path = queryStringDecoder.path();
             String[] array = path.split("/");
             if (array.length == 2) {
                 String name = array[1];
 
                 // process GET request and POST request separately. Check url for GET, and check body for POST
-                if (request.getMethod() == HttpMethod.GET) {
+                if (request.method() == HttpMethod.GET) {
                     if (queryStringDecoder.parameters().isEmpty()) {
                         commandContext = CommandContextFactory.newInstance(name);
                         commandContext.setHttp(true);
@@ -52,7 +52,7 @@ public static CommandContext decode(HttpRequest request) {
                         }
                         commandContext = CommandContextFactory.newInstance(name, valueList.toArray(new String[]{}),true);
                     }
-                } else if (request.getMethod() == HttpMethod.POST) {
+                } else if (request.method() == HttpMethod.POST) {
                     HttpPostRequestDecoder httpPostRequestDecoder = new HttpPostRequestDecoder(request);
                     List<String> valueList = new ArrayList<String>();
                     for (InterfaceHttpData interfaceHttpData : httpPostRequestDecoder.getBodyHttpDatas()) {
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/HttpProcessHandler.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/HttpProcessHandler.java
index b7fea07aca..56405d9b1c 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/HttpProcessHandler.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/handler/HttpProcessHandler.java
@@ -16,6 +16,7 @@
  */
 package org.apache.dubbo.qos.server.handler;
 
+import io.netty.handler.codec.http.*;
 import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.qos.command.CommandContext;
@@ -27,12 +28,6 @@
 import io.netty.channel.ChannelFutureListener;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.SimpleChannelInboundHandler;
-import io.netty.handler.codec.http.DefaultFullHttpResponse;
-import io.netty.handler.codec.http.FullHttpResponse;
-import io.netty.handler.codec.http.HttpHeaders;
-import io.netty.handler.codec.http.HttpRequest;
-import io.netty.handler.codec.http.HttpResponseStatus;
-import io.netty.handler.codec.http.HttpVersion;
 
 /**
  * Parse HttpRequest for uri and parameters
@@ -56,7 +51,7 @@ protected void channelRead0(ChannelHandlerContext ctx, HttpRequest msg) throws E
         CommandContext commandContext = HttpCommandDecoder.decode(msg);
         // return 404 when fail to construct command context
         if (commandContext == null) {
-            log.warn("can not found commandContext url: " + msg.getUri());
+            log.warn("can not found commandContext url: " + msg.uri());
             FullHttpResponse response = http_404();
             ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
         } else {
@@ -81,16 +76,16 @@ private static final FullHttpResponse http_200(String result) {
         FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK,
                 Unpooled.wrappedBuffer(result.getBytes()));
         HttpHeaders httpHeaders = response.headers();
-        httpHeaders.set(HttpHeaders.Names.CONTENT_TYPE, "text/plain");
-        httpHeaders.set(HttpHeaders.Names.CONTENT_LENGTH, response.content().readableBytes());
+        httpHeaders.set(HttpHeaderNames.CONTENT_TYPE, "text/plain");
+        httpHeaders.set(HttpHeaderNames.CONTENT_LENGTH, response.content().readableBytes());
         return response;
     }
 
     private static final FullHttpResponse http_404() {
         FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NOT_FOUND);
         HttpHeaders httpHeaders = response.headers();
-        httpHeaders.set(HttpHeaders.Names.CONTENT_TYPE, "text/plain");
-        httpHeaders.set(HttpHeaders.Names.CONTENT_LENGTH, response.content().readableBytes());
+        httpHeaders.set(HttpHeaderNames.CONTENT_TYPE, "text/plain");
+        httpHeaders.set(HttpHeaderNames.CONTENT_LENGTH, response.content().readableBytes());
         return response;
     }
 
@@ -98,8 +93,8 @@ private static final FullHttpResponse http_500(String errorMessage) {
         FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.INTERNAL_SERVER_ERROR
                 , Unpooled.wrappedBuffer(errorMessage.getBytes()));
         HttpHeaders httpHeaders = response.headers();
-        httpHeaders.set(HttpHeaders.Names.CONTENT_TYPE, "text/plain");
-        httpHeaders.set(HttpHeaders.Names.CONTENT_LENGTH, response.content().readableBytes());
+        httpHeaders.set(HttpHeaderNames.CONTENT_TYPE, "text/plain");
+        httpHeaders.set(HttpHeaderNames.CONTENT_LENGTH, response.content().readableBytes());
         return response;
     }
 
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/decoder/HttpCommandDecoderTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/decoder/HttpCommandDecoderTest.java
index d1613cef6e..794094053e 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/decoder/HttpCommandDecoderTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/decoder/HttpCommandDecoderTest.java
@@ -18,10 +18,7 @@
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
-import io.netty.handler.codec.http.FullHttpRequest;
-import io.netty.handler.codec.http.HttpHeaders;
-import io.netty.handler.codec.http.HttpMethod;
-import io.netty.handler.codec.http.HttpRequest;
+import io.netty.handler.codec.http.*;
 import org.apache.dubbo.qos.command.CommandContext;
 import org.junit.Test;
 
@@ -38,12 +35,12 @@
     @Test
     public void decodeGet() throws Exception {
         HttpRequest request = mock(HttpRequest.class);
-        when(request.getUri()).thenReturn("localhost:80/test");
-        when(request.getMethod()).thenReturn(HttpMethod.GET);
+        when(request.uri()).thenReturn("localhost:80/test");
+        when(request.method()).thenReturn(HttpMethod.GET);
         CommandContext context = HttpCommandDecoder.decode(request);
         assertThat(context.getCommandName(), equalTo("test"));
         assertThat(context.isHttp(), is(true));
-        when(request.getUri()).thenReturn("localhost:80/test?a=b&c=d");
+        when(request.uri()).thenReturn("localhost:80/test?a=b&c=d");
         context = HttpCommandDecoder.decode(request);
         assertThat(context.getArgs(), arrayContaining("b", "d"));
     }
@@ -51,9 +48,9 @@ public void decodeGet() throws Exception {
     @Test
     public void decodePost() throws Exception {
         FullHttpRequest request = mock(FullHttpRequest.class);
-        when(request.getUri()).thenReturn("localhost:80/test");
-        when(request.getMethod()).thenReturn(HttpMethod.POST);
-        when(request.headers()).thenReturn(HttpHeaders.EMPTY_HEADERS);
+        when(request.uri()).thenReturn("localhost:80/test");
+        when(request.method()).thenReturn(HttpMethod.POST);
+        when(request.headers()).thenReturn(EmptyHttpHeaders.INSTANCE);
         ByteBuf buf = Unpooled.copiedBuffer("a=b&c=d", StandardCharsets.UTF_8);
         when(request.content()).thenReturn(buf);
         CommandContext context = HttpCommandDecoder.decode(request);
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/server/handler/HttpProcessHandlerTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/server/handler/HttpProcessHandlerTest.java
index e5d86c16ae..8bc51ae3d7 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/server/handler/HttpProcessHandlerTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/server/handler/HttpProcessHandlerTest.java
@@ -40,14 +40,14 @@ public void test1() throws Exception {
         ChannelFuture future = mock(ChannelFuture.class);
         when(context.writeAndFlush(any(FullHttpResponse.class))).thenReturn(future);
         HttpRequest message = Mockito.mock(HttpRequest.class);
-        when(message.getUri()).thenReturn("test");
+        when(message.uri()).thenReturn("test");
         HttpProcessHandler handler = new HttpProcessHandler();
         handler.channelRead0(context, message);
         verify(future).addListener(ChannelFutureListener.CLOSE);
         ArgumentCaptor<FullHttpResponse> captor = ArgumentCaptor.forClass(FullHttpResponse.class);
         verify(context).writeAndFlush(captor.capture());
         FullHttpResponse response = captor.getValue();
-        assertThat(response.getStatus().code(), equalTo(404));
+        assertThat(response.status().code(), equalTo(404));
     }
 
     @Test
@@ -56,15 +56,15 @@ public void test2() throws Exception {
         ChannelFuture future = mock(ChannelFuture.class);
         when(context.writeAndFlush(any(FullHttpResponse.class))).thenReturn(future);
         HttpRequest message = Mockito.mock(HttpRequest.class);
-        when(message.getUri()).thenReturn("localhost:80/greeting");
-        when(message.getMethod()).thenReturn(HttpMethod.GET);
+        when(message.uri()).thenReturn("localhost:80/greeting");
+        when(message.method()).thenReturn(HttpMethod.GET);
         HttpProcessHandler handler = new HttpProcessHandler();
         handler.channelRead0(context, message);
         verify(future).addListener(ChannelFutureListener.CLOSE);
         ArgumentCaptor<FullHttpResponse> captor = ArgumentCaptor.forClass(FullHttpResponse.class);
         verify(context).writeAndFlush(captor.capture());
         FullHttpResponse response = captor.getValue();
-        assertThat(response.getStatus().code(), equalTo(200));
+        assertThat(response.status().code(), equalTo(200));
     }
 
     @Test
@@ -73,14 +73,14 @@ public void test3() throws Exception {
         ChannelFuture future = mock(ChannelFuture.class);
         when(context.writeAndFlush(any(FullHttpResponse.class))).thenReturn(future);
         HttpRequest message = Mockito.mock(HttpRequest.class);
-        when(message.getUri()).thenReturn("localhost:80/test");
-        when(message.getMethod()).thenReturn(HttpMethod.GET);
+        when(message.uri()).thenReturn("localhost:80/test");
+        when(message.method()).thenReturn(HttpMethod.GET);
         HttpProcessHandler handler = new HttpProcessHandler();
         handler.channelRead0(context, message);
         verify(future).addListener(ChannelFutureListener.CLOSE);
         ArgumentCaptor<FullHttpResponse> captor = ArgumentCaptor.forClass(FullHttpResponse.class);
         verify(context).writeAndFlush(captor.capture());
         FullHttpResponse response = captor.getValue();
-        assertThat(response.getStatus().code(), equalTo(404));
+        assertThat(response.status().code(), equalTo(404));
     }
 }
diff --git a/dubbo-plugin/pom.xml b/dubbo-plugin/pom.xml
index 23ae191dfc..91ea5b7d37 100644
--- a/dubbo-plugin/pom.xml
+++ b/dubbo-plugin/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <artifactId>dubbo-parent</artifactId>
         <groupId>org.apache.dubbo</groupId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/dubbo-registry/dubbo-registry-api/pom.xml b/dubbo-registry/dubbo-registry-api/pom.xml
index 018addd8d2..cdb264377f 100644
--- a/dubbo-registry/dubbo-registry-api/pom.xml
+++ b/dubbo-registry/dubbo-registry-api/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-registry</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-registry-api</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-registry/dubbo-registry-default/pom.xml b/dubbo-registry/dubbo-registry-default/pom.xml
index 3144efbda7..0695c099f3 100644
--- a/dubbo-registry/dubbo-registry-default/pom.xml
+++ b/dubbo-registry/dubbo-registry-default/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-registry</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-registry-default</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-registry/dubbo-registry-default/src/test/java/org/apache/dubbo/registry/dubbo/MockedClient.java b/dubbo-registry/dubbo-registry-default/src/test/java/org/apache/dubbo/registry/dubbo/MockedClient.java
index f1341ef71f..4eea1770fd 100644
--- a/dubbo-registry/dubbo-registry-default/src/test/java/org/apache/dubbo/registry/dubbo/MockedClient.java
+++ b/dubbo-registry/dubbo-registry-default/src/test/java/org/apache/dubbo/registry/dubbo/MockedClient.java
@@ -19,7 +19,6 @@
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.remoting.Channel;
 import org.apache.dubbo.remoting.ChannelHandler;
-import org.apache.dubbo.remoting.Codec;
 import org.apache.dubbo.remoting.RemotingException;
 import org.apache.dubbo.remoting.exchange.ExchangeClient;
 import org.apache.dubbo.remoting.exchange.ExchangeHandler;
@@ -178,12 +177,6 @@ public boolean isOpen() {
         return closed;
     }
 
-    public Codec getCodec() {
-        return null;
-    }
-
-    public void setCodec(Codec codec) {
-    }
 
     public String getHost() {
         return null;
@@ -220,9 +213,6 @@ public ChannelHandler getChannelHandler() {
         return null;
     }
 
-    public void reset(Map<String, String> parameters) {
-    }
-
     public Channel getChannel() {
         return this;
     }
@@ -282,8 +272,5 @@ public void send(Object message, boolean sent) throws RemotingException {
     public void reset(URL url) {
     }
 
-    @Deprecated
-    public void reset(org.apache.dubbo.common.Parameters parameters) {
-    }
 
 }
diff --git a/dubbo-registry/dubbo-registry-multicast/pom.xml b/dubbo-registry/dubbo-registry-multicast/pom.xml
index 79e2e4ee57..586f1aa917 100644
--- a/dubbo-registry/dubbo-registry-multicast/pom.xml
+++ b/dubbo-registry/dubbo-registry-multicast/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-registry</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-registry-multicast</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-registry/dubbo-registry-redis/pom.xml b/dubbo-registry/dubbo-registry-redis/pom.xml
index 12f2aecbe6..816083f255 100644
--- a/dubbo-registry/dubbo-registry-redis/pom.xml
+++ b/dubbo-registry/dubbo-registry-redis/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-registry</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-registry-redis</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-registry/dubbo-registry-zookeeper/pom.xml b/dubbo-registry/dubbo-registry-zookeeper/pom.xml
index edadb7a9c9..b6bc23710f 100644
--- a/dubbo-registry/dubbo-registry-zookeeper/pom.xml
+++ b/dubbo-registry/dubbo-registry-zookeeper/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-registry</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-registry-zookeeper</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-registry/pom.xml b/dubbo-registry/pom.xml
index 822aec8a07..4539be78fc 100644
--- a/dubbo-registry/pom.xml
+++ b/dubbo-registry/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-parent</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-registry</artifactId>
     <packaging>pom</packaging>
diff --git a/dubbo-remoting/dubbo-remoting-api/pom.xml b/dubbo-remoting/dubbo-remoting-api/pom.xml
index 629a4da2cb..9f96912163 100644
--- a/dubbo-remoting/dubbo-remoting-api/pom.xml
+++ b/dubbo-remoting/dubbo-remoting-api/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-remoting</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-remoting-api</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Client.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Client.java
index b8ccad201c..59b1721277 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Client.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Client.java
@@ -32,7 +32,7 @@
      */
     void reconnect() throws RemotingException;
 
-    @Deprecated
-    void reset(org.apache.dubbo.common.Parameters parameters);
+//    @Deprecated
+//    void reset(org.apache.dubbo.common.Parameters parameters);
 
 }
\ No newline at end of file
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Codec.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Codec.java
deleted file mode 100644
index ed2261d612..0000000000
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Codec.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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 org.apache.dubbo.remoting;
-
-import org.apache.dubbo.common.Constants;
-import org.apache.dubbo.common.extension.Adaptive;
-import org.apache.dubbo.common.extension.SPI;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * Codec. (SPI, Singleton, ThreadSafe)
- */
-@Deprecated
-@SPI
-public interface Codec {
-
-    /**
-     * Need more input poison.
-     *
-     * @see #decode(Channel, InputStream)
-     */
-    Object NEED_MORE_INPUT = new Object();
-
-    /**
-     * Encode message.
-     *
-     * @param channel channel.
-     * @param output  output stream.
-     * @param message message.
-     */
-    @Adaptive({Constants.CODEC_KEY})
-    void encode(Channel channel, OutputStream output, Object message) throws IOException;
-
-    /**
-     * Decode message.
-     *
-     * @param channel channel.
-     * @param input   input stream.
-     * @return message or <code>NEED_MORE_INPUT</code> poison.
-     * @see #NEED_MORE_INPUT
-     */
-    @Adaptive({Constants.CODEC_KEY})
-    Object decode(Channel channel, InputStream input) throws IOException;
-
-}
\ No newline at end of file
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Server.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Server.java
index f413cb0bb8..2e0034f6b2 100755
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Server.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Server.java
@@ -52,7 +52,7 @@
      */
     Channel getChannel(InetSocketAddress remoteAddress);
 
-    @Deprecated
-    void reset(org.apache.dubbo.common.Parameters parameters);
+//    @Deprecated
+//    void reset(org.apache.dubbo.common.Parameters parameters);
 
 }
\ No newline at end of file
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/codec/ExchangeCodec.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/codec/ExchangeCodec.java
index 4b18cad95d..7af7e57f85 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/codec/ExchangeCodec.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/codec/ExchangeCodec.java
@@ -156,7 +156,7 @@ protected Object decodeBody(Channel channel, InputStream is, byte[] header) thro
                 try {
                     Object data;
                     if (res.isHeartbeat()) {
-                        data = decodeHeartbeatData(channel, in);
+                        data = decodeEventData(channel, in);
                     } else if (res.isEvent()) {
                         data = decodeEventData(channel, in);
                     } else {
@@ -182,7 +182,7 @@ protected Object decodeBody(Channel channel, InputStream is, byte[] header) thro
             try {
                 Object data;
                 if (req.isHeartbeat()) {
-                    data = decodeHeartbeatData(channel, in);
+                    data = decodeEventData(channel, in);
                 } else if (req.isEvent()) {
                     data = decodeEventData(channel, in);
                 } else {
@@ -400,14 +400,14 @@ protected Object decodeEventData(Channel channel, ObjectInput in) throws IOExcep
         }
     }
 
-    @Deprecated
-    protected Object decodeHeartbeatData(Channel channel, ObjectInput in) throws IOException {
-        try {
-            return in.readObject();
-        } catch (ClassNotFoundException e) {
-            throw new IOException(StringUtils.toString("Read object failed.", e));
-        }
-    }
+//    @Deprecated
+//    protected Object decodeHeartbeatData(Channel channel, ObjectInput in) throws IOException {
+//        try {
+//            return in.readObject();
+//        } catch (ClassNotFoundException e) {
+//            throw new IOException(StringUtils.toString("Read object failed.", e));
+//        }
+//    }
 
     protected Object decodeRequestData(Channel channel, ObjectInput in) throws IOException {
         return decodeRequestData(in);
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/ExchangeServerDelegate.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/ExchangeServerDelegate.java
index 89c41c7cf2..9d1ef41f29 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/ExchangeServerDelegate.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/ExchangeServerDelegate.java
@@ -58,11 +58,11 @@ public void reset(URL url) {
         server.reset(url);
     }
 
-    @Override
-    @Deprecated
-    public void reset(org.apache.dubbo.common.Parameters parameters) {
-        reset(getUrl().addParameters(parameters.getParameters()));
-    }
+//    @Override
+//    @Deprecated
+//    public void reset(org.apache.dubbo.common.Parameters parameters) {
+//        reset(getUrl().addParameters(parameters.getParameters()));
+//    }
 
     @Override
     public Collection<Channel> getChannels() {
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeClient.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeClient.java
index feac1bff7d..66b95aa237 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeClient.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeClient.java
@@ -149,11 +149,11 @@ public void reset(URL url) {
         client.reset(url);
     }
 
-    @Override
-    @Deprecated
-    public void reset(org.apache.dubbo.common.Parameters parameters) {
-        reset(getUrl().addParameters(parameters.getParameters()));
-    }
+//    @Override
+//    @Deprecated
+//    public void reset(org.apache.dubbo.common.Parameters parameters) {
+//        reset(getUrl().addParameters(parameters.getParameters()));
+//    }
 
     @Override
     public void reconnect() throws RemotingException {
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeServer.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeServer.java
index 0b4aba067b..6be0360a0c 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeServer.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeServer.java
@@ -230,11 +230,11 @@ public void reset(URL url) {
         }
     }
 
-    @Override
-    @Deprecated
-    public void reset(org.apache.dubbo.common.Parameters parameters) {
-        reset(getUrl().addParameters(parameters.getParameters()));
-    }
+//    @Override
+//    @Deprecated
+//    public void reset(org.apache.dubbo.common.Parameters parameters) {
+//        reset(getUrl().addParameters(parameters.getParameters()));
+//    }
 
     @Override
     public void send(Object message) throws RemotingException {
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/AbstractEndpoint.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/AbstractEndpoint.java
index 94b6be287b..690e2e2708 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/AbstractEndpoint.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/AbstractEndpoint.java
@@ -23,9 +23,7 @@
 import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.remoting.ChannelHandler;
-import org.apache.dubbo.remoting.Codec;
 import org.apache.dubbo.remoting.Codec2;
-import org.apache.dubbo.remoting.transport.codec.CodecAdapter;
 
 /**
  * AbstractEndpoint
@@ -49,12 +47,7 @@ public AbstractEndpoint(URL url, ChannelHandler handler) {
 
     protected static Codec2 getChannelCodec(URL url) {
         String codecName = url.getParameter(Constants.CODEC_KEY, "telnet");
-        if (ExtensionLoader.getExtensionLoader(Codec2.class).hasExtension(codecName)) {
-            return ExtensionLoader.getExtensionLoader(Codec2.class).getExtension(codecName);
-        } else {
-            return new CodecAdapter(ExtensionLoader.getExtensionLoader(Codec.class)
-                    .getExtension(codecName));
-        }
+        return ExtensionLoader.getExtensionLoader(Codec2.class).getExtension(codecName);
     }
 
     @Override
@@ -92,10 +85,10 @@ public void reset(URL url) {
         }
     }
 
-    @Deprecated
-    public void reset(org.apache.dubbo.common.Parameters parameters) {
-        reset(getUrl().addParameters(parameters.getParameters()));
-    }
+//    @Deprecated
+//    public void reset(org.apache.dubbo.common.Parameters parameters) {
+//        reset(getUrl().addParameters(parameters.getParameters()));
+//    }
 
     protected Codec2 getCodec() {
         return codec;
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/ClientDelegate.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/ClientDelegate.java
index b3b60819bc..13ca637004 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/ClientDelegate.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/ClientDelegate.java
@@ -53,11 +53,11 @@ public void reset(URL url) {
         client.reset(url);
     }
 
-    @Override
-    @Deprecated
-    public void reset(org.apache.dubbo.common.Parameters parameters) {
-        reset(getUrl().addParameters(parameters.getParameters()));
-    }
+//    @Override
+//    @Deprecated
+//    public void reset(org.apache.dubbo.common.Parameters parameters) {
+//        reset(getUrl().addParameters(parameters.getParameters()));
+//    }
 
     @Override
     public URL getUrl() {
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/ServerDelegate.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/ServerDelegate.java
index 6aeed60f78..643c7be553 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/ServerDelegate.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/ServerDelegate.java
@@ -59,11 +59,11 @@ public void reset(URL url) {
         server.reset(url);
     }
 
-    @Override
-    @Deprecated
-    public void reset(org.apache.dubbo.common.Parameters parameters) {
-        reset(getUrl().addParameters(parameters.getParameters()));
-    }
+//    @Override
+//    @Deprecated
+//    public void reset(org.apache.dubbo.common.Parameters parameters) {
+//        reset(getUrl().addParameters(parameters.getParameters()));
+//    }
 
     @Override
     public Collection<Channel> getChannels() {
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/codec/CodecAdapter.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/codec/CodecAdapter.java
deleted file mode 100644
index d49313ffe3..0000000000
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/codec/CodecAdapter.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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 org.apache.dubbo.remoting.transport.codec;
-
-import org.apache.dubbo.common.io.UnsafeByteArrayInputStream;
-import org.apache.dubbo.common.io.UnsafeByteArrayOutputStream;
-import org.apache.dubbo.common.utils.Assert;
-import org.apache.dubbo.remoting.Channel;
-import org.apache.dubbo.remoting.Codec;
-import org.apache.dubbo.remoting.Codec2;
-import org.apache.dubbo.remoting.buffer.ChannelBuffer;
-
-import java.io.IOException;
-
-public class CodecAdapter implements Codec2 {
-
-    private Codec codec;
-
-    public CodecAdapter(Codec codec) {
-        Assert.notNull(codec, "codec == null");
-        this.codec = codec;
-    }
-
-    @Override
-    public void encode(Channel channel, ChannelBuffer buffer, Object message)
-            throws IOException {
-        UnsafeByteArrayOutputStream os = new UnsafeByteArrayOutputStream(1024);
-        codec.encode(channel, os, message);
-        buffer.writeBytes(os.toByteArray());
-    }
-
-    @Override
-    public Object decode(Channel channel, ChannelBuffer buffer) throws IOException {
-        byte[] bytes = new byte[buffer.readableBytes()];
-        int savedReaderIndex = buffer.readerIndex();
-        buffer.readBytes(bytes);
-        UnsafeByteArrayInputStream is = new UnsafeByteArrayInputStream(bytes);
-        Object result = codec.decode(channel, is);
-        buffer.readerIndex(savedReaderIndex + is.position());
-        return result == Codec.NEED_MORE_INPUT ? DecodeResult.NEED_MORE_INPUT : result;
-    }
-
-    public Codec getCodec() {
-        return codec;
-    }
-}
diff --git a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/codec/CodecAdapterTest.java b/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/codec/CodecAdapterTest.java
deleted file mode 100644
index c986a8b942..0000000000
--- a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/codec/CodecAdapterTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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 org.apache.dubbo.remoting.transport.codec;
-
-import org.apache.dubbo.remoting.codec.ExchangeCodecTest;
-
-import org.junit.Before;
-
-public class CodecAdapterTest extends ExchangeCodecTest {
-
-    @Before
-    public void setUp() throws Exception {
-        codec = new CodecAdapter(new DeprecatedExchangeCodec());
-    }
-
-}
diff --git a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/codec/DeprecatedExchangeCodec.java b/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/codec/DeprecatedExchangeCodec.java
deleted file mode 100644
index 5dc5962ccf..0000000000
--- a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/codec/DeprecatedExchangeCodec.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- * 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 org.apache.dubbo.remoting.transport.codec;
-
-import org.apache.dubbo.common.Version;
-import org.apache.dubbo.common.io.Bytes;
-import org.apache.dubbo.common.io.StreamUtils;
-import org.apache.dubbo.common.io.UnsafeByteArrayInputStream;
-import org.apache.dubbo.common.io.UnsafeByteArrayOutputStream;
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.serialize.ObjectInput;
-import org.apache.dubbo.common.serialize.ObjectOutput;
-import org.apache.dubbo.common.serialize.Serialization;
-import org.apache.dubbo.common.utils.StringUtils;
-import org.apache.dubbo.remoting.Channel;
-import org.apache.dubbo.remoting.Codec;
-import org.apache.dubbo.remoting.RemotingException;
-import org.apache.dubbo.remoting.exchange.Request;
-import org.apache.dubbo.remoting.exchange.Response;
-import org.apache.dubbo.remoting.exchange.support.DefaultFuture;
-import org.apache.dubbo.remoting.transport.CodecSupport;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-final class DeprecatedExchangeCodec extends DeprecatedTelnetCodec implements Codec {
-
-    // header length.
-    protected static final int HEADER_LENGTH = 16;
-    // magic header.
-    protected static final short MAGIC = (short) 0xdabb;
-    protected static final byte MAGIC_HIGH = Bytes.short2bytes(MAGIC)[0];
-    protected static final byte MAGIC_LOW = Bytes.short2bytes(MAGIC)[1];
-    // message flag.
-    protected static final byte FLAG_REQUEST = (byte) 0x80;
-    protected static final byte FLAG_TWOWAY = (byte) 0x40;
-    protected static final byte FLAG_EVENT = (byte) 0x20;
-    protected static final int SERIALIZATION_MASK = 0x1f;
-    private static final Logger logger = LoggerFactory.getLogger(DeprecatedExchangeCodec.class);
-
-    public Short getMagicCode() {
-        return MAGIC;
-    }
-
-    public void encode(Channel channel, OutputStream os, Object msg) throws IOException {
-        if (msg instanceof Request) {
-            encodeRequest(channel, os, (Request) msg);
-        } else if (msg instanceof Response) {
-            encodeResponse(channel, os, (Response) msg);
-        } else {
-            super.encode(channel, os, msg);
-        }
-    }
-
-    public Object decode(Channel channel, InputStream is) throws IOException {
-        int readable = is.available();
-        byte[] header = new byte[Math.min(readable, HEADER_LENGTH)];
-        is.read(header);
-        return decode(channel, is, readable, header);
-    }
-
-    protected Object decode(Channel channel, InputStream is, int readable, byte[] header) throws IOException {
-        // check magic number.
-        if (readable > 0 && header[0] != MAGIC_HIGH
-                || readable > 1 && header[1] != MAGIC_LOW) {
-            int length = header.length;
-            if (header.length < readable) {
-                header = Bytes.copyOf(header, readable);
-                is.read(header, length, readable - length);
-            }
-            for (int i = 1; i < header.length - 1; i++) {
-                if (header[i] == MAGIC_HIGH && header[i + 1] == MAGIC_LOW) {
-                    UnsafeByteArrayInputStream bis = ((UnsafeByteArrayInputStream) is);
-                    bis.position(bis.position() - header.length + i);
-                    header = Bytes.copyOf(header, i);
-                    break;
-                }
-            }
-            return super.decode(channel, is, readable, header);
-        }
-        // check length.
-        if (readable < HEADER_LENGTH) {
-            return NEED_MORE_INPUT;
-        }
-
-        // get data length.
-        int len = Bytes.bytes2int(header, 12);
-        checkPayload(channel, len);
-
-        int tt = len + HEADER_LENGTH;
-        if (readable < tt) {
-            return NEED_MORE_INPUT;
-        }
-
-        // limit input stream.
-        if (readable != tt)
-            is = StreamUtils.limitedInputStream(is, len);
-
-        try {
-            return decodeBody(channel, is, header);
-        } finally {
-            if (is.available() > 0) {
-                try {
-                    if (logger.isWarnEnabled()) {
-                        logger.warn("Skip input stream " + is.available());
-                    }
-                    StreamUtils.skipUnusedStream(is);
-                } catch (IOException e) {
-                    logger.warn(e.getMessage(), e);
-                }
-            }
-        }
-    }
-
-    protected Object decodeBody(Channel channel, InputStream is, byte[] header) throws IOException {
-        byte flag = header[2], proto = (byte) (flag & SERIALIZATION_MASK);
-        Serialization s = CodecSupport.getSerialization(channel.getUrl(), proto);
-        ObjectInput in = s.deserialize(channel.getUrl(), is);
-        // get request id.
-        long id = Bytes.bytes2long(header, 4);
-        if ((flag & FLAG_REQUEST) == 0) {
-            // decode response.
-            Response res = new Response(id);
-            if ((flag & FLAG_EVENT) != 0) {
-                res.setEvent(Response.HEARTBEAT_EVENT);
-            }
-            // get status.
-            byte status = header[3];
-            res.setStatus(status);
-            if (status == Response.OK) {
-                try {
-                    Object data;
-                    if (res.isHeartbeat()) {
-                        data = decodeHeartbeatData(channel, in);
-                    } else if (res.isEvent()) {
-                        data = decodeEventData(channel, in);
-                    } else {
-                        data = decodeResponseData(channel, in, getRequestData(id));
-                    }
-                    res.setResult(data);
-                } catch (Throwable t) {
-                    res.setStatus(Response.CLIENT_ERROR);
-                    res.setErrorMessage(StringUtils.toString(t));
-                }
-            } else {
-                res.setErrorMessage(in.readUTF());
-            }
-            return res;
-        } else {
-            // decode request.
-            Request req = new Request(id);
-            req.setVersion(Version.getProtocolVersion());
-            req.setTwoWay((flag & FLAG_TWOWAY) != 0);
-            if ((flag & FLAG_EVENT) != 0) {
-                req.setEvent(Request.HEARTBEAT_EVENT);
-            }
-            try {
-                Object data;
-                if (req.isHeartbeat()) {
-                    data = decodeHeartbeatData(channel, in);
-                } else if (req.isEvent()) {
-                    data = decodeEventData(channel, in);
-                } else {
-                    data = decodeRequestData(channel, in);
-                }
-                req.setData(data);
-            } catch (Throwable t) {
-                // bad request
-                req.setBroken(true);
-                req.setData(t);
-            }
-            return req;
-        }
-    }
-
-    protected Object getRequestData(long id) {
-        DefaultFuture future = DefaultFuture.getFuture(id);
-        if (future == null)
-            return null;
-        Request req = future.getRequest();
-        if (req == null)
-            return null;
-        return req.getData();
-    }
-
-    protected void encodeRequest(Channel channel, OutputStream os, Request req) throws IOException {
-        Serialization serialization = CodecSupport.getSerialization(channel.getUrl());
-        // header.
-        byte[] header = new byte[HEADER_LENGTH];
-        // set magic number.
-        Bytes.short2bytes(MAGIC, header);
-
-        // set request and serialization flag.
-        header[2] = (byte) (FLAG_REQUEST | serialization.getContentTypeId());
-
-        if (req.isTwoWay()) header[2] |= FLAG_TWOWAY;
-        if (req.isEvent()) header[2] |= FLAG_EVENT;
-
-        // set request id.
-        Bytes.long2bytes(req.getId(), header, 4);
-
-        // encode request data.
-        UnsafeByteArrayOutputStream bos = new UnsafeByteArrayOutputStream(1024);
-        ObjectOutput out = serialization.serialize(channel.getUrl(), bos);
-        if (req.isEvent()) {
-            encodeEventData(channel, out, req.getData());
-        } else {
-            encodeRequestData(channel, out, req.getData());
-        }
-        out.flushBuffer();
-        bos.flush();
-        bos.close();
-        byte[] data = bos.toByteArray();
-        checkPayload(channel, data.length);
-        Bytes.int2bytes(data.length, header, 12);
-
-        // write
-        os.write(header); // write header.
-        os.write(data); // write data.
-    }
-
-    protected void encodeResponse(Channel channel, OutputStream os, Response res) throws IOException {
-        try {
-            Serialization serialization = CodecSupport.getSerialization(channel.getUrl());
-            // header.
-            byte[] header = new byte[HEADER_LENGTH];
-            // set magic number.
-            Bytes.short2bytes(MAGIC, header);
-            // set request and serialization flag.
-            header[2] = serialization.getContentTypeId();
-            if (res.isHeartbeat()) header[2] |= FLAG_EVENT;
-            // set response status.
-            byte status = res.getStatus();
-            header[3] = status;
-            // set request id.
-            Bytes.long2bytes(res.getId(), header, 4);
-
-            UnsafeByteArrayOutputStream bos = new UnsafeByteArrayOutputStream(1024);
-            ObjectOutput out = serialization.serialize(channel.getUrl(), bos);
-            // encode response data or error message.
-            if (status == Response.OK) {
-                if (res.isHeartbeat()) {
-                    encodeHeartbeatData(channel, out, res.getResult());
-                } else {
-                    encodeResponseData(channel, out, res.getResult());
-                }
-            } else out.writeUTF(res.getErrorMessage());
-            out.flushBuffer();
-            bos.flush();
-            bos.close();
-
-            byte[] data = bos.toByteArray();
-            checkPayload(channel, data.length);
-            Bytes.int2bytes(data.length, header, 12);
-            // write
-            os.write(header); // write header.
-            os.write(data); // write data.
-        } catch (Throwable t) {
-            // send error message to Consumer, otherwise, Consumer will wait until timeout.
-            if (!res.isEvent() && res.getStatus() != Response.BAD_RESPONSE) {
-                try {
-                    // FIXME log error info in Codec and put all error handle logic in IoHanndler?
-                    logger.warn("Fail to encode response: " + res + ", send bad_response info instead, cause: " + t.getMessage(), t);
-
-                    Response r = new Response(res.getId(), res.getVersion());
-                    r.setStatus(Response.BAD_RESPONSE);
-                    r.setErrorMessage("Failed to send response: " + res + ", cause: " + StringUtils.toString(t));
-                    channel.send(r);
-
-                    return;
-                } catch (RemotingException e) {
-                    logger.warn("Failed to send bad_response info back: " + res + ", cause: " + e.getMessage(), e);
-                }
-            }
-
-            // Rethrow exception
-            if (t instanceof IOException) {
-                throw (IOException) t;
-            } else if (t instanceof RuntimeException) {
-                throw (RuntimeException) t;
-            } else if (t instanceof Error) {
-                throw (Error) t;
-            } else {
-                throw new RuntimeException(t.getMessage(), t);
-            }
-        }
-    }
-
-    protected Object decodeData(ObjectInput in) throws IOException {
-        return decodeRequestData(in);
-    }
-
-    @Deprecated
-    protected Object decodeHeartbeatData(ObjectInput in) throws IOException {
-        try {
-            return in.readObject();
-        } catch (ClassNotFoundException e) {
-            throw new IOException(StringUtils.toString("Read object failed.", e));
-        }
-    }
-
-    protected Object decodeRequestData(ObjectInput in) throws IOException {
-        try {
-            return in.readObject();
-        } catch (ClassNotFoundException e) {
-            throw new IOException(StringUtils.toString("Read object failed.", e));
-        }
-    }
-
-    protected Object decodeResponseData(ObjectInput in) throws IOException {
-        try {
-            return in.readObject();
-        } catch (ClassNotFoundException e) {
-            throw new IOException(StringUtils.toString("Read object failed.", e));
-        }
-    }
-
-    protected void encodeData(ObjectOutput out, Object data) throws IOException {
-        encodeRequestData(out, data);
-    }
-
-    private void encodeEventData(ObjectOutput out, Object data) throws IOException {
-        out.writeObject(data);
-    }
-
-    @Deprecated
-    protected void encodeHeartbeatData(ObjectOutput out, Object data) throws IOException {
-        encodeEventData(out, data);
-    }
-
-    protected void encodeRequestData(ObjectOutput out, Object data) throws IOException {
-        out.writeObject(data);
-    }
-
-    protected void encodeResponseData(ObjectOutput out, Object data) throws IOException {
-        out.writeObject(data);
-    }
-
-    protected Object decodeData(Channel channel, ObjectInput in) throws IOException {
-        return decodeRequestData(channel, in);
-    }
-
-    protected Object decodeEventData(Channel channel, ObjectInput in) throws IOException {
-        try {
-            return in.readObject();
-        } catch (ClassNotFoundException e) {
-            throw new IOException(StringUtils.toString("Read object failed.", e));
-        }
-    }
-
-    @Deprecated
-    protected Object decodeHeartbeatData(Channel channel, ObjectInput in) throws IOException {
-        try {
-            return in.readObject();
-        } catch (ClassNotFoundException e) {
-            throw new IOException(StringUtils.toString("Read object failed.", e));
-        }
-    }
-
-    protected Object decodeRequestData(Channel channel, ObjectInput in) throws IOException {
-        return decodeRequestData(in);
-    }
-
-    protected Object decodeResponseData(Channel channel, ObjectInput in) throws IOException {
-        return decodeResponseData(in);
-    }
-
-    protected Object decodeResponseData(Channel channel, ObjectInput in, Object requestData) throws IOException {
-        return decodeResponseData(channel, in);
-    }
-
-    protected void encodeData(Channel channel, ObjectOutput out, Object data) throws IOException {
-        encodeRequestData(channel, out, data);
-    }
-
-    private void encodeEventData(Channel channel, ObjectOutput out, Object data) throws IOException {
-        encodeEventData(out, data);
-    }
-
-    @Deprecated
-    protected void encodeHeartbeatData(Channel channel, ObjectOutput out, Object data) throws IOException {
-        encodeHeartbeatData(out, data);
-    }
-
-    protected void encodeRequestData(Channel channel, ObjectOutput out, Object data) throws IOException {
-        encodeRequestData(out, data);
-    }
-
-    protected void encodeResponseData(Channel channel, ObjectOutput out, Object data) throws IOException {
-        encodeResponseData(out, data);
-    }
-
-}
diff --git a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/codec/DeprecatedTelnetCodec.java b/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/codec/DeprecatedTelnetCodec.java
deleted file mode 100644
index b0a1052409..0000000000
--- a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/codec/DeprecatedTelnetCodec.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * 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 org.apache.dubbo.remoting.transport.codec;
-
-import org.apache.dubbo.common.Constants;
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.serialize.ObjectOutput;
-import org.apache.dubbo.common.utils.NetUtils;
-import org.apache.dubbo.common.utils.StringUtils;
-import org.apache.dubbo.remoting.Channel;
-import org.apache.dubbo.remoting.Codec;
-import org.apache.dubbo.remoting.RemotingException;
-import org.apache.dubbo.remoting.transport.CodecSupport;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.InetSocketAddress;
-import java.nio.charset.Charset;
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
-
-public class DeprecatedTelnetCodec implements Codec {
-
-    private static final Logger logger = LoggerFactory.getLogger(DeprecatedTelnetCodec.class);
-
-    private static final String HISTORY_LIST_KEY = "telnet.history.list";
-
-    private static final String HISTORY_INDEX_KEY = "telnet.history.index";
-
-    private static final byte[] UP = new byte[]{27, 91, 65};
-
-    private static final byte[] DOWN = new byte[]{27, 91, 66};
-
-    private static final List<?> ENTER = Arrays.asList(new Object[]{new byte[]{'\r', '\n'} /* Windows Enter */, new byte[]{'\n'} /* Linux Enter */});
-
-    private static final List<?> EXIT = Arrays.asList(new Object[]{new byte[]{3} /* Windows Ctrl+C */, new byte[]{-1, -12, -1, -3, 6} /* Linux Ctrl+C */, new byte[]{-1, -19, -1, -3, 6} /* Linux Pause */});
-
-    static void checkPayload(Channel channel, long size) throws IOException {
-        int payload = Constants.DEFAULT_PAYLOAD;
-        if (channel != null && channel.getUrl() != null) {
-            payload = channel.getUrl().getPositiveParameter(Constants.PAYLOAD_KEY, Constants.DEFAULT_PAYLOAD);
-        }
-        if (size > payload) {
-            IOException e = new IOException("Data length too large: " + size + ", max payload: " + payload + ", channel: " + channel);
-            logger.error(e);
-            throw e;
-        }
-    }
-
-    private static Charset getCharset(Channel channel) {
-        if (channel != null) {
-            Object attribute = channel.getAttribute(Constants.CHARSET_KEY);
-            if (attribute instanceof String) {
-                try {
-                    return Charset.forName((String) attribute);
-                } catch (Throwable t) {
-                    logger.warn(t.getMessage(), t);
-                }
-            } else if (attribute instanceof Charset) {
-                return (Charset) attribute;
-            }
-            URL url = channel.getUrl();
-            if (url != null) {
-                String parameter = url.getParameter(Constants.CHARSET_KEY);
-                if (parameter != null && parameter.length() > 0) {
-                    try {
-                        return Charset.forName(parameter);
-                    } catch (Throwable t) {
-                        logger.warn(t.getMessage(), t);
-                    }
-                }
-            }
-        }
-        try {
-            return Charset.forName("GBK");
-        } catch (Throwable t) {
-            logger.warn(t.getMessage(), t);
-        }
-        return Charset.defaultCharset();
-    }
-
-    private static String toString(byte[] message, Charset charset) throws UnsupportedEncodingException {
-        byte[] copy = new byte[message.length];
-        int index = 0;
-        for (int i = 0; i < message.length; i++) {
-            byte b = message[i];
-            if (b == '\b') { // backspace
-                if (index > 0) {
-                    index--;
-                }
-                if (i > 2 && message[i - 2] < 0) { // double byte char
-                    if (index > 0) {
-                        index--;
-                    }
-                }
-            } else if (b == 27) { // escape
-                if (i < message.length - 4 && message[i + 4] == 126) {
-                    i = i + 4;
-                } else if (i < message.length - 3 && message[i + 3] == 126) {
-                    i = i + 3;
-                } else if (i < message.length - 2) {
-                    i = i + 2;
-                }
-            } else if (b == -1 && i < message.length - 2
-                    && (message[i + 1] == -3 || message[i + 1] == -5)) { // handshake
-                i = i + 2;
-            } else {
-                copy[index++] = message[i];
-            }
-        }
-        if (index == 0) {
-            return "";
-        }
-        return new String(copy, 0, index, charset.name()).trim();
-    }
-
-    private static boolean isEquals(byte[] message, byte[] command) throws IOException {
-        return message.length == command.length && endsWith(message, command);
-    }
-
-    private static boolean endsWith(byte[] message, byte[] command) throws IOException {
-        if (message.length < command.length) {
-            return false;
-        }
-        int offset = message.length - command.length;
-        for (int i = command.length - 1; i >= 0; i--) {
-            if (message[offset + i] != command[i]) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    protected boolean isClientSide(Channel channel) {
-        String side = (String) channel.getAttribute(Constants.SIDE_KEY);
-        if ("client".equals(side)) {
-            return true;
-        } else if ("server".equals(side)) {
-            return false;
-        } else {
-            InetSocketAddress address = channel.getRemoteAddress();
-            URL url = channel.getUrl();
-            boolean client = url.getPort() == address.getPort()
-                    && NetUtils.filterLocalHost(url.getIp()).equals(
-                    NetUtils.filterLocalHost(address.getAddress()
-                            .getHostAddress()));
-            channel.setAttribute(Constants.SIDE_KEY, client ? "client"
-                    : "server");
-            return client;
-        }
-    }
-
-    public void encode(Channel channel, OutputStream output, Object message) throws IOException {
-        if (message instanceof String) {
-            if (isClientSide(channel)) {
-                message = message + "\r\n";
-            }
-            byte[] msgData = ((String) message).getBytes(getCharset(channel).name());
-            output.write(msgData);
-            output.flush();
-        } else {
-            ObjectOutput objectOutput = CodecSupport.getSerialization(channel.getUrl()).serialize(channel.getUrl(), output);
-            objectOutput.writeObject(message);
-            objectOutput.flushBuffer();
-        }
-    }
-
-    public Object decode(Channel channel, InputStream is) throws IOException {
-        int readable = is.available();
-        byte[] message = new byte[readable];
-        is.read(message);
-        return decode(channel, is, readable, message);
-    }
-
-    @SuppressWarnings("unchecked")
-    protected Object decode(Channel channel, InputStream is, int readable, byte[] message) throws IOException {
-        if (isClientSide(channel)) {
-            return toString(message, getCharset(channel));
-        }
-        checkPayload(channel, readable);
-        if (message == null || message.length == 0) {
-            return NEED_MORE_INPUT;
-        }
-
-        if (message[message.length - 1] == '\b') { // Windows backspace echo
-            try {
-                boolean doublechar = message.length >= 3 && message[message.length - 3] < 0; // double byte char
-                channel.send(new String(doublechar ? new byte[]{32, 32, 8, 8} : new byte[]{32, 8}, getCharset(channel).name()));
-            } catch (RemotingException e) {
-                throw new IOException(StringUtils.toString(e));
-            }
-            return NEED_MORE_INPUT;
-        }
-
-        for (Object command : EXIT) {
-            if (isEquals(message, (byte[]) command)) {
-                if (logger.isInfoEnabled()) {
-                    logger.info(new Exception("Close channel " + channel + " on exit command: " + Arrays.toString((byte[]) command)));
-                }
-                channel.close();
-                return null;
-            }
-        }
-
-        boolean up = endsWith(message, UP);
-        boolean down = endsWith(message, DOWN);
-        if (up || down) {
-            LinkedList<String> history = (LinkedList<String>) channel.getAttribute(HISTORY_LIST_KEY);
-            if (history == null || history.size() == 0) {
-                return NEED_MORE_INPUT;
-            }
-            Integer index = (Integer) channel.getAttribute(HISTORY_INDEX_KEY);
-            Integer old = index;
-            if (index == null) {
-                index = history.size() - 1;
-            } else {
-                if (up) {
-                    index = index - 1;
-                    if (index < 0) {
-                        index = history.size() - 1;
-                    }
-                } else {
-                    index = index + 1;
-                    if (index > history.size() - 1) {
-                        index = 0;
-                    }
-                }
-            }
-            if (old == null || !old.equals(index)) {
-                channel.setAttribute(HISTORY_INDEX_KEY, index);
-                String value = history.get(index);
-                if (old != null && old >= 0 && old < history.size()) {
-                    String ov = history.get(old);
-                    StringBuilder buf = new StringBuilder();
-                    for (int i = 0; i < ov.length(); i++) {
-                        buf.append("\b");
-                    }
-                    for (int i = 0; i < ov.length(); i++) {
-                        buf.append(" ");
-                    }
-                    for (int i = 0; i < ov.length(); i++) {
-                        buf.append("\b");
-                    }
-                    value = buf.toString() + value;
-                }
-                try {
-                    channel.send(value);
-                } catch (RemotingException e) {
-                    throw new IOException(StringUtils.toString(e));
-                }
-            }
-            return NEED_MORE_INPUT;
-        }
-        for (Object command : EXIT) {
-            if (isEquals(message, (byte[]) command)) {
-                if (logger.isInfoEnabled()) {
-                    logger.info(new Exception("Close channel " + channel + " on exit command " + command));
-                }
-                channel.close();
-                return null;
-            }
-        }
-        byte[] enter = null;
-        for (Object command : ENTER) {
-            if (endsWith(message, (byte[]) command)) {
-                enter = (byte[]) command;
-                break;
-            }
-        }
-        if (enter == null) {
-            return NEED_MORE_INPUT;
-        }
-        LinkedList<String> history = (LinkedList<String>) channel.getAttribute(HISTORY_LIST_KEY);
-        Integer index = (Integer) channel.getAttribute(HISTORY_INDEX_KEY);
-        channel.removeAttribute(HISTORY_INDEX_KEY);
-        if (history != null && history.size() > 0 && index != null && index >= 0 && index < history.size()) {
-            String value = history.get(index);
-            if (value != null) {
-                byte[] b1 = value.getBytes();
-                if (message != null && message.length > 0) {
-                    byte[] b2 = new byte[b1.length + message.length];
-                    System.arraycopy(b1, 0, b2, 0, b1.length);
-                    System.arraycopy(message, 0, b2, b1.length, message.length);
-                    message = b2;
-                } else {
-                    message = b1;
-                }
-            }
-        }
-        String result = toString(message, getCharset(channel));
-        if (result != null && result.trim().length() > 0) {
-            if (history == null) {
-                history = new LinkedList<String>();
-                channel.setAttribute(HISTORY_LIST_KEY, history);
-            }
-            if (history.size() == 0) {
-                history.addLast(result);
-            } else if (!result.equals(history.getLast())) {
-                history.remove(result);
-                history.addLast(result);
-                if (history.size() > 10) {
-                    history.removeFirst();
-                }
-            }
-        }
-        return result;
-    }
-}
diff --git a/dubbo-remoting/dubbo-remoting-grizzly/pom.xml b/dubbo-remoting/dubbo-remoting-grizzly/pom.xml
index 6c57b7312c..5e01ff37ed 100644
--- a/dubbo-remoting/dubbo-remoting-grizzly/pom.xml
+++ b/dubbo-remoting/dubbo-remoting-grizzly/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-remoting</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-remoting-grizzly</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-remoting/dubbo-remoting-http/pom.xml b/dubbo-remoting/dubbo-remoting-http/pom.xml
index 755fdd019b..ecfb55e034 100644
--- a/dubbo-remoting/dubbo-remoting-http/pom.xml
+++ b/dubbo-remoting/dubbo-remoting-http/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-remoting</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-remoting-http</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-remoting/dubbo-remoting-mina/pom.xml b/dubbo-remoting/dubbo-remoting-mina/pom.xml
index c46a692853..2d7b2da175 100644
--- a/dubbo-remoting/dubbo-remoting-mina/pom.xml
+++ b/dubbo-remoting/dubbo-remoting-mina/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-remoting</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-remoting-mina</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-remoting/dubbo-remoting-mina/src/test/java/org/apache/remoting/transport/mina/ClientsTest.java b/dubbo-remoting/dubbo-remoting-mina/src/test/java/org/apache/remoting/transport/mina/ClientsTest.java
index ef7d956621..b880bd5fa7 100644
--- a/dubbo-remoting/dubbo-remoting-mina/src/test/java/org/apache/remoting/transport/mina/ClientsTest.java
+++ b/dubbo-remoting/dubbo-remoting-mina/src/test/java/org/apache/remoting/transport/mina/ClientsTest.java
@@ -26,7 +26,7 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
-import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.hamcrest.CoreMatchers.containsString;
 
 public class ClientsTest {
 
diff --git a/dubbo-remoting/dubbo-remoting-netty/pom.xml b/dubbo-remoting/dubbo-remoting-netty/pom.xml
index 2098b6d304..c202903577 100644
--- a/dubbo-remoting/dubbo-remoting-netty/pom.xml
+++ b/dubbo-remoting/dubbo-remoting-netty/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-remoting</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-remoting-netty</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-remoting/dubbo-remoting-netty/src/test/java/org/apache/dubbo/remoting/transport/netty/ClientsTest.java b/dubbo-remoting/dubbo-remoting-netty/src/test/java/org/apache/dubbo/remoting/transport/netty/ClientsTest.java
index 6926dd5ef6..0f167412ef 100644
--- a/dubbo-remoting/dubbo-remoting-netty/src/test/java/org/apache/dubbo/remoting/transport/netty/ClientsTest.java
+++ b/dubbo-remoting/dubbo-remoting-netty/src/test/java/org/apache/dubbo/remoting/transport/netty/ClientsTest.java
@@ -25,7 +25,7 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
-import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.hamcrest.CoreMatchers.containsString;
 
 public class ClientsTest {
 
diff --git a/dubbo-remoting/dubbo-remoting-netty4/pom.xml b/dubbo-remoting/dubbo-remoting-netty4/pom.xml
index 6253fa1d2f..e565c28e3e 100644
--- a/dubbo-remoting/dubbo-remoting-netty4/pom.xml
+++ b/dubbo-remoting/dubbo-remoting-netty4/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <artifactId>dubbo-remoting</artifactId>
         <groupId>org.apache.dubbo</groupId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ClientsTest.java b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ClientsTest.java
index 93d53e9b15..bfd1c112b3 100644
--- a/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ClientsTest.java
+++ b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ClientsTest.java
@@ -21,7 +21,7 @@
 import org.junit.Test;
 
 import static org.junit.Assert.*;
-import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.hamcrest.CoreMatchers.containsString;
 
 public class ClientsTest {
     @Test
diff --git a/dubbo-remoting/dubbo-remoting-p2p/pom.xml b/dubbo-remoting/dubbo-remoting-p2p/pom.xml
index 18be11a1e2..af38c76443 100644
--- a/dubbo-remoting/dubbo-remoting-p2p/pom.xml
+++ b/dubbo-remoting/dubbo-remoting-p2p/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-remoting</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-remoting-p2p</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/pom.xml b/dubbo-remoting/dubbo-remoting-zookeeper/pom.xml
index a6cb828d87..18b0f8ea24 100644
--- a/dubbo-remoting/dubbo-remoting-zookeeper/pom.xml
+++ b/dubbo-remoting/dubbo-remoting-zookeeper/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-remoting</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-remoting-zookeeper</artifactId>
     <packaging>jar</packaging>
@@ -37,10 +37,6 @@
             <groupId>org.apache.zookeeper</groupId>
             <artifactId>zookeeper</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.101tec</groupId>
-            <artifactId>zkclient</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.curator</groupId>
             <artifactId>curator-framework</artifactId>
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkClientWrapper.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkClientWrapper.java
deleted file mode 100644
index 17aa372da8..0000000000
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkClientWrapper.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * 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 org.apache.dubbo.remoting.zookeeper.zkclient;
-
-import org.I0Itec.zkclient.IZkChildListener;
-import org.I0Itec.zkclient.IZkStateListener;
-import org.I0Itec.zkclient.ZkClient;
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.utils.Assert;
-import org.apache.zookeeper.Watcher.Event.KeeperState;
-
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Zkclient wrapper class that can monitor the state of the connection automatically after the connection is out of time
- * It is also consistent with the use of curator
- *
- * @date 2017/10/29
- */
-public class ZkClientWrapper {
-    private Logger logger = LoggerFactory.getLogger(ZkClientWrapper.class);
-    private long timeout;
-    private ZkClient client;
-    private volatile KeeperState state;
-    private CompletableFuture<ZkClient> completableFuture;
-    private volatile boolean started = false;
-
-    public ZkClientWrapper(final String serverAddr, long timeout) {
-        this.timeout = timeout;
-        completableFuture = CompletableFuture.supplyAsync(() -> new ZkClient(serverAddr, Integer.MAX_VALUE));
-    }
-
-    public void start() {
-        if (!started) {
-            try {
-                client = completableFuture.get(timeout, TimeUnit.MILLISECONDS);
-//                this.client.subscribeStateChanges(IZkStateListener);
-            } catch (Throwable t) {
-                logger.error("Timeout! zookeeper server can not be connected in : " + timeout + "ms!", t);
-                completableFuture.whenComplete(this::makeClientReady);
-            }
-            started = true;
-        } else {
-            logger.warn("Zkclient has already been started!");
-        }
-    }
-
-    public void addListener(IZkStateListener listener) {
-        completableFuture.whenComplete((value, exception) -> {
-            this.makeClientReady(value, exception);
-            if (exception == null) {
-                client.subscribeStateChanges(listener);
-            }
-        });
-    }
-
-    public boolean isConnected() {
-//        return client != null && state == KeeperState.SyncConnected;
-        return client != null;
-    }
-
-    public void createPersistent(String path) {
-        Assert.notNull(client, new IllegalStateException("Zookeeper is not connected yet!"));
-        client.createPersistent(path, true);
-    }
-
-    public void createEphemeral(String path) {
-        Assert.notNull(client, new IllegalStateException("Zookeeper is not connected yet!"));
-        client.createEphemeral(path);
-    }
-
-    public void delete(String path) {
-        Assert.notNull(client, new IllegalStateException("Zookeeper is not connected yet!"));
-        client.delete(path);
-    }
-
-    public List<String> getChildren(String path) {
-        Assert.notNull(client, new IllegalStateException("Zookeeper is not connected yet!"));
-        return client.getChildren(path);
-    }
-
-    public boolean exists(String path) {
-        Assert.notNull(client, new IllegalStateException("Zookeeper is not connected yet!"));
-        return client.exists(path);
-    }
-
-    public void close() {
-        Assert.notNull(client, new IllegalStateException("Zookeeper is not connected yet!"));
-        client.close();
-    }
-
-    public List<String> subscribeChildChanges(String path, final IZkChildListener listener) {
-        Assert.notNull(client, new IllegalStateException("Zookeeper is not connected yet!"));
-        return client.subscribeChildChanges(path, listener);
-    }
-
-    public void unsubscribeChildChanges(String path, IZkChildListener listener) {
-        Assert.notNull(client, new IllegalStateException("Zookeeper is not connected yet!"));
-        client.unsubscribeChildChanges(path, listener);
-    }
-
-    private void makeClientReady(ZkClient client, Throwable e) {
-        if (e != null) {
-            logger.error("Got an exception when trying to create zkclient instance, can not connect to zookeeper server, please check!", e);
-        } else {
-            this.client = client;
-//            this.client.subscribeStateChanges(IZkStateListener);
-        }
-    }
-
-
-}
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperClient.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperClient.java
deleted file mode 100644
index 4f7faeb86f..0000000000
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperClient.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * 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 org.apache.dubbo.remoting.zookeeper.zkclient;
-
-import org.apache.dubbo.common.Constants;
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.remoting.zookeeper.ChildListener;
-import org.apache.dubbo.remoting.zookeeper.StateListener;
-import org.apache.dubbo.remoting.zookeeper.support.AbstractZookeeperClient;
-
-import org.I0Itec.zkclient.IZkChildListener;
-import org.I0Itec.zkclient.IZkStateListener;
-import org.I0Itec.zkclient.exception.ZkNoNodeException;
-import org.I0Itec.zkclient.exception.ZkNodeExistsException;
-import org.apache.zookeeper.Watcher.Event.KeeperState;
-
-import java.util.List;
-
-public class ZkclientZookeeperClient extends AbstractZookeeperClient<IZkChildListener> {
-
-    private final ZkClientWrapper client;
-
-    private volatile KeeperState state = KeeperState.SyncConnected;
-
-    public ZkclientZookeeperClient(URL url) {
-        super(url);
-        long timeout = url.getParameter(Constants.TIMEOUT_KEY, 30000L);
-        client = new ZkClientWrapper(url.getBackupAddress(), timeout);
-        client.addListener(new IZkStateListener() {
-            @Override
-            public void handleStateChanged(KeeperState state) throws Exception {
-                ZkclientZookeeperClient.this.state = state;
-                if (state == KeeperState.Disconnected) {
-                    stateChanged(StateListener.DISCONNECTED);
-                } else if (state == KeeperState.SyncConnected) {
-                    stateChanged(StateListener.CONNECTED);
-                }
-            }
-
-            @Override
-            public void handleNewSession() throws Exception {
-                stateChanged(StateListener.RECONNECTED);
-            }
-        });
-        client.start();
-    }
-
-
-    @Override
-    public void createPersistent(String path) {
-        try {
-            client.createPersistent(path);
-        } catch (ZkNodeExistsException e) {
-        }
-    }
-
-    @Override
-    public void createEphemeral(String path) {
-        try {
-            client.createEphemeral(path);
-        } catch (ZkNodeExistsException e) {
-        }
-    }
-
-    @Override
-    public void delete(String path) {
-        try {
-            client.delete(path);
-        } catch (ZkNoNodeException e) {
-        }
-    }
-
-    @Override
-    public List<String> getChildren(String path) {
-        try {
-            return client.getChildren(path);
-        } catch (ZkNoNodeException e) {
-            return null;
-        }
-    }
-
-    @Override
-    public boolean checkExists(String path) {
-        try {
-            return client.exists(path);
-        } catch (Throwable t) {
-        }
-        return false;
-    }
-
-    @Override
-    public boolean isConnected() {
-        return state == KeeperState.SyncConnected;
-    }
-
-    @Override
-    public void doClose() {
-        client.close();
-    }
-
-    @Override
-    public IZkChildListener createTargetChildListener(String path, final ChildListener listener) {
-        return new IZkChildListener() {
-            @Override
-            public void handleChildChange(String parentPath, List<String> currentChilds)
-                    throws Exception {
-                listener.childChanged(parentPath, currentChilds);
-            }
-        };
-    }
-
-    @Override
-    public List<String> addTargetChildListener(String path, final IZkChildListener listener) {
-        return client.subscribeChildChanges(path, listener);
-    }
-
-    @Override
-    public void removeTargetChildListener(String path, IZkChildListener listener) {
-        client.unsubscribeChildChanges(path, listener);
-    }
-
-}
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperTransporter.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperTransporter.java
deleted file mode 100644
index de5ee4b9d4..0000000000
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperTransporter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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 org.apache.dubbo.remoting.zookeeper.zkclient;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.remoting.zookeeper.ZookeeperClient;
-import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;
-
-public class ZkclientZookeeperTransporter implements ZookeeperTransporter {
-
-    @Override
-    public ZookeeperClient connect(URL url) {
-        return new ZkclientZookeeperClient(url);
-    }
-
-}
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter
index e9b9349f33..36496799a2 100644
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter
+++ b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter
@@ -1,2 +1 @@
-zkclient=org.apache.dubbo.remoting.zookeeper.zkclient.ZkclientZookeeperTransporter
 curator=org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperTransporter
\ No newline at end of file
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkClientWrapperTest.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkClientWrapperTest.java
deleted file mode 100644
index 9105b842fa..0000000000
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkClientWrapperTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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 org.apache.dubbo.remoting.zookeeper.zkclient;
-
-import org.apache.dubbo.common.utils.NetUtils;
-import org.I0Itec.zkclient.IZkChildListener;
-import org.apache.curator.test.TestingServer;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-import static org.mockito.Mockito.mock;
-
-public class ZkClientWrapperTest {
-    private TestingServer zkServer;
-    private ZkClientWrapper zkClientWrapper;
-
-    @Before
-    public void setUp() throws Exception {
-        int zkServerPort = NetUtils.getAvailablePort();
-        zkServer = new TestingServer(zkServerPort, true);
-        zkClientWrapper = new ZkClientWrapper("127.0.0.1:" + zkServerPort, 10000);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        zkServer.stop();
-    }
-
-    @Test
-    public void testConnectedStatus() {
-        boolean connected = zkClientWrapper.isConnected();
-        assertThat(connected, is(false));
-        zkClientWrapper.start();
-
-        IZkChildListener listener = mock(IZkChildListener.class);
-        zkClientWrapper.subscribeChildChanges("/path", listener);
-        zkClientWrapper.unsubscribeChildChanges("/path", listener);
-    }
-}
\ No newline at end of file
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperClientTest.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperClientTest.java
deleted file mode 100644
index 01eb787d08..0000000000
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperClientTest.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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 org.apache.dubbo.remoting.zookeeper.zkclient;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.utils.NetUtils;
-import org.apache.dubbo.remoting.zookeeper.StateListener;
-import org.I0Itec.zkclient.IZkChildListener;
-import org.apache.curator.test.TestingServer;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-
-import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.core.Is.is;
-import static org.junit.Assert.assertThat;
-
-public class ZkclientZookeeperClientTest {
-    private TestingServer zkServer;
-    private ZkclientZookeeperClient zkclientZookeeperClient;
-
-    @Before
-    public void setUp() throws Exception {
-        int zkServerPort = NetUtils.getAvailablePort();
-        zkServer = new TestingServer(zkServerPort, true);
-        zkclientZookeeperClient = new ZkclientZookeeperClient(URL.valueOf("zookeeper://127.0.0.1:" +
-                zkServerPort + "/org.apache.dubbo.registry.RegistryService"));
-    }
-
-    @Test
-    public void testCheckExists() {
-        String path = "/dubbo/org.apache.dubbo.demo.DemoService/providers";
-        zkclientZookeeperClient.create(path, false);
-        assertThat(zkclientZookeeperClient.checkExists(path), is(true));
-        assertThat(zkclientZookeeperClient.checkExists(path + "/noneexits"), is(false));
-    }
-
-    @Test
-    public void testDeletePath() {
-        String path = "/dubbo/org.apache.dubbo.demo.DemoService/providers";
-        zkclientZookeeperClient.create(path, false);
-        assertThat(zkclientZookeeperClient.checkExists(path), is(true));
-
-        zkclientZookeeperClient.delete(path);
-        assertThat(zkclientZookeeperClient.checkExists(path), is(false));
-    }
-
-    @Test
-    public void testConnectState() throws Exception {
-        assertThat(zkclientZookeeperClient.isConnected(), is(true));
-        final CountDownLatch stopLatch = new CountDownLatch(1);
-        zkclientZookeeperClient.addStateListener(new StateListener() {
-            @Override
-            public void stateChanged(int connected) {
-                stopLatch.countDown();
-            }
-        });
-        zkServer.stop();
-        stopLatch.await();
-        assertThat(zkclientZookeeperClient.isConnected(), is(false));
-    }
-
-    @Test
-    public void testChildrenListener() throws InterruptedException {
-        String path = "/dubbo/org.apache.dubbo.demo.DemoService/providers";
-        zkclientZookeeperClient.create(path, false);
-        final CountDownLatch countDownLatch = new CountDownLatch(1);
-        zkclientZookeeperClient.addTargetChildListener(path, new IZkChildListener() {
-            @Override
-            public void handleChildChange(String s, List<String> list) throws Exception {
-                countDownLatch.countDown();
-            }
-        });
-        zkclientZookeeperClient.createPersistent(path + "/provider1");
-        countDownLatch.await();
-    }
-
-    @Test
-    public void testGetChildren() throws IOException {
-        String path = "/dubbo/org.apache.dubbo.demo.DemoService/parentProviders";
-        zkclientZookeeperClient.create(path, false);
-        for (int i = 0; i < 5; i++) {
-            zkclientZookeeperClient.createEphemeral(path + "/server" + i);
-        }
-        List<String> zookeeperClientChildren = zkclientZookeeperClient.getChildren(path);
-        assertThat(zookeeperClientChildren, hasSize(5));
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        zkclientZookeeperClient.close();
-        zkServer.stop();
-    }
-}
\ No newline at end of file
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperTransporterTest.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperTransporterTest.java
deleted file mode 100644
index 7d2755bc71..0000000000
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/test/java/org/apache/dubbo/remoting/zookeeper/zkclient/ZkclientZookeeperTransporterTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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 org.apache.dubbo.remoting.zookeeper.zkclient;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.utils.NetUtils;
-import org.apache.dubbo.remoting.zookeeper.ZookeeperClient;
-import org.apache.curator.test.TestingServer;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.IsNot.not;
-import static org.hamcrest.core.IsNull.nullValue;
-
-public class ZkclientZookeeperTransporterTest {
-    private TestingServer zkServer;
-    private ZookeeperClient zookeeperClient;
-
-    @Before
-    public void setUp() throws Exception {
-        int zkServerPort = NetUtils.getAvailablePort();
-        zkServer = new TestingServer(zkServerPort, true);
-        zookeeperClient = new ZkclientZookeeperTransporter().connect(URL.valueOf("zookeeper://127.0.0.1:" +
-                zkServerPort + "/service"));
-    }
-
-    @Test
-    public void testZookeeperClient() {
-        assertThat(zookeeperClient, not(nullValue()));
-        zookeeperClient.close();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        zkServer.stop();
-    }
-}
\ No newline at end of file
diff --git a/dubbo-remoting/pom.xml b/dubbo-remoting/pom.xml
index e756783ba8..dbe39ee017 100644
--- a/dubbo-remoting/pom.xml
+++ b/dubbo-remoting/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-parent</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-remoting</artifactId>
     <packaging>pom</packaging>
diff --git a/dubbo-rpc/dubbo-rpc-api/pom.xml b/dubbo-rpc/dubbo-rpc-api/pom.xml
index 2467d3f5fb..cf2f927181 100644
--- a/dubbo-rpc/dubbo-rpc-api/pom.xml
+++ b/dubbo-rpc/dubbo-rpc-api/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-rpc</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-rpc-api</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/service/EchoService.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/service/EchoService.java
deleted file mode 100644
index 470e952b40..0000000000
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/service/EchoService.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.dubbo.rpc.service;
-
-@Deprecated
-public interface EchoService extends org.apache.dubbo.rpc.service.EchoService {
-}
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/service/GenericException.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/service/GenericException.java
deleted file mode 100644
index 29c20adae2..0000000000
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/service/GenericException.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.dubbo.rpc.service;
-
-@Deprecated
-public class GenericException extends org.apache.dubbo.rpc.service.GenericException {
-
-    public GenericException() {
-    }
-
-    public GenericException(String exceptionClass, String exceptionMessage) {
-        super(exceptionClass, exceptionMessage);
-    }
-
-    public GenericException(Throwable cause) {
-        super(cause);
-    }
-}
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/service/GenericService.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/service/GenericService.java
deleted file mode 100644
index e6b3168d62..0000000000
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/com/alibaba/dubbo/rpc/service/GenericService.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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.dubbo.rpc.service;
-
-@Deprecated
-public interface GenericService extends org.apache.dubbo.rpc.service.GenericService {
-
-    Object $invoke(String method, String[] parameterTypes, Object[] args)
-            throws com.alibaba.dubbo.rpc.service.GenericException;
-}
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AsyncRpcResult.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AsyncRpcResult.java
index 0ae9867dd0..35bcecd5ca 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AsyncRpcResult.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AsyncRpcResult.java
@@ -98,11 +98,6 @@ public boolean hasException() {
         return getRpcResult().hasException();
     }
 
-    @Override
-    public Object getResult() {
-        return getRpcResult().getResult();
-    }
-
     public CompletableFuture getValueFuture() {
         return valueFuture;
     }
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Result.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Result.java
index 58a258241f..9abb5da0ce 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Result.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Result.java
@@ -66,14 +66,6 @@
      */
     Object recreate() throws Throwable;
 
-    /**
-     * @see org.apache.dubbo.rpc.Result#getValue()
-     * @deprecated Replace to getValue()
-     */
-    @Deprecated
-    Object getResult();
-
-
     /**
      * get attachments.
      *
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcConstants.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcConstants.java
deleted file mode 100644
index ce2925a6c4..0000000000
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcConstants.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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 org.apache.dubbo.rpc;
-
-import org.apache.dubbo.common.Constants;
-
-/**
- * RpcConstants
- *
- * @deprecated Replace to org.apache.dubbo.common.Constants
- */
-@Deprecated
-public final class RpcConstants extends Constants {
-
-    private RpcConstants() {
-    }
-
-}
\ No newline at end of file
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java
index f448650bc0..e216fa22bb 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java
@@ -80,12 +80,6 @@ protected RpcContext initialValue() {
     private InetSocketAddress localAddress;
 
     private InetSocketAddress remoteAddress;
-    @Deprecated
-    private List<Invoker<?>> invokers;
-    @Deprecated
-    private Invoker<?> invoker;
-    @Deprecated
-    private Invocation invocation;
 
     // now we don't use the 'values' map to hold these objects
     // we want these objects to be as generic as possible
@@ -247,8 +241,9 @@ public URL getUrl() {
         return url;
     }
 
-    public void setUrl(URL url) {
+    public RpcContext setUrl(URL url) {
         this.url = url;
+        return this;
     }
 
     /**
@@ -260,8 +255,9 @@ public String getMethodName() {
         return methodName;
     }
 
-    public void setMethodName(String methodName) {
+    public RpcContext setMethodName(String methodName) {
         this.methodName = methodName;
+        return this;
     }
 
     /**
@@ -273,8 +269,9 @@ public void setMethodName(String methodName) {
         return parameterTypes;
     }
 
-    public void setParameterTypes(Class<?>[] parameterTypes) {
+    public RpcContext setParameterTypes(Class<?>[] parameterTypes) {
         this.parameterTypes = parameterTypes;
+        return this;
     }
 
     /**
@@ -286,8 +283,9 @@ public void setParameterTypes(Class<?>[] parameterTypes) {
         return arguments;
     }
 
-    public void setArguments(Object[] arguments) {
+    public RpcContext setArguments(Object[] arguments) {
         this.arguments = arguments;
+        return this;
     }
 
     /**
@@ -549,33 +547,7 @@ public Object get(String key) {
         return values.get(key);
     }
 
-    /**
-     * @deprecated Replace to isProviderSide()
-     */
-    @Deprecated
-    public boolean isServerSide() {
-        return isProviderSide();
-    }
-
-    /**
-     * @deprecated Replace to isConsumerSide()
-     */
-    @Deprecated
-    public boolean isClientSide() {
-        return isConsumerSide();
-    }
-
-    /**
-     * @deprecated Replace to getUrls()
-     */
-    @Deprecated
-    @SuppressWarnings({"unchecked", "rawtypes"})
-    public List<Invoker<?>> getInvokers() {
-        return invokers == null && invoker != null ? (List) Arrays.asList(invoker) : invokers;
-    }
-
     public RpcContext setInvokers(List<Invoker<?>> invokers) {
-        this.invokers = invokers;
         if (invokers != null && !invokers.isEmpty()) {
             List<URL> urls = new ArrayList<URL>(invokers.size());
             for (Invoker<?> invoker : invokers) {
@@ -586,32 +558,14 @@ public RpcContext setInvokers(List<Invoker<?>> invokers) {
         return this;
     }
 
-    /**
-     * @deprecated Replace to getUrl()
-     */
-    @Deprecated
-    public Invoker<?> getInvoker() {
-        return invoker;
-    }
-
     public RpcContext setInvoker(Invoker<?> invoker) {
-        this.invoker = invoker;
         if (invoker != null) {
             setUrl(invoker.getUrl());
         }
         return this;
     }
 
-    /**
-     * @deprecated Replace to getMethodName(), getParameterTypes(), getArguments()
-     */
-    @Deprecated
-    public Invocation getInvocation() {
-        return invocation;
-    }
-
     public RpcContext setInvocation(Invocation invocation) {
-        this.invocation = invocation;
         if (invocation != null) {
             setMethodName(invocation.getMethodName());
             setParameterTypes(invocation.getParameterTypes());
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcResult.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcResult.java
index 3f27420021..61815c5f42 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcResult.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcResult.java
@@ -44,25 +44,6 @@ public Object recreate() throws Throwable {
         return result;
     }
 
-    /**
-     * @see org.apache.dubbo.rpc.RpcResult#getValue()
-     * @deprecated Replace to getValue()
-     */
-    @Override
-    @Deprecated
-    public Object getResult() {
-        return getValue();
-    }
-
-    /**
-     * @see org.apache.dubbo.rpc.RpcResult#setValue(Object)
-     * @deprecated Replace to setValue()
-     */
-    @Deprecated
-    public void setResult(Object result) {
-        setValue(result);
-    }
-
     @Override
     public Object getValue() {
         return result;
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/AbstractProxyFactory.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/AbstractProxyFactory.java
index bc4a4c9ba7..c416612779 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/AbstractProxyFactory.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/AbstractProxyFactory.java
@@ -16,13 +16,13 @@
  */
 package org.apache.dubbo.rpc.proxy;
 
-import com.alibaba.dubbo.rpc.service.EchoService;
 
 import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.utils.ReflectUtils;
 import org.apache.dubbo.rpc.Invoker;
 import org.apache.dubbo.rpc.ProxyFactory;
 import org.apache.dubbo.rpc.RpcException;
+import org.apache.dubbo.rpc.service.EchoService;
 import org.apache.dubbo.rpc.service.GenericService;
 
 /**
@@ -55,13 +55,13 @@
             interfaces = new Class<?>[]{invoker.getInterface(), EchoService.class};
         }
 
-        if (!GenericService.class.isAssignableFrom(invoker.getInterface()) && generic) {
-            int len = interfaces.length;
-            Class<?>[] temp = interfaces;
-            interfaces = new Class<?>[len + 1];
-            System.arraycopy(temp, 0, interfaces, 0, len);
-            interfaces[len] = com.alibaba.dubbo.rpc.service.GenericService.class;
-        }
+//        if (!GenericService.class.isAssignableFrom(invoker.getInterface()) && generic) {
+//            int len = interfaces.length;
+//            Class<?>[] temp = interfaces;
+//            interfaces = new Class<?>[len + 1];
+//            System.arraycopy(temp, 0, interfaces, 0, len);
+//            interfaces[len] = com.alibaba.dubbo.rpc.service.GenericService.class;
+//        }
 
         return getProxy(invoker, interfaces);
     }
diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ConsumerContextFilterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ConsumerContextFilterTest.java
index 076361b3c9..57516bb20b 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ConsumerContextFilterTest.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ConsumerContextFilterTest.java
@@ -28,6 +28,7 @@
 
 import org.junit.Test;
 
+import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 
 /**
@@ -42,8 +43,11 @@ public void testSetContext() {
         Invoker<DemoService> invoker = new MyInvoker<DemoService>(url);
         Invocation invocation = new MockInvocation();
         consumerContextFilter.invoke(invoker, invocation);
-        assertEquals(invoker, RpcContext.getContext().getInvoker());
-        assertEquals(invocation, RpcContext.getContext().getInvocation());
+        assertEquals(invoker.getUrl(), RpcContext.getContext().getUrl());
+        assertEquals(invocation.getMethodName(), RpcContext.getContext().getMethodName());
+        assertArrayEquals(invocation.getParameterTypes(), RpcContext.getContext().getParameterTypes());
+        assertArrayEquals(invocation.getArguments(), RpcContext.getContext().getArguments());
+
         assertEquals(NetUtils.getLocalHost() + ":0", RpcContext.getContext().getLocalAddressString());
         assertEquals("test:11", RpcContext.getContext().getRemoteAddressString());
 
diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ContextFilterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ContextFilterTest.java
index a954785a01..8a8bd6ad46 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ContextFilterTest.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ContextFilterTest.java
@@ -62,7 +62,7 @@ public void testSetContext() {
         given(invoker.getUrl()).willReturn(url);
 
         contextFilter.invoke(invoker, invocation);
-        assertNull(RpcContext.getContext().getInvoker());
+        assertNull(RpcContext.getContext().getUrl());
     }
 
     @Test
@@ -71,6 +71,6 @@ public void testWithAttachments() {
         Invoker<DemoService> invoker = new MyInvoker<DemoService>(url);
         Invocation invocation = new MockInvocation();
         Result result = contextFilter.invoke(invoker, invocation);
-        assertNull(RpcContext.getContext().getInvoker());
+        assertNull(RpcContext.getContext().getUrl());
     }
 }
\ No newline at end of file
diff --git a/dubbo-rpc/dubbo-rpc-dubbo/pom.xml b/dubbo-rpc/dubbo-rpc-dubbo/pom.xml
index 26915e458d..a6dae894e0 100644
--- a/dubbo-rpc/dubbo-rpc-dubbo/pom.xml
+++ b/dubbo-rpc/dubbo-rpc-dubbo/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-rpc</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-rpc-dubbo</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java
index fdf541b35d..089a0dc484 100644
--- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java
+++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java
@@ -25,7 +25,7 @@
 import org.apache.dubbo.common.utils.ReflectUtils;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.remoting.Channel;
-import org.apache.dubbo.remoting.Codec;
+//import org.apache.dubbo.remoting.Codec;
 import org.apache.dubbo.remoting.Decodeable;
 import org.apache.dubbo.remoting.exchange.Request;
 import org.apache.dubbo.remoting.transport.CodecSupport;
@@ -39,7 +39,7 @@
 
 import static org.apache.dubbo.rpc.protocol.dubbo.CallbackServiceCodec.decodeInvocationArgument;
 
-public class DecodeableRpcInvocation extends RpcInvocation implements Codec, Decodeable {
+public class DecodeableRpcInvocation extends RpcInvocation implements Decodeable {
 
     private static final Logger log = LoggerFactory.getLogger(DecodeableRpcInvocation.class);
 
@@ -80,13 +80,8 @@ public void decode() throws Exception {
         }
     }
 
-    @Override
-    public void encode(Channel channel, OutputStream output, Object message) throws IOException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Object decode(Channel channel, InputStream input) throws IOException {
+//    @Override
+    private Object decode(Channel channel, InputStream input) throws IOException {
         ObjectInput in = CodecSupport.getSerialization(channel.getUrl(), serializationType)
                 .deserialize(channel.getUrl(), input);
 
diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java
index 50cdc76a18..acf89358a4 100644
--- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java
+++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java
@@ -23,7 +23,6 @@
 import org.apache.dubbo.common.utils.Assert;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.remoting.Channel;
-import org.apache.dubbo.remoting.Codec;
 import org.apache.dubbo.remoting.Decodeable;
 import org.apache.dubbo.remoting.exchange.Response;
 import org.apache.dubbo.remoting.transport.CodecSupport;
@@ -37,7 +36,7 @@
 import java.lang.reflect.Type;
 import java.util.Map;
 
-public class DecodeableRpcResult extends RpcResult implements Codec, Decodeable {
+public class DecodeableRpcResult extends RpcResult implements Decodeable {
 
     private static final Logger log = LoggerFactory.getLogger(DecodeableRpcResult.class);
 
@@ -64,13 +63,8 @@ public DecodeableRpcResult(Channel channel, Response response, InputStream is, I
         this.serializationType = id;
     }
 
-    @Override
-    public void encode(Channel channel, OutputStream output, Object message) throws IOException {
-        throw new UnsupportedOperationException();
-    }
 
-    @Override
-    public Object decode(Channel channel, InputStream input) throws IOException {
+    private Object decode(Channel channel, InputStream input) throws IOException {
         ObjectInput in = CodecSupport.getSerialization(channel.getUrl(), serializationType)
                 .deserialize(channel.getUrl(), input);
         
diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboCodec.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboCodec.java
index 7523392c1e..0d144d6590 100644
--- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboCodec.java
+++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboCodec.java
@@ -80,7 +80,7 @@ protected Object decodeBody(Channel channel, InputStream is, byte[] header) thro
                 try {
                     Object data;
                     if (res.isHeartbeat()) {
-                        data = decodeHeartbeatData(channel, deserialize(s, channel.getUrl(), is));
+                        data = decodeEventData(channel, deserialize(s, channel.getUrl(), is));
                     } else if (res.isEvent()) {
                         data = decodeEventData(channel, deserialize(s, channel.getUrl(), is));
                     } else {
@@ -121,7 +121,7 @@ protected Object decodeBody(Channel channel, InputStream is, byte[] header) thro
             try {
                 Object data;
                 if (req.isHeartbeat()) {
-                    data = decodeHeartbeatData(channel, deserialize(s, channel.getUrl(), is));
+                    data = decodeEventData(channel, deserialize(s, channel.getUrl(), is));
                 } else if (req.isEvent()) {
                     data = decodeEventData(channel, deserialize(s, channel.getUrl(), is));
                 } else {
diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java
index 508b7e7f39..fb0b21cbf1 100644
--- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java
+++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java
@@ -17,7 +17,6 @@
 package org.apache.dubbo.rpc.protocol.dubbo;
 
 import org.apache.dubbo.common.Constants;
-import org.apache.dubbo.common.Parameters;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
@@ -193,11 +192,11 @@ public void reset(URL url) {
         client.reset(url);
     }
 
-    @Override
-    @Deprecated
-    public void reset(Parameters parameters) {
-        reset(getUrl().addParameters(parameters.getParameters()));
-    }
+//    @Override
+//    @Deprecated
+//    public void reset(Parameters parameters) {
+//        reset(getUrl().addParameters(parameters.getParameters()));
+//    }
 
     @Override
     public void reconnect() throws RemotingException {
diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/ReferenceCountExchangeClient.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/ReferenceCountExchangeClient.java
index 2d35af4274..26d80f7bed 100644
--- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/ReferenceCountExchangeClient.java
+++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/ReferenceCountExchangeClient.java
@@ -17,7 +17,6 @@
 package org.apache.dubbo.rpc.protocol.dubbo;
 
 import org.apache.dubbo.common.Constants;
-import org.apache.dubbo.common.Parameters;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.remoting.ChannelHandler;
 import org.apache.dubbo.remoting.RemotingException;
@@ -103,10 +102,10 @@ public boolean hasAttribute(String key) {
         return client.hasAttribute(key);
     }
 
-    @Override
-    public void reset(Parameters parameters) {
-        client.reset(parameters);
-    }
+//    @Override
+//    public void reset(Parameters parameters) {
+//        client.reset(parameters);
+//    }
 
     @Override
     public void send(Object message) throws RemotingException {
diff --git a/dubbo-rpc/dubbo-rpc-hessian/pom.xml b/dubbo-rpc/dubbo-rpc-hessian/pom.xml
index 05867c7cc4..105c52bce0 100644
--- a/dubbo-rpc/dubbo-rpc-hessian/pom.xml
+++ b/dubbo-rpc/dubbo-rpc-hessian/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-rpc</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-rpc-hessian</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-rpc/dubbo-rpc-http/pom.xml b/dubbo-rpc/dubbo-rpc-http/pom.xml
index f98d062d37..e259124594 100644
--- a/dubbo-rpc/dubbo-rpc-http/pom.xml
+++ b/dubbo-rpc/dubbo-rpc-http/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-rpc</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-rpc-http</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-rpc/dubbo-rpc-http/src/test/java/org/apache/dubbo/rpc/protocol/http/HttpProtocolTest.java b/dubbo-rpc/dubbo-rpc-http/src/test/java/org/apache/dubbo/rpc/protocol/http/HttpProtocolTest.java
index 2c75e6da85..cd47b66da1 100644
--- a/dubbo-rpc/dubbo-rpc-http/src/test/java/org/apache/dubbo/rpc/protocol/http/HttpProtocolTest.java
+++ b/dubbo-rpc/dubbo-rpc-http/src/test/java/org/apache/dubbo/rpc/protocol/http/HttpProtocolTest.java
@@ -26,7 +26,7 @@
 import org.apache.dubbo.common.serialize.nativejava.NativeJavaSerialization;
 import org.apache.dubbo.rpc.*;
 import org.apache.dubbo.rpc.service.GenericService;
-import junit.framework.Assert;
+import org.junit.Assert;
 import org.junit.Test;
 
 import java.io.ByteArrayInputStream;
diff --git a/dubbo-rpc/dubbo-rpc-injvm/pom.xml b/dubbo-rpc/dubbo-rpc-injvm/pom.xml
index 15fb6bc04d..3e266f5f4f 100644
--- a/dubbo-rpc/dubbo-rpc-injvm/pom.xml
+++ b/dubbo-rpc/dubbo-rpc-injvm/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-rpc</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-rpc-injvm</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/ProtocolTest.java b/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/ProtocolTest.java
index 45ee265d3d..900256acf9 100644
--- a/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/ProtocolTest.java
+++ b/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/ProtocolTest.java
@@ -26,7 +26,7 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
-import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.hamcrest.CoreMatchers.containsString;
 
 public class ProtocolTest {
 
diff --git a/dubbo-rpc/dubbo-rpc-memcached/pom.xml b/dubbo-rpc/dubbo-rpc-memcached/pom.xml
index 97573635f6..156f48d5fc 100644
--- a/dubbo-rpc/dubbo-rpc-memcached/pom.xml
+++ b/dubbo-rpc/dubbo-rpc-memcached/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-rpc</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-rpc-memcached</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-rpc/dubbo-rpc-redis/pom.xml b/dubbo-rpc/dubbo-rpc-redis/pom.xml
index df5be04986..b4dd261258 100644
--- a/dubbo-rpc/dubbo-rpc-redis/pom.xml
+++ b/dubbo-rpc/dubbo-rpc-redis/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-rpc</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-rpc-redis</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-rpc/dubbo-rpc-rest/pom.xml b/dubbo-rpc/dubbo-rpc-rest/pom.xml
index 2ccefbcbb1..97790bb4a6 100644
--- a/dubbo-rpc/dubbo-rpc-rest/pom.xml
+++ b/dubbo-rpc/dubbo-rpc-rest/pom.xml
@@ -18,7 +18,7 @@
 	<parent>
 		<groupId>org.apache.dubbo</groupId>
 		<artifactId>dubbo-rpc</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
 	</parent>
 	<artifactId>dubbo-rpc-rest</artifactId>
 	<packaging>jar</packaging>
diff --git a/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protol/rest/RestProtocolTest.java b/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protol/rest/RestProtocolTest.java
index bd2d66a5c4..8422fc16a4 100644
--- a/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protol/rest/RestProtocolTest.java
+++ b/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protol/rest/RestProtocolTest.java
@@ -19,7 +19,7 @@
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.extension.ExtensionLoader;
 import org.apache.dubbo.rpc.*;
-import junit.framework.Assert;
+import org.junit.Assert;
 import org.junit.Test;
 
 /**
diff --git a/dubbo-rpc/dubbo-rpc-rmi/pom.xml b/dubbo-rpc/dubbo-rpc-rmi/pom.xml
index 60dd87bf4d..6a096a3c58 100644
--- a/dubbo-rpc/dubbo-rpc-rmi/pom.xml
+++ b/dubbo-rpc/dubbo-rpc-rmi/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-rpc</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
+        <version>2.7.2-SNAPSHOT</version>
     </parent>
     <artifactId>dubbo-rpc-rmi</artifactId>
     <packaging>jar</packaging>
diff --git a/dubbo-rpc/dubbo-rpc-thrift/pom.xml b/dubbo-rpc/dubbo-rpc-thrift/pom.xml
deleted file mode 100644
index 78e619b641..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/pom.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<!--
-  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.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-rpc</artifactId>
-        <version>2.7.0-SNAPSHOT</version>
-    </parent>
-    <artifactId>dubbo-rpc-thrift</artifactId>
-    <packaging>jar</packaging>
-    <name>${project.artifactId}</name>
-    <description>The thrift rpc module of dubbo project</description>
-    <properties>
-        <skip_maven_deploy>false</skip_maven_deploy>
-    </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-rpc-api</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-rpc-dubbo</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-remoting-api</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-remoting-netty4</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.thrift</groupId>
-            <artifactId>libthrift</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-context</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-config-spring</artifactId>
-            <version>${project.parent.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-registry-multicast</artifactId>
-            <version>${project.parent.version}</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-</project>
\ No newline at end of file
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ClassNameGenerator.java b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ClassNameGenerator.java
deleted file mode 100644
index dd2d7f370d..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ClassNameGenerator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 org.apache.dubbo.rpc.protocol.thrift;
-
-import org.apache.dubbo.common.extension.SPI;
-/**
- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead
- */
-@Deprecated
-@SPI(DubboClassNameGenerator.NAME)
-public interface ClassNameGenerator {
-
-    public String generateArgsClassName(String serviceName, String methodName);
-
-    public String generateResultClassName(String serviceName, String methodName);
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/DubboClassNameGenerator.java b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/DubboClassNameGenerator.java
deleted file mode 100644
index cc4b1b2158..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/DubboClassNameGenerator.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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 org.apache.dubbo.rpc.protocol.thrift;
-/**
- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead
- */
-@Deprecated
-public class DubboClassNameGenerator implements ClassNameGenerator {
-
-    public static final String NAME = "dubbo";
-
-    @Override
-    public String generateArgsClassName(String serviceName, String methodName) {
-        return ThriftUtils.generateMethodArgsClassName(serviceName, methodName);
-    }
-
-    @Override
-    public String generateResultClassName(String serviceName, String methodName) {
-        return ThriftUtils.generateMethodResultClassName(serviceName, methodName);
-    }
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftClassNameGenerator.java b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftClassNameGenerator.java
deleted file mode 100644
index ce8b35947e..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftClassNameGenerator.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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 org.apache.dubbo.rpc.protocol.thrift;
-/**
- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead
- */
-@Deprecated
-public class ThriftClassNameGenerator implements ClassNameGenerator {
-
-    public static final String NAME = "thrift";
-
-    @Override
-    public String generateArgsClassName(String serviceName, String methodName) {
-        return ThriftUtils.generateMethodArgsClassNameThrift(serviceName, methodName);
-    }
-
-    @Override
-    public String generateResultClassName(String serviceName, String methodName) {
-        return ThriftUtils.generateMethodResultClassNameThrift(serviceName, methodName);
-    }
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftCodec.java b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftCodec.java
deleted file mode 100644
index b693847fb1..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftCodec.java
+++ /dev/null
@@ -1,710 +0,0 @@
-/*
- * 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 org.apache.dubbo.rpc.protocol.thrift;
-
-
-import org.apache.dubbo.common.Constants;
-import org.apache.dubbo.common.extension.ExtensionLoader;
-import org.apache.dubbo.common.utils.ClassHelper;
-import org.apache.dubbo.remoting.Channel;
-import org.apache.dubbo.remoting.Codec2;
-import org.apache.dubbo.remoting.buffer.ChannelBuffer;
-import org.apache.dubbo.remoting.buffer.ChannelBufferInputStream;
-import org.apache.dubbo.remoting.exchange.Request;
-import org.apache.dubbo.remoting.exchange.Response;
-import org.apache.dubbo.rpc.RpcException;
-import org.apache.dubbo.rpc.RpcInvocation;
-import org.apache.dubbo.rpc.RpcResult;
-import org.apache.dubbo.rpc.protocol.thrift.io.RandomAccessByteArrayOutputStream;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.thrift.TApplicationException;
-import org.apache.thrift.TBase;
-import org.apache.thrift.TException;
-import org.apache.thrift.TFieldIdEnum;
-import org.apache.thrift.protocol.TBinaryProtocol;
-import org.apache.thrift.protocol.TMessage;
-import org.apache.thrift.protocol.TMessageType;
-import org.apache.thrift.protocol.TProtocol;
-import org.apache.thrift.transport.TFramedTransport;
-import org.apache.thrift.transport.TIOStreamTransport;
-
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * Thrift framed protocol codec.
- *
- * <pre>
- * |<-                                  message header                                  ->|<- message body ->|
- * +----------------+----------------------+------------------+---------------------------+------------------+
- * | magic (2 bytes)|message size (4 bytes)|head size(2 bytes)| version (1 byte) | header |   message body   |
- * +----------------+----------------------+------------------+---------------------------+------------------+
- * |<-                                               message size                                          ->|
- * </pre>
- *
- * <p>
- * <b>header fields in version 1</b>
- * <ol>
- *     <li>string - service name</li>
- *     <li>long   - dubbo request id</li>
- * </ol>
- * </p>
- */
-/**
- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead
- */
-@Deprecated
-public class ThriftCodec implements Codec2 {
-
-    public static final int MESSAGE_LENGTH_INDEX = 2;
-    public static final int MESSAGE_HEADER_LENGTH_INDEX = 6;
-    public static final int MESSAGE_SHORTEST_LENGTH = 10;
-    public static final String NAME = "thrift";
-    public static final String PARAMETER_CLASS_NAME_GENERATOR = "class.name.generator";
-    public static final byte VERSION = (byte) 1;
-    public static final short MAGIC = (short) 0xdabc;
-    static final ConcurrentMap<Long, RequestData> cachedRequest =
-            new ConcurrentHashMap<Long, RequestData>();
-    private static final AtomicInteger THRIFT_SEQ_ID = new AtomicInteger(0);
-    private static final ConcurrentMap<String, Class<?>> cachedClass =
-            new ConcurrentHashMap<String, Class<?>>();
-
-    private static int nextSeqId() {
-        return THRIFT_SEQ_ID.incrementAndGet();
-    }
-
-    // just for test
-    static int getSeqId() {
-        return THRIFT_SEQ_ID.get();
-    }
-
-    @Override
-    public void encode(Channel channel, ChannelBuffer buffer, Object message)
-            throws IOException {
-
-        if (message instanceof Request) {
-            encodeRequest(channel, buffer, (Request) message);
-        } else if (message instanceof Response) {
-            encodeResponse(channel, buffer, (Response) message);
-        } else {
-            throw new UnsupportedOperationException("Thrift codec only support encode " 
-                    + Request.class.getName() + " and " + Response.class.getName());
-        }
-
-    }
-
-    @Override
-    public Object decode(Channel channel, ChannelBuffer buffer) throws IOException {
-
-        int available = buffer.readableBytes();
-
-        if (available < MESSAGE_SHORTEST_LENGTH) {
-
-            return DecodeResult.NEED_MORE_INPUT;
-
-        } else {
-
-            TIOStreamTransport transport = new TIOStreamTransport(new ChannelBufferInputStream(buffer));
-
-            TBinaryProtocol protocol = new TBinaryProtocol(transport);
-
-            short magic;
-            int messageLength;
-
-            try {
-//                protocol.readI32(); // skip the first message length
-                byte[] bytes = new byte[4];
-                transport.read(bytes, 0, 4);
-                magic = protocol.readI16();
-                messageLength = protocol.readI32();
-
-            } catch (TException e) {
-                throw new IOException(e.getMessage(), e);
-            }
-
-            if (MAGIC != magic) {
-                throw new IOException("Unknown magic code " + magic);
-            }
-
-            if (available < messageLength) {
-                return DecodeResult.NEED_MORE_INPUT;
-            }
-
-            return decode(protocol);
-
-        }
-
-    }
-
-    private Object decode(TProtocol protocol)
-            throws IOException {
-
-        // version
-        String serviceName;
-        long id;
-
-        TMessage message;
-
-        try {
-            protocol.readI16();
-            protocol.readByte();
-            serviceName = protocol.readString();
-            id = protocol.readI64();
-            message = protocol.readMessageBegin();
-        } catch (TException e) {
-            throw new IOException(e.getMessage(), e);
-        }
-
-        if (message.type == TMessageType.CALL) {
-
-            RpcInvocation result = new RpcInvocation();
-            result.setAttachment(Constants.INTERFACE_KEY, serviceName);
-            result.setMethodName(message.name);
-
-            String argsClassName = ExtensionLoader.getExtensionLoader(ClassNameGenerator.class)
-                    .getExtension(ThriftClassNameGenerator.NAME).generateArgsClassName(serviceName, message.name);
-
-            if (StringUtils.isEmpty(argsClassName)) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION,
-                        "The specified interface name incorrect.");
-            }
-
-            Class clazz = cachedClass.get(argsClassName);
-
-            if (clazz == null) {
-                try {
-
-                    clazz = ClassHelper.forNameWithThreadContextClassLoader(argsClassName);
-
-                    cachedClass.putIfAbsent(argsClassName, clazz);
-
-                } catch (ClassNotFoundException e) {
-                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-                }
-            }
-
-            TBase args;
-
-            try {
-                args = (TBase) clazz.newInstance();
-            } catch (InstantiationException e) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-            } catch (IllegalAccessException e) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-            }
-
-            try {
-                args.read(protocol);
-                protocol.readMessageEnd();
-            } catch (TException e) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-            }
-
-            List<Object> parameters = new ArrayList<Object>();
-            List<Class<?>> parameterTypes = new ArrayList<Class<?>>();
-            int index = 1;
-
-            while (true) {
-
-                TFieldIdEnum fieldIdEnum = args.fieldForId(index++);
-
-                if (fieldIdEnum == null) {
-                    break;
-                }
-
-                String fieldName = fieldIdEnum.getFieldName();
-
-                String getMethodName = ThriftUtils.generateGetMethodName(fieldName);
-
-                Method getMethod;
-
-                try {
-                    getMethod = clazz.getMethod(getMethodName);
-                } catch (NoSuchMethodException e) {
-                    throw new RpcException(
-                            RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-                }
-
-                parameterTypes.add(getMethod.getReturnType());
-                try {
-                    parameters.add(getMethod.invoke(args));
-                } catch (IllegalAccessException e) {
-                    throw new RpcException(
-                            RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-                } catch (InvocationTargetException e) {
-                    throw new RpcException(
-                            RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-                }
-
-            }
-
-            result.setArguments(parameters.toArray());
-            result.setParameterTypes(parameterTypes.toArray(new Class[parameterTypes.size()]));
-
-            Request request = new Request(id);
-            request.setData(result);
-
-            cachedRequest.putIfAbsent(id,
-                    RequestData.create(message.seqid, serviceName, message.name));
-
-            return request;
-
-        } else if (message.type == TMessageType.EXCEPTION) {
-
-            TApplicationException exception;
-
-            try {
-                exception = TApplicationException.read(protocol);
-                protocol.readMessageEnd();
-            } catch (TException e) {
-                throw new IOException(e.getMessage(), e);
-            }
-
-            RpcResult result = new RpcResult();
-
-            result.setException(new RpcException(exception.getMessage()));
-
-            Response response = new Response();
-
-            response.setResult(result);
-
-            response.setId(id);
-
-            return response;
-
-        } else if (message.type == TMessageType.REPLY) {
-
-            String resultClassName = ExtensionLoader.getExtensionLoader(ClassNameGenerator.class)
-                    .getExtension(ThriftClassNameGenerator.NAME).generateResultClassName(serviceName, message.name);
-
-            if (StringUtils.isEmpty(resultClassName)) {
-                throw new IllegalArgumentException("Could not infer service result class name from service name " 
-                        + serviceName + ", the service name you specified may not generated by thrift idl compiler");
-            }
-
-            Class<?> clazz = cachedClass.get(resultClassName);
-
-            if (clazz == null) {
-
-                try {
-
-                    clazz = ClassHelper.forNameWithThreadContextClassLoader(resultClassName);
-
-                    cachedClass.putIfAbsent(resultClassName, clazz);
-
-                } catch (ClassNotFoundException e) {
-                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-                }
-
-            }
-
-            TBase<?, ? extends TFieldIdEnum> result;
-            try {
-                result = (TBase<?, ?>) clazz.newInstance();
-            } catch (InstantiationException e) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-            } catch (IllegalAccessException e) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-            }
-
-            try {
-                result.read(protocol);
-                protocol.readMessageEnd();
-            } catch (TException e) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-            }
-
-            Object realResult = null;
-
-            int index = 0;
-
-            while (true) {
-
-                TFieldIdEnum fieldIdEnum = result.fieldForId(index++);
-
-                if (fieldIdEnum == null) {
-                    break;
-                }
-
-                Field field;
-
-                try {
-                    field = clazz.getDeclaredField(fieldIdEnum.getFieldName());
-                    field.setAccessible(true);
-                } catch (NoSuchFieldException e) {
-                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-                }
-
-                try {
-                    realResult = field.get(result);
-                } catch (IllegalAccessException e) {
-                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-                }
-
-                if (realResult != null) {
-                    break;
-                }
-
-            }
-
-            Response response = new Response();
-
-            response.setId(id);
-
-            RpcResult rpcResult = new RpcResult();
-
-            if (realResult instanceof Throwable) {
-                rpcResult.setException((Throwable) realResult);
-            } else {
-                rpcResult.setValue(realResult);
-            }
-
-            response.setResult(rpcResult);
-
-            return response;
-
-        } else {
-            // Impossible
-            throw new IOException();
-        }
-
-    }
-
-    private void encodeRequest(Channel channel, ChannelBuffer buffer, Request request)
-            throws IOException {
-
-        RpcInvocation inv = (RpcInvocation) request.getData();
-
-        int seqId = nextSeqId();
-
-        String serviceName = inv.getAttachment(Constants.INTERFACE_KEY);
-
-        if (StringUtils.isEmpty(serviceName)) {
-            throw new IllegalArgumentException("Could not find service name in attachment with key " 
-                    + Constants.INTERFACE_KEY);
-        }
-
-        TMessage message = new TMessage(
-                inv.getMethodName(),
-                TMessageType.CALL,
-                seqId);
-
-        String methodArgs = ExtensionLoader.getExtensionLoader(ClassNameGenerator.class)
-                .getExtension(channel.getUrl().getParameter(ThriftConstants.CLASS_NAME_GENERATOR_KEY, ThriftClassNameGenerator.NAME))
-                .generateArgsClassName(serviceName, inv.getMethodName());
-
-        if (StringUtils.isEmpty(methodArgs)) {
-            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION,
-                    "Could not encode request, the specified interface may be incorrect.");
-        }
-
-        Class<?> clazz = cachedClass.get(methodArgs);
-
-        if (clazz == null) {
-
-            try {
-
-                clazz = ClassHelper.forNameWithThreadContextClassLoader(methodArgs);
-
-                cachedClass.putIfAbsent(methodArgs, clazz);
-
-            } catch (ClassNotFoundException e) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-            }
-
-        }
-
-        TBase args;
-
-        try {
-            args = (TBase) clazz.newInstance();
-        } catch (InstantiationException e) {
-            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-        } catch (IllegalAccessException e) {
-            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-        }
-
-        for (int i = 0; i < inv.getArguments().length; i++) {
-
-            Object obj = inv.getArguments()[i];
-
-            if (obj == null) {
-                continue;
-            }
-
-            TFieldIdEnum field = args.fieldForId(i + 1);
-
-            String setMethodName = ThriftUtils.generateSetMethodName(field.getFieldName());
-
-            Method method;
-
-            try {
-                method = clazz.getMethod(setMethodName, inv.getParameterTypes()[i]);
-            } catch (NoSuchMethodException e) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-            }
-
-            try {
-                method.invoke(args, obj);
-            } catch (IllegalAccessException e) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-            } catch (InvocationTargetException e) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-            }
-
-        }
-
-        RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream(1024);
-
-        TIOStreamTransport transport = new TIOStreamTransport(bos);
-
-        TBinaryProtocol protocol = new TBinaryProtocol(transport);
-
-        int headerLength, messageLength;
-
-        byte[] bytes = new byte[4];
-        try {
-            // magic
-            protocol.writeI16(MAGIC);
-            // message length placeholder
-            protocol.writeI32(Integer.MAX_VALUE);
-            // message header length placeholder
-            protocol.writeI16(Short.MAX_VALUE);
-            // version
-            protocol.writeByte(VERSION);
-            // service name
-            protocol.writeString(serviceName);
-            // dubbo request id
-            protocol.writeI64(request.getId());
-            protocol.getTransport().flush();
-            // header size
-            headerLength = bos.size();
-
-            // message body
-            protocol.writeMessageBegin(message);
-            args.write(protocol);
-            protocol.writeMessageEnd();
-            protocol.getTransport().flush();
-            int oldIndex = messageLength = bos.size();
-
-            // fill in message length and header length
-            try {
-                TFramedTransport.encodeFrameSize(messageLength, bytes);
-                bos.setWriteIndex(MESSAGE_LENGTH_INDEX);
-                protocol.writeI32(messageLength);
-                bos.setWriteIndex(MESSAGE_HEADER_LENGTH_INDEX);
-                protocol.writeI16((short) (0xffff & headerLength));
-            } finally {
-                bos.setWriteIndex(oldIndex);
-            }
-
-        } catch (TException e) {
-            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-        }
-
-        buffer.writeBytes(bytes);
-        buffer.writeBytes(bos.toByteArray());
-
-    }
-
-    private void encodeResponse(Channel channel, ChannelBuffer buffer, Response response)
-            throws IOException {
-
-        RpcResult result = (RpcResult) response.getResult();
-
-        RequestData rd = cachedRequest.get(response.getId());
-
-        String resultClassName = ExtensionLoader.getExtensionLoader(ClassNameGenerator.class).getExtension(
-                channel.getUrl().getParameter(ThriftConstants.CLASS_NAME_GENERATOR_KEY, ThriftClassNameGenerator.NAME))
-                .generateResultClassName(rd.serviceName, rd.methodName);
-
-        if (StringUtils.isEmpty(resultClassName)) {
-            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION,
-                    "Could not encode response, the specified interface may be incorrect.");
-        }
-
-        Class clazz = cachedClass.get(resultClassName);
-
-        if (clazz == null) {
-
-            try {
-                clazz = ClassHelper.forNameWithThreadContextClassLoader(resultClassName);
-                cachedClass.putIfAbsent(resultClassName, clazz);
-            } catch (ClassNotFoundException e) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-            }
-
-        }
-
-        TBase resultObj;
-
-        try {
-            resultObj = (TBase) clazz.newInstance();
-        } catch (InstantiationException e) {
-            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-        } catch (IllegalAccessException e) {
-            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-        }
-
-        TApplicationException applicationException = null;
-        TMessage message;
-
-        if (result.hasException()) {
-            Throwable throwable = result.getException();
-            int index = 1;
-            boolean found = false;
-            while (true) {
-                TFieldIdEnum fieldIdEnum = resultObj.fieldForId(index++);
-                if (fieldIdEnum == null) {
-                    break;
-                }
-                String fieldName = fieldIdEnum.getFieldName();
-                String getMethodName = ThriftUtils.generateGetMethodName(fieldName);
-                String setMethodName = ThriftUtils.generateSetMethodName(fieldName);
-                Method getMethod;
-                Method setMethod;
-                try {
-                    getMethod = clazz.getMethod(getMethodName);
-                    if (getMethod.getReturnType().equals(throwable.getClass())) {
-                        found = true;
-                        setMethod = clazz.getMethod(setMethodName, throwable.getClass());
-                        setMethod.invoke(resultObj, throwable);
-                    }
-                } catch (NoSuchMethodException e) {
-                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-                } catch (InvocationTargetException e) {
-                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-                } catch (IllegalAccessException e) {
-                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-                }
-            }
-
-            if (!found) {
-                applicationException = new TApplicationException(throwable.getMessage());
-            }
-
-        } else {
-            Object realResult = result.getResult();
-            // result field id is 0
-            String fieldName = resultObj.fieldForId(0).getFieldName();
-            String setMethodName = ThriftUtils.generateSetMethodName(fieldName);
-            String getMethodName = ThriftUtils.generateGetMethodName(fieldName);
-            Method getMethod;
-            Method setMethod;
-            try {
-                getMethod = clazz.getMethod(getMethodName);
-                setMethod = clazz.getMethod(setMethodName, getMethod.getReturnType());
-                setMethod.invoke(resultObj, realResult);
-            } catch (NoSuchMethodException e) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-            } catch (InvocationTargetException e) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-            } catch (IllegalAccessException e) {
-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-            }
-
-        }
-
-        if (applicationException != null) {
-            message = new TMessage(rd.methodName, TMessageType.EXCEPTION, rd.id);
-        } else {
-            message = new TMessage(rd.methodName, TMessageType.REPLY, rd.id);
-        }
-
-        RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream(1024);
-
-        TIOStreamTransport transport = new TIOStreamTransport(bos);
-
-        TBinaryProtocol protocol = new TBinaryProtocol(transport);
-
-        int messageLength;
-        int headerLength;
-
-        byte[] bytes = new byte[4];
-        try {
-            // magic
-            protocol.writeI16(MAGIC);
-            // message length
-            protocol.writeI32(Integer.MAX_VALUE);
-            // message header length
-            protocol.writeI16(Short.MAX_VALUE);
-            // version
-            protocol.writeByte(VERSION);
-            // service name
-            protocol.writeString(rd.serviceName);
-            // id
-            protocol.writeI64(response.getId());
-            protocol.getTransport().flush();
-            headerLength = bos.size();
-
-            // message
-            protocol.writeMessageBegin(message);
-            switch (message.type) {
-                case TMessageType.EXCEPTION:
-                    applicationException.write(protocol);
-                    break;
-                case TMessageType.REPLY:
-                    resultObj.write(protocol);
-                    break;
-            }
-            protocol.writeMessageEnd();
-            protocol.getTransport().flush();
-            int oldIndex = messageLength = bos.size();
-
-            try {
-                TFramedTransport.encodeFrameSize(messageLength, bytes);
-                bos.setWriteIndex(MESSAGE_LENGTH_INDEX);
-                protocol.writeI32(messageLength);
-                bos.setWriteIndex(MESSAGE_HEADER_LENGTH_INDEX);
-                protocol.writeI16((short) (0xffff & headerLength));
-            } finally {
-                bos.setWriteIndex(oldIndex);
-            }
-
-        } catch (TException e) {
-            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);
-        }
-
-        buffer.writeBytes(bytes);
-        buffer.writeBytes(bos.toByteArray());
-
-    }
-
-    static class RequestData {
-        int id;
-        String serviceName;
-        String methodName;
-
-        static RequestData create(int id, String sn, String mn) {
-            RequestData result = new RequestData();
-            result.id = id;
-            result.serviceName = sn;
-            result.methodName = mn;
-            return result;
-        }
-
-    }
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftConstants.java b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftConstants.java
deleted file mode 100644
index 55fb5521ae..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftConstants.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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 org.apache.dubbo.rpc.protocol.thrift;
-/**
- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead
- */
-@Deprecated
-public final class ThriftConstants {
-
-    public static final String THRIFT_PROTOCOL_KEY = "thrift.protocol";
-    public static final String BINARY_THRIFT_PROTOCOL = "binary";
-    public static final String CLASS_NAME_GENERATOR_KEY = "class.name.generator";
-    public static final String DEFAULT_PROTOCOL = BINARY_THRIFT_PROTOCOL;
-
-    private ThriftConstants() {
-    }
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftInvoker.java b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftInvoker.java
deleted file mode 100644
index fa123e232a..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftInvoker.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * 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 org.apache.dubbo.rpc.protocol.thrift;
-
-import org.apache.dubbo.common.Constants;
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.utils.AtomicPositiveInteger;
-import org.apache.dubbo.remoting.RemotingException;
-import org.apache.dubbo.remoting.TimeoutException;
-import org.apache.dubbo.remoting.exchange.ExchangeClient;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.Result;
-import org.apache.dubbo.rpc.RpcContext;
-import org.apache.dubbo.rpc.RpcException;
-import org.apache.dubbo.rpc.RpcInvocation;
-import org.apache.dubbo.rpc.protocol.AbstractInvoker;
-
-import java.util.Set;
-import java.util.concurrent.locks.ReentrantLock;
-/**
- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead
- */
-@Deprecated
-public class ThriftInvoker<T> extends AbstractInvoker<T> {
-
-    private final ExchangeClient[] clients;
-
-    private final AtomicPositiveInteger index = new AtomicPositiveInteger();
-
-    private final ReentrantLock destroyLock = new ReentrantLock();
-
-    private final Set<Invoker<?>> invokers;
-
-    public ThriftInvoker(Class<T> service, URL url, ExchangeClient[] clients) {
-        this(service, url, clients, null);
-    }
-
-    public ThriftInvoker(Class<T> type, URL url, ExchangeClient[] clients, Set<Invoker<?>> invokers) {
-        super(type, url,
-                new String[]{Constants.INTERFACE_KEY, Constants.GROUP_KEY,
-                        Constants.TOKEN_KEY, Constants.TIMEOUT_KEY});
-        this.clients = clients;
-        this.invokers = invokers;
-    }
-
-    @Override
-    protected Result doInvoke(Invocation invocation) throws Throwable {
-
-        RpcInvocation inv = (RpcInvocation) invocation;
-
-        final String methodName;
-
-        methodName = invocation.getMethodName();
-
-        inv.setAttachment(Constants.PATH_KEY, getUrl().getPath());
-
-        // for thrift codec
-        inv.setAttachment(ThriftCodec.PARAMETER_CLASS_NAME_GENERATOR, getUrl().getParameter(
-                ThriftCodec.PARAMETER_CLASS_NAME_GENERATOR, DubboClassNameGenerator.NAME));
-
-        ExchangeClient currentClient;
-
-        if (clients.length == 1) {
-            currentClient = clients[0];
-        } else {
-            currentClient = clients[index.getAndIncrement() % clients.length];
-        }
-
-        try {
-            int timeout = getUrl().getMethodParameter(
-                    methodName, Constants.TIMEOUT_KEY, Constants.DEFAULT_TIMEOUT);
-
-            RpcContext.getContext().setFuture(null);
-
-            return (Result) currentClient.request(inv, timeout).get();
-
-        } catch (TimeoutException e) {
-            throw new RpcException(RpcException.TIMEOUT_EXCEPTION, e.getMessage(), e);
-        } catch (RemotingException e) {
-            throw new RpcException(RpcException.NETWORK_EXCEPTION, e.getMessage(), e);
-        }
-
-    }
-
-    @Override
-    public boolean isAvailable() {
-
-        if (!super.isAvailable()) {
-            return false;
-        }
-
-        for (ExchangeClient client : clients) {
-            if (client.isConnected()
-                    && !client.hasAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY)) {
-                //cannot write == not Available ?
-                return true;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public void destroy() {
-        // in order to avoid closing a client multiple times, a counter is used in case of connection per jvm, every
-        // time when client.close() is called, counter counts down once, and when counter reaches zero, client will be
-        // closed.
-        if (super.isDestroyed()) {
-            return;
-        } else {
-            // double check to avoid dup close
-            destroyLock.lock();
-
-            try {
-
-                if (super.isDestroyed()) {
-                    return;
-                }
-
-                super.destroy();
-
-                if (invokers != null) {
-                    invokers.remove(this);
-                }
-
-                for (ExchangeClient client : clients) {
-
-                    try {
-                        client.close();
-                    } catch (Throwable t) {
-                        logger.warn(t.getMessage(), t);
-                    }
-
-                }
-
-            } finally {
-                destroyLock.unlock();
-            }
-
-        }
-
-    }
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftNativeCodec.java b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftNativeCodec.java
deleted file mode 100644
index e7e036aac3..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftNativeCodec.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * 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 org.apache.dubbo.rpc.protocol.thrift;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.remoting.Channel;
-import org.apache.dubbo.remoting.Codec2;
-import org.apache.dubbo.remoting.buffer.ChannelBuffer;
-import org.apache.dubbo.remoting.buffer.ChannelBufferOutputStream;
-import org.apache.dubbo.remoting.exchange.Request;
-import org.apache.dubbo.remoting.exchange.Response;
-import org.apache.dubbo.rpc.Invocation;
-
-import org.apache.thrift.TException;
-import org.apache.thrift.protocol.TBinaryProtocol;
-import org.apache.thrift.protocol.TMessage;
-import org.apache.thrift.protocol.TMessageType;
-import org.apache.thrift.protocol.TProtocol;
-import org.apache.thrift.protocol.TStruct;
-import org.apache.thrift.transport.TIOStreamTransport;
-
-import java.io.IOException;
-import java.util.concurrent.atomic.AtomicInteger;
-/**
- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead
- */
-@Deprecated
-public class ThriftNativeCodec implements Codec2 {
-
-    private final AtomicInteger thriftSeq = new AtomicInteger(0);
-
-    protected static TProtocol newProtocol(URL url, ChannelBuffer buffer) throws IOException {
-        String protocol = url.getParameter(ThriftConstants.THRIFT_PROTOCOL_KEY,
-                ThriftConstants.DEFAULT_PROTOCOL);
-        if (ThriftConstants.BINARY_THRIFT_PROTOCOL.equals(protocol)) {
-            return new TBinaryProtocol(new TIOStreamTransport(new ChannelBufferOutputStream(buffer)));
-        }
-        throw new IOException("Unsupported protocol type " + protocol);
-    }
-
-    @Override
-    public void encode(Channel channel, ChannelBuffer buffer, Object message)
-            throws IOException {
-        if (message instanceof Request) {
-            encodeRequest(channel, buffer, (Request) message);
-        } else if (message instanceof Response) {
-            encodeResponse(channel, buffer, (Response) message);
-        } else {
-            throw new IOException("Unsupported message type "
-                    + message.getClass().getName());
-        }
-    }
-
-    protected void encodeRequest(Channel channel, ChannelBuffer buffer, Request request)
-            throws IOException {
-        Invocation invocation = (Invocation) request.getData();
-        TProtocol protocol = newProtocol(channel.getUrl(), buffer);
-        try {
-            protocol.writeMessageBegin(new TMessage(
-                    invocation.getMethodName(), TMessageType.CALL,
-                    thriftSeq.getAndIncrement()));
-            protocol.writeStructBegin(new TStruct(invocation.getMethodName() + "_args"));
-            for (int i = 0; i < invocation.getParameterTypes().length; i++) {
-                Class<?> type = invocation.getParameterTypes()[i];
-
-            }
-        } catch (TException e) {
-            throw new IOException(e.getMessage(), e);
-        }
-
-    }
-
-    protected void encodeResponse(Channel channel, ChannelBuffer buffer, Response response)
-            throws IOException {
-
-    }
-
-    @Override
-    public Object decode(Channel channel, ChannelBuffer buffer) throws IOException {
-        return null;
-    }
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftProtocol.java b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftProtocol.java
deleted file mode 100644
index 1c50bdf592..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftProtocol.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * 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 org.apache.dubbo.rpc.protocol.thrift;
-
-import org.apache.dubbo.common.Constants;
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.ExtensionLoader;
-import org.apache.dubbo.common.utils.ConfigUtils;
-import org.apache.dubbo.remoting.Channel;
-import org.apache.dubbo.remoting.RemotingException;
-import org.apache.dubbo.remoting.Transporter;
-import org.apache.dubbo.remoting.exchange.ExchangeChannel;
-import org.apache.dubbo.remoting.exchange.ExchangeClient;
-import org.apache.dubbo.remoting.exchange.ExchangeHandler;
-import org.apache.dubbo.remoting.exchange.ExchangeServer;
-import org.apache.dubbo.remoting.exchange.Exchangers;
-import org.apache.dubbo.remoting.exchange.support.ExchangeHandlerAdapter;
-import org.apache.dubbo.rpc.Exporter;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.RpcContext;
-import org.apache.dubbo.rpc.RpcException;
-import org.apache.dubbo.rpc.protocol.AbstractProtocol;
-import org.apache.dubbo.rpc.protocol.dubbo.DubboExporter;
-
-import java.util.ArrayList;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-/**
- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead
- */
-@Deprecated
-public class ThriftProtocol extends AbstractProtocol {
-
-    public static final int DEFAULT_PORT = 40880;
-
-    public static final String NAME = "thrift";
-
-    // ip:port -> ExchangeServer
-    private final ConcurrentMap<String, ExchangeServer> serverMap =
-            new ConcurrentHashMap<String, ExchangeServer>();
-
-    private ExchangeHandler handler = new ExchangeHandlerAdapter() {
-
-        @Override
-        public CompletableFuture<Object> reply(ExchangeChannel channel, Object msg) throws RemotingException {
-
-            if (msg instanceof Invocation) {
-                Invocation inv = (Invocation) msg;
-                String serviceName = inv.getAttachments().get(Constants.INTERFACE_KEY);
-                String serviceKey = serviceKey(channel.getLocalAddress().getPort(),
-                        serviceName, null, null);
-                DubboExporter<?> exporter = (DubboExporter<?>) exporterMap.get(serviceKey);
-                if (exporter == null) {
-                    throw new RemotingException(channel,
-                            "Not found exported service: "
-                                    + serviceKey
-                                    + " in "
-                                    + exporterMap.keySet()
-                                    + ", may be version or group mismatch "
-                                    + ", channel: consumer: "
-                                    + channel.getRemoteAddress()
-                                    + " --> provider: "
-                                    + channel.getLocalAddress()
-                                    + ", message:" + msg);
-                }
-
-                RpcContext.getContext().setRemoteAddress(channel.getRemoteAddress());
-
-                return CompletableFuture.completedFuture(exporter.getInvoker().invoke(inv));
-
-            }
-
-            throw new RemotingException(channel,
-                    "Unsupported request: "
-                            + (msg.getClass().getName() + ": " + msg)
-                            + ", channel: consumer: "
-                            + channel.getRemoteAddress()
-                            + " --> provider: "
-                            + channel.getLocalAddress());
-        }
-
-        @Override
-        public void received(Channel channel, Object message) throws RemotingException {
-            if (message instanceof Invocation) {
-                reply((ExchangeChannel) channel, message);
-            } else {
-                super.received(channel, message);
-            }
-        }
-
-    };
-
-    @Override
-    public int getDefaultPort() {
-        return DEFAULT_PORT;
-    }
-
-    @Override
-    public <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {
-
-        // can use thrift codec only
-        URL url = invoker.getUrl().addParameter(Constants.CODEC_KEY, ThriftCodec.NAME);
-        // find server.
-        String key = url.getAddress();
-        // client can expose a service for server to invoke only.
-        boolean isServer = url.getParameter(Constants.IS_SERVER_KEY, true);
-        if (isServer && !serverMap.containsKey(key)) {
-            serverMap.put(key, getServer(url));
-        }
-        // export service.
-        key = serviceKey(url);
-        DubboExporter<T> exporter = new DubboExporter<T>(invoker, key, exporterMap);
-        exporterMap.put(key, exporter);
-
-        return exporter;
-    }
-
-    @Override
-    public void destroy() {
-
-        super.destroy();
-
-        for (String key : new ArrayList<String>(serverMap.keySet())) {
-
-            ExchangeServer server = serverMap.remove(key);
-
-            if (server != null) {
-                try {
-                    if (logger.isInfoEnabled()) {
-                        logger.info("Close dubbo server: " + server.getLocalAddress());
-                    }
-                    server.close(ConfigUtils.getServerShutdownTimeout());
-                } catch (Throwable t) {
-                    logger.warn(t.getMessage(), t);
-                }
-            } // ~ end of if ( server != null )
-
-        } // ~ end of loop serverMap
-
-    } // ~ end of method destroy
-
-    @Override
-    public <T> Invoker<T> refer(Class<T> type, URL url) throws RpcException {
-
-        ThriftInvoker<T> invoker = new ThriftInvoker<T>(type, url, getClients(url), invokers);
-
-        invokers.add(invoker);
-
-        return invoker;
-
-    }
-
-    private ExchangeClient[] getClients(URL url) {
-
-        int connections = url.getParameter(Constants.CONNECTIONS_KEY, 1);
-
-        ExchangeClient[] clients = new ExchangeClient[connections];
-
-        for (int i = 0; i < clients.length; i++) {
-            clients[i] = initClient(url);
-        }
-        return clients;
-    }
-
-    private ExchangeClient initClient(URL url) {
-
-        ExchangeClient client;
-
-        url = url.addParameter(Constants.CODEC_KEY, ThriftCodec.NAME);
-
-        try {
-            client = Exchangers.connect(url);
-        } catch (RemotingException e) {
-            throw new RpcException("Fail to create remoting client for service(" + url
-                    + "): " + e.getMessage(), e);
-        }
-
-        return client;
-
-    }
-
-    private ExchangeServer getServer(URL url) {
-        // enable sending readonly event when server closes by default
-        url = url.addParameterIfAbsent(Constants.CHANNEL_READONLYEVENT_SENT_KEY, Boolean.TRUE.toString());
-        String str = url.getParameter(Constants.SERVER_KEY, Constants.DEFAULT_REMOTING_SERVER);
-
-        if (str != null && str.length() > 0 && !ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(str))
-            throw new RpcException("Unsupported server type: " + str + ", url: " + url);
-
-        ExchangeServer server;
-        try {
-            server = Exchangers.bind(url, handler);
-        } catch (RemotingException e) {
-            throw new RpcException("Fail to start server(url: " + url + ") " + e.getMessage(), e);
-        }
-        str = url.getParameter(Constants.CLIENT_KEY);
-        if (str != null && str.length() > 0) {
-            Set<String> supportedTypes = ExtensionLoader.getExtensionLoader(Transporter.class).getSupportedExtensions();
-            if (!supportedTypes.contains(str)) {
-                throw new RpcException("Unsupported client type: " + str);
-            }
-        }
-        return server;
-    }
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftType.java b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftType.java
deleted file mode 100644
index 3d8d3b387c..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftType.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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 org.apache.dubbo.rpc.protocol.thrift;
-
-import java.util.HashMap;
-import java.util.Map;
-/**
- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead
- */
-@Deprecated
-public enum ThriftType {
-
-    BOOL, BYTE, I16, I32, I64, DOUBLE, STRING;
-
-    private static final Map<Class<?>, ThriftType> types =
-            new HashMap<Class<?>, ThriftType>();
-
-    static {
-        put(boolean.class, BOOL);
-        put(Boolean.class, BOOL);
-        put(byte.class, BYTE);
-        put(Byte.class, BYTE);
-        put(short.class, I16);
-    }
-
-    public static ThriftType get(Class<?> key) {
-        if (key != null) {
-            return types.get(key);
-        }
-        throw new NullPointerException("key == null");
-    }
-
-    private static void put(Class<?> key, ThriftType value) {
-        types.put(key, value);
-    }
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftUtils.java b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftUtils.java
deleted file mode 100644
index da4408b90b..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ThriftUtils.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * 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 org.apache.dubbo.rpc.protocol.thrift;
-/**
- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead
- */
-@Deprecated
-public class ThriftUtils {
-
-    /**
-     * Generate class name which represents service arguments.
-     *
-     * @param serviceName service name
-     * @param methodName method name
-     * @return method args class name or null
-     */
-    public static String generateMethodArgsClassName(String serviceName, String methodName) {
-
-        int index = serviceName.lastIndexOf(".");
-
-        if (index > 0) {
-
-            return new StringBuilder(32)
-                    .append(serviceName.substring(0, index + 1))
-                    .append("$__")
-                    .append(serviceName.substring(index + 1))
-                    .append("Stub$")
-                    .append(methodName)
-                    .append("_args")
-                    .toString();
-
-        } else {
-            return new StringBuffer(32)
-                    .append("$__")
-                    .append(serviceName)
-                    .append("Stub$")
-                    .append(methodName)
-                    .append("_args")
-                    .toString();
-        }
-
-    }
-
-    public static String generateMethodResultClassName(String serviceName, String method) {
-
-        int index = serviceName.lastIndexOf(".");
-
-        if (index > 0) {
-
-            return new StringBuilder(32)
-                    .append(serviceName.substring(0, index + 1))
-                    .append("$__")
-                    .append(serviceName.substring(index + 1))
-                    .append("Stub$")
-                    .append(method)
-                    .append("_result")
-                    .toString();
-
-        } else {
-            return new StringBuilder(32)
-                    .append("$__")
-                    .append(serviceName)
-                    .append("Stub$")
-                    .append(method)
-                    .append("_result")
-                    .toString();
-        }
-
-    }
-
-    public static String generateSetMethodName(String fieldName) {
-
-        return new StringBuilder(16)
-                .append("set")
-                .append(Character.toUpperCase(fieldName.charAt(0)))
-                .append(fieldName.substring(1))
-                .toString();
-
-    }
-
-    public static String generateGetMethodName(String fieldName) {
-        return new StringBuffer(16)
-                .append("get")
-                .append(Character.toUpperCase(fieldName.charAt(0)))
-                .append(fieldName.substring(1))
-                .toString();
-    }
-
-    public static String generateMethodArgsClassNameThrift(String serviceName, String methodName) {
-
-        int index = serviceName.indexOf("$");
-
-        if (index > 0) {
-            return new StringBuilder(32)
-                    .append(serviceName.substring(0, index + 1))
-                    .append(methodName)
-                    .append("_args")
-                    .toString();
-        }
-
-        return null;
-
-    }
-
-    public static String generateMethodResultClassNameThrift(String serviceName, String methodName) {
-
-        int index = serviceName.indexOf("$");
-
-        if (index > 0) {
-            return new StringBuilder(32)
-                    .append(serviceName.substring(0, index + 1))
-                    .append(methodName)
-                    .append("_result")
-                    .toString();
-        }
-
-        return null;
-
-    }
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ext/MultiServiceProcessor.java b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ext/MultiServiceProcessor.java
deleted file mode 100644
index e80efa4eb4..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/ext/MultiServiceProcessor.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * 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 org.apache.dubbo.rpc.protocol.thrift.ext;
-
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.rpc.protocol.thrift.ThriftCodec;
-
-import org.apache.thrift.TException;
-import org.apache.thrift.TProcessor;
-import org.apache.thrift.protocol.TBinaryProtocol;
-import org.apache.thrift.protocol.TProtocol;
-import org.apache.thrift.protocol.TProtocolFactory;
-import org.apache.thrift.transport.TIOStreamTransport;
-
-import java.io.ByteArrayOutputStream;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift to instead of this module
- */
-@Deprecated
-public class MultiServiceProcessor implements TProcessor {
-
-    private static final Logger logger = LoggerFactory.getLogger(MultiServiceProcessor.class);
-
-    private ConcurrentMap<String, TProcessor> processorMap = new ConcurrentHashMap<String, TProcessor>();
-
-    private TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();
-
-    public MultiServiceProcessor() {
-    }
-
-    @Override
-    public boolean process(TProtocol in, TProtocol out) throws TException {
-
-        short magic = in.readI16();
-
-        if (magic != ThriftCodec.MAGIC) {
-            logger.error("Unsupported magic " + magic);
-            return false;
-        }
-
-        in.readI32();
-        in.readI16();
-        byte version = in.readByte();
-        String serviceName = in.readString();
-        long id = in.readI64();
-
-        ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
-
-        TIOStreamTransport transport = new TIOStreamTransport(bos);
-
-        TProtocol protocol = protocolFactory.getProtocol(transport);
-
-        TProcessor processor = processorMap.get(serviceName);
-
-        if (processor == null) {
-            logger.error("Could not find processor for service " + serviceName);
-            return false;
-        }
-
-        // todo if exception
-        boolean result = processor.process(in, protocol);
-
-        ByteArrayOutputStream header = new ByteArrayOutputStream(512);
-
-        TIOStreamTransport headerTransport = new TIOStreamTransport(header);
-
-        TProtocol headerProtocol = protocolFactory.getProtocol(headerTransport);
-
-        headerProtocol.writeI16(magic);
-        headerProtocol.writeI32(Integer.MAX_VALUE);
-        headerProtocol.writeI16(Short.MAX_VALUE);
-        headerProtocol.writeByte(version);
-        headerProtocol.writeString(serviceName);
-        headerProtocol.writeI64(id);
-        headerProtocol.getTransport().flush();
-
-        out.writeI16(magic);
-        out.writeI32(bos.size() + header.size());
-        out.writeI16((short) (0xffff & header.size()));
-        out.writeByte(version);
-        out.writeString(serviceName);
-        out.writeI64(id);
-
-        out.getTransport().write(bos.toByteArray());
-        out.getTransport().flush();
-
-        return result;
-
-    }
-
-    public TProcessor addProcessor(Class service, TProcessor processor) {
-        if (service != null && processor != null) {
-            return processorMap.putIfAbsent(service.getName(), processor);
-        }
-        return processor;
-    }
-
-    public void setProtocolFactory(TProtocolFactory factory) {
-        if (factory != null) {
-            this.protocolFactory = factory;
-        }
-    }
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/io/InputStreamWrapper.java b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/io/InputStreamWrapper.java
deleted file mode 100644
index c1eb69dde7..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/io/InputStreamWrapper.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * 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 org.apache.dubbo.rpc.protocol.thrift.io;
-
-import java.io.IOException;
-import java.io.InputStream;
-@Deprecated
-public class InputStreamWrapper extends InputStream {
-
-    private InputStream is;
-
-    public InputStreamWrapper(InputStream is) {
-        if (is == null) {
-            throw new NullPointerException("is == null");
-        }
-        this.is = is;
-    }
-
-    @Override
-    public int read(byte[] b) throws IOException {
-        if (is.available() >= b.length) {
-            return is.read(b);
-        } else {
-            return -1;
-        }
-    }
-
-    @Override
-    public int read(byte[] b, int off, int len) throws IOException {
-        if (is.available() >= len) {
-            return is.read(b, off, len);
-        } else {
-            return -1;
-        }
-    }
-
-    @Override
-    public long skip(long n) throws IOException {
-        return is.skip(n);
-    }
-
-    @Override
-    public int available() throws IOException {
-        return is.available();
-    }
-
-    @Override
-    public void close() throws IOException {
-        is.close();
-    }
-
-    @Override
-    public void mark(int readlimit) {
-        is.mark(readlimit);
-    }
-
-    @Override
-    public void reset() throws IOException {
-        is.reset();
-    }
-
-    @Override
-    public boolean markSupported() {
-        return is.markSupported();
-    }
-
-    @Override
-    public int read() throws IOException {
-        if (is.available() >= 1) {
-            return is.read();
-        }
-        return -1;
-    }
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/io/RandomAccessByteArrayOutputStream.java b/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/io/RandomAccessByteArrayOutputStream.java
deleted file mode 100644
index bfdd8c0cd8..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/java/org/apache/dubbo/rpc/protocol/thrift/io/RandomAccessByteArrayOutputStream.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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 org.apache.dubbo.rpc.protocol.thrift.io;
-
-import org.apache.dubbo.common.io.Bytes;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.nio.ByteBuffer;
-@Deprecated
-public class RandomAccessByteArrayOutputStream extends OutputStream {
-
-    protected byte buffer[];
-
-    protected int count;
-
-    public RandomAccessByteArrayOutputStream() {
-
-        this(32);
-    }
-
-    public RandomAccessByteArrayOutputStream(int size) {
-
-        if (size < 0)
-            throw new IllegalArgumentException("Negative initial size: " + size);
-        buffer = new byte[size];
-    }
-
-    @Override
-    public void write(int b) {
-
-        int newcount = count + 1;
-        if (newcount > buffer.length)
-            buffer = Bytes.copyOf(buffer, Math.max(buffer.length << 1, newcount));
-        buffer[count] = (byte) b;
-        count = newcount;
-    }
-
-    @Override
-    public void write(byte b[], int off, int len) {
-
-        if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0))
-            throw new IndexOutOfBoundsException();
-        if (len == 0)
-            return;
-        int newcount = count + len;
-        if (newcount > buffer.length)
-            buffer = Bytes.copyOf(buffer, Math.max(buffer.length << 1, newcount));
-        System.arraycopy(b, off, buffer, count, len);
-        count = newcount;
-    }
-
-    public int size() {
-
-        return count;
-    }
-
-    public void setWriteIndex(int index) {
-        count = index;
-    }
-
-    public void reset() {
-
-        count = 0;
-    }
-
-    public byte[] toByteArray() {
-
-        return Bytes.copyOf(buffer, count);
-    }
-
-    public ByteBuffer toByteBuffer() {
-
-        return ByteBuffer.wrap(buffer, 0, count);
-    }
-
-    public void writeTo(OutputStream out) throws IOException {
-
-        out.write(buffer, 0, count);
-    }
-
-    @Override
-    public String toString() {
-
-        return new String(buffer, 0, count);
-    }
-
-    public String toString(String charset) throws UnsupportedEncodingException {
-
-        return new String(buffer, 0, count, charset);
-    }
-
-    @Override
-    public void close() throws IOException {
-    }
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.Codec2 b/dubbo-rpc/dubbo-rpc-thrift/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.Codec2
deleted file mode 100644
index 600662d572..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.Codec2
+++ /dev/null
@@ -1 +0,0 @@
-thrift=org.apache.dubbo.rpc.protocol.thrift.ThriftCodec
\ No newline at end of file
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol b/dubbo-rpc/dubbo-rpc-thrift/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol
deleted file mode 100644
index 3800f4cb9d..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol
+++ /dev/null
@@ -1 +0,0 @@
-thrift=org.apache.dubbo.rpc.protocol.thrift.ThriftProtocol
\ No newline at end of file
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.thrift.ClassNameGenerator b/dubbo-rpc/dubbo-rpc-thrift/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.thrift.ClassNameGenerator
deleted file mode 100644
index 18d912ec26..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.thrift.ClassNameGenerator
+++ /dev/null
@@ -1,2 +0,0 @@
-dubbo=org.apache.dubbo.rpc.protocol.thrift.DubboClassNameGenerator
-thrift=org.apache.dubbo.rpc.protocol.thrift.ThriftClassNameGenerator
\ No newline at end of file
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/test/java/$__ClassNameTestDubboStub.java b/dubbo-rpc/dubbo-rpc-thrift/src/test/java/$__ClassNameTestDubboStub.java
deleted file mode 100644
index a60c7b60a1..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/test/java/$__ClassNameTestDubboStub.java
+++ /dev/null
@@ -1,676 +0,0 @@
-/*
- * 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.
- */
-/*
- * Autogenerated by Dubbo Compiler (0.1.0)
- * <p>
- * Thrift (0.7.0)
- * <p>
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- */
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Collections;
-import java.util.EnumMap;
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
-
-public class $__ClassNameTestDubboStub {
-
-    public interface Iface {
-
-        public String echo(String arg);
-
-    }
-
-    public static class Processor<I extends Iface> extends org.apache.thrift.TBaseProcessor implements org.apache.thrift.TProcessor {
-        private static final Logger LOGGER = LoggerFactory.getLogger(Processor.class.getName());
-
-        public Processor(I iface) {
-            super(iface, getProcessMap(new HashMap<String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>>()));
-        }
-
-        protected Processor(I iface, Map<String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>> processMap) {
-            super(iface, getProcessMap(processMap));
-        }
-
-        private static <I extends Iface> Map<String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>> getProcessMap(Map<String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>> processMap) {
-            processMap.put("echo", new echo());
-            return processMap;
-        }
-
-        private static class echo<I extends Iface> extends org.apache.thrift.ProcessFunction<I, echo_args> {
-            public echo() {
-                super("echo");
-            }
-
-            protected echo_args getEmptyArgsInstance() {
-                return new echo_args();
-            }
-
-            protected echo_result getResult(I iface, echo_args args) throws org.apache.thrift.TException {
-                echo_result result = new echo_result();
-                result.success = iface.echo(args.arg);
-                return result;
-            }
-        }
-
-    }
-
-    public static class echo_args implements org.apache.thrift.TBase<echo_args, echo_args._Fields>, java.io.Serializable, Cloneable {
-        public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
-        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("echo_args");
-        private static final org.apache.thrift.protocol.TField ARG_FIELD_DESC = new org.apache.thrift.protocol.TField("arg", org.apache.thrift.protocol.TType.STRING, (short) 1);
-
-        static {
-            Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
-            tmpMap.put(_Fields.ARG, new org.apache.thrift.meta_data.FieldMetaData("arg", org.apache.thrift.TFieldRequirementType.REQUIRED,
-                    new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-            metaDataMap = Collections.unmodifiableMap(tmpMap);
-            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(echo_args.class, metaDataMap);
-        }
-
-        // isset id assignments
-
-        public String arg; // required
-
-        public echo_args() {
-        }
-
-        public echo_args(
-                String arg) {
-            this();
-            this.arg = arg;
-        }
-
-        /**
-         * Performs a deep copy on <i>other</i>.
-         */
-        public echo_args(echo_args other) {
-            if (other.isSetArg()) {
-                this.arg = other.arg;
-            }
-        }
-
-        public echo_args deepCopy() {
-            return new echo_args(this);
-        }
-
-        public void clear() {
-            this.arg = null;
-        }
-
-        public String getArg() {
-            return this.arg;
-        }
-
-        public echo_args setArg(String arg) {
-            this.arg = arg;
-            return this;
-        }
-
-        public void unsetArg() {
-            this.arg = null;
-        }
-
-        /**
-         * Returns true if field arg is set (has been assigned a value) and false otherwise
-         */
-        public boolean isSetArg() {
-            return this.arg != null;
-        }
-
-        public void setArgIsSet(boolean value) {
-            if (!value) {
-                this.arg = null;
-            }
-        }
-
-        public void setFieldValue(_Fields field, Object value) {
-            switch (field) {
-                case ARG:
-                    if (value == null) {
-                        unsetArg();
-                    } else {
-                        setArg((String) value);
-                    }
-                    break;
-
-            }
-        }
-
-        public Object getFieldValue(_Fields field) {
-            switch (field) {
-                case ARG:
-                    return getArg();
-
-            }
-            throw new IllegalStateException();
-        }
-
-        /**
-         * Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise
-         */
-        public boolean isSet(_Fields field) {
-            if (field == null) {
-                throw new IllegalArgumentException();
-            }
-
-            switch (field) {
-                case ARG:
-                    return isSetArg();
-            }
-            throw new IllegalStateException();
-        }
-
-        @Override
-        public boolean equals(Object that) {
-            if (that == null)
-                return false;
-            if (that instanceof echo_args)
-                return this.equals((echo_args) that);
-            return false;
-        }
-
-        public boolean equals(echo_args that) {
-            if (that == null)
-                return false;
-
-            boolean this_present_arg = true && this.isSetArg();
-            boolean that_present_arg = true && that.isSetArg();
-            if (this_present_arg || that_present_arg) {
-                if (!(this_present_arg && that_present_arg))
-                    return false;
-                if (!this.arg.equals(that.arg))
-                    return false;
-            }
-
-            return true;
-        }
-
-        @Override
-        public int hashCode() {
-            return 0;
-        }
-
-        public int compareTo(echo_args other) {
-            if (!getClass().equals(other.getClass())) {
-                return getClass().getName().compareTo(other.getClass().getName());
-            }
-
-            int lastComparison = 0;
-            echo_args typedOther = (echo_args) other;
-
-            lastComparison = Boolean.valueOf(isSetArg()).compareTo(typedOther.isSetArg());
-            if (lastComparison != 0) {
-                return lastComparison;
-            }
-            if (isSetArg()) {
-                lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.arg, typedOther.arg);
-                if (lastComparison != 0) {
-                    return lastComparison;
-                }
-            }
-            return 0;
-        }
-
-        public _Fields fieldForId(int fieldId) {
-            return _Fields.findByThriftId(fieldId);
-        }
-
-        public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-            org.apache.thrift.protocol.TField field;
-            iprot.readStructBegin();
-            while (true) {
-                field = iprot.readFieldBegin();
-                if (field.type == org.apache.thrift.protocol.TType.STOP) {
-                    break;
-                }
-                switch (field.id) {
-                    case 1: // ARG
-                        if (field.type == org.apache.thrift.protocol.TType.STRING) {
-                            this.arg = iprot.readString();
-                        } else {
-                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
-                        }
-                        break;
-                    default:
-                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
-                }
-                iprot.readFieldEnd();
-            }
-            iprot.readStructEnd();
-
-            // check for required fields of primitive type, which can't be checked in the validate method
-            validate();
-        }
-
-        public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-            validate();
-
-            oprot.writeStructBegin(STRUCT_DESC);
-            if (this.arg != null) {
-                oprot.writeFieldBegin(ARG_FIELD_DESC);
-                oprot.writeString(this.arg);
-                oprot.writeFieldEnd();
-            }
-            oprot.writeFieldStop();
-            oprot.writeStructEnd();
-        }
-
-        @Override
-        public String toString() {
-            StringBuilder sb = new StringBuilder("echo_args(");
-            boolean first = true;
-
-            sb.append("arg:");
-            if (this.arg == null) {
-                sb.append("null");
-            } else {
-                sb.append(this.arg);
-            }
-            first = false;
-            sb.append(")");
-            return sb.toString();
-        }
-
-        public void validate() throws org.apache.thrift.TException {
-            // check for required fields
-            if (arg == null) {
-                throw new org.apache.thrift.protocol.TProtocolException("Required field 'arg' was not present! Struct: " + toString());
-            }
-        }
-
-        private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
-            try {
-                write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
-            } catch (org.apache.thrift.TException te) {
-                throw new java.io.IOException(te);
-            }
-        }
-
-        private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
-            try {
-                read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
-            } catch (org.apache.thrift.TException te) {
-                throw new java.io.IOException(te);
-            }
-        }
-
-        /**
-         * The set of fields this struct contains, along with convenience methods for finding and manipulating them.
-         */
-        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-            ARG((short) 1, "arg");
-
-            private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
-
-            static {
-                for (_Fields field : EnumSet.allOf(_Fields.class)) {
-                    byName.put(field.getFieldName(), field);
-                }
-            }
-
-            private final short _thriftId;
-            private final String _fieldName;
-
-            _Fields(short thriftId, String fieldName) {
-                _thriftId = thriftId;
-                _fieldName = fieldName;
-            }
-
-            /**
-             * Find the _Fields constant that matches fieldId, or null if its not found.
-             */
-            public static _Fields findByThriftId(int fieldId) {
-                switch (fieldId) {
-                    case 1: // ARG
-                        return ARG;
-                    default:
-                        return null;
-                }
-            }
-
-            /**
-             * Find the _Fields constant that matches fieldId, throwing an exception
-             * if it is not found.
-             */
-            public static _Fields findByThriftIdOrThrow(int fieldId) {
-                _Fields fields = findByThriftId(fieldId);
-                if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
-                return fields;
-            }
-
-            /**
-             * Find the _Fields constant that matches name, or null if its not found.
-             */
-            public static _Fields findByName(String name) {
-                return byName.get(name);
-            }
-
-            public short getThriftFieldId() {
-                return _thriftId;
-            }
-
-            public String getFieldName() {
-                return _fieldName;
-            }
-        }
-
-    }
-
-    public static class echo_result implements org.apache.thrift.TBase<echo_result, echo_result._Fields>, java.io.Serializable, Cloneable {
-        public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
-        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("echo_result");
-        private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRING, (short) 0);
-
-        static {
-            Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
-            tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT,
-                    new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-            metaDataMap = Collections.unmodifiableMap(tmpMap);
-            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(echo_result.class, metaDataMap);
-        }
-
-        // isset id assignments
-
-        public String success; // required
-
-        public echo_result() {
-        }
-
-        public echo_result(
-                String success) {
-            this();
-            this.success = success;
-        }
-
-        /**
-         * Performs a deep copy on <i>other</i>.
-         */
-        public echo_result(echo_result other) {
-            if (other.isSetSuccess()) {
-                this.success = other.success;
-            }
-        }
-
-        public echo_result deepCopy() {
-            return new echo_result(this);
-        }
-
-        public void clear() {
-            this.success = null;
-        }
-
-        public String getSuccess() {
-            return this.success;
-        }
-
-        public echo_result setSuccess(String success) {
-            this.success = success;
-            return this;
-        }
-
-        public void unsetSuccess() {
-            this.success = null;
-        }
-
-        /**
-         * Returns true if field success is set (has been assigned a value) and false otherwise
-         */
-        public boolean isSetSuccess() {
-            return this.success != null;
-        }
-
-        public void setSuccessIsSet(boolean value) {
-            if (!value) {
-                this.success = null;
-            }
-        }
-
-        public void setFieldValue(_Fields field, Object value) {
-            switch (field) {
-                case SUCCESS:
-                    if (value == null) {
-                        unsetSuccess();
-                    } else {
-                        setSuccess((String) value);
-                    }
-                    break;
-
-            }
-        }
-
-        public Object getFieldValue(_Fields field) {
-            switch (field) {
-                case SUCCESS:
-                    return getSuccess();
-
-            }
-            throw new IllegalStateException();
-        }
-
-        /**
-         * Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise
-         */
-        public boolean isSet(_Fields field) {
-            if (field == null) {
-                throw new IllegalArgumentException();
-            }
-
-            switch (field) {
-                case SUCCESS:
-                    return isSetSuccess();
-            }
-            throw new IllegalStateException();
-        }
-
-        @Override
-        public boolean equals(Object that) {
-            if (that == null)
-                return false;
-            if (that instanceof echo_result)
-                return this.equals((echo_result) that);
-            return false;
-        }
-
-        public boolean equals(echo_result that) {
-            if (that == null)
-                return false;
-
-            boolean this_present_success = true && this.isSetSuccess();
-            boolean that_present_success = true && that.isSetSuccess();
-            if (this_present_success || that_present_success) {
-                if (!(this_present_success && that_present_success))
-                    return false;
-                if (!this.success.equals(that.success))
-                    return false;
-            }
-
-            return true;
-        }
-
-        @Override
-        public int hashCode() {
-            return 0;
-        }
-
-        public int compareTo(echo_result other) {
-            if (!getClass().equals(other.getClass())) {
-                return getClass().getName().compareTo(other.getClass().getName());
-            }
-
-            int lastComparison = 0;
-            echo_result typedOther = (echo_result) other;
-
-            lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(typedOther.isSetSuccess());
-            if (lastComparison != 0) {
-                return lastComparison;
-            }
-            if (isSetSuccess()) {
-                lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, typedOther.success);
-                if (lastComparison != 0) {
-                    return lastComparison;
-                }
-            }
-            return 0;
-        }
-
-        public _Fields fieldForId(int fieldId) {
-            return _Fields.findByThriftId(fieldId);
-        }
-
-        public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-            org.apache.thrift.protocol.TField field;
-            iprot.readStructBegin();
-            while (true) {
-                field = iprot.readFieldBegin();
-                if (field.type == org.apache.thrift.protocol.TType.STOP) {
-                    break;
-                }
-                switch (field.id) {
-                    case 0: // SUCCESS
-                        if (field.type == org.apache.thrift.protocol.TType.STRING) {
-                            this.success = iprot.readString();
-                        } else {
-                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
-                        }
-                        break;
-                    default:
-                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
-                }
-                iprot.readFieldEnd();
-            }
-            iprot.readStructEnd();
-
-            // check for required fields of primitive type, which can't be checked in the validate method
-            validate();
-        }
-
-        public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-            oprot.writeStructBegin(STRUCT_DESC);
-
-            if (this.isSetSuccess()) {
-                oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
-                oprot.writeString(this.success);
-                oprot.writeFieldEnd();
-            }
-            oprot.writeFieldStop();
-            oprot.writeStructEnd();
-        }
-
-        @Override
-        public String toString() {
-            StringBuilder sb = new StringBuilder("echo_result(");
-            boolean first = true;
-
-            sb.append("success:");
-            if (this.success == null) {
-                sb.append("null");
-            } else {
-                sb.append(this.success);
-            }
-            first = false;
-            sb.append(")");
-            return sb.toString();
-        }
-
-        public void validate() throws org.apache.thrift.TException {
-            // check for required fields
-        }
-
-        private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
-            try {
-                write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
-            } catch (org.apache.thrift.TException te) {
-                throw new java.io.IOException(te);
-            }
-        }
-
-        private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
-            try {
-                read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
-            } catch (org.apache.thrift.TException te) {
-                throw new java.io.IOException(te);
-            }
-        }
-
-        /**
-         * The set of fields this struct contains, along with convenience methods for finding and manipulating them.
-         */
-        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-            SUCCESS((short) 0, "success");
-
-            private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
-
-            static {
-                for (_Fields field : EnumSet.allOf(_Fields.class)) {
-                    byName.put(field.getFieldName(), field);
-                }
-            }
-
-            private final short _thriftId;
-            private final String _fieldName;
-
-            _Fields(short thriftId, String fieldName) {
-                _thriftId = thriftId;
-                _fieldName = fieldName;
-            }
-
-            /**
-             * Find the _Fields constant that matches fieldId, or null if its not found.
-             */
-            public static _Fields findByThriftId(int fieldId) {
-                switch (fieldId) {
-                    case 0: // SUCCESS
-                        return SUCCESS;
-                    default:
-                        return null;
-                }
-            }
-
-            /**
-             * Find the _Fields constant that matches fieldId, throwing an exception
-             * if it is not found.
-             */
-            public static _Fields findByThriftIdOrThrow(int fieldId) {
-                _Fields fields = findByThriftId(fieldId);
-                if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
-                return fields;
-            }
-
-            /**
-             * Find the _Fields constant that matches name, or null if its not found.
-             */
-            public static _Fields findByName(String name) {
-                return byName.get(name);
-            }
-
-            public short getThriftFieldId() {
-                return _thriftId;
-            }
-
-            public String getFieldName() {
-                return _fieldName;
-            }
-        }
-
-    }
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/test/java/ClassNameTest.java b/dubbo-rpc/dubbo-rpc-thrift/src/test/java/ClassNameTest.java
deleted file mode 100644
index f383501e2c..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/test/java/ClassNameTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.
- */
-
-import org.apache.dubbo.rpc.protocol.thrift.ThriftUtils;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class ClassNameTest {
-
-    @Test
-    public void testThriftUtils() {
-
-        Assert.assertEquals($__ClassNameTestDubboStub.echo_args.class.getName(),
-                ThriftUtils.generateMethodArgsClassName(
-                        ClassNameTestDubbo.class.getName(), "echo"));
-
-        Assert.assertEquals($__ClassNameTestDubboStub.echo_result.class.getName(),
-                ThriftUtils.generateMethodResultClassName(
-                        ClassNameTestDubbo.class.getName(), "echo"));
-
-        Assert.assertEquals(ClassNameTestThrift.echo_args.class.getName(),
-                ThriftUtils.generateMethodArgsClassNameThrift(
-                        ClassNameTestThrift.Iface.class.getName(), "echo"));
-
-        Assert.assertEquals(ClassNameTestThrift.echo_result.class.getName(),
-                ThriftUtils.generateMethodResultClassNameThrift(
-                        ClassNameTestThrift.Iface.class.getName(), "echo"));
-
-    }
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/test/java/ClassNameTestDubbo.java b/dubbo-rpc/dubbo-rpc-thrift/src/test/java/ClassNameTestDubbo.java
deleted file mode 100644
index f0a203c0af..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/test/java/ClassNameTestDubbo.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.
- */
-/*
- * Autogenerated by Dubbo Compiler (0.1.0)
- * <p>
- * Thrift (0.7.0)
- * <p>
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- */
-
-public interface ClassNameTestDubbo {
-
-    public String echo(String arg);
-
-}
diff --git a/dubbo-rpc/dubbo-rpc-thrift/src/test/java/ClassNameTestThrift.java b/dubbo-rpc/dubbo-rpc-thrift/src/test/java/ClassNameTestThrift.java
deleted file mode 100644
index 51f04a20b5..0000000000
--- a/dubbo-rpc/dubbo-rpc-thrift/src/test/java/ClassNameTestThrift.java
+++ /dev/null
@@ -1,762 +0,0 @@
-/**
- * Autogenerated by Thrift Compiler (0.7.0)
- * <p>
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- */
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Collections;
-import java.util.EnumMap;
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
-
-public class ClassNameTestThrift {
-
-    public interface Iface {
-
-        public String echo(String arg) throws org.apache.thrift.TException;
-
-    }
-
-    public interface AsyncIface {
-
-        public void echo(String arg, org.apache.thrift.async.AsyncMethodCallback<AsyncClient.echo_call> resultHandler) throws org.apache.thrift.TException;
-
-    }
-
-    public static class Client extends org.apache.thrift.TServiceClient implements Iface {
-        public Client(org.apache.thrift.protocol.TProtocol prot) {
-            super(prot, prot);
-        }
-
-        public Client(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
-            super(iprot, oprot);
-        }
-
-        public String echo(String arg) throws org.apache.thrift.TException {
-            send_echo(arg);
-            return recv_echo();
-        }
-
-        public void send_echo(String arg) throws org.apache.thrift.TException {
-            echo_args args = new echo_args();
-            args.setArg(arg);
-            sendBase("echo", args);
-        }
-
-        public String recv_echo() throws org.apache.thrift.TException {
-            echo_result result = new echo_result();
-            receiveBase(result, "echo");
-            if (result.isSetSuccess()) {
-                return result.success;
-            }
-            throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "echo failed: unknown result");
-        }
-
-        public static class Factory implements org.apache.thrift.TServiceClientFactory<Client> {
-            public Factory() {
-            }
-
-            public Client getClient(org.apache.thrift.protocol.TProtocol prot) {
-                return new Client(prot);
-            }
-
-            public Client getClient(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
-                return new Client(iprot, oprot);
-            }
-        }
-
-    }
-
-    public static class AsyncClient extends org.apache.thrift.async.TAsyncClient implements AsyncIface {
-        public AsyncClient(org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.transport.TNonblockingTransport transport) {
-            super(protocolFactory, clientManager, transport);
-        }
-
-        public void echo(String arg, org.apache.thrift.async.AsyncMethodCallback<echo_call> resultHandler) throws org.apache.thrift.TException {
-            checkReady();
-            echo_call method_call = new echo_call(arg, resultHandler, this, ___protocolFactory, ___transport);
-            this.___currentMethod = method_call;
-            ___manager.call(method_call);
-        }
-
-        public static class Factory implements org.apache.thrift.async.TAsyncClientFactory<AsyncClient> {
-            private org.apache.thrift.async.TAsyncClientManager clientManager;
-            private org.apache.thrift.protocol.TProtocolFactory protocolFactory;
-
-            public Factory(org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.protocol.TProtocolFactory protocolFactory) {
-                this.clientManager = clientManager;
-                this.protocolFactory = protocolFactory;
-            }
-
-            public AsyncClient getAsyncClient(org.apache.thrift.transport.TNonblockingTransport transport) {
-                return new AsyncClient(protocolFactory, clientManager, transport);
-            }
-        }
-
-        public static class echo_call extends org.apache.thrift.async.TAsyncMethodCall {
-            private String arg;
-
-            public echo_call(String arg, org.apache.thrift.async.AsyncMethodCallback<echo_call> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
-                super(client, protocolFactory, transport, resultHandler, false);
-                this.arg = arg;
-            }
-
-            public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
-                prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("echo", org.apache.thrift.protocol.TMessageType.CALL, 0));
-                echo_args args = new echo_args();
-                args.setArg(arg);
-                args.write(prot);
-                prot.writeMessageEnd();
-            }
-
-            public String getResult() throws org.apache.thrift.TException {
-                if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
-                    throw new IllegalStateException("Method call not finished!");
-                }
-                org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
-                org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
-                return (new Client(prot)).recv_echo();
-            }
-        }
-
-    }
-
-    public static class Processor<I extends Iface> extends org.apache.thrift.TBaseProcessor implements org.apache.thrift.TProcessor {
-        private static final Logger LOGGER = LoggerFactory.getLogger(Processor.class.getName());
-
-        public Processor(I iface) {
-            super(iface, getProcessMap(new HashMap<String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>>()));
-        }
-
-        protected Processor(I iface, Map<String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>> processMap) {
-            super(iface, getProcessMap(processMap));
-        }
-
-        private static <I extends Iface> Map<String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>> getProcessMap(Map<String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>> processMap) {
-            processMap.put("echo", new echo());
-            return processMap;
-        }
-
-        private static class echo<I extends Iface> extends org.apache.thrift.ProcessFunction<I, echo_args> {
-            public echo() {
-                super("echo");
-            }
-
-            protected echo_args getEmptyArgsInstance() {
-                return new echo_args();
-            }
-
-            protected echo_result getResult(I iface, echo_args args) throws org.apache.thrift.TException {
-                echo_result result = new echo_result();
-                result.success = iface.echo(args.arg);
-                return result;
-            }
-        }
-
-    }
-
-    public static class echo_args implements org.apache.thrift.TBase<echo_args, echo_args._Fields>, java.io.Serializable, Cloneable {
-        public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
-        private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("echo_args");
-        private static final org.apache.thrift.protocol.TField ARG_FIELD_DESC = new org.apache.thrift.protocol.TField("arg", org.apache.thrift.protocol.TType.STRING, (short) 1);
-
-        static {
-            Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
-            tmpMap.put(_Fields.ARG, new org.apache.thrift.meta_data.FieldMetaData("arg", org.apache.thrift.TFieldRequirementType.REQUIRED,
-                    new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-            metaDataMap = Collections.unmodifiableMap(tmpMap);
-            org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(echo_args.class, metaDataMap);
-        }
-
-        // isset id assignments
-
-        public String arg; // required
-
-        public echo_args() {
-        }
-
-        public echo_args(
-                String arg) {
-            this();
-            this.arg = arg;
-        }
-
-        /**
-         * Performs a deep copy on <i>other</i>.
-         */
-        public echo_args(echo_args other) {
-            if (other.isSetArg()) {
-                this.arg = other.arg;
-            }
-        }
-
-        public echo_args deepCopy() {
-            return new echo_args(this);
-        }
-
-        public void clear() {
-            this.arg = null;
-        }
-
-        public String getArg() {
-            return this.arg;
-        }
-
-        public echo_args setArg(String arg) {
-            this.arg = arg;
-            return this;
-        }
-
-        public void unsetArg() {
-            this.arg = null;
-        }
-
-        /**
-         * Returns true if field arg is set (has been assigned a value) and false otherwise
-         */
-        public boolean isSetArg() {
-            return this.arg != null;
-        }
-
-        public void setArgIsSet(boolean value) {
-            if (!value) {
-                this.arg = null;
-            }
-        }
-
-        public void setFieldValue(_Fields field, Object value) {
-            switch (field) {
-                case ARG:
-                    if (value == null) {
-                        unsetArg();
-                    } else {
-                        setArg((String) value);
-                    }
-                    break;
-
-            }
-        }
-
-        public Object getFieldValue(_Fields field) {
-            switch (field) {
-                case ARG:
-                    return getArg();
-
-            }
-            throw new IllegalStateException();
-        }
-
-        /**
-         * Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise
-         */
-        public boolean isSet(_Fields field) {
-            if (field == null) {
-                throw new IllegalArgumentException();
-            }
-
-            switch (field) {
-                case ARG:
-                    return isSetArg();
-            }
-            throw new IllegalStateException();
-        }
-
-        @Override
-        public boolean equals(Object that) {
-            if (that == null)
-                return false;
-            if (that instanceof echo_args)
-                return this.equals((echo_args) that);
-            return false;
-        }
-
-        public boolean equals(echo_args that) {
-            if (that == null)
-                return false;
-
-            boolean this_present_arg = true && this.isSetArg();
-            boolean that_present_arg = true && that.isSetArg();
-            if (this_present_arg || that_present_arg) {
-                if (!(this_present_arg && that_present_arg))
-                    return false;
-                if (!this.arg.equals(that.arg))
-                    return false;
-            }
-
-            return true;
-        }
-
-        @Override
-        public int hashCode() {
-            return 0;
-        }
-
-        public int compareTo(echo_args other) {
-            if (!getClass().equals(other.getClass())) {
-                return getClass().getName().compareTo(other.getClass().getName());
-            }
-
-            int lastComparison = 0;
-            echo_args typedOther = (echo_args) other;
-
-            lastComparison = Boolean.valueOf(isSetArg()).compareTo(typedOther.isSetArg());
-            if (lastComparison != 0) {
-                return lastComparison;
-            }
-            if (isSetArg()) {
-                lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.arg, typedOther.arg);
-                if (lastComparison != 0) {
-                    return lastComparison;
-                }
-            }
-            return 0;
-        }
-
-        public _Fields fieldForId(int fieldId) {
-            return _Fields.findByThriftId(fieldId);
-        }
-
-        public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-            org.apache.thrift.protocol.TField field;
-            iprot.readStructBegin();
-            while (true) {
-                field = iprot.readFieldBegin();
-                if (field.type == org.apache.thrift.protocol.TType.STOP) {
-                    break;
-                }
-                switch (field.id) {
-                    case 1: // ARG
-                        if (field.type == org.apache.thrift.protocol.TType.STRING) {
-                            this.arg = iprot.readString();
-                        } else {
-                            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
-                        }
-                        break;
-                    default:
-                        org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
-                }
-                iprot.readFieldEnd();
-            }
-            iprot.readStructEnd();
-
-            // check for required fields of primitive type, which can't be checked in the validate method
-            validate();
-        }
-
-        public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-            validate();
-
-            oprot.writeStructBegin(STRUCT_DESC);
-            if (this.arg != null) {
-                oprot.writeFieldBegin(ARG_FIELD_DESC);
-                oprot.writeString(this.arg);
-                oprot.writeFieldEnd();
-            }
-            oprot.writeFieldStop();
-            oprot.writeStructEnd();
-        }
-
-        @Override
-        public String toString() {
-            StringBuilder sb = new StringBuilder("echo_args(");
-            boolean first = true;
-
-            sb.append("arg:");
-            if (this.arg == null) {
-                sb.append("null");
-            } else {
-                sb.append(this.arg);
-            }
-            first = false;
-            sb.append(")");
-            return sb.toString();
-        }
-
-        public void validate() throws org.apache.thrift.TException {
-            // check for required fields
-            if (arg == null) {
-                throw new org.apache.thrift.protocol.TProtocolException("Required field 'arg' was not present! Struct: " + toString());
-            }
-        }
-
-        private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
-            try {
-                write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
-            } catch (org.apache.thrift.TException te) {
-                throw new java.io.IOException(te);
-            }
-        }
-
-        private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
-            try {
-                read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
-            } catch (org.apache.thrift.TException te) {
-                throw new java.io.IOException(te);
-            }
-        }
-
-        /**
-         * The set of fields this struct contains, along with convenience methods for finding and manipulating them.
-         */
-        public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-            ARG((short) 1, "arg");
-
-            private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
-
-            static {
-                for (_Fields field : EnumSet.allOf(_Fields.class)) {
-                    byName.put(field.getFieldName(), field);
-                }
-            }
-
-            private final short _thriftId;
-            private final String _fieldName;
-
-            _Fields(short thriftId, String fieldName) {
-                _thriftId = thriftId;
-                _fieldName = fieldName;
-            }
-
-            /**
-             * Find the _Fields constant that matches fieldId, or null if its not found.
-             */
-            public static _Fields findByThriftId(int fieldId) {
-                switch (fieldId) {
-                    case 1: // ARG
-                        return ARG;
-                    default:
-                        return null;
-                }
-            }
-
-            /**
-             * Find the _Fields constant that matches fieldId, throwing an exception
-             * if it is not found.
-             */
-            public static _Fields findByThriftIdOrThrow(int fieldId) {
-                _Fields fields = findByThriftId(fieldId);
-                if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
-                return fields;
-            }
-
-            /**
-             * Find the _Fields constant that matches name, or null if its not found.
-             */

  (This diff was longer than 20,000 lines, and has been truncated...)


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


Mime
View raw message