summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2014-04-08 23:04:40 -0700
committerJesse Morgan <jesse@jesterpm.net>2014-04-08 23:04:40 -0700
commit45525336cbf2f648016682a1247c548631f91bdd (patch)
tree2b772dd68120feceefd35774e64ab13a6ee762cd
parent38c12cf70ef4714a7fc508f7fbaf44487ea971b7 (diff)
Fixing 500 on New Account Login Bug.
AccountRedirectResource was expecting the user to have a UserRecord, but new users did not have one. This caused JsonRequestProvider to throw an IOException and AccountRedirectResource to return 500. JsonRequestProvider now throws a NotFoundException on 404 and AccountRedirectResource properly handles it.
-rw-r--r--src/com/p4square/grow/frontend/AccountRedirectResource.java16
-rw-r--r--src/com/p4square/grow/frontend/JsonRequestProvider.java6
-rw-r--r--src/com/p4square/grow/frontend/NotFoundException.java13
3 files changed, 33 insertions, 2 deletions
diff --git a/src/com/p4square/grow/frontend/AccountRedirectResource.java b/src/com/p4square/grow/frontend/AccountRedirectResource.java
index b363c89..be2ae65 100644
--- a/src/com/p4square/grow/frontend/AccountRedirectResource.java
+++ b/src/com/p4square/grow/frontend/AccountRedirectResource.java
@@ -4,6 +4,7 @@
package com.p4square.grow.frontend;
+import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@@ -61,9 +62,22 @@ public class AccountRedirectResource extends ServerResource {
*/
@Override
protected Representation get() {
+ if (mUserId == null || mUserId.length() == 0) {
+ // This shouldn't happen, but I want to be safe because of the DB insert below.
+ setStatus(Status.CLIENT_ERROR_FORBIDDEN);
+ return new ErrorPage("Not Authenticated!");
+ }
+
try {
// Fetch account Map.
- UserRecord user = mUserRecordProvider.get(mUserId);
+ UserRecord user = null;
+ try {
+ user = mUserRecordProvider.get(mUserId);
+ } catch (NotFoundException e) {
+ // User record doesn't exist, so create a new one.
+ user = new UserRecord(getRequest().getClientInfo().getUser());
+ mUserRecordProvider.put(mUserId, user);
+ }
// Check for the new believers cookie
String cookie = getRequest().getCookies().getFirstValue(NewBelieverResource.COOKIE_NAME);
diff --git a/src/com/p4square/grow/frontend/JsonRequestProvider.java b/src/com/p4square/grow/frontend/JsonRequestProvider.java
index a04294d..bf3b2b3 100644
--- a/src/com/p4square/grow/frontend/JsonRequestProvider.java
+++ b/src/com/p4square/grow/frontend/JsonRequestProvider.java
@@ -51,7 +51,11 @@ public class JsonRequestProvider<V> extends JsonEncodedProvider<V> implements Pr
representation.release();
}
- throw new IOException("Could not get object. " + response.getStatus());
+ if (Status.CLIENT_ERROR_NOT_FOUND.equals(response.getStatus())) {
+ throw new NotFoundException("Could not get object. " + response.getStatus());
+ } else {
+ throw new IOException("Could not get object. " + response.getStatus());
+ }
}
return decode(representation.getText());
diff --git a/src/com/p4square/grow/frontend/NotFoundException.java b/src/com/p4square/grow/frontend/NotFoundException.java
new file mode 100644
index 0000000..dfa2a4c
--- /dev/null
+++ b/src/com/p4square/grow/frontend/NotFoundException.java
@@ -0,0 +1,13 @@
+/*
+ * Copyright 2014 Jesse Morgan
+ */
+
+package com.p4square.grow.frontend;
+
+import java.io.IOException;
+
+public class NotFoundException extends IOException {
+ public NotFoundException(final String message) {
+ super(message);
+ }
+}