From 36ebcb81634af036eb7b14f5585ec8faf7c5b8a7 Mon Sep 17 00:00:00 2001
From: FUNKYE <364176773@qq.com>
Date: Mon, 22 Feb 2021 03:00:48 -0600
Subject: [PATCH] optimize: added interface to get current transaction role
 (#3533)

---
 changes/1.5.0.md                                         | 3 ++-
 changes/en-us/1.5.0.md                                   | 7 ++++---
 .../io/seata/saga/engine/mock/MockGlobalTransaction.java | 7 +++++++
 .../java/io/seata/tm/api/DefaultGlobalTransaction.java   | 5 +++++
 tm/src/main/java/io/seata/tm/api/GlobalTransaction.java  | 9 +++++++++
 5 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/changes/1.5.0.md b/changes/1.5.0.md
index 70cd02f22..9cc7d4209 100644
--- a/changes/1.5.0.md
+++ b/changes/1.5.0.md
@@ -25,7 +25,7 @@ Seata 鏄竴娆惧紑婧愮殑鍒嗗竷寮忎簨鍔¤В鍐虫柟妗堬紝鎻愪緵楂樻€ц兘鍜岀畝鍗�
   - [[#3427](https://github.com/seata/seata/pull/3427)] 娣诲姞鍒嗗竷寮忛攣鎺ュ彛
   - [[#3443](https://github.com/seata/seata/pull/3443)] 灏哷seata-server`鐨勬棩蹇楀彂閫佸埌`logstash`鎴朻kafka`涓紝鍐嶅瓨鍏ElasticSearch`
   - [[#3486](https://github.com/seata/seata/pull/3486)] Metrics澧炲姞浜嬪姟鍒嗙粍灞炴€�
-  
+
 
   ### bugfix锛�
 
@@ -63,6 +63,7 @@ Seata 鏄竴娆惧紑婧愮殑鍒嗗竷寮忎簨鍔¤В鍐虫柟妗堬紝鎻愪緵楂樻€ц兘鍜岀畝鍗�
   - [[#3415](https://github.com/seata/seata/pull/3415)] 浼樺寲 maven clean 鎻掍欢鍙竻闄� distribution 鐩綍
   - [[#3316](https://github.com/seata/seata/pull/3316)] 浼樺寲璇诲彇閰嶇疆鍊兼椂锛屽睘鎬ean鍙兘鏈垵濮嬪寲  
   - [[#3420](https://github.com/seata/seata/pull/3420)] 浼樺寲鏋氫妇绫诲苟娣诲姞鍗曞厓娴嬭瘯
+  - [[#3533](https://github.com/seata/seata/pull/3533)] 娣诲姞鑾峰彇褰撳墠瀵瑰簲浜嬪姟瑙掕壊鎺ュ彛
   - [[#3436](https://github.com/seata/seata/pull/3436)] 浼樺寲SQLType绫讳腑鐨勯敊鍒瓧
   - [[#3439](https://github.com/seata/seata/pull/3439)] 璋冩暣springApplicationContextProvider鐨勯『搴忎互浣垮緱浠栧彲浠ュ湪xml鐨刡ean涔嬪墠琚皟鐢�
   - [[#3156](https://github.com/seata/seata/pull/3156)] 浼樺寲SpringProxyUtils.findTargetClass鐨勯€昏緫
diff --git a/changes/en-us/1.5.0.md b/changes/en-us/1.5.0.md
index 048729d8d..38d6e6614 100644
--- a/changes/en-us/1.5.0.md
+++ b/changes/en-us/1.5.0.md
@@ -65,6 +65,7 @@
   - [[#3415](https://github.com/seata/seata/pull/3415)] optimize maven clean plugin to clear the distribution directory 	
   - [[#3316](https://github.com/seata/seata/pull/3316)] optimize the property bean may not be initialized while reading config value	
   - [[#3420](https://github.com/seata/seata/pull/3420)] optimize enumerated classes and add unit tests	
+  - [[#3533](https://github.com/seata/seata/pull/3533)] added interface to get current transaction role
   - [[#3436](https://github.com/seata/seata/pull/3436)] optimize typo in SQLType class 	
   - [[#3439](https://github.com/seata/seata/pull/3439)] adjust the order of springApplicationContextProvider
   - [[#3156](https://github.com/seata/seata/pull/3156)] optimize the logic of SpringProxyUtils.findTargetClass
@@ -77,11 +78,11 @@
                                                         
 
   
-  
+
   ### test	
 
   - [[#3381](https://github.com/seata/seata/pull/3381)] test case for tmClient	
-  
+
 
   Thanks to these contributors for their code commits. Please report an unintended omission.  	
 
@@ -107,7 +108,7 @@
   - [github-ganyu](https://github.com/github-ganyu)
   - [xuande](https://github.com/xuande)
   - [tanggen](https://github.com/tanggen)
-  
+
 
   Also, we receive many valuable issues, questions and advices from our community. Thanks for you all.	
 
diff --git a/test/src/test/java/io/seata/saga/engine/mock/MockGlobalTransaction.java b/test/src/test/java/io/seata/saga/engine/mock/MockGlobalTransaction.java
index 14d926f7f..4d112b091 100644
--- a/test/src/test/java/io/seata/saga/engine/mock/MockGlobalTransaction.java
+++ b/test/src/test/java/io/seata/saga/engine/mock/MockGlobalTransaction.java
@@ -20,6 +20,7 @@ import io.seata.core.exception.TransactionException;
 import io.seata.core.model.GlobalStatus;
 import io.seata.saga.engine.sequence.SpringJvmUUIDSeqGenerator;
 import io.seata.tm.api.GlobalTransaction;
+import io.seata.tm.api.GlobalTransactionRole;
 import io.seata.tm.api.transaction.SuspendedResourcesHolder;
 
 /**
@@ -102,4 +103,10 @@ public class MockGlobalTransaction implements GlobalTransaction {
     public GlobalStatus getLocalStatus() {
         return status;
     }
+
+    @Override
+    public GlobalTransactionRole getGlobalTransactionRole() {
+        return null;
+    }
+
 }
diff --git a/tm/src/main/java/io/seata/tm/api/DefaultGlobalTransaction.java b/tm/src/main/java/io/seata/tm/api/DefaultGlobalTransaction.java
index 25d753243..ccda35263 100644
--- a/tm/src/main/java/io/seata/tm/api/DefaultGlobalTransaction.java
+++ b/tm/src/main/java/io/seata/tm/api/DefaultGlobalTransaction.java
@@ -243,6 +243,11 @@ public class DefaultGlobalTransaction implements GlobalTransaction {
         return status;
     }
 
+    @Override
+    public GlobalTransactionRole getGlobalTransactionRole() {
+        return role;
+    }
+
     private void assertXIDNotNull() {
         if (xid == null) {
             throw new IllegalStateException();
diff --git a/tm/src/main/java/io/seata/tm/api/GlobalTransaction.java b/tm/src/main/java/io/seata/tm/api/GlobalTransaction.java
index 959e1d50c..666f748bd 100644
--- a/tm/src/main/java/io/seata/tm/api/GlobalTransaction.java
+++ b/tm/src/main/java/io/seata/tm/api/GlobalTransaction.java
@@ -123,4 +123,13 @@ public interface GlobalTransaction {
      * @see GlobalStatus
      */
     GlobalStatus getLocalStatus();
+
+    /**
+     * get global transaction role.
+     *
+     * @return global transaction Role.
+     * @see GlobalTransactionRole
+     */
+    GlobalTransactionRole getGlobalTransactionRole();
+
 }
-- 
GitLab