@@ -114,55 +114,62 @@ public Map<Integer, ConnectorMessage> getConnectorMessages() {
114
114
}
115
115
116
116
public ConnectorMessage getMergedConnectorMessage () {
117
- if (mergedConnectorMessage == null ) {
118
- mergedConnectorMessage = new ConnectorMessage ();
119
- mergedConnectorMessage .setChannelId (channelId );
120
- mergedConnectorMessage .setMessageId (messageId );
121
- mergedConnectorMessage .setServerId (serverId );
122
- mergedConnectorMessage .setReceivedDate (receivedDate );
123
-
124
- Map <String , Object > sourceMap = null ;
125
- Map <String , Object > responseMap = new HashMap <String , Object >();
126
- Map <String , Object > channelMap = new HashMap <String , Object >();
127
-
128
- ConnectorMessage sourceConnectorMessage = connectorMessages .get (0 );
129
-
130
- if (sourceConnectorMessage != null ) {
131
- mergedConnectorMessage .setRaw (sourceConnectorMessage .getRaw ());
132
- mergedConnectorMessage .setProcessedRaw (sourceConnectorMessage .getProcessedRaw ());
133
- sourceMap = sourceConnectorMessage .getSourceMap ();
134
- responseMap .putAll (sourceConnectorMessage .getResponseMap ());
135
- channelMap .putAll (sourceConnectorMessage .getChannelMap ());
136
- }
137
117
138
- List <ConnectorMessage > orderedConnectorMessages = new ArrayList <ConnectorMessage >(connectorMessages .values ());
139
- Collections .sort (orderedConnectorMessages , new Comparator <ConnectorMessage >() {
140
- @ Override
141
- public int compare (ConnectorMessage m1 , ConnectorMessage m2 ) {
142
- if (m1 .getChainId () == m2 .getChainId ()) {
143
- return m1 .getOrderId () - m2 .getOrderId ();
144
- } else {
145
- return m1 .getChainId () - m2 .getChainId ();
146
- }
118
+ if (mergedConnectorMessage != null ) {
119
+ return mergedConnectorMessage ;
120
+ }
121
+
122
+ synchronized (this ) {
123
+ if (mergedConnectorMessage == null ) {
124
+ mergedConnectorMessage = new ConnectorMessage ();
125
+ mergedConnectorMessage .setChannelId (channelId );
126
+ mergedConnectorMessage .setMessageId (messageId );
127
+ mergedConnectorMessage .setServerId (serverId );
128
+ mergedConnectorMessage .setReceivedDate (receivedDate );
129
+
130
+ Map <String , Object > sourceMap = null ;
131
+ Map <String , Object > responseMap = new HashMap <String , Object >();
132
+ Map <String , Object > channelMap = new HashMap <String , Object >();
133
+
134
+ ConnectorMessage sourceConnectorMessage = connectorMessages .get (0 );
135
+
136
+ if (sourceConnectorMessage != null ) {
137
+ mergedConnectorMessage .setRaw (sourceConnectorMessage .getRaw ());
138
+ mergedConnectorMessage .setProcessedRaw (sourceConnectorMessage .getProcessedRaw ());
139
+ sourceMap = sourceConnectorMessage .getSourceMap ();
140
+ responseMap .putAll (sourceConnectorMessage .getResponseMap ());
141
+ channelMap .putAll (sourceConnectorMessage .getChannelMap ());
147
142
}
148
- });
149
143
150
- for (ConnectorMessage connectorMessage : orderedConnectorMessages ) {
151
- if (connectorMessage .getMetaDataId () > 0 ) {
152
- if (sourceMap == null ) {
153
- sourceMap = connectorMessage .getSourceMap ();
144
+ List <ConnectorMessage > orderedConnectorMessages = new ArrayList <ConnectorMessage >(connectorMessages .values ());
145
+ Collections .sort (orderedConnectorMessages , new Comparator <ConnectorMessage >() {
146
+ @ Override
147
+ public int compare (ConnectorMessage m1 , ConnectorMessage m2 ) {
148
+ if (m1 .getChainId () == m2 .getChainId ()) {
149
+ return m1 .getOrderId () - m2 .getOrderId ();
150
+ } else {
151
+ return m1 .getChainId () - m2 .getChainId ();
152
+ }
153
+ }
154
+ });
155
+
156
+ for (ConnectorMessage connectorMessage : orderedConnectorMessages ) {
157
+ if (connectorMessage .getMetaDataId () > 0 ) {
158
+ if (sourceMap == null ) {
159
+ sourceMap = connectorMessage .getSourceMap ();
160
+ }
161
+ responseMap .putAll (connectorMessage .getResponseMap ());
162
+ channelMap .putAll (connectorMessage .getChannelMap ());
154
163
}
155
- responseMap .putAll (connectorMessage .getResponseMap ());
156
- channelMap .putAll (connectorMessage .getChannelMap ());
157
164
}
165
+
166
+ mergedConnectorMessage .setSourceMap (sourceMap );
167
+ mergedConnectorMessage .setResponseMap (responseMap );
168
+ mergedConnectorMessage .setChannelMap (channelMap );
158
169
}
159
170
160
- mergedConnectorMessage .setSourceMap (sourceMap );
161
- mergedConnectorMessage .setResponseMap (responseMap );
162
- mergedConnectorMessage .setChannelMap (channelMap );
171
+ return mergedConnectorMessage ;
163
172
}
164
-
165
- return mergedConnectorMessage ;
166
173
}
167
174
168
175
public String toString () {
0 commit comments