Return-Path: Delivered-To: apmail-jakarta-commons-dev-archive@apache.org Received: (qmail 82165 invoked from network); 7 Oct 2002 08:03:36 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 7 Oct 2002 08:03:36 -0000 Received: (qmail 9160 invoked by uid 97); 7 Oct 2002 08:04:27 -0000 Delivered-To: qmlist-jakarta-archive-commons-dev@jakarta.apache.org Received: (qmail 9117 invoked by uid 97); 7 Oct 2002 08:04:26 -0000 Mailing-List: contact commons-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Jakarta Commons Developers List" Reply-To: "Jakarta Commons Developers List" Delivered-To: mailing list commons-dev@jakarta.apache.org Received: (qmail 9105 invoked by uid 98); 7 Oct 2002 08:04:25 -0000 X-Antivirus: nagoya (v4218 created Aug 14 2002) Message-ID: <20021007080340.1477.qmail@web14603.mail.yahoo.com> Date: Mon, 7 Oct 2002 10:03:40 +0200 (CEST) From: =?iso-8859-1?q?Philippe=20Mouawad?= Subject: [PATCH] digester XML (call-param-rule) To: commons-dev@jakarta.apache.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-2141639320-1033977820=:1335" Content-Transfer-Encoding: 8bit X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N --0-2141639320-1033977820=:1335 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Content-Disposition: inline I found a bug in the digester. It happens when you use the rules written in xml instead of writing them in the code (see code below). The bug happens when you use "" in the xml file. try { FileInputStream fis = new FileInputStream(configFileName); // the file "config-rules.xml" contains rules written //in xml URL url = getClass().getResource("config-rules.xml"); BatchContext config = (BatchContext) DigesterLoader.load(url, getClass().getClassLoader(), fis, this); fis.close(); } catch(DigesterLoadingException dle) { throw new BatchException(dle); } catch (SAXException ioe) { ioe.printStackTrace(); throw new BatchException(ioe); } catch (IOException ioe) { throw new BatchException(ioe); } ___________________________________________________________ Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en fran�ais ! Yahoo! Mail : http://fr.mail.yahoo.com --0-2141639320-1033977820=:1335 Content-Type: text/plain; name="patch-digester-org.apache.commons.digester.xmlrules.DigesterRuleParser.txt" Content-Description: patch-digester-org.apache.commons.digester.xmlrules.DigesterRuleParser.txt Content-Disposition: inline; filename="patch-digester-org.apache.commons.digester.xmlrules.DigesterRuleParser.txt" public void addRuleInstances(Digester digester) { final String ruleClassName = Rule.class.getName(); digester.register(DIGESTER_PUBLIC_ID, getDigesterRulesDTD()); digester.addRule("*/pattern", new PatternRule(digester, "value")); digester.addRule("*/include", new IncludeRule(digester)); digester.addFactoryCreate("*/call-method-rule", new CallMethodRuleFactory()); digester.addRule("*/call-method-rule", new PatternRule(digester, "pattern")); digester.addSetNext("*/call-method-rule", "add", ruleClassName); /********************************************************************************/ // // Modified by Philippe Mouawad // digester.addFactoryCreate("*/call-param-rule", new CallParamRuleFactory()); digester.addRule("*/call-param-rule", new PatternRule(digester, "pattern")); digester.addSetNext("*/call-param-rule", "add", ruleClassName); // // End of modification // /********************************************************************************/ digester.addFactoryCreate("*/factory-create-rule", new FactoryCreateRuleFactory()); digester.addRule("*/factory-create-rule", new PatternRule(digester, "pattern")); digester.addSetNext("*/factory-create-rule", "add", ruleClassName); digester.addFactoryCreate("*/object-create-rule", new ObjectCreateRuleFactory()); digester.addRule("*/object-create-rule", new PatternRule(digester, "pattern")); digester.addSetNext("*/object-create-rule", "add", ruleClassName); digester.addFactoryCreate("*/set-properties-rule", new SetPropertiesRuleFactory()); digester.addRule("*/set-properties-rule", new PatternRule(digester, "pattern")); digester.addSetNext("*/set-properties-rule", "add", ruleClassName); digester.addRule("*/set-properties-rule/alias", new SetPropertiesAliasRule(digester)); digester.addFactoryCreate("*/set-property-rule", new SetPropertyRuleFactory()); digester.addRule("*/set-property-rule", new PatternRule(digester, "pattern")); digester.addSetNext("*/set-property-rule", "add", ruleClassName); digester.addFactoryCreate("*/set-top-rule", new SetTopRuleFactory()); digester.addRule("*/set-top-rule", new PatternRule(digester, "pattern")); digester.addSetNext("*/set-top-rule", "add", ruleClassName); digester.addFactoryCreate("*/set-next-rule", new SetNextRuleFactory()); digester.addRule("*/set-next-rule", new PatternRule(digester, "pattern")); digester.addSetNext("*/set-next-rule", "add", ruleClassName); } protected class CallParamRuleFactory extends AbstractObjectCreationFactory { // Old code // public Object createObject(Attributes attributes) { // // create callmethodrule // int paramNumber = Integer.parseInt(attributes.getValue("paramnumber")); // String methodName = attributes.getValue("attrname"); // Rule callMethodRule = new CallMethodRule(targetDigester, methodName, // paramNumber); // return callMethodRule; // } // End of old code /********************************************************************************/ // // Modified by Philippe Mouawad // // // Modified by Philippe Mouawad // public Object createObject(Attributes attributes) { // create callmethodrule int paramNumber = Integer.parseInt(attributes.getValue("paramnumber")); String attrName = attributes.getValue("attrname"); Rule callParamRule = new CallParamRule(targetDigester, paramNumber, attrName); return callParamRule ; } // // End of modification // /********************************************************************************/ } --0-2141639320-1033977820=:1335 Content-Type: text/plain; charset=us-ascii -- To unsubscribe, e-mail: For additional commands, e-mail: --0-2141639320-1033977820=:1335--