This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git

commit c744e02299b040a1dd5ddb435f496ce209be352f
Author: Lei Zhang <[email protected]>
AuthorDate: Thu Aug 8 23:50:53 2019 +0800

    SCB-1411 Refactoring rest API
---
 .../servicecomb/pack/alpha/core/api/APIv1.java     | 39 ++++++++++++++++++++
 .../{APIControllerV1.java => APIv1Controller.java} | 30 +++++----------
 .../api/{APIControllerV1.java => APIv1Impl.java}   | 43 ++++++++--------------
 ...ollerV1Tests.java => APIv1ControllerTests.java} | 42 ++++++++++-----------
 4 files changed, 85 insertions(+), 69 deletions(-)

diff --git 
a/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/api/APIv1.java
 
b/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/api/APIv1.java
new file mode 100644
index 0000000..de9cf64
--- /dev/null
+++ 
b/alpha/alpha-core/src/main/java/org/apache/servicecomb/pack/alpha/core/api/APIv1.java
@@ -0,0 +1,39 @@
+/*
+ * 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.servicecomb.pack.alpha.core.api;
+
+import java.util.List;
+import java.util.Map;
+import 
org.apache.servicecomb.pack.alpha.core.fsm.repository.model.GlobalTransaction;
+import 
org.apache.servicecomb.pack.alpha.core.fsm.repository.model.PagingGlobalTransactions;
+import org.apache.servicecomb.pack.alpha.core.metrics.AlphaMetrics;
+
+public interface APIv1 {
+
+  AlphaMetrics getMetrics();
+
+  GlobalTransaction getTransactionByGlobalTxId(String globalTxId)
+      throws Exception;
+
+  PagingGlobalTransactions getTransactions(int page, int size)
+      throws Exception;
+
+  Map<String, Long> getTransactionStatistics();
+
+  List<GlobalTransaction> getSlowTransactions();
+}
diff --git 
a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1.java
 
b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIv1Controller.java
similarity index 67%
copy from 
alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1.java
copy to 
alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIv1Controller.java
index f6eac8d..f071884 100644
--- 
a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1.java
+++ 
b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIv1Controller.java
@@ -20,10 +20,8 @@ package org.apache.servicecomb.pack.alpha.server.api;
 import java.util.List;
 import java.util.Map;
 import org.apache.servicecomb.pack.alpha.core.metrics.AlphaMetrics;
-import org.apache.servicecomb.pack.alpha.fsm.repository.TransactionRepository;
 import 
org.apache.servicecomb.pack.alpha.core.fsm.repository.model.GlobalTransaction;
 import 
org.apache.servicecomb.pack.alpha.core.fsm.repository.model.PagingGlobalTransactions;
-import org.apache.servicecomb.pack.alpha.server.metrics.AlphaMetricsEndpoint;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -34,46 +32,36 @@ import 
org.springframework.web.bind.annotation.RestController;
 
 @RestController
 @RequestMapping("/alpha/api/v1")
-public class APIControllerV1 {
+public class APIv1Controller {
 
   @Autowired
-  AlphaMetricsEndpoint alphaMetricsEndpoint;
+  APIv1Impl APIv1Impl;
 
-  @Autowired(required = false)
-  TransactionRepository transactionRepository;
-
-  @GetMapping(value = "/metrics")
+  @GetMapping(value = "/getMetrics")
   ResponseEntity<AlphaMetrics> metrics() {
-    AlphaMetrics alphaMetrics = new AlphaMetrics();
-    alphaMetrics.setMetrics(alphaMetricsEndpoint.getMetrics());
-    alphaMetrics.setNodeType(alphaMetricsEndpoint.getNodeType());
-    return ResponseEntity.ok(alphaMetrics);
+    return ResponseEntity.ok(APIv1Impl.getMetrics());
   }
 
   @GetMapping(value = "/transaction/{globalTxId}")
   ResponseEntity<GlobalTransaction> getTransactionByGlobalTxId(@PathVariable 
String globalTxId)
       throws Exception {
-    GlobalTransaction globalTransaction = transactionRepository
-        .getGlobalTransactionByGlobalTxId(globalTxId);
-    return ResponseEntity.ok(globalTransaction);
+    return ResponseEntity.ok(APIv1Impl.getTransactionByGlobalTxId(globalTxId));
   }
 
   @GetMapping(value = "/transaction")
   ResponseEntity<PagingGlobalTransactions> getTransactions(@RequestParam(value 
= "page", required = false, defaultValue = "0") int page,
       @RequestParam(value = "size", required = false, defaultValue = "50") int 
size)
       throws Exception {
-    PagingGlobalTransactions pagingGlobalTransactions = transactionRepository
-        .getGlobalTransactions(page, size);
-    return ResponseEntity.ok(pagingGlobalTransactions);
+    return ResponseEntity.ok(APIv1Impl.getTransactions(page,size));
   }
 
   @GetMapping(value = "/transaction/statistics")
-  ResponseEntity<Map<String,Long>> getTransactions() {
-    return ResponseEntity.ok(transactionRepository.getTransactionStatistics());
+  ResponseEntity<Map<String,Long>> getTransactionStatistics() {
+    return ResponseEntity.ok(APIv1Impl.getTransactionStatistics());
   }
 
   @GetMapping(value = "/transaction/slow")
   ResponseEntity<List<GlobalTransaction>> getSlowTransactions() {
-    return 
ResponseEntity.ok(transactionRepository.getSlowGlobalTransactionsTopN(10));
+    return ResponseEntity.ok(APIv1Impl.getSlowTransactions());
   }
 }
diff --git 
a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1.java
 
b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIv1Impl.java
similarity index 58%
rename from 
alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1.java
rename to 
alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIv1Impl.java
index f6eac8d..371f0ea 100644
--- 
a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1.java
+++ 
b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/api/APIv1Impl.java
@@ -19,22 +19,17 @@ package org.apache.servicecomb.pack.alpha.server.api;
 
 import java.util.List;
 import java.util.Map;
-import org.apache.servicecomb.pack.alpha.core.metrics.AlphaMetrics;
-import org.apache.servicecomb.pack.alpha.fsm.repository.TransactionRepository;
+import org.apache.servicecomb.pack.alpha.core.api.APIv1;
 import 
org.apache.servicecomb.pack.alpha.core.fsm.repository.model.GlobalTransaction;
 import 
org.apache.servicecomb.pack.alpha.core.fsm.repository.model.PagingGlobalTransactions;
+import org.apache.servicecomb.pack.alpha.core.metrics.AlphaMetrics;
+import org.apache.servicecomb.pack.alpha.fsm.repository.TransactionRepository;
 import org.apache.servicecomb.pack.alpha.server.metrics.AlphaMetricsEndpoint;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.stereotype.Component;
 
-@RestController
-@RequestMapping("/alpha/api/v1")
-public class APIControllerV1 {
+@Component
+public class APIv1Impl implements APIv1 {
 
   @Autowired
   AlphaMetricsEndpoint alphaMetricsEndpoint;
@@ -42,38 +37,32 @@ public class APIControllerV1 {
   @Autowired(required = false)
   TransactionRepository transactionRepository;
 
-  @GetMapping(value = "/metrics")
-  ResponseEntity<AlphaMetrics> metrics() {
+  public AlphaMetrics getMetrics() {
     AlphaMetrics alphaMetrics = new AlphaMetrics();
     alphaMetrics.setMetrics(alphaMetricsEndpoint.getMetrics());
     alphaMetrics.setNodeType(alphaMetricsEndpoint.getNodeType());
-    return ResponseEntity.ok(alphaMetrics);
+    return alphaMetrics;
   }
 
-  @GetMapping(value = "/transaction/{globalTxId}")
-  ResponseEntity<GlobalTransaction> getTransactionByGlobalTxId(@PathVariable 
String globalTxId)
+  public GlobalTransaction getTransactionByGlobalTxId(String globalTxId)
       throws Exception {
     GlobalTransaction globalTransaction = transactionRepository
         .getGlobalTransactionByGlobalTxId(globalTxId);
-    return ResponseEntity.ok(globalTransaction);
+    return globalTransaction;
   }
 
-  @GetMapping(value = "/transaction")
-  ResponseEntity<PagingGlobalTransactions> getTransactions(@RequestParam(value 
= "page", required = false, defaultValue = "0") int page,
-      @RequestParam(value = "size", required = false, defaultValue = "50") int 
size)
+  public PagingGlobalTransactions getTransactions(int page, int size)
       throws Exception {
     PagingGlobalTransactions pagingGlobalTransactions = transactionRepository
         .getGlobalTransactions(page, size);
-    return ResponseEntity.ok(pagingGlobalTransactions);
+    return pagingGlobalTransactions;
   }
 
-  @GetMapping(value = "/transaction/statistics")
-  ResponseEntity<Map<String,Long>> getTransactions() {
-    return ResponseEntity.ok(transactionRepository.getTransactionStatistics());
+  public Map<String, Long> getTransactionStatistics() {
+    return transactionRepository.getTransactionStatistics();
   }
 
-  @GetMapping(value = "/transaction/slow")
-  ResponseEntity<List<GlobalTransaction>> getSlowTransactions() {
-    return 
ResponseEntity.ok(transactionRepository.getSlowGlobalTransactionsTopN(10));
+  public List<GlobalTransaction> getSlowTransactions() {
+    return transactionRepository.getSlowGlobalTransactionsTopN(10);
   }
 }
diff --git 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1Tests.java
 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIv1ControllerTests.java
similarity index 91%
rename from 
alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1Tests.java
rename to 
alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIv1ControllerTests.java
index 76202dd..2b6cfbd 100644
--- 
a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIControllerV1Tests.java
+++ 
b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/api/APIv1ControllerTests.java
@@ -61,8 +61,8 @@ import 
org.springframework.test.web.servlet.result.MockMvcResultMatchers;
 import static 
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
 
 @RunWith(SpringRunner.class)
-@WebMvcTest(value = {APIControllerV1.class, AlphaMetricsEndpoint.class})
-public class APIControllerV1Tests {
+@WebMvcTest(value = {APIv1Controller.class, AlphaMetricsEndpoint.class})
+public class APIv1ControllerTests {
 
   @Autowired
   private MockMvc mockMvc;
@@ -102,28 +102,28 @@ public class APIControllerV1Tests {
     metricsBean.doSagaAvgTime(5);
     when(metricsService.metrics()).thenReturn(metricsBean);
     when(nodeStatus.getTypeEnum()).thenReturn(TypeEnum.MASTER);
-    mockMvc.perform(get("/alpha/api/v1/metrics"))
+    mockMvc.perform(get("/alpha/api/v1/getMetrics"))
         .andExpect(status().isOk())
         .andExpect(
             
MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
-        .andExpect(jsonPath("$.metrics.eventReceived").value(1))
-        .andExpect(jsonPath("$.metrics.eventAccepted").value(1))
-        .andExpect(jsonPath("$.metrics.eventRejected").value(0))
-        .andExpect(jsonPath("$.metrics.eventAvgTime").value(5.0))
-        .andExpect(jsonPath("$.metrics.actorReceived").value(1))
-        .andExpect(jsonPath("$.metrics.actorAccepted").value(1))
-        .andExpect(jsonPath("$.metrics.actorRejected").value(0))
-        .andExpect(jsonPath("$.metrics.actorAvgTime").value(5.0))
-        .andExpect(jsonPath("$.metrics.repositoryReceived").value(1))
-        .andExpect(jsonPath("$.metrics.repositoryAccepted").value(1))
-        .andExpect(jsonPath("$.metrics.repositoryRejected").value(0))
-        .andExpect(jsonPath("$.metrics.repositoryAvgTime").value(5.0))
-        .andExpect(jsonPath("$.metrics.sagaBeginCounter").value(1))
-        .andExpect(jsonPath("$.metrics.sagaEndCounter").value(1))
-        .andExpect(jsonPath("$.metrics.sagaAvgTime").value(5.0))
-        .andExpect(jsonPath("$.metrics.committed").value(1))
-        .andExpect(jsonPath("$.metrics.compensated").value(1))
-        .andExpect(jsonPath("$.metrics.suspended").value(1))
+        .andExpect(jsonPath("$.getMetrics.eventReceived").value(1))
+        .andExpect(jsonPath("$.getMetrics.eventAccepted").value(1))
+        .andExpect(jsonPath("$.getMetrics.eventRejected").value(0))
+        .andExpect(jsonPath("$.getMetrics.eventAvgTime").value(5.0))
+        .andExpect(jsonPath("$.getMetrics.actorReceived").value(1))
+        .andExpect(jsonPath("$.getMetrics.actorAccepted").value(1))
+        .andExpect(jsonPath("$.getMetrics.actorRejected").value(0))
+        .andExpect(jsonPath("$.getMetrics.actorAvgTime").value(5.0))
+        .andExpect(jsonPath("$.getMetrics.repositoryReceived").value(1))
+        .andExpect(jsonPath("$.getMetrics.repositoryAccepted").value(1))
+        .andExpect(jsonPath("$.getMetrics.repositoryRejected").value(0))
+        .andExpect(jsonPath("$.getMetrics.repositoryAvgTime").value(5.0))
+        .andExpect(jsonPath("$.getMetrics.sagaBeginCounter").value(1))
+        .andExpect(jsonPath("$.getMetrics.sagaEndCounter").value(1))
+        .andExpect(jsonPath("$.getMetrics.sagaAvgTime").value(5.0))
+        .andExpect(jsonPath("$.getMetrics.committed").value(1))
+        .andExpect(jsonPath("$.getMetrics.compensated").value(1))
+        .andExpect(jsonPath("$.getMetrics.suspended").value(1))
         .andExpect(jsonPath("$.nodeType").value(TypeEnum.MASTER.name()))
         .andReturn();
   }

Reply via email to