Revision: 7039
http://languagetool.svn.sourceforge.net/languagetool/?rev=7039&view=rev
Author: milek_pl
Date: 2012-05-23 09:04:43 +0000 (Wed, 23 May 2012)
Log Message:
-----------
add new parameters for enabling and disabling rules for the HTTP interface
Modified Paths:
--------------
trunk/JLanguageTool/CHANGES.txt
trunk/JLanguageTool/src/java/org/languagetool/Main.java
trunk/JLanguageTool/src/java/org/languagetool/server/LanguageToolHttpHandler.java
trunk/JLanguageTool/src/java/org/languagetool/tools/Tools.java
trunk/JLanguageTool/src/test/org/languagetool/server/HTTPServerTest.java
Modified: trunk/JLanguageTool/CHANGES.txt
===================================================================
--- trunk/JLanguageTool/CHANGES.txt 2012-05-23 08:13:15 UTC (rev 7038)
+++ trunk/JLanguageTool/CHANGES.txt 2012-05-23 09:04:43 UTC (rev 7039)
@@ -44,7 +44,10 @@
-If you start the HTTP Server from the GUI, it now reads the configuration
files
that are configured in the GUI (if the appropriate checkbox is set).
- This way the user can control the behavior of the server easily.
+ This way the user can control the behavior of the server easily.
+
+ -Two new options for the HTTP Server added: "disabled" and "enabled", which
is used
+ to disable or enable rules in the same way as on the command-line.
-The XML format for rules has been changed to use <marker>...</marker> tags
instead
of mark_from and mark_to attributes
Modified: trunk/JLanguageTool/src/java/org/languagetool/Main.java
===================================================================
--- trunk/JLanguageTool/src/java/org/languagetool/Main.java 2012-05-23
08:13:15 UTC (rev 7038)
+++ trunk/JLanguageTool/src/java/org/languagetool/Main.java 2012-05-23
09:04:43 UTC (rev 7039)
@@ -91,34 +91,13 @@
lt = new JLanguageTool(language, motherTongue);
lt.activateDefaultPatternRules();
lt.activateDefaultFalseFriendRules();
- selectRules(lt, disabledRules, enabledRules);
+ Tools.selectRules(lt, disabledRules, enabledRules);
}
JLanguageTool getJLanguageTool() {
return lt;
}
-
- private void selectRules(final JLanguageTool lt, final String[]
disabledRules, final String[] enabledRules) {
- // disable rules that are disabled explicitly:
- for (final String disabledRule : disabledRules) {
- lt.disableRule(disabledRule);
- }
- // disable all rules except those enabled explicitly, if any:
- if (enabledRules.length > 0) {
- final Set<String> enabledRuleIDs = new HashSet<String>(Arrays
- .asList(enabledRules));
- for (String ruleName : enabledRuleIDs) {
- lt.enableDefaultOffRule(ruleName);
- lt.enableRule(ruleName);
- }
- for (Rule rule : lt.getAllRules()) {
- if (!enabledRuleIDs.contains(rule.getId())) {
- lt.disableRule(rule.getId());
- }
- }
- }
- }
-
+
private void setListUnknownWords(final boolean listUnknownWords) {
lt.setListUnknownWords(listUnknownWords);
}
@@ -139,8 +118,8 @@
lt = new JLanguageTool(target, null);
srcLt = new JLanguageTool(sourceLang);
lt.activateDefaultPatternRules();
- selectRules(lt, disabledRules, enabledRules);
- selectRules(srcLt, disabledRules, enabledRules);
+ Tools.selectRules(lt, disabledRules, enabledRules);
+ Tools.selectRules(srcLt, disabledRules, enabledRules);
bRules = Tools.getBitextRules(sourceLang, lt.getLanguage());
List<BitextRule> bRuleList = new ArrayList<BitextRule>(bRules);
@@ -444,7 +423,7 @@
lt = new JLanguageTool(language, motherTongue);
lt.activateDefaultPatternRules();
lt.activateDefaultFalseFriendRules();
- selectRules(lt, disabledRules, enabledRules);
+ Tools.selectRules(lt, disabledRules, enabledRules);
if (verbose) {
lt.setOutput(System.err);
}
Modified:
trunk/JLanguageTool/src/java/org/languagetool/server/LanguageToolHttpHandler.java
===================================================================
---
trunk/JLanguageTool/src/java/org/languagetool/server/LanguageToolHttpHandler.java
2012-05-23 08:13:15 UTC (rev 7038)
+++
trunk/JLanguageTool/src/java/org/languagetool/server/LanguageToolHttpHandler.java
2012-05-23 09:04:43 UTC (rev 7039)
@@ -31,6 +31,11 @@
private final boolean internalServer;
private final Configuration config;
+
+ private boolean useQuerySettings;
+
+ private String[] enabledRules = new String[0];
+ private String[] disabledRules = new String[0];
LanguageToolHttpHandler(boolean verbose, Set<String> allowedIps,
boolean internal) throws IOException {
@@ -127,9 +132,20 @@
motherTongue = Language.getLanguageForShortName(motherTongueParam);
}
- // TODO: how to take options from the client?
- // TODO: customize LT here after reading client options
-
+ final String enabledParam = parameters.get("enabled");
+ enabledRules = new String[0];
+ if (null != enabledParam) {
+ enabledRules = enabledParam.split(",");
+ }
+
+ final String disabledParam = parameters.get("disabled");
+ disabledRules = new String[0];
+ if (null != disabledParam) {
+ disabledRules = disabledParam.split(",");
+ }
+
+ useQuerySettings = enabledRules.length > 0 || disabledRules.length > 0;
+
final List<RuleMatch> matches;
final String sourceText = parameters.get("srctext");
if (sourceText == null) {
@@ -200,9 +216,14 @@
final JLanguageTool newLanguageTool = new JLanguageTool(lang,
motherTongue);
newLanguageTool.activateDefaultPatternRules();
newLanguageTool.activateDefaultFalseFriendRules();
- if (internalServer && config.getUseGUIConfig()) { // use the GUI config
values
+ if (!useQuerySettings && internalServer && config.getUseGUIConfig()) { //
use the GUI config values
configureGUI(lang, newLanguageTool);
}
+
+ if (useQuerySettings) {
+ Tools.selectRules(newLanguageTool, disabledRules, enabledRules);
+ }
+
return newLanguageTool;
}
Modified: trunk/JLanguageTool/src/java/org/languagetool/tools/Tools.java
===================================================================
--- trunk/JLanguageTool/src/java/org/languagetool/tools/Tools.java
2012-05-23 08:13:15 UTC (rev 7038)
+++ trunk/JLanguageTool/src/java/org/languagetool/tools/Tools.java
2012-05-23 09:04:43 UTC (rev 7039)
@@ -577,5 +577,27 @@
}
return is;
}
+
+ public static void selectRules(final JLanguageTool lt, final String[]
disabledRules, final String[] enabledRules) {
+ // disable rules that are disabled explicitly:
+ for (final String disabledRule : disabledRules) {
+ lt.disableRule(disabledRule);
+ }
+ // disable all rules except those enabled explicitly, if any:
+ if (enabledRules.length > 0) {
+ final Set<String> enabledRuleIDs = new HashSet<String>(Arrays
+ .asList(enabledRules));
+ for (String ruleName : enabledRuleIDs) {
+ lt.enableDefaultOffRule(ruleName);
+ lt.enableRule(ruleName);
+ }
+ for (Rule rule : lt.getAllRules()) {
+ if (!enabledRuleIDs.contains(rule.getId())) {
+ lt.disableRule(rule.getId());
+ }
+ }
+ }
+ }
+
}
Modified:
trunk/JLanguageTool/src/test/org/languagetool/server/HTTPServerTest.java
===================================================================
--- trunk/JLanguageTool/src/test/org/languagetool/server/HTTPServerTest.java
2012-05-23 08:13:15 UTC (rev 7038)
+++ trunk/JLanguageTool/src/test/org/languagetool/server/HTTPServerTest.java
2012-05-23 09:04:43 UTC (rev 7039)
@@ -89,9 +89,30 @@
assertTrue(check(Language.ENGLISH, Language.GERMAN, "We will berate
you").contains("BERATE"));
assertTrue(check(Language.GERMAN, Language.ENGLISH, "Man sollte ihn nicht
so beraten.").contains("BERATE"));
assertTrue(check(Language.POLISH, Language.ENGLISH, "To jest
frywolne.").contains("FRIVOLOUS"));
+
//tests for bitext
assertTrue(bitextCheck(Language.POLISH, Language.ENGLISH, "This is
frivolous.", "To jest frywolne.").contains("FRIVOLOUS"));
assertTrue(!bitextCheck(Language.POLISH, Language.ENGLISH, "This is
something else.", "To jest frywolne.").contains("FRIVOLOUS"));
+
+ //test for no changed if no options set
+ String[] nothing = new String[0];
+ assertEquals(check(Language.ENGLISH, Language.GERMAN, "We will berate
you"),
+ checkWithOptions(Language.ENGLISH, Language.GERMAN, "We will
berate you", nothing, nothing));
+
+ //disabling
+ String[] disableAvsAn = new String[1];
+ disableAvsAn[0] = "EN_A_VS_AN";
+ assertTrue(!checkWithOptions(
+ Language.ENGLISH, Language.GERMAN, "This is an test", nothing,
disableAvsAn).contains("an test"));
+
+ //enabling
+ assertTrue(checkWithOptions(
+ Language.ENGLISH, Language.GERMAN, "This is an test",
disableAvsAn, nothing).contains("an test"));
+ //should also mean disabling all other rules...
+ assertTrue(!checkWithOptions(
+ Language.ENGLISH, Language.GERMAN, "We will berate you",
disableAvsAn, nothing).contains("BERATE"));
+
+
}
public void testAccessDenied() throws Exception {
@@ -138,6 +159,28 @@
return result;
}
+ private String checkWithOptions(Language lang, Language motherTongue, String
text,
+ String[] enabledRules, String[] disabledRules) throws
IOException {
+ String urlOptions = "/?language=" + lang.getShortName();
+ urlOptions += "&text=" + URLEncoder.encode(text, "UTF-8"); //
latin1 is not enough for languages like polish, romanian, etc
+ if (null != motherTongue) {
+ urlOptions += "&motherTongue=" + motherTongue.getShortName();
+ }
+
+ if (disabledRules.length > 0) {
+ urlOptions += "&disabled=" + join(disabledRules, ",");
+ }
+ if (enabledRules.length > 0) {
+ urlOptions += "&enabled=" + join(enabledRules, ",");
+ }
+
+ final URL url = new URL("http://localhost:" +
HTTPServer.DEFAULT_PORT + urlOptions);
+ final InputStream stream = (InputStream)url.getContent();
+ final String result = StringTools.streamToString(stream, "UTF-8");
+ return result;
+
+ }
+
/**
* Same as {@link #check(Language, String)} but using HTTP POST method
instead of GET
*/
@@ -157,4 +200,13 @@
}
}
+ private static String join(String[] s, String delimiter) {
+ if (s == null || s.length == 0 ) return "";
+ StringBuilder builder = new StringBuilder(s[0]);
+ for (int i = 1; i < s.length; i++) {
+ builder.append(delimiter).append(s);
+ }
+ return builder.toString();
+ }
+
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Languagetool-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-cvs