From 5a1d45715dc54d19a4892ab4f652bc9cbef4fee5 Mon Sep 17 00:00:00 2001 From: theli Date: Thu, 8 Dec 2005 21:35:40 +0000 Subject: [PATCH] *) Bugfix for parser configuration bug - it was not possible to disable all parsers See: http://www.yacy-forum.de/viewtopic.php?t=1579 git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@1191 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- htroot/SettingsAck_p.java | 19 ++++++++++--------- source/de/anomic/plasma/plasmaParser.java | 6 +++++- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/htroot/SettingsAck_p.java b/htroot/SettingsAck_p.java index 88264ff1c..6273ba361 100644 --- a/htroot/SettingsAck_p.java +++ b/htroot/SettingsAck_p.java @@ -542,9 +542,14 @@ public class SettingsAck_p { */ if (post.containsKey("parserSettings")) { post.remove("parserSettings"); - - HashMap newConfigList = new HashMap(); + Set parserModes = plasmaParser.getParserConfigList().keySet(); + HashMap newConfigList = new HashMap(); + Iterator parserModeIter = parserModes.iterator(); + while (parserModeIter.hasNext()) { + String currParserMode = (String)parserModeIter.next(); + newConfigList.put(currParserMode, new HashSet()); + } // looping through all received settings int pos; @@ -556,12 +561,8 @@ public class SettingsAck_p { String currMimeType = key.substring(pos+1).replaceAll("\n", ""); if (parserModes.contains(currParserMode)) { HashSet currEnabledMimeTypes; - if (newConfigList.containsKey(currParserMode)) { - currEnabledMimeTypes = (HashSet) newConfigList.get(currParserMode); - } else { - currEnabledMimeTypes = new HashSet(); - newConfigList.put(currParserMode, currEnabledMimeTypes); - } + assert (newConfigList.containsKey(currParserMode)) : "Unexpected Error"; + currEnabledMimeTypes = (HashSet) newConfigList.get(currParserMode); currEnabledMimeTypes.add(currMimeType); } } @@ -569,7 +570,7 @@ public class SettingsAck_p { int enabledMimesCount = 0; StringBuffer currEnabledMimesTxt = new StringBuffer(); - Iterator parserModeIter = newConfigList.keySet().iterator(); + parserModeIter = newConfigList.keySet().iterator(); while (parserModeIter.hasNext()) { String currParserMode = (String)parserModeIter.next(); String[] enabledMimes = plasmaParser.setEnabledParserList(currParserMode, (Set)newConfigList.get(currParserMode)); diff --git a/source/de/anomic/plasma/plasmaParser.java b/source/de/anomic/plasma/plasmaParser.java index e9c80032d..b50d0eaa5 100644 --- a/source/de/anomic/plasma/plasmaParser.java +++ b/source/de/anomic/plasma/plasmaParser.java @@ -568,7 +568,7 @@ public final class plasmaParser { String parserClassName = null; ParserInfo parserInfo = null; synchronized (plasmaParser.availableParserList) { - if (plasmaParser.availableParserList.contains(mimeType)) { + if (plasmaParser.availableParserList.containsKey(mimeType)) { parserInfo = (ParserInfo)plasmaParser.availableParserList.get(mimeType); parserClassName = parserInfo.parserClassName; } else { @@ -708,6 +708,10 @@ public final class plasmaParser { if (!PARSER_MODE.contains(parserMode)) throw new IllegalArgumentException(); plasmaParserConfig config = (plasmaParserConfig) parserConfigList.get(parserMode); + if (config == null) { + config = new plasmaParserConfig(parserMode); + parserConfigList.put(parserMode, config); + } config.enableAllParsers(); }