From 4713e53e2918ad99731dd5d89a355682c6faaac0 Mon Sep 17 00:00:00 2001 From: felipeal Date: Mon, 30 Jul 2012 20:42:22 +0000 Subject: [PATCH] Fixed ConcurrentModificationException --- .../android/chrometophone/server/SendServlet.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/appengine/src/com/google/android/chrometophone/server/SendServlet.java b/appengine/src/com/google/android/chrometophone/server/SendServlet.java index 98373a8..3e49df5 100644 --- a/appengine/src/com/google/android/chrometophone/server/SendServlet.java +++ b/appengine/src/com/google/android/chrometophone/server/SendServlet.java @@ -21,6 +21,9 @@ import com.google.appengine.api.channel.ChannelMessage; import com.google.appengine.api.channel.ChannelServiceFactory; import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; import java.util.logging.Logger; import javax.servlet.http.HttpServlet; @@ -92,8 +95,9 @@ public class SendServlet extends HttpServlet { boolean reqDebug = "1".equals(reqInfo.getParameter("debug")); int ac2dmCnt = 0; - - for (DeviceInfo deviceInfo : reqInfo.devices) { + Iterator iterator = reqInfo.devices.iterator(); + while (iterator.hasNext()) { + DeviceInfo deviceInfo = iterator.next(); if ("ac2dm".equals(deviceInfo.getType())) { ac2dmCnt++; } @@ -130,7 +134,7 @@ public class SendServlet extends HttpServlet { if ("InvalidRegistration".equals(ex.getMessage())) { // Prune device, it no longer works reqInfo.deleteRegistration(deviceInfo.getDeviceRegistrationID()); - reqInfo.devices.remove(deviceInfo); + iterator.remove(); ac2dmCnt--; } else { throw ex;