Skip to content

Commit

Permalink
Facebook Android SDK 4.13.2
Browse files Browse the repository at this point in the history
  • Loading branch information
swiese committed Jul 1, 2016
2 parents 6d96056 + f49a5b6 commit f5eb1d9
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 12 deletions.
Expand Up @@ -21,5 +21,5 @@
package com.facebook;

final class FacebookSdkVersion {
public static final String BUILD = "4.13.1";
public static final String BUILD = "4.13.2";
}
12 changes: 4 additions & 8 deletions facebook/src/main/java/com/facebook/appevents/AppEventStore.java
Expand Up @@ -56,7 +56,7 @@ public static synchronized void persistEvents(
.get(accessTokenAppIdPair)
.addAll(appEvents.getEventsToPersist());
} else {
persistedEvents.put(accessTokenAppIdPair, appEvents.getEventsToPersist());
persistedEvents.addEvents(accessTokenAppIdPair, appEvents.getEventsToPersist());
}

saveEventsToDisk(persistedEvents);
Expand All @@ -65,11 +65,11 @@ public static synchronized void persistEvents(
public static synchronized void persistEvents(
final AppEventCollection eventsToPersist) {
assertIsNotMainThread();
PersistedEvents persistedEvents = new PersistedEvents();
PersistedEvents persistedEvents = readAndClearStore();
for (AccessTokenAppIdPair accessTokenAppIdPair : eventsToPersist.keySet()) {
SessionEventsState sessionEventsState = eventsToPersist.get(
accessTokenAppIdPair);
persistedEvents.put(
persistedEvents.addEvents(
accessTokenAppIdPair,
sessionEventsState.getEventsToPersist());
}
Expand All @@ -82,14 +82,13 @@ public static synchronized PersistedEvents readAndClearStore() {
assertIsNotMainThread();

MovedClassObjectInputStream ois = null;
HashMap<AccessTokenAppIdPair, List<AppEvent>> obj = null;
PersistedEvents persistedEvents = null;
Context context = FacebookSdk.getApplicationContext();
try {
InputStream is = context.openFileInput(PERSISTED_EVENTS_FILENAME);
ois = new MovedClassObjectInputStream(new BufferedInputStream(is));

obj = (HashMap<AccessTokenAppIdPair, List<AppEvent>>) ois.readObject();
persistedEvents = (PersistedEvents) ois.readObject();
} catch (FileNotFoundException e) {
// Expected if we never persisted any events.
} catch (Exception e) {
Expand All @@ -105,9 +104,6 @@ public static synchronized PersistedEvents readAndClearStore() {
// Always delete this file after the above try catch to recover from read
// errors.
context.getFileStreamPath(PERSISTED_EVENTS_FILENAME).delete();
if (obj != null) {
persistedEvents = new PersistedEvents(obj);
}
} catch (Exception ex) {
Log.w(TAG, "Got unexpected exception when removing events file: ", ex);
}
Expand Down
50 changes: 47 additions & 3 deletions facebook/src/main/java/com/facebook/appevents/PersistedEvents.java
Expand Up @@ -20,14 +20,58 @@

package com.facebook.appevents;

import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Set;

class PersistedEvents implements Serializable {
private static final long serialVersionUID = 2016_06_29_001L;

private HashMap<AccessTokenAppIdPair, List<AppEvent>> events = new HashMap<>();

public class PersistedEvents extends HashMap<AccessTokenAppIdPair, List<AppEvent>> {
public PersistedEvents() {
super();
}

public PersistedEvents(HashMap<AccessTokenAppIdPair, List<AppEvent>> appEventMap) {
super(appEventMap);
events.putAll(appEventMap);
}

public Set<AccessTokenAppIdPair> keySet() {
return events.keySet();
}

public List<AppEvent> get(AccessTokenAppIdPair accessTokenAppIdPair) {
return events.get(accessTokenAppIdPair);
}

public boolean containsKey(AccessTokenAppIdPair accessTokenAppIdPair) {
return events.containsKey(accessTokenAppIdPair);
}

public void addEvents(AccessTokenAppIdPair accessTokenAppIdPair, List<AppEvent> appEvents) {
if (!events.containsKey(accessTokenAppIdPair)) {
events.put(accessTokenAppIdPair, appEvents);
return;
}

events.get(accessTokenAppIdPair).addAll(appEvents);
}

static class SerializationProxyV1 implements Serializable {
private static final long serialVersionUID = 2016_06_29_001L;;
private final HashMap<AccessTokenAppIdPair, List<AppEvent>> proxyEvents;

private SerializationProxyV1(HashMap<AccessTokenAppIdPair, List<AppEvent>> events) {
this.proxyEvents = events;
}

private Object readResolve() {
return new PersistedEvents(proxyEvents);
}
}

private Object writeReplace() {
return new SerializationProxyV1(events);
}
}

0 comments on commit f5eb1d9

Please sign in to comment.