2424import org .springframework .util .StringUtils ;
2525
2626import java .nio .charset .Charset ;
27+ import java .nio .charset .StandardCharsets ;
2728import java .util .HashMap ;
2829import java .util .Map ;
2930import java .util .Objects ;
31+ import java .util .Optional ;
3032
3133/**
3234 * Description:
3335 * 1. {@code fields}为 {@code null}。发起方出现,未开始事务组
3436 * 2. {@code fields}不为空,fields.get(TracingConstants.GROUP_ID) 是 {@code empty}。参与方出现,未开启事务组。
35- * 3. TBD
3637 * Date: 19-1-28 下午4:21
3738 *
3839 * @author ujued
@@ -73,22 +74,24 @@ public static void init(Map<String, String> initFields) {
7374 if (Objects .isNull (tracingContext .fields )) {
7475 tracingContext .fields = new HashMap <>();
7576 }
76- //APP_MAP base64 解码
77- if (initFields .containsKey (TracingConstants .APP_MAP )) {
78- String appMapVal = initFields .get (TracingConstants .APP_MAP );
79- if (!appMapVal .startsWith ("{" ) || !appMapVal .contains ("{" )) {
80- initFields .put (TracingConstants .APP_MAP , tracingContext .baseString2appMap (appMapVal ));
81- }
82- }
8377 tracingContext .fields .putAll (initFields );
84- tracingContext .fields .put (TracingConstants .THREAD_ID , String .valueOf (Thread .currentThread ().getId ()));
8578 }
8679
80+ /**
81+ * 判断是否有事务组
82+ *
83+ * @return result
84+ */
8785 public boolean hasGroup () {
8886 return Objects .nonNull (fields ) && fields .containsKey (TracingConstants .GROUP_ID ) &&
8987 StringUtils .hasText (fields .get (TracingConstants .GROUP_ID ));
9088 }
9189
90+ /**
91+ * 获取事务组ID
92+ *
93+ * @return groupId
94+ */
9295 public String groupId () {
9396 if (hasGroup ()) {
9497 return fields .get (TracingConstants .GROUP_ID );
@@ -97,10 +100,21 @@ public String groupId() {
97100 return "" ;
98101 }
99102
103+ /**
104+ * 所有的字段
105+ *
106+ * @return fields
107+ */
100108 public Map <String , String > fields () {
101109 return this .fields ;
102110 }
103111
112+ /**
113+ * 添加App
114+ *
115+ * @param serviceId serviceId
116+ * @param address address
117+ */
104118 public void addApp (String serviceId , String address ) {
105119 if (hasGroup ()) {
106120 JSONObject map = JSON .parseObject (this .fields .get (TracingConstants .APP_MAP ));
@@ -114,35 +128,36 @@ public void addApp(String serviceId, String address) {
114128 raiseNonGroupException ();
115129 }
116130
117- public String appMapBase64String () {
118- if (hasGroup ()) {
119- return Base64Utils .encodeToString (this .fields .get (TracingConstants .APP_MAP ).getBytes (Charset .forName ("utf8" )));
120- }
121- raiseNonGroupException ();
122- return "" ;
123- }
124-
125- private String baseString2appMap (String base64Str ) {
126- //解码
127- if (!"" .equals (base64Str )) {
128- base64Str = Base64Utils .encodeToString (base64Str .getBytes (Charset .forName ("utf8" )));
129- }
130- return base64Str ;
131+ /**
132+ * JSON Type App map.
133+ *
134+ * @return appMap
135+ */
136+ public JSONObject appMap () {
137+ return JSON .parseObject (appMapString ());
131138 }
132139
133- public JSONObject appMap () {
140+ /**
141+ * String Type App map.
142+ *
143+ * @return appMap
144+ */
145+ public String appMapString () {
134146 if (hasGroup ()) {
135- String appMap = this .fields .get (TracingConstants .APP_MAP );
147+ String appMap = Optional . ofNullable ( this .fields .get (TracingConstants .APP_MAP )). orElse ( "" );
136148 log .debug ("App map: {}" , appMap );
137- return JSON . parseObject ( appMap ) ;
149+ return appMap ;
138150 }
139151 raiseNonGroupException ();
140- return JSON . parseObject ( "{}" ) ;
152+ return "{}" ;
141153 }
142154
155+ /**
156+ * 销毁当前线程Tracing信息
157+ */
143158 public void destroy () {
144159 if (Objects .nonNull (tracingContextThreadLocal .get ())) {
145- tracingContextThreadLocal .set ( null );
160+ tracingContextThreadLocal .remove ( );
146161 }
147162 }
148163
0 commit comments