void writeToParcel(Parcel dest, ParseParcelEncoder encoder) { if (isDirty()) { throw new RuntimeException("Unable to parcel an unsaved ParseFile."); } dest.writeString(getUrl()); // Not null dest.writeString(getName()); // Not null String type = state.mimeType(); // Nullable dest.writeByte(type != null ? (byte) 1 : 0); if (type != null) { dest.writeString(type); } }
@Override protected boolean visit(Object value) { if (value instanceof ParseFile) { ParseFile file = (ParseFile) value; if (file.isDirty()) { result.set(false); } } if (value instanceof ParseObject) { ParseObject object = (ParseObject) value; if (object.getObjectId() == null) { result.set(false); } } // Continue to traverse only if it can still be serialized. return result.get(); } }.setYieldRoot(false).setTraverseParseObjects(true).traverse(this);
Task<Void> toAwait, final Task<Void> cancellationToken) { if (!isDirty()) { return Task.forResult(null);
@Override public Task<Void> then(Task<Void> task) { if (!isDirty()) { return Task.forResult(null);
@Test public void testGetters() { ParseFile file = new ParseFile(new ParseFile.State.Builder().url("http://example.com").build()); assertEquals("http://example.com", file.getUrl()); assertFalse(file.isDirty()); // Note: rest of the getters are tested in `testConstructor` }
@Test public void testParcelable() { String mime = "mime"; String name = "name"; String url = "url"; ParseFile file = new ParseFile(new ParseFile.State.Builder() .name(name) .mimeType(mime) .url(url) .build()); Parcel parcel = Parcel.obtain(); file.writeToParcel(parcel, 0); parcel.setDataPosition(0); file = ParseFile.CREATOR.createFromParcel(parcel); assertEquals(file.getName(), name); assertEquals(file.getUrl(), url); assertEquals(file.getState().mimeType(), mime); assertFalse(file.isDirty()); }