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 Yu/** 24997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * A class that is used to encapsulate primitive types (represented by a string 25997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * in XML serialization). 26997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * 27997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * Basically, the SoapPrimitive class encapsulates "unknown" primitive types 28997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * (similar to SoapObject encapsulating unknown complex types). For example, new 29997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * SoapPrimitive (classMap.xsd, "float", "12.3") allows you to send a float from 30997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * a MIDP device to a server although MIDP does not support floats. In the other 31997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * direction, kSOAP will deserialize any primitive type (=no subelements) that 32997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * are not recognized by the ClassMap to SoapPrimitive, preserving the 33997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * namespace, name and string value (this is how the stockquote example works). 34997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu */ 35997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 36997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yupublic class SoapPrimitive extends AttributeContainer { 37997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu String namespace; 38997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu String name; 39997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu String value; 40997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 41997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu public SoapPrimitive(String namespace, String name, String value) { 42997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu this.namespace = namespace; 43997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu this.name = name; 44997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu this.value = value; 45997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu } 46997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 47997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu public boolean equals(Object o) { 48997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu if (!(o instanceof SoapPrimitive)) { 49997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu return false; 50997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu } 51997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu SoapPrimitive p = (SoapPrimitive) o; 52997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu boolean varsEqual = name.equals(p.name) 53997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu && (namespace == null ? p.namespace == null : namespace.equals(p.namespace)) 54997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu && (value == null ? (p.value == null) : value.equals(p.value)); 55997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu return varsEqual && attributesAreEqual(p); 56997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu } 57997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 58997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu public int hashCode() { 59997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu return name.hashCode() ^ (namespace == null ? 0 : namespace.hashCode()); 60997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu } 61997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 62997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu public String toString() { 63997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu return value; 64997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu } 65997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 66997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu public String getNamespace() { 67997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu return namespace; 68997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu } 69997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu 70997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu public String getName() { 71997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu return name; 72997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu } 73997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu} 74