1997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu/* Copyright (c) 2003,2004, Stefan Haustein, Oberhausen, Rhld., Germany 2997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * 3997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * Permission is hereby granted, free of charge, to any person obtaining a copy 4997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * of this software and associated documentation files (the "Software"), to deal 5997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * in the Software without restriction, including without limitation the rights 6997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * to use, copy, modify, merge, publish, distribute, sublicense, and/or 7997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * sell copies of the Software, and to permit persons to whom the Software is 8997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * furnished to do so, subject to the following conditions: 9997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * 10997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * The above copyright notice and this permission notice shall be included in 11997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * all copies or substantial portions of the Software. 12997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * 13997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * IN THE SOFTWARE. */ 20997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 21997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yupackage org.ksoap2.serialization; 22997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 23997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yuimport java.io.*; 24997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yuimport org.ksoap2.*; 25997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yuimport org.ksoap2.kobjects.base64.*; 26997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yuimport org.xmlpull.v1.*; 27997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 28997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu/** 29997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * Base64 (de)serializer 30997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu */ 31997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yupublic class MarshalBase64 implements Marshal { 32997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu public static Class BYTE_ARRAY_CLASS = new byte[0].getClass(); 33997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 34997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu public Object readInstance(XmlPullParser parser, String namespace, String name, 35997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu PropertyInfo expected) 36997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu throws IOException, XmlPullParserException { 37997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu return Base64.decode(parser.nextText()); 38997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu } 39997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 40997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu public void writeInstance(XmlSerializer writer, Object obj) throws IOException { 41997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu writer.text(Base64.encode((byte[]) obj)); 42997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu } 43997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 44997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu public void register(SoapSerializationEnvelope cm) { 45997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu cm.addMapping(cm.xsd, "base64Binary", MarshalBase64.BYTE_ARRAY_CLASS, this); 46997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu cm.addMapping(SoapEnvelope.ENC, "base64", MarshalBase64.BYTE_ARRAY_CLASS, this); 47997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu } 48997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu} 49