ivelin 2002/07/28 07:04:42 Modified: src/java/org/apache/cocoon/transformation XMLFormTransformer.java Log: allowed violations to be used outside the form tag Revision Changes Path 1.8 +38 -9 xml-cocoon2/src/java/org/apache/cocoon/transformation/XMLFormTransformer.java Index: XMLFormTransformer.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/transformation/XMLFormTransformer.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- XMLFormTransformer.java 8 Jun 2002 17:57:38 -0000 1.7 +++ XMLFormTransformer.java 28 Jul 2002 14:04:41 -0000 1.8 @@ -406,7 +406,16 @@ { // put on top of the ref stack the full ref // append the new ref to the last stack top if not referencing the root - cannonicalRef = aref.startsWith ("/") ? aref : ( ((Entry) refStack.peek()).getValue() + "/" + aref ); + if ( !refStack.isEmpty() ) + { + // this is a nested reference + cannonicalRef = aref.startsWith ("/") ? aref : ( ((Entry) refStack.peek()).getValue() + "/" + aref ); + } + else + { + // top level reference + cannonicalRef = aref; + } Entry entry = new Entry( new Integer(currentTagDepth), cannonicalRef); refStack.push( entry ); @@ -431,6 +440,11 @@ super.startElement( uri, name, raw, attributes); this.ignoreHooksCount = 0; } + else if (TAG_INSERTVIOLATIONS.equals(name)) + { + startElementViolations( uri, name, raw, attributes ); + } // end if TAG_INSERTVIOLATIONS + // if we're within a xf:hidden element // and a value sub-element has been provided // in the markup, then it will be left @@ -439,20 +453,16 @@ // attribute else if ( isHiddenTag && TAG_VALUE.equals( name ) ) { - hasHiddenTagValue = true; - super.startElement( uri, name, raw, attributes); + hasHiddenTagValue = true; + super.startElement( uri, name, raw, attributes); } // if the currentForm is still not available // then we can't process nested form tags else if (currentForm != null) { - if (TAG_INSERTVIOLATIONS.equals(name)) - { - startElementViolations( uri, name, raw, attributes ); - } // end if TAG_INSERTVIOLATIONS - else if ( + if ( TAG_TEXTBOX.equals(name) || TAG_TEXTAREA.equals(name) || TAG_PASSWORD.equals(name) || @@ -529,10 +539,29 @@ protected void startElementViolations(String uri, String name, String raw, Attributes attributes) throws SAXException { - SortedSet violations = currentForm.getViolationsAsSortedSet(); + + // we will either use the locally referenced form id + // or the global id. At least one of the two must be available + Form form = null; + String formAttr = attributes.getValue( TAG_OUTPUT_ATTR_FORM ); + if (formAttr == null) + { + if (currentForm == null) + { + throw new SAXException( "When used outside of a form tag, the output tag requires an '" + TAG_OUTPUT_ATTR_FORM + "' attribute" ); + } + form = currentForm; + } + else + { + form = Form.lookup( objectModel, formAttr ); + } + + SortedSet violations = form.getViolationsAsSortedSet(); // if there are no violations, there is nothing to show if (violations == null) return; + // if we're immediately under the form tag // and parent "ref" attribute is not available
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]