diff --git a/src/main/java/br/ufrgs/inf/prosoft/jsonserialiser/JSONSerialiser.java b/src/main/java/br/ufrgs/inf/prosoft/jsonserialiser/JSONSerialiser.java
index a7ad54b..2a1f2e8 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/jsonserialiser/JSONSerialiser.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/jsonserialiser/JSONSerialiser.java
@@ -109,6 +109,9 @@ public class JSONSerialiser {
private List<Field> getAllFields(List<Field> fields, Class<?> type) {
for (Field field : type.getDeclaredFields()) {
+ if (fields.contains(field)) {
+ continue;
+ }
if (!field.getName().startsWith("ajc$tjp_")) {
fields.add(field);
}
@@ -165,6 +168,24 @@ public class JSONSerialiser {
this.writer.append("\"").append(String.valueOf(date.getTime())).append("\"");
return;
}
+ String serialiseInternals = System.getenv("TRACER_SERIALISE_INTERNALS");
+ if (serialiseInternals == null) {
+ serialiseInternals = "true";
+ }
+ if (serialiseInternals.equals("false")) {
+ Package objectPackage = object.getClass().getPackage();
+ String objectPackageName = objectPackage != null ? objectPackage.getName() : "";
+ if (objectPackageName.startsWith("java.")
+ || objectPackageName.startsWith("javax.")
+ || objectPackageName.startsWith("org.ietf.")
+ || objectPackageName.startsWith("org.omg.")
+ || objectPackageName.startsWith("org.w3c.")
+ || objectPackageName.startsWith("org.xml.")
+ || object.getClass().getClassLoader() == null) {
+ this.writer.append("\"").append(String.valueOf(object)).append("\"");
+ return;
+ }
+ }
if (visited.stream().anyMatch((visited) -> (visited == object))) {
try {
this.writer.append("{\"r\":\"").append(object.getClass().getName() + "@" + object.hashCode()).append("\"}");
@@ -178,10 +199,11 @@ public class JSONSerialiser {
serialiseBean(object);
} catch (ConcurrentModificationException exception) {
System.err.println("[JSONSerialiser] ConcurrentModificationException");
+ this.writer.append("{\"e\":\"JSON_CONCURRENT_MODIFICATION\"}");
} catch (Exception exception) {
System.err.println("[JSONSerialiser] wrap exception: " + exception);
exception.printStackTrace();
- this.writer.append("\"").append("JSON_SERIALISE_EXCEPTION").append("\"");
+ this.writer.append("{\"e\":\"JSON_SERIALISE_EXCEPTION\"}");
}
}