Revision: 8319 http://languagetool.svn.sourceforge.net/languagetool/?rev=8319&view=rev Author: dnaber Date: 2012-11-09 00:14:04 +0000 (Fri, 09 Nov 2012) Log Message: ----------- small code style cleanup; slightly more robust error handling
Modified Paths: -------------- trunk/JLanguageTool/src/main/java/org/languagetool/server/LanguageToolHttpHandler.java trunk/JLanguageTool/src/main/resources/org/languagetool/resource/api-output.dtd trunk/JLanguageTool/src/test/java/org/languagetool/server/HTTPServerTest.java Modified: trunk/JLanguageTool/src/main/java/org/languagetool/server/LanguageToolHttpHandler.java =================================================================== --- trunk/JLanguageTool/src/main/java/org/languagetool/server/LanguageToolHttpHandler.java 2012-11-08 23:35:40 UTC (rev 8318) +++ trunk/JLanguageTool/src/main/java/org/languagetool/server/LanguageToolHttpHandler.java 2012-11-09 00:14:04 UTC (rev 8319) @@ -31,6 +31,7 @@ private static final String CONTENT_TYPE_VALUE = "text/xml; charset=UTF-8"; private static final String ENCODING = "utf-8"; private static final int CONTEXT_SIZE = 40; // characters + private static final int MIN_LENGTH_FOR_AUTO_DETECTION = 60; // characters private final Set<String> allowedIps; private final boolean verbose; @@ -130,9 +131,8 @@ private static Language detectLanguageOfString(final String text, final String fallbackLanguage) { // TODO: use identifier.isReasonablyCertain() - but make sure it works! - final int MINLENGTHFORAUTODETECTION = 60; - if (text.length() < MINLENGTHFORAUTODETECTION && fallbackLanguage != null) { - System.out.print("auto-detected language is not reasonably certain"); + if (text.length() < MIN_LENGTH_FOR_AUTO_DETECTION && fallbackLanguage != null) { + print("Auto-detected language of text with length " + text.length() + " is not reasonably certain, using '" + fallbackLanguage + "' as fallback"); return Language.getLanguageForShortName(fallbackLanguage); } @@ -152,15 +152,14 @@ private void checkText(String text, HttpExchange httpExchange, Map<String, String> parameters) throws Exception { final String langParam = parameters.get("language"); final String autodetectParam = parameters.get("autodetect"); - Language lang; - - if (langParam == null && autodetectParam == null) { - throw new IllegalArgumentException("Missing 'language' parameter. Use autodetect=1 for auto-detecting the language of the input text."); + if (langParam == null && (autodetectParam == null || !autodetectParam.equals("1"))) { + throw new IllegalArgumentException("Missing 'language' parameter. Specify language or use autodetect=1 for auto-detecting the language of the input text."); } + final Language lang; if (autodetectParam != null && autodetectParam.equals("1")) { lang = detectLanguageOfString(text, langParam); - print("auto-detected language: " + lang.getShortNameWithVariant()); + print("Auto-detected language: " + lang.getShortNameWithVariant()); } else { lang = Language.getLanguageForShortName(langParam); } @@ -205,7 +204,7 @@ } httpExchange.getResponseHeaders().set("Content-Type", CONTENT_TYPE_VALUE); //httpExchange.getResponseHeaders().set("Access-Control-Allow-Origin", "*"); - String response = StringTools.ruleMatchesToXML(matches, text, + final String response = StringTools.ruleMatchesToXML(matches, text, CONTEXT_SIZE, StringTools.XmlPrintMode.NORMAL_XML, lang, motherTongue); httpExchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, response.getBytes(ENCODING).length); httpExchange.getResponseBody().write(response.getBytes(ENCODING)); @@ -235,7 +234,7 @@ return parameters; } - private void print(String s) { + private static void print(String s) { final SimpleDateFormat dateFormat = new SimpleDateFormat(); final String now = dateFormat.format(new Date()); System.out.println(now + " " + s); Modified: trunk/JLanguageTool/src/main/resources/org/languagetool/resource/api-output.dtd =================================================================== --- trunk/JLanguageTool/src/main/resources/org/languagetool/resource/api-output.dtd 2012-11-08 23:35:40 UTC (rev 8318) +++ trunk/JLanguageTool/src/main/resources/org/languagetool/resource/api-output.dtd 2012-11-09 00:14:04 UTC (rev 8319) @@ -1,6 +1,6 @@ <!-- Simple XML output format for the 'api' option and the HTTP -interface of LanguageTool (http://www.languagetool.org). Version 1.2 of the XML, 2012-09-19 +interface of LanguageTool (http://www.languagetool.org). Version 1.3 of the XML, 2012-11-09 --> <!ELEMENT matches ((language)?, (error)*)> Modified: trunk/JLanguageTool/src/test/java/org/languagetool/server/HTTPServerTest.java =================================================================== --- trunk/JLanguageTool/src/test/java/org/languagetool/server/HTTPServerTest.java 2012-11-08 23:35:40 UTC (rev 8318) +++ trunk/JLanguageTool/src/test/java/org/languagetool/server/HTTPServerTest.java 2012-11-09 00:14:04 UTC (rev 8319) @@ -160,7 +160,7 @@ try { server.run(); try { - System.out.println("Testing 'access denied' check now"); + System.out.println("Testing 'access denied' check now, please ignore the exception"); check(Language.GERMAN, "no ip address allowed, so this cannot work"); fail(); } catch (IOException expected) { @@ -169,7 +169,24 @@ server.stop(); } } - + + @Test + public void testMissingLanguageParameter() throws Exception { + final HTTPServer server = new HTTPServer(HTTPServer.DEFAULT_PORT, false, false); + try { + server.run(); + try { + System.out.println("Testing 'missing language parameter' now, please ignore the exception"); + final URL url = new URL("http://localhost:" + HTTPServer.DEFAULT_PORT + "/?text=foo"); + checkAtUrl(url); + fail(); + } catch (IOException expected) { + } + } finally { + server.stop(); + } + } + private String check(Language lang, String text) throws IOException { return check(lang, null, text); } @@ -194,11 +211,15 @@ urlOptions += "&motherTongue=" + motherTongue.getShortName(); } final URL url = new URL("http://localhost:" + HTTPServer.DEFAULT_PORT + urlOptions); + return checkAtUrl(url); + } + + private String checkAtUrl(URL url) throws IOException { final InputStream stream = (InputStream)url.getContent(); final String result = StringTools.streamToString(stream, "UTF-8"); return result; } - + private String checkWithOptions(Language lang, Language motherTongue, String text, String[] enabledRules, String[] disabledRules) throws IOException { String urlOptions = "/?language=" + lang.getShortName(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_nov _______________________________________________ Languagetool-commits mailing list Languagetool-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/languagetool-commits