Skip to content

Commit 4f5f0da

Browse files
* Properly generate Parcealables for Media & Contribution
1 parent 6416314 commit 4f5f0da

File tree

2 files changed

+122
-97
lines changed

2 files changed

+122
-97
lines changed

app/src/main/java/fr/free/nrw/commons/Media.java

+71-66
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,6 @@
3232
public class Media implements Parcelable {
3333

3434
public static final Media EMPTY = new Media("");
35-
public static Creator<Media> CREATOR = new Creator<Media>() {
36-
@Override
37-
public Media createFromParcel(Parcel parcel) {
38-
return new Media(parcel);
39-
}
40-
41-
@Override
42-
public Media[] newArray(int i) {
43-
return new Media[0];
44-
}
45-
};
4635

4736
// Primary metadata fields
4837
@Nullable
@@ -111,27 +100,6 @@ public Media(Uri localUri, String imageUrl, String filename, String description,
111100
this.descriptions = new HashMap<>();
112101
}
113102

114-
@SuppressWarnings("unchecked")
115-
public Media(Parcel in) {
116-
localUri = in.readParcelable(Uri.class.getClassLoader());
117-
thumbUrl = in.readString();
118-
imageUrl = in.readString();
119-
filename = in.readString();
120-
description = in.readString();
121-
dataLength = in.readLong();
122-
dateCreated = (Date) in.readSerializable();
123-
dateUploaded = (Date) in.readSerializable();
124-
creator = in.readString();
125-
tags = (HashMap<String, String>) in.readSerializable();
126-
width = in.readInt();
127-
height = in.readInt();
128-
license = in.readString();
129-
if (categories != null) {
130-
in.readStringList(categories);
131-
}
132-
descriptions = in.readHashMap(ClassLoader.getSystemClassLoader());
133-
}
134-
135103
/**
136104
* Creating Media object from MWQueryPage.
137105
* Earlier only basic details were set for the media object but going forward,
@@ -503,40 +471,6 @@ public String getDescription(String preferredLanguage) {
503471
}
504472
}
505473

506-
/**
507-
* Method of Parcelable interface
508-
* @return zero
509-
*/
510-
@Override
511-
public int describeContents() {
512-
return 0;
513-
}
514-
515-
/**
516-
* Creates a way to transfer information between two or more
517-
* activities.
518-
* @param parcel Instance of Parcel
519-
* @param flags Parcel flag
520-
*/
521-
@Override
522-
public void writeToParcel(Parcel parcel, int flags) {
523-
parcel.writeParcelable(localUri, flags);
524-
parcel.writeString(thumbUrl);
525-
parcel.writeString(imageUrl);
526-
parcel.writeString(filename);
527-
parcel.writeString(description);
528-
parcel.writeLong(dataLength);
529-
parcel.writeSerializable(dateCreated);
530-
parcel.writeSerializable(dateUploaded);
531-
parcel.writeString(creator);
532-
parcel.writeSerializable(tags);
533-
parcel.writeInt(width);
534-
parcel.writeInt(height);
535-
parcel.writeString(license);
536-
parcel.writeStringList(categories);
537-
parcel.writeMap(descriptions);
538-
}
539-
540474
/**
541475
* Set requested deletion to true
542476
*/
@@ -560,4 +494,75 @@ public boolean getRequestedDeletion(){
560494
public void setLicense(String license) {
561495
this.license = license;
562496
}
497+
498+
499+
@Override
500+
public int describeContents() {
501+
return 0;
502+
}
503+
504+
/**
505+
* Creates a way to transfer information between two or more
506+
* activities.
507+
* @param dest Instance of Parcel
508+
* @param flags Parcel flag
509+
*/
510+
@Override
511+
public void writeToParcel(Parcel dest, int flags) {
512+
dest.writeParcelable(this.localUri, flags);
513+
dest.writeString(this.thumbUrl);
514+
dest.writeString(this.imageUrl);
515+
dest.writeString(this.filename);
516+
dest.writeString(this.description);
517+
dest.writeString(this.discussion);
518+
dest.writeLong(this.dataLength);
519+
dest.writeLong(this.dateCreated != null ? this.dateCreated.getTime() : -1);
520+
dest.writeLong(this.dateUploaded != null ? this.dateUploaded.getTime() : -1);
521+
dest.writeInt(this.width);
522+
dest.writeInt(this.height);
523+
dest.writeString(this.license);
524+
dest.writeString(this.licenseUrl);
525+
dest.writeString(this.creator);
526+
dest.writeStringList(this.categories);
527+
dest.writeByte(this.requestedDeletion ? (byte) 1 : (byte) 0);
528+
dest.writeSerializable(this.descriptions);
529+
dest.writeSerializable(this.tags);
530+
dest.writeParcelable(this.coordinates, flags);
531+
}
532+
533+
protected Media(Parcel in) {
534+
this.localUri = in.readParcelable(Uri.class.getClassLoader());
535+
this.thumbUrl = in.readString();
536+
this.imageUrl = in.readString();
537+
this.filename = in.readString();
538+
this.description = in.readString();
539+
this.discussion = in.readString();
540+
this.dataLength = in.readLong();
541+
long tmpDateCreated = in.readLong();
542+
this.dateCreated = tmpDateCreated == -1 ? null : new Date(tmpDateCreated);
543+
long tmpDateUploaded = in.readLong();
544+
this.dateUploaded = tmpDateUploaded == -1 ? null : new Date(tmpDateUploaded);
545+
this.width = in.readInt();
546+
this.height = in.readInt();
547+
this.license = in.readString();
548+
this.licenseUrl = in.readString();
549+
this.creator = in.readString();
550+
this.categories = in.createStringArrayList();
551+
this.requestedDeletion = in.readByte() != 0;
552+
this.descriptions = (HashMap<String, String>) in.readSerializable();
553+
this.tags = (HashMap<String, String>) in.readSerializable();
554+
this.coordinates = in.readParcelable(LatLng.class.getClassLoader());
555+
}
556+
557+
public static final Creator<Media> CREATOR = new Creator<Media>() {
558+
@Override
559+
public Media createFromParcel(Parcel source) {
560+
return new Media(source);
561+
}
562+
563+
@Override
564+
public Media[] newArray(int size) {
565+
return new Media[size];
566+
}
567+
};
563568
}

app/src/main/java/fr/free/nrw/commons/contributions/Contribution.java

+51-31
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,6 @@ public class Contribution extends Media {
3232
//2009-01-09 → 9 January 2009
3333
private static final String TEMPLATE_DATA_OTHER_SOURCE = "%s";
3434

35-
public static Creator<Contribution> CREATOR = new Creator<Contribution>() {
36-
@Override
37-
public Contribution createFromParcel(Parcel parcel) {
38-
return new Contribution(parcel);
39-
}
40-
41-
@Override
42-
public Contribution[] newArray(int i) {
43-
return new Contribution[0];
44-
}
45-
};
46-
4735
// No need to be bitwise - they're mutually exclusive
4836
public static final int STATE_COMPLETED = -1;
4937
public static final int STATE_FAILED = 1;
@@ -106,26 +94,7 @@ public Contribution(Uri localUri, String imageUrl, String filename, String descr
10694
this.state=state;
10795
}
10896

109-
public Contribution(Parcel in) {
110-
super(in);
111-
contentUri = in.readParcelable(Uri.class.getClassLoader());
112-
source = in.readString();
113-
state = in.readInt();
114-
transferred = in.readLong();
115-
isMultiple = in.readInt() == 1;
116-
wikiItemName = in.readString();
117-
}
11897

119-
@Override
120-
public void writeToParcel(Parcel parcel, int flags) {
121-
super.writeToParcel(parcel, flags);
122-
parcel.writeParcelable(contentUri, flags);
123-
parcel.writeString(source);
124-
parcel.writeInt(state);
125-
parcel.writeLong(transferred);
126-
parcel.writeInt(isMultiple ? 1 : 0);
127-
parcel.writeString(wikiItemName);
128-
}
12998

13099
public void setDateCreatedSource(String dateCreatedSource) {
131100
this.dateCreatedSource = dateCreatedSource;
@@ -300,4 +269,55 @@ public void setContentProviderUri(Uri contentProviderUri) {
300269
this.contentProviderUri = contentProviderUri;
301270
}
302271

272+
@Override
273+
public int describeContents() {
274+
return 0;
275+
}
276+
277+
@Override
278+
public void writeToParcel(Parcel dest, int flags) {
279+
super.writeToParcel(dest, flags);
280+
dest.writeLong(this._id);
281+
dest.writeParcelable(this.contentUri, flags);
282+
dest.writeString(this.source);
283+
dest.writeString(this.editSummary);
284+
dest.writeInt(this.state);
285+
dest.writeLong(this.transferred);
286+
dest.writeString(this.decimalCoords);
287+
dest.writeByte(this.isMultiple ? (byte) 1 : (byte) 0);
288+
dest.writeString(this.wikiDataEntityId);
289+
dest.writeString(this.wikiItemName);
290+
dest.writeString(this.p18Value);
291+
dest.writeParcelable(this.contentProviderUri, flags);
292+
dest.writeString(this.dateCreatedSource);
293+
}
294+
295+
protected Contribution(Parcel in) {
296+
super(in);
297+
this._id = in.readLong();
298+
this.contentUri = in.readParcelable(Uri.class.getClassLoader());
299+
this.source = in.readString();
300+
this.editSummary = in.readString();
301+
this.state = in.readInt();
302+
this.transferred = in.readLong();
303+
this.decimalCoords = in.readString();
304+
this.isMultiple = in.readByte() != 0;
305+
this.wikiDataEntityId = in.readString();
306+
this.wikiItemName = in.readString();
307+
this.p18Value = in.readString();
308+
this.contentProviderUri = in.readParcelable(Uri.class.getClassLoader());
309+
this.dateCreatedSource = in.readString();
310+
}
311+
312+
public static final Creator<Contribution> CREATOR = new Creator<Contribution>() {
313+
@Override
314+
public Contribution createFromParcel(Parcel source) {
315+
return new Contribution(source);
316+
}
317+
318+
@Override
319+
public Contribution[] newArray(int size) {
320+
return new Contribution[size];
321+
}
322+
};
303323
}

0 commit comments

Comments
 (0)