Skip to content

Commit 9ac8589

Browse files
committed
Update encoder/decoder
1 parent 0dd526e commit 9ac8589

File tree

6 files changed

+34
-10
lines changed

6 files changed

+34
-10
lines changed

Parse/src/main/java/com/parse/ParseFile.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ protected ParseFile(Parcel source) {
240240
* Creates a new file instance from a {@link Parcel} using the given {@link ParseParcelDecoder}.
241241
* The decoder is currently unused, but it might be in the future, plus this is the pattern we
242242
* are using in parcelable classes.
243+
*
243244
* @param source the parcel
244245
* @param decoder the decoder
245246
*/

Parse/src/main/java/com/parse/ParseGeoPoint.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,16 +70,26 @@ public ParseGeoPoint(ParseGeoPoint point) {
7070
this(point.getLatitude(), point.getLongitude());
7171
}
7272

73-
7473
/**
75-
* Creates a new point instance from a Parcel {@code source}. This is used when unparceling a
74+
* Creates a new point instance from a {@link Parcel} source. This is used when unparceling a
7675
* ParseGeoPoint. Subclasses that need Parcelable behavior should provide their own
7776
* {@link android.os.Parcelable.Creator} and override this constructor.
7877
*
79-
* @param source
80-
* The recovered parcel.
78+
* @param source The recovered parcel.
8179
*/
8280
protected ParseGeoPoint(Parcel source) {
81+
this(source, ParseParcelDecoder.get());
82+
}
83+
84+
/**
85+
* Creates a new point instance from a {@link Parcel} using the given {@link ParseParcelDecoder}.
86+
* The decoder is currently unused, but it might be in the future, plus this is the pattern we
87+
* are using in parcelable classes.
88+
*
89+
* @param source the parcel
90+
* @param decoder the decoder
91+
*/
92+
ParseGeoPoint(Parcel source, ParseParcelDecoder decoder) {
8393
setLatitude(source.readDouble());
8494
setLongitude(source.readDouble());
8595
}
@@ -292,14 +302,18 @@ public int describeContents() {
292302

293303
@Override
294304
public void writeToParcel(Parcel dest, int flags) {
305+
writeToParcel(dest, ParseParcelEncoder.get());
306+
}
307+
308+
void writeToParcel(Parcel dest, ParseParcelEncoder encoder) {
295309
dest.writeDouble(latitude);
296310
dest.writeDouble(longitude);
297311
}
298312

299313
public final static Creator<ParseGeoPoint> CREATOR = new Creator<ParseGeoPoint>() {
300314
@Override
301315
public ParseGeoPoint createFromParcel(Parcel source) {
302-
return new ParseGeoPoint(source);
316+
return new ParseGeoPoint(source, ParseParcelDecoder.get());
303317
}
304318

305319
@Override

Parse/src/main/java/com/parse/ParseParcelDecoder.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ public Object decode(Parcel source) {
6262
case ParseParcelEncoder.TYPE_FILE:
6363
return new ParseFile(source, this);
6464

65+
case ParseParcelEncoder.TYPE_GEOPOINT:
66+
return new ParseGeoPoint(source, this);
67+
6568
case ParseParcelEncoder.TYPE_ACL:
6669
return new ParseACL(source, this);
6770

Parse/src/main/java/com/parse/ParseParcelEncoder.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ private static boolean isValidType(Object value) {
4141
return ParseEncoder.isValidType(value);
4242
}
4343

44-
/* package */ final static String TYPE_OBJECT = "ParseObject";
44+
/* package */ final static String TYPE_OBJECT = "Object";
4545
/* package */ final static String TYPE_POINTER = "Pointer";
4646
/* package */ final static String TYPE_DATE = "Date";
4747
/* package */ final static String TYPE_BYTES = "Bytes";
@@ -53,7 +53,8 @@ private static boolean isValidType(Object value) {
5353
/* package */ final static String TYPE_NULL = "Null";
5454
/* package */ final static String TYPE_NATIVE = "Native";
5555
/* package */ final static String TYPE_OP = "Operation";
56-
/* package */ final static String TYPE_FILE = "ParseFile";
56+
/* package */ final static String TYPE_FILE = "File";
57+
/* package */ final static String TYPE_GEOPOINT = "GeoPoint";
5758

5859
public void encode(Object object, Parcel dest) {
5960
try {
@@ -80,7 +81,8 @@ public void encode(Object object, Parcel dest) {
8081
((ParseFile) object).writeToParcel(dest, this);
8182

8283
} else if (object instanceof ParseGeoPoint) {
83-
throw new IllegalArgumentException("Not supported yet");
84+
dest.writeString(TYPE_GEOPOINT);
85+
((ParseGeoPoint) object).writeToParcel(dest, this);
8486

8587
} else if (object instanceof ParseACL) {
8688
dest.writeString(TYPE_ACL);

Parse/src/test/java/com/parse/ParseGeoPointTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import static org.junit.Assert.*;
1919

2020
@RunWith(RobolectricTestRunner.class)
21-
@Config(constants = BuildConfig.class, sdk = 23)
21+
@Config(constants = BuildConfig.class, sdk = TestHelper.ROBOLECTRIC_SDK_VERSION)
2222
public class ParseGeoPointTest {
2323

2424
@Test

Parse/src/test/java/com/parse/ParseObjectTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,6 @@ public void testGetLongWithWrongValue() throws Exception {
497497

498498
@Test
499499
public void testParcelable() throws Exception {
500-
// TODO test ParseGeoPoint after merge
501500
ParseObject object = ParseObject.createWithoutData("Test", "objectId");
502501
object.isDeleted = true;
503502
object.put("long", 200L);
@@ -531,6 +530,9 @@ public void testParcelable() throws Exception {
531530
// File
532531
ParseFile file = new ParseFile(new ParseFile.State.Builder().url("fileUrl").build());
533532
object.put("file", file);
533+
// GeoPoint
534+
ParseGeoPoint point = new ParseGeoPoint(30d, 50d);
535+
object.put("point", point);
534536

535537
Parcel parcel = Parcel.obtain();
536538
object.writeToParcel(parcel, 0);
@@ -557,6 +559,8 @@ public void testParcelable() throws Exception {
557559
assertEquals(newRel.getKnownObjects().size(), rel.getKnownObjects().size());
558560
newRel.hasKnownObject(related);
559561
assertEquals(newObject.getParseFile("file").getUrl(), object.getParseFile("file").getUrl());
562+
assertEquals(newObject.getParseGeoPoint("point").getLatitude(),
563+
object.getParseGeoPoint("point").getLatitude(), 0);
560564
}
561565

562566
@Test

0 commit comments

Comments
 (0)