1 package org.codehaus.xfire.xmlbeans;
2
3 import org.apache.xmlbeans.XmlCursor;
4 import org.apache.xmlbeans.XmlObject;
5 import org.codehaus.xfire.fault.XFireFault;
6 import org.codehaus.xfire.soap.Soap11;
7
8 /***
9 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
10 * @since Nov 17, 2004
11 */
12 public class XMLBeansFault
13 extends XFireFault
14 {
15 private static final long serialVersionUID = 1L;
16
17 private XmlObject fault;
18
19 /***
20 * @param fault The XmlObject representing the fault.
21 */
22 public XMLBeansFault(XmlObject fault)
23 {
24 super();
25 this.fault = fault;
26
27 XmlCursor cursor = fault.newCursor();
28 cursor.toFirstChild();
29
30 if (cursor.getName().getNamespaceURI().equals(Soap11.getInstance().getNamespace()))
31 createSoap11Fault(cursor);
32 else
33 createSoap12Fault(cursor);
34 }
35
36 /***
37 * Fill in the fault information from the XmlCursor.
38 * @param cursor
39 */
40 protected void createSoap11Fault(XmlCursor cursor)
41 {
42 cursor.toFirstChild();
43
44 do
45 {
46 if ( cursor.getName().getLocalPart().equals("faultcode") )
47 {
48 setFaultCode( cursor.getTextValue() );
49 }
50 if ( cursor.getName().getLocalPart().equals("faultstring") )
51 {
52 setMessage( cursor.getTextValue() );
53 }
54 if ( cursor.getName().getLocalPart().equals("faultactor") )
55 {
56 setRole( cursor.getTextValue() );
57 }
58 if ( cursor.getName().getLocalPart().equals("faultcode") )
59 {
60 setDetail( cursor.getDomNode() );
61 }
62 }
63 while( cursor.toNextSibling() );
64 }
65
66
67 /***
68 * Fill in the fault information from the XmlCursor.
69 * @param cursor
70 */
71 protected void createSoap12Fault(XmlCursor cursor)
72 {
73
74 }
75
76 /***
77 * @return Returns the fault.
78 */
79 public XmlObject getFault()
80 {
81 return fault;
82 }
83
84 /***
85 * @param fault The fault to set.
86 */
87 public void setFault(XmlObject fault)
88 {
89 this.fault = fault;
90 }
91 }