1 package org.codehaus.xfire.aegis.stax;
2
3 import javax.xml.namespace.QName;
4 import javax.xml.stream.XMLStreamException;
5 import javax.xml.stream.XMLStreamWriter;
6
7 import org.codehaus.xfire.XFireRuntimeException;
8 import org.codehaus.xfire.aegis.AbstractMessageWriter;
9 import org.codehaus.xfire.aegis.MessageWriter;
10 import org.codehaus.xfire.util.NamespaceHelper;
11
12 public class AttributeWriter
13 extends AbstractMessageWriter
14 {
15 private XMLStreamWriter writer;
16 private String namespace;
17 private String name;
18 private String prefix;
19
20 public AttributeWriter(XMLStreamWriter writer,
21 String name,
22 String namespace)
23 {
24 this.writer = writer;
25 this.name = name;
26 this.namespace = namespace;
27
28 try
29 {
30 if (namespace != null && namespace.length() > 0)
31 prefix = NamespaceHelper.getUniquePrefix(writer, namespace, true);
32 else
33 prefix = "";
34 }
35 catch (XMLStreamException e)
36 {
37 throw new XFireRuntimeException("Couldn't write to stream.");
38 }
39 }
40
41 public void writeValue(Object value)
42 {
43 try
44 {
45 writer.writeAttribute(prefix, namespace, name, value.toString());
46 }
47 catch (XMLStreamException e)
48 {
49 throw new XFireRuntimeException("Error writing document.", e);
50 }
51 }
52
53 public MessageWriter getAttributeWriter(String name)
54 {
55 throw new IllegalStateException();
56 }
57
58 public MessageWriter getAttributeWriter(String name, String namespace)
59 {
60 throw new IllegalStateException();
61 }
62
63 public MessageWriter getAttributeWriter(QName qname)
64 {
65 throw new IllegalStateException();
66 }
67
68 public MessageWriter getElementWriter(String name)
69 {
70 throw new IllegalStateException();
71 }
72
73 public MessageWriter getElementWriter(String name, String namespace)
74 {
75 throw new IllegalStateException();
76 }
77
78 public MessageWriter getElementWriter(QName qname)
79 {
80 throw new IllegalStateException();
81 }
82
83 public void close()
84 {
85 }
86 }