1997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu
2997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yupackage org.ksoap2.serialization;
3997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu
4997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu/**
5997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * A class that implements only {@link NullSoapObject#toString()}.
6997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * This is useful in the case where you have a {@link SoapObject} representing an optional
7997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * property in your SOAP response.<br/><br/>
8997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu *
9997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * Example:
10997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * <pre>
11997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * <code>
12997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * private String getAge(SoapObject person) {
13997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu *   return person.getPropertySafely("age").toString();
14997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * }
15997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * </code>
16997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * </pre>
17997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * <ul>
18997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * <li> When the person object has an {@code age} property, the {@code age} will be returned. </li>
19997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * <li>
20997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu *   When the person object does not have an {@code age} property,
21997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu *   {@link SoapObject#getPropertySafely(String)}
22997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu *   returns a NullSoapObject, which in turn returns {@code null} for {@link NullSoapObject#toString()}.
23997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * </li>
24997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * </ul>
25997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * Now it is safe to always try and get the {@code age} property (assuming your downstream
26997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu * code can handle {@code age}).
27997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu */
28997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu
29997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yupublic class NullSoapObject {
30997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu    /**
31997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu     * Overridden specifically to always return null.
32997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu     * See the example in this class's description as to how this can be useful.
33997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu     *
34997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu     * @return {@code null}
35997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu     * @see SoapObject#getPropertySafely(String)
36997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu     */
37997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu    public String toString() {
38997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu        return null;
39997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu    }
40997171ed3fdf8baf96d8fdf9dd3201a459327d89Ryan Yu}
41