@Override public void read(JSONObject object) throws JSONException { setLibVer(object.optString(LIB_VER, null)); setEpoch(object.optString(EPOCH, null)); setSeq(JSONUtils.readLong(object, SEQ)); if (object.has(INSTALL_ID)) { setInstallId(UUID.fromString(object.getString(INSTALL_ID))); } }
private static void writePropertyValue(JSONStringer writer, Object value) throws JSONException { if (value == null) { JSONUtils.write(writer, PROPERTY_TYPE, PROPERTY_TYPE_CLEAR); } else if (value instanceof Boolean) { JSONUtils.write(writer, PROPERTY_TYPE, PROPERTY_TYPE_BOOLEAN); JSONUtils.write(writer, PROPERTY_VALUE, value); } else if (value instanceof Number) { JSONUtils.write(writer, PROPERTY_TYPE, PROPERTY_TYPE_NUMBER); JSONUtils.write(writer, PROPERTY_VALUE, value); } else if (value instanceof Date) { JSONUtils.write(writer, PROPERTY_TYPE, PROPERTY_TYPE_DATETIME); JSONUtils.write(writer, PROPERTY_VALUE, JSONDateUtils.toString((Date) value)); } else if (value instanceof String) { JSONUtils.write(writer, PROPERTY_TYPE, PROPERTY_TYPE_STRING); JSONUtils.write(writer, PROPERTY_VALUE, value); } else { throw new JSONException("Invalid value type"); } }
@Override public void write(JSONStringer writer) throws JSONException { JSONUtils.write(writer, TYPE, getType()); JSONUtils.write(writer, MESSAGE, getMessage()); JSONUtils.write(writer, STACK_TRACE, getStackTrace()); JSONUtils.writeArray(writer, FRAMES, getFrames()); JSONUtils.writeArray(writer, INNER_EXCEPTIONS, getInnerExceptions()); JSONUtils.write(writer, WRAPPER_SDK_NAME, getWrapperSdkName()); }
@Override public void write(JSONStringer writer) throws JSONException { JSONUtils.writeStringArray(writer, TICKET_KEYS, getTicketKeys()); JSONUtils.write(writer, DEV_MAKE, getDevMake()); JSONUtils.write(writer, DEV_MODEL, getDevModel()); }
@Test public void readKeyNotExists() throws JSONException { /* Create an empty JSON object. */ JSONObject object = new JSONObject("{}"); /* Verify. */ assertNull(JSONUtils.readInteger(object, "key")); assertNull(JSONUtils.readLong(object, "key")); assertNull(JSONUtils.readBoolean(object, "key")); assertNull(JSONUtils.readMap(object, "key")); assertNull(JSONUtils.readArray(object, "key", new MockLogFactory())); }
@Test public void writeReadObject() throws JSONException { /* Write to JSON object. */ JSONStringer writer = new JSONStringer(); writer.object(); JSONUtils.write(writer, "int", 1); JSONUtils.write(writer, "long", 1000000000L); JSONUtils.write(writer, "boolean", true); writer.endObject(); /* Convert to string. */ String json = writer.toString(); assertNotNull(json); /* Read a JSON object and verify. */ JSONObject object = new JSONObject(json); assertEquals(Integer.valueOf(1), JSONUtils.readInteger(object, "int")); assertEquals(Long.valueOf(1000000000L), JSONUtils.readLong(object, "long")); assertEquals(true, JSONUtils.readBoolean(object, "boolean")); }
@Override public void read(JSONObject object) throws JSONException { super.read(object); setId(UUID.fromString(object.getString(ID))); setProcessId(JSONUtils.readInteger(object, PROCESS_ID)); setProcessName(object.optString(PROCESS_NAME, null)); setParentProcessId(JSONUtils.readInteger(object, PARENT_PROCESS_ID)); setParentProcessName(object.optString(PARENT_PROCESS_NAME, null)); setErrorThreadId(JSONUtils.readLong(object, ERROR_THREAD_ID)); setErrorThreadName(object.optString(ERROR_THREAD_NAME, null)); setFatal(JSONUtils.readBoolean(object, FATAL)); setAppLaunchTimestamp(JSONDateUtils.toDate(object.getString(APP_LAUNCH_TIMESTAMP))); setArchitecture(object.optString(ARCHITECTURE, null)); }
@Test public void writeReadArray() throws JSONException { /* Generate mock logs. */ MockLog firstLog = AndroidTestUtils.generateMockLog(); MockLog secondLog = AndroidTestUtils.generateMockLog(); /* Create a test list. */ final List<MockLog> list = new ArrayList<>(); list.add(firstLog); list.add(secondLog); /* Write to JSON object. */ JSONStringer writer = new JSONStringer(); writer.object(); JSONUtils.writeArray(writer, "list", list); writer.endObject(); /* Convert to string. */ String json = writer.toString(); assertNotNull(json); /* Read a JSON object and verify. */ JSONObject object = new JSONObject(json); assertEquals(list, JSONUtils.readArray(object, "list", new MockLogFactory())); /* Test null value. */ writer = new JSONStringer(); JSONUtils.writeArray(writer, "null", null); assertNull(writer.toString()); }
@Test public void writeReadMap() throws JSONException { /* Create a test map. */ final Map<String, String> map = new HashMap<>(); map.put("key", "value"); /* Write to JSON object. */ JSONStringer writer = new JSONStringer(); writer.object(); JSONUtils.writeMap(writer, "map", map); writer.endObject(); /* Convert to string. */ String json = writer.toString(); assertNotNull(json); /* Read a JSON object and verify. */ JSONObject object = new JSONObject(json); assertEquals(map, JSONUtils.readMap(object, "map")); }
@Test public void writeReadStringArray() throws JSONException { /* Create a test list. */ final List<String> list = new ArrayList<>(); list.add("FIRST"); list.add("SECOND"); /* Write to JSON object. */ JSONStringer writer = new JSONStringer(); writer.object(); JSONUtils.writeStringArray(writer, "list", list); writer.endObject(); /* Convert to string. */ String json = writer.toString(); assertNotNull(json); /* Read a JSON object and verify. */ JSONObject object = new JSONObject(json); assertEquals(list, JSONUtils.readStringArray(object, "list")); assertNull(JSONUtils.readStringArray(object, "missing")); /* Test null value. */ writer = new JSONStringer(); JSONUtils.writeStringArray(writer, "null", null); assertNull(writer.toString()); }
@Override public void write(JSONStringer writer) throws JSONException { super.write(writer); writer.key(ID).value(getId()); JSONUtils.writeArray(writer, TYPED_PROPERTIES, getTypedProperties()); }
@Override public void read(JSONObject object) throws JSONException { setClassName(object.optString(CLASS_NAME, null)); setMethodName(object.optString(METHOD_NAME, null)); setLineNumber(JSONUtils.readInteger(object, LINE_NUMBER)); setFileName(object.optString(FILE_NAME, null)); }
@Override public void read(JSONObject object) throws JSONException { setId(object.getLong(ID)); setName(object.optString(NAME, null)); setFrames(JSONUtils.readArray(object, FRAMES, StackFrameFactory.getInstance())); }
@Override public void read(JSONObject object) throws JSONException { setTicketKeys(JSONUtils.readStringArray(object, TICKET_KEYS)); setDevMake(object.optString(DEV_MAKE, null)); setDevModel(object.optString(DEV_MODEL, null)); }
@Override public void read(JSONObject object) throws JSONException { super.read(object); setProperties(JSONUtils.readMap(object, PROPERTIES)); }
@Override public void write(JSONStringer writer) throws JSONException { super.write(writer); JSONUtils.writeStringArray(writer, SERVICES, getServices()); }
@Override public void write(JSONStringer writer) throws JSONException { super.write(writer); JSONUtils.writeMap(writer, PROPERTIES, getProperties()); }
@Override public void write(JSONStringer writer) throws JSONException { super.write(writer); if (getException() != null) { writer.key(EXCEPTION).object(); exception.write(writer); writer.endObject(); } JSONUtils.writeArray(writer, THREADS, getThreads()); }
@Override public void read(JSONObject object) throws JSONException { super.read(object); setSdkName(object.getString(SDK_NAME)); setSdkVersion(object.getString(SDK_VERSION)); setModel(object.getString(MODEL)); setOemName(object.getString(OEM_NAME)); setOsName(object.getString(OS_NAME)); setOsVersion(object.getString(OS_VERSION)); setOsBuild(object.optString(OS_BUILD, null)); setOsApiLevel(JSONUtils.readInteger(object, OS_API_LEVEL)); setLocale(object.getString(LOCALE)); setTimeZoneOffset(object.getInt(TIME_ZONE_OFFSET)); setScreenSize(object.getString(SCREEN_SIZE)); setAppVersion(object.getString(APP_VERSION)); setCarrierName(object.optString(CARRIER_NAME, null)); setCarrierCountry(object.optString(CARRIER_COUNTRY, null)); setAppBuild(object.getString(APP_BUILD)); setAppNamespace(object.optString(APP_NAMESPACE, null)); }
@Override public void read(JSONObject object) throws JSONException { setType(object.optString(TYPE, null)); setMessage(object.optString(MESSAGE, null)); setStackTrace(object.optString(STACK_TRACE, null)); setFrames(JSONUtils.readArray(object, FRAMES, StackFrameFactory.getInstance())); setInnerExceptions(JSONUtils.readArray(object, INNER_EXCEPTIONS, ExceptionFactory.getInstance())); setWrapperSdkName(object.optString(WRAPPER_SDK_NAME, null)); }