Return-Path: Delivered-To: apmail-commons-commits-archive@minotaur.apache.org Received: (qmail 5323 invoked from network); 5 Mar 2011 13:45:27 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 5 Mar 2011 13:45:27 -0000 Received: (qmail 27771 invoked by uid 500); 5 Mar 2011 13:45:27 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 27661 invoked by uid 500); 5 Mar 2011 13:45:26 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 27646 invoked by uid 99); 5 Mar 2011 13:45:26 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 05 Mar 2011 13:45:26 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 05 Mar 2011 13:45:23 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 641342388A33; Sat, 5 Mar 2011 13:45:02 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1078287 - /commons/sandbox/digester3/trunk/src/site/xdoc/guide/dvsd3.xml Date: Sat, 05 Mar 2011 13:45:02 -0000 To: commits@commons.apache.org From: simonetripodi@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110305134502.641342388A33@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: simonetripodi Date: Sat Mar 5 13:45:01 2011 New Revision: 1078287 URL: http://svn.apache.org/viewvc?rev=1078287&view=rev Log: added universal loader description Modified: commons/sandbox/digester3/trunk/src/site/xdoc/guide/dvsd3.xml Modified: commons/sandbox/digester3/trunk/src/site/xdoc/guide/dvsd3.xml URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/site/xdoc/guide/dvsd3.xml?rev=1078287&r1=1078286&r2=1078287&view=diff ============================================================================== --- commons/sandbox/digester3/trunk/src/site/xdoc/guide/dvsd3.xml (original) +++ commons/sandbox/digester3/trunk/src/site/xdoc/guide/dvsd3.xml Sat Mar 5 13:45:01 2011 @@ -137,12 +137,64 @@ limitations under the License. and will be ready to create new Digester instances with pre-filled rules.

-
-

TODO

-
+
+

As shown above, basic Digester2.X usage would be creating a Digester then setting the rules:

+ Digester digester = new Digester(); + digester.addObjectCreate("root", "org.apache.commons.digester.SimpleTestBean"); + digester.addBeanPropertySetter("root", "alpha"); + digester.addBeanPropertySetter("root/alpha", "beta"); + digester.addBeanPropertySetter("root/delta", "delta"); -
-

TODO

+

Alternatively, users can create the Rules instance, set the rules and pass it to the Digester:

+ ExtendedBaseRules rules = new ExtendedBaseRules(); + rules.addRule("root", new ObjectCreateRule("org.apache.commons.digester.SimpleTestBean")); + rules.addRule("root", new BeanPropertySetterRule("alpha")); + rules.addRule("root/alpha", new BeanPropertySetterRule("beta")); + rules.addRule("root/delta", new BeanPropertySetterRule("delta")); + + Digester digester = new Digester(); + digester.setRules(rules); + + +

Last, but not least, special loader classes have been created to gain more benefits from RuleSet: +like the annotations package DigesterLoader, to avoid scanning class elements each time +users want to create a new Digester instance to parse Channel type:

+ import org.apache.commons.digester.annotations.*; + +DigesterLoader digesterLoader = new DigesterLoaderBuilder() + .useDefaultAnnotationRuleProviderFactory() + .useDefaultDigesterLoaderHandlerFactory(); +Digester digester = digesterLoader.createDigester(Channel.class); + +

In Digester3 there is just one universal loader that aggregates all the power of the components described above, +configurations are expressed via (Abstract)RulesModule

+ class SimpleTestBeanModule extends AbstractRulesModule { + + @Override + protected void configure() { + forPattern("root") + .createObject().ofType("org.apache.commons.digester.SimpleTestBean") + .then() + .setBeanProperty("alpha"); + forPattern("root/alpha").setBeanProperty("beta"); + forPattern("root/delta").setBeanProperty("delta"); + } + +} +

Users can simply create new Digester instances:

+ DigesterLoader loader = newLoader(new SimpleTestBeanModule()); + ... + Digester digester = loader.newDigester(); + +

Users can create new Digester instances on top of different Rules types:

+ Digester digester = loader.newDigester(new ExtendedBaseRules()); + +

An, by the nature of the universal loader, auxiliary optimizations are not needed:

+ DigesterLoader loader = newLoader(new FromAnnotationsRuleModule(Channel.class)) + ... + Digester digester = loader.newDigester(); + ... + digester = loader.newDigester(); // Channel.class won't be analyzed again!
@@ -153,4 +205,4 @@ limitations under the License.

TODO

- \ No newline at end of file +