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