From 9f5afaeb6abcea1167e1b6d8340ec211d93f2be3 Mon Sep 17 00:00:00 2001
From: Patrick <dreamlike.sky@foxmail.com>
Date: Sun, 5 Jan 2020 00:31:20 +0800
Subject: [PATCH] modify filter package

---
 common/extension/filter.go                    |  7 +++----
 common/extension/tps_limit.go                 | 14 ++++++-------
 .../rejected_execution_handler_mock.go        |  2 +-
 .../rejected_execution_handler_only_log.go    |  6 +++---
 ...ejected_execution_handler_only_log_test.go |  2 +-
 filter/{impl => filter}/access_log_filter.go  |  2 +-
 .../access_log_filter_test.go                 |  2 +-
 filter/{impl => filter}/active_filter.go      |  2 +-
 filter/{impl => filter}/echo_filter.go        |  2 +-
 filter/{impl => filter}/echo_filter_test.go   |  2 +-
 .../{impl => filter}/execute_limit_filter.go  |  4 ++--
 .../execute_limit_filter_test.go              |  2 +-
 filter/{impl => filter}/generic_filter.go     |  2 +-
 .../{impl => filter}/generic_filter_test.go   |  2 +-
 .../generic_service_filter.go                 |  2 +-
 .../generic_service_filter_test.go            |  2 +-
 .../graceful_shutdown_filter.go               |  5 ++---
 .../graceful_shutdown_filter_test.go          | 10 ++++-----
 filter/{impl => filter}/hystrix_filter.go     |  2 +-
 .../{impl => filter}/hystrix_filter_test.go   |  2 +-
 filter/{impl => filter}/token_filter.go       |  2 +-
 filter/{impl => filter}/token_filter_test.go  |  2 +-
 filter/{impl => filter}/tps_limit_filter.go   |  6 +++---
 .../{impl => filter}/tps_limit_filter_test.go | 21 +++++++++----------
 .../rejected_execution_handler.go             |  2 +-
 .../tps_limit_fix_window_strategy.go          |  6 +++---
 .../tps_limit_fix_window_strategy_test.go     |  2 +-
 .../tps_limit_sliding_window_strategy.go      |  6 +++---
 .../tps_limit_sliding_window_strategy_test.go |  2 +-
 .../impl => tps}/tps_limit_strategy_mock.go   |  2 +-
 ...s_limit_thread_safe_fix_window_strategy.go |  6 +++---
 ...it_thread_safe_fix_window_strategy_test.go |  2 +-
 .../tps_limiter_method_service.go             | 10 ++++-----
 .../tps_limiter_method_service_test.go        |  8 +++----
 .../tps/impl => tps}/tps_limiter_mock.go      |  2 +-
 filter/{impl/tps => }/tps_limit_strategy.go   |  2 +-
 filter/{impl/tps => }/tps_limiter.go          |  2 +-
 37 files changed, 77 insertions(+), 80 deletions(-)
 rename filter/common/{impl => }/rejected_execution_handler_mock.go (99%)
 rename filter/common/{impl => }/rejected_execution_handler_only_log.go (93%)
 rename filter/common/{impl => }/rejected_execution_handler_only_log_test.go (98%)
 rename filter/{impl => filter}/access_log_filter.go (99%)
 rename filter/{impl => filter}/access_log_filter_test.go (99%)
 rename filter/{impl => filter}/active_filter.go (99%)
 rename filter/{impl => filter}/echo_filter.go (99%)
 rename filter/{impl => filter}/echo_filter_test.go (98%)
 rename filter/{impl => filter}/execute_limit_filter.go (98%)
 rename filter/{impl => filter}/execute_limit_filter_test.go (99%)
 rename filter/{impl => filter}/generic_filter.go (99%)
 rename filter/{impl => filter}/generic_filter_test.go (99%)
 rename filter/{impl => filter}/generic_service_filter.go (99%)
 rename filter/{impl => filter}/generic_service_filter_test.go (99%)
 rename filter/{impl => filter}/graceful_shutdown_filter.go (95%)
 rename filter/{impl => filter}/graceful_shutdown_filter_test.go (89%)
 rename filter/{impl => filter}/hystrix_filter.go (99%)
 rename filter/{impl => filter}/hystrix_filter_test.go (99%)
 rename filter/{impl => filter}/token_filter.go (99%)
 rename filter/{impl => filter}/token_filter_test.go (99%)
 rename filter/{impl => filter}/tps_limit_filter.go (95%)
 rename filter/{impl => filter}/tps_limit_filter_test.go (84%)
 rename filter/{common => }/rejected_execution_handler.go (98%)
 rename filter/{impl/tps/impl => tps}/tps_limit_fix_window_strategy.go (96%)
 rename filter/{impl/tps/impl => tps}/tps_limit_fix_window_strategy_test.go (99%)
 rename filter/{impl/tps/impl => tps}/tps_limit_sliding_window_strategy.go (96%)
 rename filter/{impl/tps/impl => tps}/tps_limit_sliding_window_strategy_test.go (99%)
 rename filter/{impl/tps/impl => tps}/tps_limit_strategy_mock.go (99%)
 rename filter/{impl/tps/impl => tps}/tps_limit_thread_safe_fix_window_strategy.go (95%)
 rename filter/{impl/tps/impl => tps}/tps_limit_thread_safe_fix_window_strategy_test.go (99%)
 rename filter/{impl/tps/impl => tps}/tps_limiter_method_service.go (96%)
 rename filter/{impl/tps/impl => tps}/tps_limiter_method_service_test.go (97%)
 rename filter/{impl/tps/impl => tps}/tps_limiter_mock.go (99%)
 rename filter/{impl/tps => }/tps_limit_strategy.go (98%)
 rename filter/{impl/tps => }/tps_limiter.go (98%)

