Please attach cvs diff -u formatted patches to a bugzilla ticket so they
don't get lost in the mailing list.
Thanks,
David
--- Nacho Gonzalez <[EMAIL PROTECTED]> wrote:
> Here are the diff files for validator_1_0.dtd,
> org.apache.commons.validator.FormSet and
> org.apache.commons.validator.Form. I have also done the tests. Should I
> include them as plain text or attach them? The test would be a
> validation.xml file and the TestCase.
>
> I didn't follow exactly the Tiles pattern as it would imply quite a few
> more changes. I believe solving inheritance is naturally part of the
> process method anyway.
> I don't know if it would be interesting to reference the parent form.
> For this purpose I didn't find it useful, but it might be useful in the
> future.
> It would probably be wise not to use process(Map, Map) at all in case it
>
> may get deprecated (just guessing).
>
> A couple of issues:
>
> 1. Should it throw an exception:
>
> throw new ValidatorException("Error while resolving form
> definition inheritance: child '"
> + getName()
> + "' can't find its ancestor '"
> + getExtends()
> + "'. Please check your validation definition
> file.");
>
> if its parent form is not found? The thing is that it should go all
> the way up to ValidatorResources.initialize...
>
> 2. It would probably be interesting to have a notation similar to the
> one in the attribte depends (comma delimited), making it possible to
> extend from multiple forms. What do you think?
>
> ______________________
> DIFF validator_1_0.dtd
> 82,84d81
> < The "extends" attribute makes it possible to extend the set of
> rules of this
> < form with those of the "extends" one. It is also possible to
> override any
> < of the parent's rules.
> 87,88c84
> < <!ATTLIST form name CDATA #REQUIRED
> < extends CDATA #IMPLIED >
> ---
> > <!ATTLIST form name CDATA #REQUIRED>
>
>
>
> _________________________________________
> DIFF org.apache.commons.validator.FormSet
> 221c221,225
> < f.process(globalConstants, hConstants);
> ---
> > if (f.isExtending()) {
> > f.process(globalConstants, hConstants, hForms);
> > } else {
> > f.process(globalConstants, hConstants);
> > }
>
>
>
> ______________________________________
> DIFF org.apache.commons.validator.Form
> 89a90,100
> > /**
> > * The name/key of the form which this form extends from.
> > */
> > protected String inherit = null;
> >
> > /**
> > * Whether or not the this <code>Form</code> was processed
> > * for replacing variables in strings with their values.
> > */
> > private boolean bProcessed = false;
> >
> 153a165
> > bProcessed = true;
> 155a168,203
> > /**
> > * Processes all of the <code>Form</code>'s
> <code>Field</code>s.
> > */
> > public void process(Map globalConstants, Map constants,
> FastHashMap forms) {
> >
> > if (isProcessed()) {
> > return;
> > }
> > int n = 0; //we want the fields from its parent first
> > if (isExtending()) {
> > Form parent = (Form) forms.get(inherit);
> > if (parent != null) {
> > if (!parent.isProcessed()) {
> > //we want to go all the way up
> the tree
> > parent.process(constants,
> globalConstants, forms);
> > }
> > for (Iterator i =
> parent.getFields().iterator(); i.hasNext();) {
> > Field f = (Field) i.next();
> > //we want to be able to
> override any fields we like
> > if (hFields.get(f.getKey()) ==
> null) {
> > lFields.add(n, f);
> > hFields.put(f.getKey(),
> f);
> > n++;
> > }
> > }
> > }
> > }
> > hFields.setFast(true);
> > //no need to reprocess parent's fields, we iterate from
> 'n'
> > for (Iterator i = lFields.listIterator(n);
> i.hasNext();) {
> > Field f = (Field) i.next();
> > f.process(globalConstants, constants);
> > }
> > bProcessed = true;
> > }
> >
> 173a222,230
> >
> >
> > /**
> > * Whether or not the this <code>Form</code> was processed
> > * for replacing variables in strings with their values.
> > */
> > public boolean isProcessed() {
> > return bProcessed;
> > }
> 174a232,251
> > /**
> > * Gets the name/key of the parent set of validation rules.
> > */
> > public String getExtends() {
> > return inherit;
> > }
> >
> > /**
> > * Sets the name/key of the parent set of validation rules.
> > */
> > public void setExtends(String string) {
> > inherit = string;
> > }
> >
> > /**
> > * Get extends flag.
> > */
> > public boolean isExtending() {
> > return inherit!=null;
> > }
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
__________________________________
Do you Yahoo!?
Yahoo! Finance Tax Center - File online. File on time.
http://taxes.yahoo.com/filing.html
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]