From: Chris Jaekl Date: Sun, 28 Dec 2014 20:14:48 +0000 (-0500) Subject: Add user-friendly explanation for server timeout. X-Git-Url: http://jaekl.net/gitweb/?p=frank.git;a=commitdiff_plain;h=bf5272f3fc7e8f893f16198290230bc297772bea;hp=60dc53edca9ae2bcd6703e02b26acd47ef3d61a8 Add user-friendly explanation for server timeout. --- diff --git a/WEB-INF/classes/frank.properties b/WEB-INF/classes/frank.properties index 4f35303..fcfcfbf 100644 --- a/WEB-INF/classes/frank.properties +++ b/WEB-INF/classes/frank.properties @@ -13,6 +13,7 @@ remain=Remain request.made=Request made: route=Route s=s +server.timeout=Frank requested information from the OC Transpo server, but it did not respond in a timely manner. This probably indicates that the OC Transpo server is temporarily unavailable. It may come back online soon; please try again in a few minutes. unexpected.error=Unexpected Error unexpected.exception=An unexpected exception has been raised. This probably indicates a bug in Frank. url.contacted=URL contacted: diff --git a/prod/frank.properties b/prod/frank.properties index 4f35303..fcfcfbf 100644 --- a/prod/frank.properties +++ b/prod/frank.properties @@ -13,6 +13,7 @@ remain=Remain request.made=Request made: route=Route s=s +server.timeout=Frank requested information from the OC Transpo server, but it did not respond in a timely manner. This probably indicates that the OC Transpo server is temporarily unavailable. It may come back online soon; please try again in a few minutes. unexpected.error=Unexpected Error unexpected.exception=An unexpected exception has been raised. This probably indicates a bug in Frank. url.contacted=URL contacted: diff --git a/prod/net/jaekl/frank/ErrorHandler.java b/prod/net/jaekl/frank/ErrorHandler.java index c1d72bd..428925a 100644 --- a/prod/net/jaekl/frank/ErrorHandler.java +++ b/prod/net/jaekl/frank/ErrorHandler.java @@ -3,6 +3,7 @@ package net.jaekl.frank; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.io.PrintWriter; +import java.net.SocketTimeoutException; import java.util.Locale; import net.jaekl.qd.http.InvalidResponseException; @@ -53,6 +54,9 @@ public class ErrorHandler { pw.println("

"); pw.println("

" + bundle.get(FrankBundle.MAYBE_SERVER_PROBLEM) + "

"); } + else if (cause instanceof SocketTimeoutException) { + pw.println(bundle.get(FrankBundle.SERVER_TIMEOUT)); + } else { pw.println(bundle.get(FrankBundle.UNEXPECTED_EXCEPTION)); } diff --git a/prod/net/jaekl/frank/FrankBundle.java b/prod/net/jaekl/frank/FrankBundle.java index 8d5057a..4cac888 100644 --- a/prod/net/jaekl/frank/FrankBundle.java +++ b/prod/net/jaekl/frank/FrankBundle.java @@ -23,6 +23,7 @@ public class FrankBundle { public static final String REQUEST_MADE = "request.made"; public static final String ROUTE = "route"; public static final String SECONDS = "s"; + public static final String SERVER_TIMEOUT = "server.timeout"; public static final String UNEXPECTED_ERROR = "unexpected.error"; public static final String UNEXPECTED_EXCEPTION = "unexpected.exception"; public static final String URL_CONTACTED = "url.contacted"; diff --git a/test/net/jaekl/frank/ErrorHandlerTest.java b/test/net/jaekl/frank/ErrorHandlerTest.java index 4db0602..235d04f 100644 --- a/test/net/jaekl/frank/ErrorHandlerTest.java +++ b/test/net/jaekl/frank/ErrorHandlerTest.java @@ -3,6 +3,7 @@ package net.jaekl.frank; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintWriter; +import java.net.SocketTimeoutException; import java.sql.SQLException; import java.util.Locale; @@ -56,20 +57,29 @@ public class ErrorHandlerTest { } @Test - public void testExplain_unexpectedException() { + public void testExplain_simpleExceptions() { Locale[] locales = { Locale.CANADA, Locale.FRANCE, Locale.JAPAN, Locale.CHINA}; + Object[][] data = { + {new NullPointerException(), FrankBundle.UNEXPECTED_EXCEPTION}, + {new SocketTimeoutException(), FrankBundle.SERVER_TIMEOUT} + }; ErrorHandler eh = new ErrorHandler(); for (Locale locale : locales) { FrankBundle bundle = FrankBundle.getInst(locale); - m_baos.reset(); - eh.writeErrorPage(m_pw, new NullPointerException(), Locale.CANADA); - m_pw.flush(); - - String actual = m_baos.toString(); - Assert.assertTrue(actual.contains(bundle.get(FrankBundle.UNEXPECTED_EXCEPTION))); + for (Object[] tuple : data) { + Exception e = (Exception)tuple[0]; + String key = (String)tuple[1]; + + m_baos.reset(); + eh.writeErrorPage(m_pw, e, locale); + m_pw.flush(); + + String actual = m_baos.toString(); + Assert.assertTrue(actual.contains(bundle.get(key))); + } } }