You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2007/08/11 20:46:48 UTC

svn commit: r564958 - in /incubator/abdera/java/trunk: contrib/rss/src/main/java/org/apache/abdera/contrib/rss/ core/src/main/java/org/apache/abdera/model/ core/src/test/java/org/apache/abdera/test/core/ parser/src/main/java/org/apache/abdera/parser/stax/

Author: jmsnell
Date: Sat Aug 11 11:46:47 2007
New Revision: 564958

URL: http://svn.apache.org/viewvc?view=rev&rev=564958
Log:
Provide a way of inserting an extension element before another one (some extensions are sensitive
to the ordering of their child elements)

Modified:
    incubator/abdera/java/trunk/contrib/rss/src/main/java/org/apache/abdera/contrib/rss/RssCategory.java
    incubator/abdera/java/trunk/contrib/rss/src/main/java/org/apache/abdera/contrib/rss/RssGuid.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/ExtensibleElement.java
    incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/ExtensibleElementWrapper.java
    incubator/abdera/java/trunk/core/src/test/java/org/apache/abdera/test/core/CoreTest.java
    incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMExtensibleElement.java

Modified: incubator/abdera/java/trunk/contrib/rss/src/main/java/org/apache/abdera/contrib/rss/RssCategory.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/contrib/rss/src/main/java/org/apache/abdera/contrib/rss/RssCategory.java?view=diff&rev=564958&r1=564957&r2=564958
==============================================================================
--- incubator/abdera/java/trunk/contrib/rss/src/main/java/org/apache/abdera/contrib/rss/RssCategory.java (original)
+++ incubator/abdera/java/trunk/contrib/rss/src/main/java/org/apache/abdera/contrib/rss/RssCategory.java Sat Aug 11 11:46:47 2007
@@ -25,10 +25,10 @@
 import org.apache.abdera.i18n.iri.IRI;
 import org.apache.abdera.model.Category;
 import org.apache.abdera.model.Element;
-import org.apache.abdera.model.ElementWrapper;
+import org.apache.abdera.model.ExtensibleElementWrapper;
 
 public class RssCategory 
-  extends ElementWrapper 
+  extends ExtensibleElementWrapper 
   implements Category {
 
   public RssCategory(Element internal) {

Modified: incubator/abdera/java/trunk/contrib/rss/src/main/java/org/apache/abdera/contrib/rss/RssGuid.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/contrib/rss/src/main/java/org/apache/abdera/contrib/rss/RssGuid.java?view=diff&rev=564958&r1=564957&r2=564958
==============================================================================
--- incubator/abdera/java/trunk/contrib/rss/src/main/java/org/apache/abdera/contrib/rss/RssGuid.java (original)
+++ incubator/abdera/java/trunk/contrib/rss/src/main/java/org/apache/abdera/contrib/rss/RssGuid.java Sat Aug 11 11:46:47 2007
@@ -25,12 +25,12 @@
 import org.apache.abdera.factory.Factory;
 import org.apache.abdera.i18n.iri.IRI;
 import org.apache.abdera.model.Element;
-import org.apache.abdera.model.ElementWrapper;
+import org.apache.abdera.model.ExtensibleElementWrapper;
 import org.apache.abdera.model.IRIElement;
 import org.apache.abdera.model.Link;
 
 public class RssGuid 
-  extends ElementWrapper 
+  extends ExtensibleElementWrapper 
   implements IRIElement, Link {
 
   public RssGuid(Element internal) {

Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/ExtensibleElement.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/ExtensibleElement.java?view=diff&rev=564958&r1=564957&r2=564958
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/ExtensibleElement.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/ExtensibleElement.java Sat Aug 11 11:46:47 2007
@@ -63,11 +63,23 @@
   void addExtension(Element extension);
 
   /**
+   * Adds an individual extension element before the specified element 
+   */
+  void addExtension(Element extension, Element before);
+  
+  /**
    * Adds an individual extension element
    * @param qname An extension element to create
    * @return The newly created extension element
    */
   <T extends Element>T addExtension(QName qname);
+  
+  /**
+   * Adds an individual extension element
+   * @param qname An extension element to create
+   * @return The newly created extension element
+   */
+  <T extends Element>T addExtension(QName qname, QName before);
   
   /**
    * Adds an individual extension element

Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/ExtensibleElementWrapper.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/ExtensibleElementWrapper.java?view=diff&rev=564958&r1=564957&r2=564958
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/ExtensibleElementWrapper.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/ExtensibleElementWrapper.java Sat Aug 11 11:46:47 2007
@@ -97,5 +97,13 @@
   public void setMustPreserveWhitespace(boolean preserve) {
     getExtInternal().setMustPreserveWhitespace(preserve);
   }
+
+  public void addExtension(Element extension, Element before) {
+    getExtInternal().addExtension(extension,before);
+  }
+
+  public <T extends Element> T addExtension(QName qname, QName before) {
+    return getExtInternal().addExtension(qname,before);
+  }
   
 }

Modified: incubator/abdera/java/trunk/core/src/test/java/org/apache/abdera/test/core/CoreTest.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/test/java/org/apache/abdera/test/core/CoreTest.java?view=diff&rev=564958&r1=564957&r2=564958
==============================================================================
--- incubator/abdera/java/trunk/core/src/test/java/org/apache/abdera/test/core/CoreTest.java (original)
+++ incubator/abdera/java/trunk/core/src/test/java/org/apache/abdera/test/core/CoreTest.java Sat Aug 11 11:46:47 2007
@@ -720,6 +720,12 @@
 
     public void writeTo(Writer writer) throws IOException {
     }
+
+    public void addExtension(Element extension, Element before) {}
+
+    public <T extends Element> T addExtension(QName qname, QName before) {
+      return null;
+    }
     
   }
   
@@ -1362,6 +1368,12 @@
     }
 
     public void writeTo(Writer writer) throws IOException {
+    }
+
+    public void addExtension(Element extension, Element before) {}
+
+    public <T extends Element> T addExtension(QName qname, QName before) {
+      return null;
     }
     
   }

Modified: incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMExtensibleElement.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMExtensibleElement.java?view=diff&rev=564958&r1=564957&r2=564958
==============================================================================
--- incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMExtensibleElement.java (original)
+++ incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMExtensibleElement.java Sat Aug 11 11:46:47 2007
@@ -181,4 +181,25 @@
     }
     return t;
   }
+
+  public void addExtension(Element extension, Element before) {
+    if (before == null) {
+      addExtension(extension);
+    } else {
+      extension.setParentElement(this);
+      ((OMElement)before).insertSiblingBefore((OMElement)extension);
+    }
+  }
+
+  public <T extends Element> T addExtension(QName qname, QName before) {
+    OMElement el = getFirstChildWithName(before);
+    T element = getFactory().newElement(qname);
+    if (el == null) {
+      addExtension(element);
+    } else {
+      element.setParentElement(this);
+      el.insertSiblingBefore((OMElement)element);
+    }
+    return element;
+  }
 }