Statistics
| Branch: | Revision:

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
}