Skip to content
This repository was archived by the owner on Dec 28, 2025. It is now read-only.

Commit 0b93692

Browse files
Linaryzhoney
authored andcommitted
Fix loss precision of long type (#30)
1 parent 2c7fc16 commit 0b93692

File tree

3 files changed

+29
-18
lines changed

3 files changed

+29
-18
lines changed

studio-api/src/main/java/com/baidu/hugegraph/studio/board/model/QueryResult.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,6 @@ public void setGraphEdges(List<Edge> edges) {
178178
this.graph.setEdges(edges);
179179
}
180180

181-
182181
public void setStyles(Map<String, Object> styles) {
183182
this.graph.setStyles(styles);
184183
}

studio-api/src/main/java/com/baidu/hugegraph/studio/board/serializer/BoardSerializer.java

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,6 @@
1919

2020
package com.baidu.hugegraph.studio.board.serializer;
2121

22-
import com.baidu.hugegraph.studio.board.model.Board;
23-
import com.baidu.hugegraph.studio.config.StudioApiConfig;
24-
import com.baidu.hugegraph.util.E;
25-
import com.baidu.hugegraph.util.Log;
26-
import com.fasterxml.jackson.databind.ObjectMapper;
27-
import com.google.common.base.Charsets;
28-
import com.google.common.base.Preconditions;
29-
import org.slf4j.Logger;
30-
import org.springframework.stereotype.Repository;
31-
3222
import java.io.DataInputStream;
3323
import java.io.DataOutputStream;
3424
import java.io.File;
@@ -42,12 +32,23 @@
4232
import java.util.concurrent.locks.ReadWriteLock;
4333
import java.util.concurrent.locks.ReentrantReadWriteLock;
4434

35+
import org.slf4j.Logger;
36+
import org.springframework.stereotype.Repository;
37+
38+
import com.baidu.hugegraph.studio.board.model.Board;
39+
import com.baidu.hugegraph.studio.config.StudioApiConfig;
40+
import com.baidu.hugegraph.util.E;
41+
import com.baidu.hugegraph.util.Log;
42+
import com.fasterxml.jackson.databind.ObjectMapper;
43+
import com.google.common.base.Charsets;
44+
import com.google.common.base.Preconditions;
45+
4546
@Repository("boardSerializer")
4647
public class BoardSerializer {
4748

4849
private static final Logger LOG = Log.logger(BoardSerializer.class);
4950

50-
private final ObjectMapper mapper = new ObjectMapper();
51+
private static final ObjectMapper MAPPER = new ObjectMapper();
5152
private StudioApiConfig configuration;
5253
private String filePath;
5354

@@ -111,7 +112,7 @@ public void save(Board board) {
111112
writeLock.lock();
112113
try (OutputStream os = new FileOutputStream(filePath);
113114
DataOutputStream out = new DataOutputStream(os)) {
114-
byte[] all = mapper.writeValueAsString(board)
115+
byte[] all = MAPPER.writeValueAsString(board)
115116
.getBytes(Charsets.UTF_8);
116117
out.writeInt(all.length);
117118
out.write(all);
@@ -140,7 +141,7 @@ public Board load() {
140141
byte[] bytes = new byte[len];
141142
LOG.debug("Read total data: {} bytes", len);
142143
input.readFully(bytes);
143-
return mapper.readValue(bytes, Board.class);
144+
return MAPPER.readValue(bytes, Board.class);
144145
} catch (IOException e) {
145146
throw new RuntimeException(String.format(
146147
"Failed to read File: '%s'", filePath), e);

studio-api/src/main/java/com/baidu/hugegraph/studio/board/service/BoardService.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import static com.baidu.hugegraph.studio.board.model.QueryResult.Type.SINGLE;
2828
import static com.baidu.hugegraph.studio.board.model.QueryResult.Type.VERTEX;
2929

30-
import java.io.IOException;
3130
import java.util.ArrayList;
3231
import java.util.Collections;
3332
import java.util.Comparator;
@@ -72,6 +71,9 @@
7271
import com.baidu.hugegraph.studio.config.StudioApiConfig;
7372
import com.baidu.hugegraph.studio.gremlin.GremlinOptimizer;
7473
import com.baidu.hugegraph.util.Log;
74+
import com.fasterxml.jackson.databind.ObjectMapper;
75+
import com.fasterxml.jackson.databind.module.SimpleModule;
76+
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
7577
import com.google.common.base.Preconditions;
7678
import com.google.common.collect.ImmutableMap;
7779
import com.google.common.collect.Lists;
@@ -89,10 +91,15 @@ public class BoardService {
8991
// Vis can deal with about 200 edges.
9092
private static final int MAX_EDGES_PER_VERTEX = 200;
9193
private static final StudioApiConfig conf = StudioApiConfig.getInstance();
92-
94+
private static final ObjectMapper MAPPER = new ObjectMapper();
9395
private static volatile HugeClient client = null;
9496

9597
static {
98+
SimpleModule simpleModule = new SimpleModule();
99+
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
100+
simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
101+
MAPPER.registerModule(simpleModule);
102+
96103
// Add shutdown hook to close client
97104
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
98105
try {
@@ -152,7 +159,9 @@ public Response executeGremlin(Card card) {
152159
board.setResult(queryResult);
153160
boardSerializer.save(board);
154161

155-
return Response.status(200).entity(queryResult).build();
162+
return Response.status(200)
163+
.entity(MAPPER.writeValueAsString(queryResult))
164+
.build();
156165
} catch (Exception e) {
157166
QueryResult result = new QueryResult();
158167
result.setMessage(e.getMessage());
@@ -304,7 +313,9 @@ public Response adjacentVertices(
304313
vertexId, label);
305314
boardSerializer.save(board);
306315

307-
return Response.status(200).entity(resultNew).build();
316+
return Response.status(200)
317+
.entity(MAPPER.writeValueAsString(resultNew))
318+
.build();
308319
} catch (Exception e) {
309320
QueryResult result = new QueryResult();
310321
result.setMessage(e.getMessage());

0 commit comments

Comments
 (0)