root / src / com / rackspace / cloud / servers / api / client / parsers / CloudServersFaultXMLParser.java @ 038ac9a4
History | View | Annotate | Download (2.4 kB)
1 | 3e6fd0e9 | Michael Mayo | /**
|
---|---|---|---|
2 | 3e6fd0e9 | Michael Mayo | *
|
3 | 3e6fd0e9 | Michael Mayo | */
|
4 | 3e6fd0e9 | Michael Mayo | package com.rackspace.cloud.servers.api.client.parsers; |
5 | 3e6fd0e9 | Michael Mayo | |
6 | 3e6fd0e9 | Michael Mayo | import org.xml.sax.Attributes; |
7 | 3e6fd0e9 | Michael Mayo | import org.xml.sax.helpers.DefaultHandler; |
8 | 3e6fd0e9 | Michael Mayo | |
9 | d1b6f270 | Chmouel Boudjnah | import android.util.Log; |
10 | d1b6f270 | Chmouel Boudjnah | |
11 | 3e6fd0e9 | Michael Mayo | import com.rackspace.cloud.servers.api.client.CloudServersException; |
12 | 3e6fd0e9 | Michael Mayo | |
13 | 3e6fd0e9 | Michael Mayo | /**
|
14 | e7274b25 | Michael Mayo | * @author Mike Mayo - mike.mayo@rackspace.com - twitter.com/greenisus
|
15 | 038ac9a4 | koutsoub | *
|
16 | 3e6fd0e9 | Michael Mayo | */
|
17 | 3e6fd0e9 | Michael Mayo | public class CloudServersFaultXMLParser extends DefaultHandler { |
18 | 3e6fd0e9 | Michael Mayo | |
19 | 038ac9a4 | koutsoub | // <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
20 | 038ac9a4 | koutsoub | // <cloudServersFault
|
21 | 038ac9a4 | koutsoub | // xmlns="http://docs.rackspacecloud.com/servers/api/v1.0" code="400">
|
22 | 038ac9a4 | koutsoub | // <message>422 Unprocessable Entity: Cannot perform requested action until
|
23 | 038ac9a4 | koutsoub | // reboot is complete.</message>
|
24 | 038ac9a4 | koutsoub | // <details>com.rackspace.cloud.service.servers.CloudServersFault: 422
|
25 | 038ac9a4 | koutsoub | // Unprocessable Entity: Cannot perform requested action until reboot is
|
26 | 038ac9a4 | koutsoub | // complete.</details>
|
27 | 038ac9a4 | koutsoub | // </cloudServersFault>
|
28 | 3e6fd0e9 | Michael Mayo | |
29 | 3e6fd0e9 | Michael Mayo | private CloudServersException exception;
|
30 | 3e6fd0e9 | Michael Mayo | private StringBuffer currentData; |
31 | 3e6fd0e9 | Michael Mayo | |
32 | 3e6fd0e9 | Michael Mayo | public void startDocument() { |
33 | 3e6fd0e9 | Michael Mayo | exception = new CloudServersException();
|
34 | 3e6fd0e9 | Michael Mayo | } |
35 | 3e6fd0e9 | Michael Mayo | |
36 | 3e6fd0e9 | Michael Mayo | public void endDocument() { |
37 | 3e6fd0e9 | Michael Mayo | } |
38 | 3e6fd0e9 | Michael Mayo | |
39 | 038ac9a4 | koutsoub | public void startElement(String uri, String name, String qName, |
40 | 038ac9a4 | koutsoub | Attributes atts) {
|
41 | 3e6fd0e9 | Michael Mayo | |
42 | 3e6fd0e9 | Michael Mayo | currentData = new StringBuffer(); |
43 | 3e6fd0e9 | Michael Mayo | if ("cloudServersFault".equals(name)) { |
44 | 3e6fd0e9 | Michael Mayo | exception.setCode(Integer.parseInt(atts.getValue("code"))); |
45 | 3e6fd0e9 | Michael Mayo | } |
46 | 3e6fd0e9 | Michael Mayo | } |
47 | 3e6fd0e9 | Michael Mayo | |
48 | 3e6fd0e9 | Michael Mayo | public void endElement(String uri, String name, String qName) { |
49 | 3e6fd0e9 | Michael Mayo | if ("message".equals(name)) { |
50 | 3e6fd0e9 | Michael Mayo | exception.setMessage(currentData.toString()); |
51 | 3e6fd0e9 | Michael Mayo | } else if ("details".equals(name)) { |
52 | 3e6fd0e9 | Michael Mayo | exception.setDetails(currentData.toString()); |
53 | 3e6fd0e9 | Michael Mayo | } |
54 | 3e6fd0e9 | Michael Mayo | } |
55 | 3e6fd0e9 | Michael Mayo | |
56 | 3e6fd0e9 | Michael Mayo | public void characters(char ch[], int start, int length) { |
57 | d1b6f270 | Chmouel Boudjnah | Log.d("Rackspace-Cloud", "Characters: \""); |
58 | 3e6fd0e9 | Michael Mayo | for (int i = start; i < start + length; i++) { |
59 | 3e6fd0e9 | Michael Mayo | switch (ch[i]) {
|
60 | 3e6fd0e9 | Michael Mayo | case '\\': |
61 | d1b6f270 | Chmouel Boudjnah | Log.d("Rackspace-Cloud", "\\\\"); |
62 | 3e6fd0e9 | Michael Mayo | break;
|
63 | 3e6fd0e9 | Michael Mayo | case '"': |
64 | d1b6f270 | Chmouel Boudjnah | Log.d("Rackspace-Cloud", "\\\""); |
65 | 3e6fd0e9 | Michael Mayo | break;
|
66 | 3e6fd0e9 | Michael Mayo | case '\n': |
67 | d1b6f270 | Chmouel Boudjnah | Log.d("Rackspace-Cloud", "\\n"); |
68 | 3e6fd0e9 | Michael Mayo | break;
|
69 | 3e6fd0e9 | Michael Mayo | case '\r': |
70 | d1b6f270 | Chmouel Boudjnah | Log.d("Rackspace-Cloud", "\\r"); |
71 | 3e6fd0e9 | Michael Mayo | break;
|
72 | 3e6fd0e9 | Michael Mayo | case '\t': |
73 | d1b6f270 | Chmouel Boudjnah | Log.d("Rackspace-Cloud", "\\t"); |
74 | 3e6fd0e9 | Michael Mayo | break;
|
75 | 3e6fd0e9 | Michael Mayo | default:
|
76 | d1b6f270 | Chmouel Boudjnah | Log.d("Rackspace-Cloud", String.valueOf(ch[i])); |
77 | 3e6fd0e9 | Michael Mayo | break;
|
78 | 3e6fd0e9 | Michael Mayo | } |
79 | 3e6fd0e9 | Michael Mayo | } |
80 | d1b6f270 | Chmouel Boudjnah | Log.d("Rackspace-Cloud", "\"\n"); |
81 | 038ac9a4 | koutsoub | |
82 | 3e6fd0e9 | Michael Mayo | for (int i = start; i < (start + length); i++) { |
83 | 3e6fd0e9 | Michael Mayo | currentData.append(ch[i]); |
84 | 3e6fd0e9 | Michael Mayo | } |
85 | 3e6fd0e9 | Michael Mayo | } |
86 | 3e6fd0e9 | Michael Mayo | |
87 | 3e6fd0e9 | Michael Mayo | /**
|
88 | 3e6fd0e9 | Michael Mayo | * @return the exception
|
89 | 3e6fd0e9 | Michael Mayo | */
|
90 | 3e6fd0e9 | Michael Mayo | public CloudServersException getException() {
|
91 | 3e6fd0e9 | Michael Mayo | return exception;
|
92 | 3e6fd0e9 | Michael Mayo | } |
93 | 3e6fd0e9 | Michael Mayo | |
94 | 3e6fd0e9 | Michael Mayo | /**
|
95 | 038ac9a4 | koutsoub | * @param exception
|
96 | 038ac9a4 | koutsoub | * the exception to set
|
97 | 3e6fd0e9 | Michael Mayo | */
|
98 | 3e6fd0e9 | Michael Mayo | public void setException(CloudServersException exception) { |
99 | 3e6fd0e9 | Michael Mayo | this.exception = exception;
|
100 | 3e6fd0e9 | Michael Mayo | } |
101 | 3e6fd0e9 | Michael Mayo | |
102 | 3e6fd0e9 | Michael Mayo | } |