[ 
http://issues.apache.org/jira/browse/BETWIXT-50?page=comments#action_12413183 ] 

Robert Burrell Donkin commented on BETWIXT-50:
----------------------------------------------

Committed. Many thanks.

> Versioning of XML Output
> ------------------------
>
>          Key: BETWIXT-50
>          URL: http://issues.apache.org/jira/browse/BETWIXT-50
>      Project: Commons Betwixt
>         Type: Improvement

>     Reporter: Holger Haag
>     Assignee: Robert Burrell Donkin
>  Attachments: betwixt-versioning-patch, src.zip
>
> Referring to the thread "Versioning of XML Output" 
> (http://mail-archives.apache.org/mod_mbox/jakarta-commons-user/200605.mbox/[EMAIL
>  PROTECTED]) on the jakarta-commons-user  mailing list, I'll provide here a 
> SVN patch for the described problem. 
> - Two new strategies: Attribute and Element suppression. Chose interfaces
> instead of abstract class so that one class (see test cases) can implement
> both.
> - After an element/attribute descriptor has been build completely (including
> the options), the suppression strategies are evaluated. If the
> element/attribute shall be suppressed, it is removed from the introspection
> results. 
> - Important: use <addDefaults add-properties="false" /> ! Otherwise the
> effects of element/attribute suppression will be ... none.
> - Test cases for illustration
> === Code snippets + explanation == :
> * Added new Interfaces 
>   
>   org.apache.commons.betwixt.strategy.AttributeSuppressionStrategy
>   
>   public boolean suppress(AttributeDescriptor descr);
>   
>   
>   org.apache.commons.betwixt.strategy.ElementSuppressionStrategy
>   
>   public boolean suppress(ElementDescriptor descr);
>   
>   
> * Added setter/getter methods for such strategies in
> org.apache.commons.betwixt.IntrospectionConfiguration
> * org.apache.commons.betwixt.digester.ElementRule: Remove element descriptor
> if suppressed:
>         ElementDescriptor descriptor = (ElementDescriptor)digester.pop();
>         
>         final Object peek = digester.peek();
>         
>         if(peek instanceof ElementDescriptor) {
>             ElementDescriptor parent = (ElementDescriptor)digester.peek();
>             // check for element suppression
>             if(
> getXMLIntrospector().getConfiguration().getElementSuppressionStrategy().suppress(descriptor))
> {
>                 parent.removeElementDescriptor(descriptor);
>             }
>         }
> * org.apache.commons.betwixt.digester.AttributeRule: Remove attribute
> descrptor if suppressed:
>         AttributeDescriptor descriptor =
> (AttributeDescriptor)digester.pop();
>         ElementDescriptor parent = (ElementDescriptor)digester.peek();
>         // check for attribute suppression
>         if(
> getXMLIntrospector().getConfiguration().getAttributeSuppressionStrategy().suppress(descriptor))
> {
>             parent.removeAttributeDescriptor(descriptor);
>         }
> * ElementDescriptor: new methods:
>     public void removeAttributeDescriptor(AttributeDescriptor descriptor) {
>         getAttributeList().remove(descriptor);
>     }
>     public void removeElementDescriptor(ElementDescriptor descriptor) {
>         getElementList().remove(descriptor);
>         getContentList().remove(descriptor);
>     }
>     
>         public AttributeDescriptor getAttributeDescriptor(final String name)
> {
>               for (int i = 0, size = attributeDescriptors.length; i < size; 
> i++)
> {
>                   AttributeDescriptor descr = attributeDescriptors[i];
>                   if (descr.getQualifiedName().equals(name)) {
>                       return descr;
>                   }
>               }
>       
>               return null;
>           }
> * Test cases: package org.apache.commons.betwixt.versioning
>   VersioningStrategy implements both an element and versioning strategy
>   VersioningTest well.. .test the versioning.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to