View Javadoc

1   package org.codehaus.xfire.aegis.yom;
2   
3   import javax.xml.namespace.QName;
4   import javax.xml.stream.XMLStreamWriter;
5   
6   import org.codehaus.xfire.aegis.AbstractMessageWriter;
7   import org.codehaus.xfire.aegis.MessageWriter;
8   import org.codehaus.xfire.util.NamespaceHelper;
9   import org.codehaus.yom.Attribute;
10  import org.codehaus.yom.Element;
11  
12  public class YOMWriter
13      extends AbstractMessageWriter
14  {
15      private Element element;
16      
17      public YOMWriter(Element element)
18      {
19          this.element = element;
20      }
21      
22      public void writeValue(Object value)
23      {
24          element.appendChild(value.toString());
25      }
26  
27      public void writeValue(Object value, String ns, String attr)
28      {
29          element.addAttribute(new Attribute(attr, ns, value.toString()));
30      }
31  
32      public MessageWriter getElementWriter(String name)
33      {
34          return getElementWriter(name, element.getNamespaceURI());
35      }
36  
37      public MessageWriter getElementWriter(String name, String namespace)
38      {
39          String prefix = NamespaceHelper.getUniquePrefix(element, namespace);
40          
41          Element child = new Element(prefix + ":" + name, namespace);
42          element.appendChild(child);
43          
44          return new YOMWriter(child);
45      }
46  
47      public MessageWriter getElementWriter(QName qname)
48      {
49          String name = qname.getLocalPart();
50          if (qname.getPrefix().length() > 0)
51          {
52              name = qname.getPrefix() + ":" + name;
53          }
54          else
55          {
56              String prefix = NamespaceHelper.getUniquePrefix(element, qname.getNamespaceURI());
57              name = prefix + ":" + name;
58          }
59          
60          Element child = new Element(name, qname.getNamespaceURI());
61          element.appendChild(child);
62          
63          return new YOMWriter(child);
64      }
65  
66      public XMLStreamWriter getXMLStreamWriter()
67      {
68          throw new UnsupportedOperationException("Stream writing not supported from a YOMWriter.");
69      }
70  
71      public MessageWriter getAttributeWriter(String name)
72      {
73          Attribute att = new Attribute(element.getNamespacePrefix() + ":" + name,
74                                        element.getNamespaceURI(),
75                                        "");
76          element.addAttribute(att);
77          return new AttributeWriter(att);
78      }
79  
80      public MessageWriter getAttributeWriter(String name, String namespace)
81      {
82          Attribute att = null;
83          if (namespace != null && namespace.length() > 0)
84          {
85              String prefix = NamespaceHelper.getUniquePrefix(element, namespace);
86              att = new Attribute(prefix + ":" + name, namespace, "");
87          }
88          else
89          {
90              att = new Attribute(name, "");
91          }
92  
93          element.addAttribute(att);
94          return new AttributeWriter(att);
95      }
96  
97      public MessageWriter getAttributeWriter(QName qname)
98      {
99          return getAttributeWriter(qname.getLocalPart(), qname.getNamespaceURI());
100     }
101 
102     public void close()
103     {
104     }
105 }