1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant/* Copyright (c) 2003,2004 Stefan Haustein, Oberhausen, Rhld., Germany
2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * Copyright (c) 2006, James Seigel, Calgary, AB., Canada
3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant *
4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * Permission is hereby granted, free of charge, to any person obtaining a copy
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant * of this software and associated documentation files (the "Software"), to deal
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant * in the Software without restriction, including without limitation the rights
7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * to use, copy, modify, merge, publish, distribute, sublicense, and/or
8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * sell copies of the Software, and to permit persons to whom the Software is
9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * furnished to do so, subject to the following conditions:
10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *
11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * The  above copyright notice and this permission notice shall be included in
12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * all copies or substantial portions of the Software.
13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant *
14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1883e2c4d877fe2d7793868b1c6a5d9525a7c4d431Marshall Clow * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
191b92188a82b01e76ac6e8ad5f997293c2a078adcMarshall Clow * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow * IN THE SOFTWARE. */
21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantpackage org.ksoap2.serialization;
23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantimport java.io.*;
25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantimport org.xmlpull.v1.*;
27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantpublic class MarshalFloat implements Marshal {
29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    public Object readInstance(XmlPullParser parser, String namespace, String name,
31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            PropertyInfo propertyInfo)
32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            throws IOException, XmlPullParserException {
33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        String stringValue = parser.nextText();
34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        Object result;
35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        if (name.equals("float")) {
36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            result = new Float(stringValue);
37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        } else if (name.equals("double")) {
38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            result = new Double(stringValue);
39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        } else if (name.equals("decimal")) {
40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            result = new java.math.BigDecimal(stringValue);
41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        } else {
42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant            throw new RuntimeException("float, double, or decimal expected");
43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        }
44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant        return result;
45fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant    }
46fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant
47fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant    public void writeInstance(XmlSerializer writer, Object instance) throws IOException {
48fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant        writer.text(instance.toString());
49fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant    }
50fcd8db7133c56a5a627f3922ce4a180c12287dd9Howard Hinnant
51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    public void register(SoapSerializationEnvelope cm) {
52        cm.addMapping(cm.xsd, "float", Float.class, this);
53        cm.addMapping(cm.xsd, "double", Double.class, this);
54        cm.addMapping(cm.xsd, "decimal", java.math.BigDecimal.class, this);
55    }
56}
57