diff --git a/common/extension/filter.go b/common/extension/filter.go
index 93f7f8cf7..0b5c4b40a 100644
--- a/common/extension/filter.go
+++ b/common/extension/filter.go
@@ -19,12 +19,11 @@ package extension
 
 import (
 	"github.com/apache/dubbo-go/filter"
-	"github.com/apache/dubbo-go/filter/common"
 )
 
 var (
 	filters                  = make(map[string]func() filter.Filter)
-	rejectedExecutionHandler = make(map[string]func() common.RejectedExecutionHandler)
+	rejectedExecutionHandler = make(map[string]func() filter.RejectedExecutionHandler)
 )
 
 func SetFilter(name string, v func() filter.Filter) {
@@ -38,11 +37,11 @@ func GetFilter(name string) filter.Filter {
 	return filters[name]()
 }
 
-func SetRejectedExecutionHandler(name string, creator func() common.RejectedExecutionHandler) {
+func SetRejectedExecutionHandler(name string, creator func() filter.RejectedExecutionHandler) {
 	rejectedExecutionHandler[name] = creator
 }
 
-func GetRejectedExecutionHandler(name string) common.RejectedExecutionHandler {
+func GetRejectedExecutionHandler(name string) filter.RejectedExecutionHandler {
 	creator, ok := rejectedExecutionHandler[name]
 	if !ok {
 		panic("RejectedExecutionHandler for " + name + " is not existing, make sure you have import the package " +
diff --git a/common/extension/tps_limit.go b/common/extension/tps_limit.go
index 151c33ad5..8c131fafa 100644
--- a/common/extension/tps_limit.go
+++ b/common/extension/tps_limit.go
@@ -18,19 +18,19 @@
 package extension
 
 import (
-	"github.com/apache/dubbo-go/filter/impl/tps"
+	"github.com/apache/dubbo-go/filter"
 )
 
 var (
-	tpsLimitStrategy = make(map[string]tps.TpsLimitStrategyCreator)
-	tpsLimiter       = make(map[string]func() tps.TpsLimiter)
+	tpsLimitStrategy = make(map[string]filter.TpsLimitStrategyCreator)
+	tpsLimiter       = make(map[string]func() filter.TpsLimiter)
 )
 
-func SetTpsLimiter(name string, creator func() tps.TpsLimiter) {
+func SetTpsLimiter(name string, creator func() filter.TpsLimiter) {
 	tpsLimiter[name] = creator
 }
 
-func GetTpsLimiter(name string) tps.TpsLimiter {
+func GetTpsLimiter(name string) filter.TpsLimiter {
 	creator, ok := tpsLimiter[name]
 	if !ok {
 		panic("TpsLimiter for " + name + " is not existing, make sure you have import the package " +
@@ -39,11 +39,11 @@ func GetTpsLimiter(name string) tps.TpsLimiter {
 	return creator()
 }
 
-func SetTpsLimitStrategy(name string, creator tps.TpsLimitStrategyCreator) {
+func SetTpsLimitStrategy(name string, creator filter.TpsLimitStrategyCreator) {
 	tpsLimitStrategy[name] = creator
 }
 
-func GetTpsLimitStrategyCreator(name string) tps.TpsLimitStrategyCreator {
+func GetTpsLimitStrategyCreator(name string) filter.TpsLimitStrategyCreator {
 	creator, ok := tpsLimitStrategy[name]
 	if !ok {
 		panic("TpsLimitStrategy for " + name + " is not existing, make sure you have import the package " +
diff --git a/filter/common/impl/rejected_execution_handler_mock.go b/filter/common/rejected_execution_handler_mock.go
similarity index 99%
rename from filter/common/impl/rejected_execution_handler_mock.go
rename to filter/common/rejected_execution_handler_mock.go
index dace18946..a5631af9f 100644
--- a/filter/common/impl/rejected_execution_handler_mock.go
+++ b/filter/common/rejected_execution_handler_mock.go
@@ -18,7 +18,7 @@
 // Source: rejected_execution_handler.go
 
 // Package filter is a generated GoMock package.
-package impl
+package common
 
 import (
 	reflect "reflect"
diff --git a/filter/common/impl/rejected_execution_handler_only_log.go b/filter/common/rejected_execution_handler_only_log.go
similarity index 93%
rename from filter/common/impl/rejected_execution_handler_only_log.go
rename to filter/common/rejected_execution_handler_only_log.go
index 8943433af..65abe677f 100644
--- a/filter/common/impl/rejected_execution_handler_only_log.go
+++ b/filter/common/rejected_execution_handler_only_log.go
@@ -15,9 +15,10 @@
  * limitations under the License.
  */
 
-package impl
+package common
 
 import (
+	"github.com/apache/dubbo-go/filter"
 	"sync"
 )
 
@@ -26,7 +27,6 @@ import (
 	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/common/extension"
 	"github.com/apache/dubbo-go/common/logger"
-	filterCommon "github.com/apache/dubbo-go/filter/common"
 	"github.com/apache/dubbo-go/protocol"
 )
 
@@ -61,7 +61,7 @@ func (handler *OnlyLogRejectedExecutionHandler) RejectedExecution(url common.URL
 	return &protocol.RPCResult{}
 }
 
-func GetOnlyLogRejectedExecutionHandler() filterCommon.RejectedExecutionHandler {
+func GetOnlyLogRejectedExecutionHandler() filter.RejectedExecutionHandler {
 	onlyLogHandlerOnce.Do(func() {
 		onlyLogHandlerInstance = &OnlyLogRejectedExecutionHandler{}
 	})
diff --git a/filter/common/impl/rejected_execution_handler_only_log_test.go b/filter/common/rejected_execution_handler_only_log_test.go
similarity index 98%
rename from filter/common/impl/rejected_execution_handler_only_log_test.go
rename to filter/common/rejected_execution_handler_only_log_test.go
index da54d8a10..0efc3d813 100644
--- a/filter/common/impl/rejected_execution_handler_only_log_test.go
+++ b/filter/common/rejected_execution_handler_only_log_test.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package common
 
 import (
 	"net/url"
diff --git a/filter/impl/access_log_filter.go b/filter/filter/access_log_filter.go
similarity index 99%
rename from filter/impl/access_log_filter.go
rename to filter/filter/access_log_filter.go
index 89fa34952..cce2c5050 100644
--- a/filter/impl/access_log_filter.go
+++ b/filter/filter/access_log_filter.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
 	"os"
diff --git a/filter/impl/access_log_filter_test.go b/filter/filter/access_log_filter_test.go
similarity index 99%
rename from filter/impl/access_log_filter_test.go
rename to filter/filter/access_log_filter_test.go
index 834d531f0..2c17021a9 100644
--- a/filter/impl/access_log_filter_test.go
+++ b/filter/filter/access_log_filter_test.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
 	"context"
diff --git a/filter/impl/active_filter.go b/filter/filter/active_filter.go
similarity index 99%
rename from filter/impl/active_filter.go
rename to filter/filter/active_filter.go
index 36a4e1a76..e0f73c2b2 100644
--- a/filter/impl/active_filter.go
+++ b/filter/filter/active_filter.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
 	"github.com/apache/dubbo-go/common/extension"
diff --git a/filter/impl/echo_filter.go b/filter/filter/echo_filter.go
similarity index 99%
rename from filter/impl/echo_filter.go
rename to filter/filter/echo_filter.go
index 18e42c8cb..1515c0a99 100644
--- a/filter/impl/echo_filter.go
+++ b/filter/filter/echo_filter.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
 	"github.com/apache/dubbo-go/common/constant"
diff --git a/filter/impl/echo_filter_test.go b/filter/filter/echo_filter_test.go
similarity index 98%
rename from filter/impl/echo_filter_test.go
rename to filter/filter/echo_filter_test.go
index e2e592974..d57d54329 100644
--- a/filter/impl/echo_filter_test.go
+++ b/filter/filter/echo_filter_test.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
 	"testing"
diff --git a/filter/impl/execute_limit_filter.go b/filter/filter/execute_limit_filter.go
similarity index 98%
rename from filter/impl/execute_limit_filter.go
rename to filter/filter/execute_limit_filter.go
index 156af1b14..4b5ea7491 100644
--- a/filter/impl/execute_limit_filter.go
+++ b/filter/filter/execute_limit_filter.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
 	"strconv"
@@ -32,7 +32,7 @@ import (
 	"github.com/apache/dubbo-go/common/extension"
 	"github.com/apache/dubbo-go/common/logger"
 	"github.com/apache/dubbo-go/filter"
-	_ "github.com/apache/dubbo-go/filter/common/impl"
+	_ "github.com/apache/dubbo-go/filter/common"
 	"github.com/apache/dubbo-go/protocol"
 )
 
diff --git a/filter/impl/execute_limit_filter_test.go b/filter/filter/execute_limit_filter_test.go
similarity index 99%
rename from filter/impl/execute_limit_filter_test.go
rename to filter/filter/execute_limit_filter_test.go
index 5d729c0e6..326b13677 100644
--- a/filter/impl/execute_limit_filter_test.go
+++ b/filter/filter/execute_limit_filter_test.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
 	"net/url"
diff --git a/filter/impl/generic_filter.go b/filter/filter/generic_filter.go
similarity index 99%
rename from filter/impl/generic_filter.go
rename to filter/filter/generic_filter.go
index 35aadb11a..f15449520 100644
--- a/filter/impl/generic_filter.go
+++ b/filter/filter/generic_filter.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
 	"reflect"
diff --git a/filter/impl/generic_filter_test.go b/filter/filter/generic_filter_test.go
similarity index 99%
rename from filter/impl/generic_filter_test.go
rename to filter/filter/generic_filter_test.go
index 9797c40df..d5298adbd 100644
--- a/filter/impl/generic_filter_test.go
+++ b/filter/filter/generic_filter_test.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
 	"reflect"
diff --git a/filter/impl/generic_service_filter.go b/filter/filter/generic_service_filter.go
similarity index 99%
rename from filter/impl/generic_service_filter.go
rename to filter/filter/generic_service_filter.go
index 2fde925d6..514a51f0b 100644
--- a/filter/impl/generic_service_filter.go
+++ b/filter/filter/generic_service_filter.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
 	"reflect"
diff --git a/filter/impl/generic_service_filter_test.go b/filter/filter/generic_service_filter_test.go
similarity index 99%
rename from filter/impl/generic_service_filter_test.go
rename to filter/filter/generic_service_filter_test.go
index 89898694c..599a6a66d 100644
--- a/filter/impl/generic_service_filter_test.go
+++ b/filter/filter/generic_service_filter_test.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
 	"context"
diff --git a/filter/impl/graceful_shutdown_filter.go b/filter/filter/graceful_shutdown_filter.go
similarity index 95%
rename from filter/impl/graceful_shutdown_filter.go
rename to filter/filter/graceful_shutdown_filter.go
index b912ea88e..c682c7ef7 100644
--- a/filter/impl/graceful_shutdown_filter.go
+++ b/filter/filter/graceful_shutdown_filter.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
 	"sync/atomic"
@@ -27,7 +27,6 @@ import (
 	"github.com/apache/dubbo-go/common/logger"
 	"github.com/apache/dubbo-go/config"
 	"github.com/apache/dubbo-go/filter"
-	"github.com/apache/dubbo-go/filter/common"
 	"github.com/apache/dubbo-go/protocol"
 )
 
@@ -78,7 +77,7 @@ func (gf *gracefulShutdownFilter) rejectNewRequest() bool {
 	return gf.shutdownConfig.RejectRequest
 }
 
-func (gf *gracefulShutdownFilter) getRejectHandler() common.RejectedExecutionHandler {
+func (gf *gracefulShutdownFilter) getRejectHandler() filter.RejectedExecutionHandler {
 	handler := constant.DEFAULT_KEY
 	if gf.shutdownConfig != nil && len(gf.shutdownConfig.RejectRequestHandler) > 0 {
 		handler = gf.shutdownConfig.RejectRequestHandler
diff --git a/filter/impl/graceful_shutdown_filter_test.go b/filter/filter/graceful_shutdown_filter_test.go
similarity index 89%
rename from filter/impl/graceful_shutdown_filter_test.go
rename to filter/filter/graceful_shutdown_filter_test.go
index 21da167ea..38430a5d1 100644
--- a/filter/impl/graceful_shutdown_filter_test.go
+++ b/filter/filter/graceful_shutdown_filter_test.go
@@ -15,9 +15,11 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
+	"github.com/apache/dubbo-go/filter"
+	common2 "github.com/apache/dubbo-go/filter/common"
 	"net/url"
 	"testing"
 )
@@ -31,8 +33,6 @@ import (
 	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/common/extension"
 	"github.com/apache/dubbo-go/config"
-	filterCommon "github.com/apache/dubbo-go/filter/common"
-	"github.com/apache/dubbo-go/filter/common/impl"
 	"github.com/apache/dubbo-go/protocol"
 	"github.com/apache/dubbo-go/protocol/invocation"
 )
@@ -66,8 +66,8 @@ func TestGenericFilter_Invoke(t *testing.T) {
 	assert.True(t, shutdownFilter.rejectNewRequest())
 	result = shutdownFilter.OnResponse(nil, protocol.NewBaseInvoker(*invokeUrl), invoc)
 
-	rejectHandler := &impl.OnlyLogRejectedExecutionHandler{}
-	extension.SetRejectedExecutionHandler("mock", func() filterCommon.RejectedExecutionHandler {
+	rejectHandler := &common2.OnlyLogRejectedExecutionHandler{}
+	extension.SetRejectedExecutionHandler("mock", func() filter.RejectedExecutionHandler {
 		return rejectHandler
 	})
 	assert.True(t, providerConfig.ShutdownConfig.RequestsFinished)
diff --git a/filter/impl/hystrix_filter.go b/filter/filter/hystrix_filter.go
similarity index 99%
rename from filter/impl/hystrix_filter.go
rename to filter/filter/hystrix_filter.go
index 3fd9f8716..a7c57b4dd 100644
--- a/filter/impl/hystrix_filter.go
+++ b/filter/filter/hystrix_filter.go
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package impl
+package filter
 
 import (
 	"fmt"
diff --git a/filter/impl/hystrix_filter_test.go b/filter/filter/hystrix_filter_test.go
similarity index 99%
rename from filter/impl/hystrix_filter_test.go
rename to filter/filter/hystrix_filter_test.go
index d3a5183ed..374329403 100644
--- a/filter/impl/hystrix_filter_test.go
+++ b/filter/filter/hystrix_filter_test.go
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package impl
+package filter
 
 import (
 	"regexp"
diff --git a/filter/impl/token_filter.go b/filter/filter/token_filter.go
similarity index 99%
rename from filter/impl/token_filter.go
rename to filter/filter/token_filter.go
index d10dff5b7..07b80f340 100644
--- a/filter/impl/token_filter.go
+++ b/filter/filter/token_filter.go
@@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-package impl
+package filter
 
 import (
 	"strings"
diff --git a/filter/impl/token_filter_test.go b/filter/filter/token_filter_test.go
similarity index 99%
rename from filter/impl/token_filter_test.go
rename to filter/filter/token_filter_test.go
index 1473f2740..4434865de 100644
--- a/filter/impl/token_filter_test.go
+++ b/filter/filter/token_filter_test.go
@@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-package impl
+package filter
 
 import (
 	"net/url"
diff --git a/filter/impl/tps_limit_filter.go b/filter/filter/tps_limit_filter.go
similarity index 95%
rename from filter/impl/tps_limit_filter.go
rename to filter/filter/tps_limit_filter.go
index 3cb7381c8..ccccec00d 100644
--- a/filter/impl/tps_limit_filter.go
+++ b/filter/filter/tps_limit_filter.go
@@ -15,15 +15,15 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
 	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/common/extension"
 	"github.com/apache/dubbo-go/common/logger"
 	"github.com/apache/dubbo-go/filter"
-	_ "github.com/apache/dubbo-go/filter/common/impl"
-	_ "github.com/apache/dubbo-go/filter/impl/tps/impl"
+	_ "github.com/apache/dubbo-go/filter/common"
+	_ "github.com/apache/dubbo-go/filter/tps"
 	"github.com/apache/dubbo-go/protocol"
 )
 
diff --git a/filter/impl/tps_limit_filter_test.go b/filter/filter/tps_limit_filter_test.go
similarity index 84%
rename from filter/impl/tps_limit_filter_test.go
rename to filter/filter/tps_limit_filter_test.go
index debdbd00d..d4353bb7d 100644
--- a/filter/impl/tps_limit_filter_test.go
+++ b/filter/filter/tps_limit_filter_test.go
@@ -15,9 +15,12 @@
  * limitations under the License.
  */
 
-package impl
+package filter
 
 import (
+	"github.com/apache/dubbo-go/filter"
+	common2 "github.com/apache/dubbo-go/filter/common"
+	"github.com/apache/dubbo-go/filter/tps"
 	"net/url"
 	"testing"
 )
@@ -31,10 +34,6 @@ import (
 	"github.com/apache/dubbo-go/common"
 	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/common/extension"
-	filterCommon "github.com/apache/dubbo-go/filter/common"
-	filterCommonImpl "github.com/apache/dubbo-go/filter/common/impl"
-	"github.com/apache/dubbo-go/filter/impl/tps"
-	"github.com/apache/dubbo-go/filter/impl/tps/impl"
 	"github.com/apache/dubbo-go/protocol"
 	"github.com/apache/dubbo-go/protocol/invocation"
 )
@@ -56,9 +55,9 @@ func TestTpsLimitFilter_Invoke_With_No_TpsLimiter(t *testing.T) {
 func TestGenericFilter_Invoke_With_Default_TpsLimiter(t *testing.T) {
 	ctrl := gomock.NewController(t)
 	defer ctrl.Finish()
-	mockLimiter := impl.NewMockTpsLimiter(ctrl)
+	mockLimiter := tps.NewMockTpsLimiter(ctrl)
 	mockLimiter.EXPECT().IsAllowable(gomock.Any(), gomock.Any()).Return(true).Times(1)
-	extension.SetTpsLimiter(constant.DEFAULT_KEY, func() tps.TpsLimiter {
+	extension.SetTpsLimiter(constant.DEFAULT_KEY, func() filter.TpsLimiter {
 		return mockLimiter
 	})
 
@@ -77,17 +76,17 @@ func TestGenericFilter_Invoke_With_Default_TpsLimiter(t *testing.T) {
 func TestGenericFilter_Invoke_With_Default_TpsLimiter_Not_Allow(t *testing.T) {
 	ctrl := gomock.NewController(t)
 	defer ctrl.Finish()
-	mockLimiter := impl.NewMockTpsLimiter(ctrl)
+	mockLimiter := tps.NewMockTpsLimiter(ctrl)
 	mockLimiter.EXPECT().IsAllowable(gomock.Any(), gomock.Any()).Return(false).Times(1)
-	extension.SetTpsLimiter(constant.DEFAULT_KEY, func() tps.TpsLimiter {
+	extension.SetTpsLimiter(constant.DEFAULT_KEY, func() filter.TpsLimiter {
 		return mockLimiter
 	})
 
 	mockResult := &protocol.RPCResult{}
-	mockRejectedHandler := filterCommonImpl.NewMockRejectedExecutionHandler(ctrl)
+	mockRejectedHandler := common2.NewMockRejectedExecutionHandler(ctrl)
 	mockRejectedHandler.EXPECT().RejectedExecution(gomock.Any(), gomock.Any()).Return(mockResult).Times(1)
 
-	extension.SetRejectedExecutionHandler(constant.DEFAULT_KEY, func() filterCommon.RejectedExecutionHandler {
+	extension.SetRejectedExecutionHandler(constant.DEFAULT_KEY, func() filter.RejectedExecutionHandler {
 		return mockRejectedHandler
 	})
 
diff --git a/filter/common/rejected_execution_handler.go b/filter/rejected_execution_handler.go
similarity index 98%
rename from filter/common/rejected_execution_handler.go
rename to filter/rejected_execution_handler.go
index b993b8444..ce95b54b1 100644
--- a/filter/common/rejected_execution_handler.go
+++ b/filter/rejected_execution_handler.go
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package common
+package filter
 
 import (
 	"github.com/apache/dubbo-go/common"
diff --git a/filter/impl/tps/impl/tps_limit_fix_window_strategy.go b/filter/tps/tps_limit_fix_window_strategy.go
similarity index 96%
rename from filter/impl/tps/impl/tps_limit_fix_window_strategy.go
rename to filter/tps/tps_limit_fix_window_strategy.go
index 285ecfa65..b69c567ff 100644
--- a/filter/impl/tps/impl/tps_limit_fix_window_strategy.go
+++ b/filter/tps/tps_limit_fix_window_strategy.go
@@ -15,9 +15,10 @@
  * limitations under the License.
  */
 
-package impl
+package tps
 
 import (
+	"github.com/apache/dubbo-go/filter"
 	"sync/atomic"
 	"time"
 )
@@ -25,7 +26,6 @@ import (
 import (
 	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/common/extension"
-	"github.com/apache/dubbo-go/filter/impl/tps"
 )
 
 const (
@@ -79,7 +79,7 @@ func (impl *FixedWindowTpsLimitStrategyImpl) IsAllowable() bool {
 
 type fixedWindowStrategyCreator struct{}
 
-func (creator *fixedWindowStrategyCreator) Create(rate int, interval int) tps.TpsLimitStrategy {
+func (creator *fixedWindowStrategyCreator) Create(rate int, interval int) filter.TpsLimitStrategy {
 	return &FixedWindowTpsLimitStrategyImpl{
 		rate:      int32(rate),
 		interval:  int64(interval) * int64(time.Millisecond), // convert to ns
diff --git a/filter/impl/tps/impl/tps_limit_fix_window_strategy_test.go b/filter/tps/tps_limit_fix_window_strategy_test.go
similarity index 99%
rename from filter/impl/tps/impl/tps_limit_fix_window_strategy_test.go
rename to filter/tps/tps_limit_fix_window_strategy_test.go
index 7ef539ed3..5eaf2f707 100644
--- a/filter/impl/tps/impl/tps_limit_fix_window_strategy_test.go
+++ b/filter/tps/tps_limit_fix_window_strategy_test.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package tps
 
 import (
 	"testing"
diff --git a/filter/impl/tps/impl/tps_limit_sliding_window_strategy.go b/filter/tps/tps_limit_sliding_window_strategy.go
similarity index 96%
rename from filter/impl/tps/impl/tps_limit_sliding_window_strategy.go
rename to filter/tps/tps_limit_sliding_window_strategy.go
index d1a5db6e2..ec2afe602 100644
--- a/filter/impl/tps/impl/tps_limit_sliding_window_strategy.go
+++ b/filter/tps/tps_limit_sliding_window_strategy.go
@@ -15,17 +15,17 @@
  * limitations under the License.
  */
 
-package impl
+package tps
 
 import (
 	"container/list"
+	"github.com/apache/dubbo-go/filter"
 	"sync"
 	"time"
 )
 
 import (
 	"github.com/apache/dubbo-go/common/extension"
-	"github.com/apache/dubbo-go/filter/impl/tps"
 )
 
 func init() {
@@ -82,7 +82,7 @@ func (impl *SlidingWindowTpsLimitStrategyImpl) IsAllowable() bool {
 
 type slidingWindowStrategyCreator struct{}
 
-func (creator *slidingWindowStrategyCreator) Create(rate int, interval int) tps.TpsLimitStrategy {
+func (creator *slidingWindowStrategyCreator) Create(rate int, interval int) filter.TpsLimitStrategy {
 	return &SlidingWindowTpsLimitStrategyImpl{
 		rate:     rate,
 		interval: int64(interval) * int64(time.Millisecond),
diff --git a/filter/impl/tps/impl/tps_limit_sliding_window_strategy_test.go b/filter/tps/tps_limit_sliding_window_strategy_test.go
similarity index 99%
rename from filter/impl/tps/impl/tps_limit_sliding_window_strategy_test.go
rename to filter/tps/tps_limit_sliding_window_strategy_test.go
index 075f1d9d2..57342d1c4 100644
--- a/filter/impl/tps/impl/tps_limit_sliding_window_strategy_test.go
+++ b/filter/tps/tps_limit_sliding_window_strategy_test.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package tps
 
 import (
 	"testing"
diff --git a/filter/impl/tps/impl/tps_limit_strategy_mock.go b/filter/tps/tps_limit_strategy_mock.go
similarity index 99%
rename from filter/impl/tps/impl/tps_limit_strategy_mock.go
rename to filter/tps/tps_limit_strategy_mock.go
index a653fb287..72c658fb9 100644
--- a/filter/impl/tps/impl/tps_limit_strategy_mock.go
+++ b/filter/tps/tps_limit_strategy_mock.go
@@ -18,7 +18,7 @@
 // Source: tps_limit_strategy.go
 
 // Package filter is a generated GoMock package.
-package impl
+package tps
 
 import (
 	gomock "github.com/golang/mock/gomock"
diff --git a/filter/impl/tps/impl/tps_limit_thread_safe_fix_window_strategy.go b/filter/tps/tps_limit_thread_safe_fix_window_strategy.go
similarity index 95%
rename from filter/impl/tps/impl/tps_limit_thread_safe_fix_window_strategy.go
rename to filter/tps/tps_limit_thread_safe_fix_window_strategy.go
index 9a1b21a33..279c3b003 100644
--- a/filter/impl/tps/impl/tps_limit_thread_safe_fix_window_strategy.go
+++ b/filter/tps/tps_limit_thread_safe_fix_window_strategy.go
@@ -15,15 +15,15 @@
  * limitations under the License.
  */
 
-package impl
+package tps
 
 import (
+	"github.com/apache/dubbo-go/filter"
 	"sync"
 )
 
 import (
 	"github.com/apache/dubbo-go/common/extension"
-	"github.com/apache/dubbo-go/filter/impl/tps"
 )
 
 func init() {
@@ -62,7 +62,7 @@ type threadSafeFixedWindowStrategyCreator struct {
 	fixedWindowStrategyCreator *fixedWindowStrategyCreator
 }
 
-func (creator *threadSafeFixedWindowStrategyCreator) Create(rate int, interval int) tps.TpsLimitStrategy {
+func (creator *threadSafeFixedWindowStrategyCreator) Create(rate int, interval int) filter.TpsLimitStrategy {
 	fixedWindowStrategy := creator.fixedWindowStrategyCreator.Create(rate, interval).(*FixedWindowTpsLimitStrategyImpl)
 	return &ThreadSafeFixedWindowTpsLimitStrategyImpl{
 		fixedWindow: fixedWindowStrategy,
diff --git a/filter/impl/tps/impl/tps_limit_thread_safe_fix_window_strategy_test.go b/filter/tps/tps_limit_thread_safe_fix_window_strategy_test.go
similarity index 99%
rename from filter/impl/tps/impl/tps_limit_thread_safe_fix_window_strategy_test.go
rename to filter/tps/tps_limit_thread_safe_fix_window_strategy_test.go
index 129493962..90cd15201 100644
--- a/filter/impl/tps/impl/tps_limit_thread_safe_fix_window_strategy_test.go
+++ b/filter/tps/tps_limit_thread_safe_fix_window_strategy_test.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package impl
+package tps
 
 import (
 	"testing"
diff --git a/filter/impl/tps/impl/tps_limiter_method_service.go b/filter/tps/tps_limiter_method_service.go
similarity index 96%
rename from filter/impl/tps/impl/tps_limiter_method_service.go
rename to filter/tps/tps_limiter_method_service.go
index 426ae5994..11137b784 100644
--- a/filter/impl/tps/impl/tps_limiter_method_service.go
+++ b/filter/tps/tps_limiter_method_service.go
@@ -14,10 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package impl
+package tps
 
 import (
 	"fmt"
+	"github.com/apache/dubbo-go/filter"
 	"strconv"
 	"sync"
 )
@@ -30,7 +31,6 @@ import (
 	"github.com/apache/dubbo-go/common"
 	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/common/extension"
-	"github.com/apache/dubbo-go/filter/impl/tps"
 	"github.com/apache/dubbo-go/protocol"
 )
 
@@ -127,7 +127,7 @@ func (limiter MethodServiceTpsLimiterImpl) IsAllowable(url common.URL, invocatio
 
 	limitState, found := limiter.tpsState.Load(limitTarget)
 	if found {
-		return limitState.(tps.TpsLimitStrategy).IsAllowable()
+		return limitState.(filter.TpsLimitStrategy).IsAllowable()
 	}
 
 	limitRate := getLimitConfig(methodLimitRateConfig, url, invocation,
@@ -149,7 +149,7 @@ func (limiter MethodServiceTpsLimiterImpl) IsAllowable(url common.URL, invocatio
 		url.GetParam(constant.TPS_LIMIT_STRATEGY_KEY, constant.DEFAULT_KEY))
 	limitStateCreator := extension.GetTpsLimitStrategyCreator(limitStrategyConfig)
 	limitState, _ = limiter.tpsState.LoadOrStore(limitTarget, limitStateCreator.Create(int(limitRate), int(limitInterval)))
-	return limitState.(tps.TpsLimitStrategy).IsAllowable()
+	return limitState.(filter.TpsLimitStrategy).IsAllowable()
 }
 
 func getLimitConfig(methodLevelConfig string,
@@ -178,7 +178,7 @@ func getLimitConfig(methodLevelConfig string,
 var methodServiceTpsLimiterInstance *MethodServiceTpsLimiterImpl
 var methodServiceTpsLimiterOnce sync.Once
 
-func GetMethodServiceTpsLimiter() tps.TpsLimiter {
+func GetMethodServiceTpsLimiter() filter.TpsLimiter {
 	methodServiceTpsLimiterOnce.Do(func() {
 		methodServiceTpsLimiterInstance = &MethodServiceTpsLimiterImpl{
 			tpsState: concurrent.NewMap(),
diff --git a/filter/impl/tps/impl/tps_limiter_method_service_test.go b/filter/tps/tps_limiter_method_service_test.go
similarity index 97%
rename from filter/impl/tps/impl/tps_limiter_method_service_test.go
rename to filter/tps/tps_limiter_method_service_test.go
index e747d4682..80e5797d5 100644
--- a/filter/impl/tps/impl/tps_limiter_method_service_test.go
+++ b/filter/tps/tps_limiter_method_service_test.go
@@ -15,9 +15,10 @@
  * limitations under the License.
  */
 
-package impl
+package tps
 
 import (
+	"github.com/apache/dubbo-go/filter"
 	"net/url"
 	"testing"
 )
@@ -30,7 +31,6 @@ import (
 	"github.com/apache/dubbo-go/common"
 	"github.com/apache/dubbo-go/common/constant"
 	"github.com/apache/dubbo-go/common/extension"
-	"github.com/apache/dubbo-go/filter/impl/tps"
 	"github.com/apache/dubbo-go/protocol/invocation"
 )
 
@@ -144,10 +144,10 @@ type mockStrategyCreator struct {
 	rate     int
 	interval int
 	t        *testing.T
-	strategy tps.TpsLimitStrategy
+	strategy filter.TpsLimitStrategy
 }
 
-func (creator *mockStrategyCreator) Create(rate int, interval int) tps.TpsLimitStrategy {
+func (creator *mockStrategyCreator) Create(rate int, interval int) filter.TpsLimitStrategy {
 	assert.Equal(creator.t, creator.rate, rate)
 	assert.Equal(creator.t, creator.interval, interval)
 	return creator.strategy
diff --git a/filter/impl/tps/impl/tps_limiter_mock.go b/filter/tps/tps_limiter_mock.go
similarity index 99%
rename from filter/impl/tps/impl/tps_limiter_mock.go
rename to filter/tps/tps_limiter_mock.go
index acd3a15d1..463b0988a 100644
--- a/filter/impl/tps/impl/tps_limiter_mock.go
+++ b/filter/tps/tps_limiter_mock.go
@@ -18,7 +18,7 @@
 // Source: tps_limiter.go
 
 // Package filter is a generated GoMock package.
-package impl
+package tps
 
 import (
 	reflect "reflect"
diff --git a/filter/impl/tps/tps_limit_strategy.go b/filter/tps_limit_strategy.go
similarity index 98%
rename from filter/impl/tps/tps_limit_strategy.go
rename to filter/tps_limit_strategy.go
index c55f008a0..1051c3d96 100644
--- a/filter/impl/tps/tps_limit_strategy.go
+++ b/filter/tps_limit_strategy.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package tps
+package filter
 
 /*
  * please register your implementation by invoking SetTpsLimitStrategy
diff --git a/filter/impl/tps/tps_limiter.go b/filter/tps_limiter.go
similarity index 98%
rename from filter/impl/tps/tps_limiter.go
rename to filter/tps_limiter.go
index 0622a957a..1d2b2341a 100644
--- a/filter/impl/tps/tps_limiter.go
+++ b/filter/tps_limiter.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package tps
+package filter
 
 import (
 	"github.com/apache/dubbo-go/common"
-- 
GitLab