Skip to content

Commit c08b553

Browse files
committed
[pinpoint-apm#9037] Refactor JsonSerializer
1 parent 97557c8 commit c08b553

File tree

10 files changed

+64
-103
lines changed

10 files changed

+64
-103
lines changed

commons-server/pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,18 @@
102102
<groupId>org.apache.commons</groupId>
103103
<artifactId>commons-lang3</artifactId>
104104
</dependency>
105+
<dependency>
106+
<groupId>com.fasterxml.jackson.core</groupId>
107+
<artifactId>jackson-core</artifactId>
108+
</dependency>
109+
<dependency>
110+
<groupId>com.fasterxml.jackson.core</groupId>
111+
<artifactId>jackson-annotations</artifactId>
112+
</dependency>
113+
<dependency>
114+
<groupId>com.fasterxml.jackson.core</groupId>
115+
<artifactId>jackson-databind</artifactId>
116+
</dependency>
105117

106118
<!-- commons module may be used at agent so there will be problems. you should set optional -->
107119
<dependency>

commons-server/src/main/java/com/navercorp/pinpoint/common/server/util/AgentLifeCycleState.java

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,27 @@
1616

1717
package com.navercorp.pinpoint.common.server.util;
1818

19+
import com.fasterxml.jackson.annotation.JsonFormat;
20+
import com.navercorp.pinpoint.common.util.apache.IntHashMap;
21+
22+
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
1923
public enum AgentLifeCycleState {
20-
RUNNING((short)100, "Running"),
21-
SHUTDOWN((short)200, "Shutdown"),
22-
UNEXPECTED_SHUTDOWN((short)201, "Unexpected Shutdown"),
23-
DISCONNECTED((short)300, "Disconnected"),
24-
UNKNOWN((short)-1, "Unknown");
24+
RUNNING((short) 100, "Running"),
25+
SHUTDOWN((short) 200, "Shutdown"),
26+
UNEXPECTED_SHUTDOWN((short) 201, "Unexpected Shutdown"),
27+
DISCONNECTED((short) 300, "Disconnected"),
28+
UNKNOWN((short) -1, "Unknown");
29+
30+
private static final IntHashMap<AgentLifeCycleState> MAPPING = initializeCodeMapping();
2531

26-
private final short code;
32+
private final short code;
2733
private final String desc;
2834

2935
AgentLifeCycleState(short code, String desc) {
3036
this.code = code;
3137
this.desc = desc;
3238
}
33-
39+
3440
public short getCode() {
3541
return this.code;
3642
}
@@ -43,12 +49,19 @@ public String getDesc() {
4349
public String toString() {
4450
return this.desc;
4551
}
46-
47-
public static AgentLifeCycleState getStateByCode(short code) {
52+
53+
private static IntHashMap<AgentLifeCycleState> initializeCodeMapping() {
54+
IntHashMap<AgentLifeCycleState> codeMap = new IntHashMap<>();
4855
for (AgentLifeCycleState state : AgentLifeCycleState.values()) {
49-
if (state.code == code) {
50-
return state;
51-
}
56+
codeMap.put(state.getCode(), state);
57+
}
58+
return codeMap;
59+
}
60+
61+
public static AgentLifeCycleState getStateByCode(short code) {
62+
AgentLifeCycleState state = MAPPING.get(code);
63+
if (state != null) {
64+
return state;
5265
}
5366
return UNKNOWN;
5467
}

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/link/LinkInfo.java

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,45 +15,48 @@
1515
*/
1616
package com.navercorp.pinpoint.web.applicationmap.link;
1717

18+
import com.fasterxml.jackson.annotation.JsonProperty;
19+
1820
/**
1921
* @author minwoo.jung<[email protected]>
2022
*
2123
*/
2224
public class LinkInfo {
23-
private String linkName;
24-
private String linkUrl;
25-
public LinkType linkType;
25+
private final String linkName;
26+
private final String linkUrl;
27+
private final LinkType linkType;
2628

27-
LinkInfo(String linkName, String linkUrl, LinkType linkType) {
29+
public LinkInfo(String linkName, String linkUrl, LinkType linkType) {
2830
this.linkName = linkName;
2931
this.linkUrl = linkUrl;
3032
this.linkType = linkType;
3133
}
3234

35+
@JsonProperty("linkName")
3336
public String getLinkName() {
3437
return linkName;
3538
}
3639

37-
public void setLinkName(String linkName) {
38-
this.linkName = linkName;
39-
}
40-
40+
@JsonProperty("linkURL")
4141
public String getLinkUrl() {
4242
return linkUrl;
4343
}
44-
45-
public void setLinkUrl(String linkUrl) {
46-
this.linkUrl = linkUrl;
47-
}
48-
49-
public String getLinktype() {
44+
45+
46+
@JsonProperty("linkType")
47+
public String getLinkType() {
5048
return linkType.getName();
5149
}
52-
53-
public void setLinkType(LinkType linkType) {
54-
this.linkType = linkType;
50+
51+
@Override
52+
public String toString() {
53+
return "LinkInfo{" +
54+
"linkName='" + linkName + '\'' +
55+
", linkUrl='" + linkUrl + '\'' +
56+
", linkType=" + linkType +
57+
'}';
5558
}
56-
59+
5760
public enum LinkType {
5861
ATAG("aTag"),
5962
BUTTON("button");

web/src/main/java/com/navercorp/pinpoint/web/applicationmap/nodes/ServerInstance.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
2020
import com.navercorp.pinpoint.common.server.util.AgentLifeCycleState;
21-
import com.navercorp.pinpoint.web.view.AgentLifeCycleStateSerializer;
2221
import com.navercorp.pinpoint.web.view.ServerInstanceSerializer;
2322
import com.navercorp.pinpoint.web.vo.AgentInfo;
2423
import com.navercorp.pinpoint.web.vo.AgentStatus;
@@ -43,7 +42,6 @@ public class ServerInstance {
4342

4443
private final ServerType serverType;
4544

46-
@JsonSerialize(using = AgentLifeCycleStateSerializer.class)
4745
private final AgentLifeCycleState status;
4846

4947
public ServerInstance(AgentInfo agentInfo) {

web/src/main/java/com/navercorp/pinpoint/web/view/AgentInfoSerializer.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class AgentInfoSerializer extends JsonSerializer<AgentInfo> {
4040
private List<MatcherGroup> matcherGroupList;
4141

4242
@Autowired
43-
private ServiceTypeRegistryService serviceTypeRegistryService;
43+
ServiceTypeRegistryService serviceTypeRegistryService;
4444

4545
@Override
4646
public void serialize(AgentInfo agentInfo, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
@@ -75,11 +75,7 @@ public void serialize(AgentInfo agentInfo, JsonGenerator jgen, SerializerProvide
7575
for (MatcherGroup matcherGroup : matcherGroupList) {
7676
if (matcherGroup.ismatchingType(agentInfo)) {
7777
LinkInfo linkInfo = matcherGroup.makeLinkInfo(agentInfo);
78-
jgen.writeStartObject();
79-
jgen.writeStringField("linkName", linkInfo.getLinkName());
80-
jgen.writeStringField("linkURL", linkInfo.getLinkUrl());
81-
jgen.writeStringField("linkType", linkInfo.getLinktype());
82-
jgen.writeEndObject();
78+
jgen.writeObject(linkInfo);
8379
}
8480
}
8581

web/src/main/java/com/navercorp/pinpoint/web/view/AgentLifeCycleStateSerializer.java

Lines changed: 0 additions & 42 deletions
This file was deleted.

web/src/main/java/com/navercorp/pinpoint/web/view/ServerInstanceListSerializer.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,7 @@ public void serialize(ServerInstanceList serverInstanceList, JsonGenerator jgen,
6161
for (MatcherGroup matcherGroup : matcherGroupList) {
6262
if (matcherGroup.ismatchingType(entry.getValue().get(0))) {
6363
LinkInfo linkInfo = matcherGroup.makeLinkInfo(entry.getValue().get(0));
64-
jgen.writeStartObject();
65-
jgen.writeStringField("linkName", linkInfo.getLinkName());
66-
jgen.writeStringField("linkURL", linkInfo.getLinkUrl());
67-
jgen.writeStringField("linkType", linkInfo.getLinktype());
68-
jgen.writeEndObject();
64+
jgen.writeObject(linkInfo);
6965
}
7066
}
7167

web/src/main/java/com/navercorp/pinpoint/web/view/ServerInstanceSerializer.java

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.fasterxml.jackson.databind.SerializerProvider;
2323
import com.navercorp.pinpoint.loader.service.ServiceTypeRegistryService;
2424
import com.navercorp.pinpoint.common.trace.ServiceType;
25-
import com.navercorp.pinpoint.common.server.util.AgentLifeCycleState;
2625
import com.navercorp.pinpoint.web.applicationmap.nodes.ServerInstance;
2726

2827
import org.springframework.stereotype.Component;
@@ -39,11 +38,8 @@ public class ServerInstanceSerializer extends JsonSerializer<ServerInstance> {
3938

4039
private final ServiceTypeRegistryService serviceTypeRegistryService;
4140

42-
private final AgentLifeCycleStateSerializer agentLifeCycleStateSerializer;
43-
44-
public ServerInstanceSerializer(ServiceTypeRegistryService serviceTypeRegistryService, AgentLifeCycleStateSerializer agentLifeCycleStateSerializer) {
41+
public ServerInstanceSerializer(ServiceTypeRegistryService serviceTypeRegistryService) {
4542
this.serviceTypeRegistryService = Objects.requireNonNull(serviceTypeRegistryService, "serviceTypeRegistryService");
46-
this.agentLifeCycleStateSerializer = Objects.requireNonNull(agentLifeCycleStateSerializer, "agentLifeCycleStateSerializer");
4743
}
4844

4945
@Override
@@ -58,17 +54,11 @@ public void serialize(ServerInstance serverInstance, JsonGenerator jgen, Seriali
5854
jgen.writeStringField("agentName", serverInstance.getAgentName());
5955
jgen.writeStringField("serviceType", serviceType.getName());
6056

61-
jgen.writeFieldName("status");
62-
write(serverInstance.getStatus(), jgen, provider);
63-
57+
jgen.writeObjectField("status", serverInstance.getStatus());
6458
jgen.writeEndObject();
6559

6660
}
6761

68-
public void write(AgentLifeCycleState value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
69-
this.agentLifeCycleStateSerializer.serialize(value, jgen, provider);
70-
}
71-
7262

7363
public boolean hasInspector(ServiceType serviceType) {
7464
if (serviceType.isWas()) {
@@ -78,5 +68,4 @@ public boolean hasInspector(ServiceType serviceType) {
7868
}
7969
}
8070

81-
8271
}

web/src/main/java/com/navercorp/pinpoint/web/vo/AgentStatus.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@
1616

1717
package com.navercorp.pinpoint.web.vo;
1818

19-
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
2019
import com.navercorp.pinpoint.common.server.util.AgentLifeCycleState;
21-
import com.navercorp.pinpoint.web.view.AgentLifeCycleStateSerializer;
2220

2321
import java.util.Objects;
2422

@@ -33,7 +31,6 @@ public class AgentStatus {
3331

3432
private long eventTimestamp;
3533

36-
@JsonSerialize(using = AgentLifeCycleStateSerializer.class)
3734
private final AgentLifeCycleState state;
3835

3936
public AgentStatus(String agentId, AgentLifeCycleState state, long eventTimestamp) {

web/src/test/java/com/navercorp/pinpoint/web/view/ServerInstanceListSerializerTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,8 @@ public TestHandlerInstantiator() {
9696
public JsonSerializer<?> serializerInstance(SerializationConfig config, Annotated annotated, Class<?> keyDeserClass) {
9797
if (annotated.getName().equals("com.navercorp.pinpoint.web.applicationmap.nodes.ServerInstance")) {
9898
final ServiceTypeRegistryService serviceTypeRegistryService = mockServiceTypeRegistryService();
99-
final AgentLifeCycleStateSerializer agentLifeCycleStateSerializer = new AgentLifeCycleStateSerializer();
10099

101-
return new ServerInstanceSerializer(serviceTypeRegistryService, agentLifeCycleStateSerializer);
100+
return new ServerInstanceSerializer(serviceTypeRegistryService);
102101
}
103102
return null;
104103
}

0 commit comments

Comments
 (0)