Micha Kops avatar Micha Kops committed d775fbb

Initial import.

Comments (0)

Files changed (40)

+.project
+.settings
+.classpath
+target
+# Confluence SOAP Client Tutorial
+
+Short examples how to create a SOAP client for your Confluence instance in less than five minutes.
+
+Please feel free to have a look at [my blog] for the full tutorial.
+
+---
+
+**2013 Micha Kops / hasCode.com**
+
+   [my blog]:http://www.hascode.com/
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.hascode.tutorial</groupId>
+	<artifactId>confluence-quick-soapclient</artifactId>
+	<version>0.0.1</version>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.axis</groupId>
+			<artifactId>axis</artifactId>
+			<version>1.4</version>
+		</dependency>
+		<dependency>
+			<groupId>javax.xml</groupId>
+			<artifactId>jaxrpc-api</artifactId>
+			<version>1.1</version>
+		</dependency>
+		<dependency>
+			<groupId>commons-discovery</groupId>
+			<artifactId>commons-discovery</artifactId>
+			<version>0.4</version>
+		</dependency>
+		<dependency>
+			<groupId>javax.xml.soap</groupId>
+			<artifactId>saaj-api</artifactId>
+			<version>1.3</version>
+		</dependency>
+		<dependency>
+			<groupId>axis</groupId>
+			<artifactId>axis-wsdl4j</artifactId>
+			<version>1.5.1</version>
+		</dependency>
+	</dependencies>
+</project>

src/main/java/com/atlassian/confluence/rpc/AlreadyExistsException.java

+/**
+ * AlreadyExistsException.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package com.atlassian.confluence.rpc;
+
+public class AlreadyExistsException  extends com.atlassian.confluence.rpc.RemoteException  implements java.io.Serializable {
+    public AlreadyExistsException() {
+    }
+
+    private java.lang.Object __equalsCalc = null;
+    public synchronized boolean equals(java.lang.Object obj) {
+        if (!(obj instanceof AlreadyExistsException)) return false;
+        AlreadyExistsException other = (AlreadyExistsException) obj;
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = super.equals(obj);
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    private boolean __hashCodeCalc = false;
+    public synchronized int hashCode() {
+        if (__hashCodeCalc) {
+            return 0;
+        }
+        __hashCodeCalc = true;
+        int _hashCode = super.hashCode();
+        __hashCodeCalc = false;
+        return _hashCode;
+    }
+
+    // Type metadata
+    private static org.apache.axis.description.TypeDesc typeDesc =
+        new org.apache.axis.description.TypeDesc(AlreadyExistsException.class, true);
+
+    static {
+        typeDesc.setXmlType(new javax.xml.namespace.QName("http://rpc.confluence.atlassian.com", "AlreadyExistsException"));
+    }
+
+    /**
+     * Return type metadata object
+     */
+    public static org.apache.axis.description.TypeDesc getTypeDesc() {
+        return typeDesc;
+    }
+
+    /**
+     * Get Custom Serializer
+     */
+    public static org.apache.axis.encoding.Serializer getSerializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanSerializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+    /**
+     * Get Custom Deserializer
+     */
+    public static org.apache.axis.encoding.Deserializer getDeserializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanDeserializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+
+    /**
+     * Writes the exception data to the faultDetails
+     */
+    public void writeDetails(javax.xml.namespace.QName qname, org.apache.axis.encoding.SerializationContext context) throws java.io.IOException {
+        context.serialize(qname, null, this);
+    }
+}

src/main/java/com/atlassian/confluence/rpc/AuthenticationFailedException.java

+/**
+ * AuthenticationFailedException.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package com.atlassian.confluence.rpc;
+
+public class AuthenticationFailedException  extends com.atlassian.confluence.rpc.RemoteException  implements java.io.Serializable {
+    public AuthenticationFailedException() {
+    }
+
+    private java.lang.Object __equalsCalc = null;
+    public synchronized boolean equals(java.lang.Object obj) {
+        if (!(obj instanceof AuthenticationFailedException)) return false;
+        AuthenticationFailedException other = (AuthenticationFailedException) obj;
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = super.equals(obj);
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    private boolean __hashCodeCalc = false;
+    public synchronized int hashCode() {
+        if (__hashCodeCalc) {
+            return 0;
+        }
+        __hashCodeCalc = true;
+        int _hashCode = super.hashCode();
+        __hashCodeCalc = false;
+        return _hashCode;
+    }
+
+    // Type metadata
+    private static org.apache.axis.description.TypeDesc typeDesc =
+        new org.apache.axis.description.TypeDesc(AuthenticationFailedException.class, true);
+
+    static {
+        typeDesc.setXmlType(new javax.xml.namespace.QName("http://rpc.confluence.atlassian.com", "AuthenticationFailedException"));
+    }
+
+    /**
+     * Return type metadata object
+     */
+    public static org.apache.axis.description.TypeDesc getTypeDesc() {
+        return typeDesc;
+    }
+
+    /**
+     * Get Custom Serializer
+     */
+    public static org.apache.axis.encoding.Serializer getSerializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanSerializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+    /**
+     * Get Custom Deserializer
+     */
+    public static org.apache.axis.encoding.Deserializer getDeserializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanDeserializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+
+    /**
+     * Writes the exception data to the faultDetails
+     */
+    public void writeDetails(javax.xml.namespace.QName qname, org.apache.axis.encoding.SerializationContext context) throws java.io.IOException {
+        context.serialize(qname, null, this);
+    }
+}

src/main/java/com/atlassian/confluence/rpc/InvalidSessionException.java

+/**
+ * InvalidSessionException.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package com.atlassian.confluence.rpc;
+
+public class InvalidSessionException  extends com.atlassian.confluence.rpc.RemoteException  implements java.io.Serializable {
+    public InvalidSessionException() {
+    }
+
+    private java.lang.Object __equalsCalc = null;
+    public synchronized boolean equals(java.lang.Object obj) {
+        if (!(obj instanceof InvalidSessionException)) return false;
+        InvalidSessionException other = (InvalidSessionException) obj;
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = super.equals(obj);
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    private boolean __hashCodeCalc = false;
+    public synchronized int hashCode() {
+        if (__hashCodeCalc) {
+            return 0;
+        }
+        __hashCodeCalc = true;
+        int _hashCode = super.hashCode();
+        __hashCodeCalc = false;
+        return _hashCode;
+    }
+
+    // Type metadata
+    private static org.apache.axis.description.TypeDesc typeDesc =
+        new org.apache.axis.description.TypeDesc(InvalidSessionException.class, true);
+
+    static {
+        typeDesc.setXmlType(new javax.xml.namespace.QName("http://rpc.confluence.atlassian.com", "InvalidSessionException"));
+    }
+
+    /**
+     * Return type metadata object
+     */
+    public static org.apache.axis.description.TypeDesc getTypeDesc() {
+        return typeDesc;
+    }
+
+    /**
+     * Get Custom Serializer
+     */
+    public static org.apache.axis.encoding.Serializer getSerializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanSerializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+    /**
+     * Get Custom Deserializer
+     */
+    public static org.apache.axis.encoding.Deserializer getDeserializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanDeserializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+
+    /**
+     * Writes the exception data to the faultDetails
+     */
+    public void writeDetails(javax.xml.namespace.QName qname, org.apache.axis.encoding.SerializationContext context) throws java.io.IOException {
+        context.serialize(qname, null, this);
+    }
+}

src/main/java/com/atlassian/confluence/rpc/NotPermittedException.java

+/**
+ * NotPermittedException.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package com.atlassian.confluence.rpc;
+
+public class NotPermittedException  extends com.atlassian.confluence.rpc.RemoteException  implements java.io.Serializable {
+    public NotPermittedException() {
+    }
+
+    private java.lang.Object __equalsCalc = null;
+    public synchronized boolean equals(java.lang.Object obj) {
+        if (!(obj instanceof NotPermittedException)) return false;
+        NotPermittedException other = (NotPermittedException) obj;
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = super.equals(obj);
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    private boolean __hashCodeCalc = false;
+    public synchronized int hashCode() {
+        if (__hashCodeCalc) {
+            return 0;
+        }
+        __hashCodeCalc = true;
+        int _hashCode = super.hashCode();
+        __hashCodeCalc = false;
+        return _hashCode;
+    }
+
+    // Type metadata
+    private static org.apache.axis.description.TypeDesc typeDesc =
+        new org.apache.axis.description.TypeDesc(NotPermittedException.class, true);
+
+    static {
+        typeDesc.setXmlType(new javax.xml.namespace.QName("http://rpc.confluence.atlassian.com", "NotPermittedException"));
+    }
+
+    /**
+     * Return type metadata object
+     */
+    public static org.apache.axis.description.TypeDesc getTypeDesc() {
+        return typeDesc;
+    }
+
+    /**
+     * Get Custom Serializer
+     */
+    public static org.apache.axis.encoding.Serializer getSerializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanSerializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+    /**
+     * Get Custom Deserializer
+     */
+    public static org.apache.axis.encoding.Deserializer getDeserializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanDeserializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+
+    /**
+     * Writes the exception data to the faultDetails
+     */
+    public void writeDetails(javax.xml.namespace.QName qname, org.apache.axis.encoding.SerializationContext context) throws java.io.IOException {
+        context.serialize(qname, null, this);
+    }
+}

src/main/java/com/atlassian/confluence/rpc/RemoteException.java

+/**
+ * RemoteException.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package com.atlassian.confluence.rpc;
+
+public class RemoteException  extends org.apache.axis.AxisFault  implements java.io.Serializable {
+    public RemoteException() {
+    }
+
+    private java.lang.Object __equalsCalc = null;
+    public synchronized boolean equals(java.lang.Object obj) {
+        if (!(obj instanceof RemoteException)) return false;
+        RemoteException other = (RemoteException) obj;
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = true;
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    private boolean __hashCodeCalc = false;
+    public synchronized int hashCode() {
+        if (__hashCodeCalc) {
+            return 0;
+        }
+        __hashCodeCalc = true;
+        int _hashCode = 1;
+        __hashCodeCalc = false;
+        return _hashCode;
+    }
+
+    // Type metadata
+    private static org.apache.axis.description.TypeDesc typeDesc =
+        new org.apache.axis.description.TypeDesc(RemoteException.class, true);
+
+    static {
+        typeDesc.setXmlType(new javax.xml.namespace.QName("http://rpc.confluence.atlassian.com", "RemoteException"));
+    }
+
+    /**
+     * Return type metadata object
+     */
+    public static org.apache.axis.description.TypeDesc getTypeDesc() {
+        return typeDesc;
+    }
+
+    /**
+     * Get Custom Serializer
+     */
+    public static org.apache.axis.encoding.Serializer getSerializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanSerializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+    /**
+     * Get Custom Deserializer
+     */
+    public static org.apache.axis.encoding.Deserializer getDeserializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanDeserializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+
+    /**
+     * Writes the exception data to the faultDetails
+     */
+    public void writeDetails(javax.xml.namespace.QName qname, org.apache.axis.encoding.SerializationContext context) throws java.io.IOException {
+        context.serialize(qname, null, this);
+    }
+}

src/main/java/com/atlassian/confluence/rpc/VersionMismatchException.java

+/**
+ * VersionMismatchException.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package com.atlassian.confluence.rpc;
+
+public class VersionMismatchException  extends com.atlassian.confluence.rpc.RemoteException  implements java.io.Serializable {
+    public VersionMismatchException() {
+    }
+
+    private java.lang.Object __equalsCalc = null;
+    public synchronized boolean equals(java.lang.Object obj) {
+        if (!(obj instanceof VersionMismatchException)) return false;
+        VersionMismatchException other = (VersionMismatchException) obj;
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = super.equals(obj);
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    private boolean __hashCodeCalc = false;
+    public synchronized int hashCode() {
+        if (__hashCodeCalc) {
+            return 0;
+        }
+        __hashCodeCalc = true;
+        int _hashCode = super.hashCode();
+        __hashCodeCalc = false;
+        return _hashCode;
+    }
+
+    // Type metadata
+    private static org.apache.axis.description.TypeDesc typeDesc =
+        new org.apache.axis.description.TypeDesc(VersionMismatchException.class, true);
+
+    static {
+        typeDesc.setXmlType(new javax.xml.namespace.QName("http://rpc.confluence.atlassian.com", "VersionMismatchException"));
+    }
+
+    /**
+     * Return type metadata object
+     */
+    public static org.apache.axis.description.TypeDesc getTypeDesc() {
+        return typeDesc;
+    }
+
+    /**
+     * Get Custom Serializer
+     */
+    public static org.apache.axis.encoding.Serializer getSerializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanSerializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+    /**
+     * Get Custom Deserializer
+     */
+    public static org.apache.axis.encoding.Deserializer getDeserializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanDeserializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+
+    /**
+     * Writes the exception data to the faultDetails
+     */
+    public void writeDetails(javax.xml.namespace.QName qname, org.apache.axis.encoding.SerializationContext context) throws java.io.IOException {
+        context.serialize(qname, null, this);
+    }
+}

src/main/java/com/atlassian/confluence/rpc/soap/beans/AbstractRemotePageSummary.java

+/**
+ * AbstractRemotePageSummary.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package com.atlassian.confluence.rpc.soap.beans;
+
+public abstract class AbstractRemotePageSummary  implements java.io.Serializable {
+    private long id;
+
+    private int permissions;
+
+    private java.lang.String space;
+
+    private java.lang.String title;
+
+    private java.lang.String url;
+
+    public AbstractRemotePageSummary() {
+    }
+
+    public AbstractRemotePageSummary(
+           long id,
+           int permissions,
+           java.lang.String space,
+           java.lang.String title,
+           java.lang.String url) {
+           this.id = id;
+           this.permissions = permissions;
+           this.space = space;
+           this.title = title;
+           this.url = url;
+    }
+
+
+    /**
+     * Gets the id value for this AbstractRemotePageSummary.
+     * 
+     * @return id
+     */
+    public long getId() {
+        return id;
+    }
+
+
+    /**
+     * Sets the id value for this AbstractRemotePageSummary.
+     * 
+     * @param id
+     */
+    public void setId(long id) {
+        this.id = id;
+    }
+
+
+    /**
+     * Gets the permissions value for this AbstractRemotePageSummary.
+     * 
+     * @return permissions
+     */
+    public int getPermissions() {
+        return permissions;
+    }
+
+
+    /**
+     * Sets the permissions value for this AbstractRemotePageSummary.
+     * 
+     * @param permissions
+     */
+    public void setPermissions(int permissions) {
+        this.permissions = permissions;
+    }
+
+
+    /**
+     * Gets the space value for this AbstractRemotePageSummary.
+     * 
+     * @return space
+     */
+    public java.lang.String getSpace() {
+        return space;
+    }
+
+
+    /**
+     * Sets the space value for this AbstractRemotePageSummary.
+     * 
+     * @param space
+     */
+    public void setSpace(java.lang.String space) {
+        this.space = space;
+    }
+
+
+    /**
+     * Gets the title value for this AbstractRemotePageSummary.
+     * 
+     * @return title
+     */
+    public java.lang.String getTitle() {
+        return title;
+    }
+
+
+    /**
+     * Sets the title value for this AbstractRemotePageSummary.
+     * 
+     * @param title
+     */
+    public void setTitle(java.lang.String title) {
+        this.title = title;
+    }
+
+
+    /**
+     * Gets the url value for this AbstractRemotePageSummary.
+     * 
+     * @return url
+     */
+    public java.lang.String getUrl() {
+        return url;
+    }
+
+
+    /**
+     * Sets the url value for this AbstractRemotePageSummary.
+     * 
+     * @param url
+     */
+    public void setUrl(java.lang.String url) {
+        this.url = url;
+    }
+
+    private java.lang.Object __equalsCalc = null;
+    public synchronized boolean equals(java.lang.Object obj) {
+        if (!(obj instanceof AbstractRemotePageSummary)) return false;
+        AbstractRemotePageSummary other = (AbstractRemotePageSummary) obj;
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = true && 
+            this.id == other.getId() &&
+            this.permissions == other.getPermissions() &&
+            ((this.space==null && other.getSpace()==null) || 
+             (this.space!=null &&
+              this.space.equals(other.getSpace()))) &&
+            ((this.title==null && other.getTitle()==null) || 
+             (this.title!=null &&
+              this.title.equals(other.getTitle()))) &&
+            ((this.url==null && other.getUrl()==null) || 
+             (this.url!=null &&
+              this.url.equals(other.getUrl())));
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    private boolean __hashCodeCalc = false;
+    public synchronized int hashCode() {
+        if (__hashCodeCalc) {
+            return 0;
+        }
+        __hashCodeCalc = true;
+        int _hashCode = 1;
+        _hashCode += new Long(getId()).hashCode();
+        _hashCode += getPermissions();
+        if (getSpace() != null) {
+            _hashCode += getSpace().hashCode();
+        }
+        if (getTitle() != null) {
+            _hashCode += getTitle().hashCode();
+        }
+        if (getUrl() != null) {
+            _hashCode += getUrl().hashCode();
+        }
+        __hashCodeCalc = false;
+        return _hashCode;
+    }
+
+    // Type metadata
+    private static org.apache.axis.description.TypeDesc typeDesc =
+        new org.apache.axis.description.TypeDesc(AbstractRemotePageSummary.class, true);
+
+    static {
+        typeDesc.setXmlType(new javax.xml.namespace.QName("http://beans.soap.rpc.confluence.atlassian.com", "AbstractRemotePageSummary"));
+        org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("id");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "id"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "long"));
+        elemField.setNillable(false);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("permissions");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "permissions"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "int"));
+        elemField.setNillable(false);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("space");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "space"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("title");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "title"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("url");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "url"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+    }
+
+    /**
+     * Return type metadata object
+     */
+    public static org.apache.axis.description.TypeDesc getTypeDesc() {
+        return typeDesc;
+    }
+
+    /**
+     * Get Custom Serializer
+     */
+    public static org.apache.axis.encoding.Serializer getSerializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanSerializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+    /**
+     * Get Custom Deserializer
+     */
+    public static org.apache.axis.encoding.Deserializer getDeserializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanDeserializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+}

src/main/java/com/atlassian/confluence/rpc/soap/beans/RemoteAttachment.java

+/**
+ * RemoteAttachment.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package com.atlassian.confluence.rpc.soap.beans;
+
+public class RemoteAttachment  implements java.io.Serializable {
+    private java.lang.String comment;
+
+    private java.lang.String contentType;
+
+    private java.util.Calendar created;
+
+    private java.lang.String creator;
+
+    private java.lang.String fileName;
+
+    private long fileSize;
+
+    private long id;
+
+    private long pageId;
+
+    private java.lang.String title;
+
+    private java.lang.String url;
+
+    public RemoteAttachment() {
+    }
+
+    public RemoteAttachment(
+           java.lang.String comment,
+           java.lang.String contentType,
+           java.util.Calendar created,
+           java.lang.String creator,
+           java.lang.String fileName,
+           long fileSize,
+           long id,
+           long pageId,
+           java.lang.String title,
+           java.lang.String url) {
+           this.comment = comment;
+           this.contentType = contentType;
+           this.created = created;
+           this.creator = creator;
+           this.fileName = fileName;
+           this.fileSize = fileSize;
+           this.id = id;
+           this.pageId = pageId;
+           this.title = title;
+           this.url = url;
+    }
+
+
+    /**
+     * Gets the comment value for this RemoteAttachment.
+     * 
+     * @return comment
+     */
+    public java.lang.String getComment() {
+        return comment;
+    }
+
+
+    /**
+     * Sets the comment value for this RemoteAttachment.
+     * 
+     * @param comment
+     */
+    public void setComment(java.lang.String comment) {
+        this.comment = comment;
+    }
+
+
+    /**
+     * Gets the contentType value for this RemoteAttachment.
+     * 
+     * @return contentType
+     */
+    public java.lang.String getContentType() {
+        return contentType;
+    }
+
+
+    /**
+     * Sets the contentType value for this RemoteAttachment.
+     * 
+     * @param contentType
+     */
+    public void setContentType(java.lang.String contentType) {
+        this.contentType = contentType;
+    }
+
+
+    /**
+     * Gets the created value for this RemoteAttachment.
+     * 
+     * @return created
+     */
+    public java.util.Calendar getCreated() {
+        return created;
+    }
+
+
+    /**
+     * Sets the created value for this RemoteAttachment.
+     * 
+     * @param created
+     */
+    public void setCreated(java.util.Calendar created) {
+        this.created = created;
+    }
+
+
+    /**
+     * Gets the creator value for this RemoteAttachment.
+     * 
+     * @return creator
+     */
+    public java.lang.String getCreator() {
+        return creator;
+    }
+
+
+    /**
+     * Sets the creator value for this RemoteAttachment.
+     * 
+     * @param creator
+     */
+    public void setCreator(java.lang.String creator) {
+        this.creator = creator;
+    }
+
+
+    /**
+     * Gets the fileName value for this RemoteAttachment.
+     * 
+     * @return fileName
+     */
+    public java.lang.String getFileName() {
+        return fileName;
+    }
+
+
+    /**
+     * Sets the fileName value for this RemoteAttachment.
+     * 
+     * @param fileName
+     */
+    public void setFileName(java.lang.String fileName) {
+        this.fileName = fileName;
+    }
+
+
+    /**
+     * Gets the fileSize value for this RemoteAttachment.
+     * 
+     * @return fileSize
+     */
+    public long getFileSize() {
+        return fileSize;
+    }
+
+
+    /**
+     * Sets the fileSize value for this RemoteAttachment.
+     * 
+     * @param fileSize
+     */
+    public void setFileSize(long fileSize) {
+        this.fileSize = fileSize;
+    }
+
+
+    /**
+     * Gets the id value for this RemoteAttachment.
+     * 
+     * @return id
+     */
+    public long getId() {
+        return id;
+    }
+
+
+    /**
+     * Sets the id value for this RemoteAttachment.
+     * 
+     * @param id
+     */
+    public void setId(long id) {
+        this.id = id;
+    }
+
+
+    /**
+     * Gets the pageId value for this RemoteAttachment.
+     * 
+     * @return pageId
+     */
+    public long getPageId() {
+        return pageId;
+    }
+
+
+    /**
+     * Sets the pageId value for this RemoteAttachment.
+     * 
+     * @param pageId
+     */
+    public void setPageId(long pageId) {
+        this.pageId = pageId;
+    }
+
+
+    /**
+     * Gets the title value for this RemoteAttachment.
+     * 
+     * @return title
+     */
+    public java.lang.String getTitle() {
+        return title;
+    }
+
+
+    /**
+     * Sets the title value for this RemoteAttachment.
+     * 
+     * @param title
+     */
+    public void setTitle(java.lang.String title) {
+        this.title = title;
+    }
+
+
+    /**
+     * Gets the url value for this RemoteAttachment.
+     * 
+     * @return url
+     */
+    public java.lang.String getUrl() {
+        return url;
+    }
+
+
+    /**
+     * Sets the url value for this RemoteAttachment.
+     * 
+     * @param url
+     */
+    public void setUrl(java.lang.String url) {
+        this.url = url;
+    }
+
+    private java.lang.Object __equalsCalc = null;
+    public synchronized boolean equals(java.lang.Object obj) {
+        if (!(obj instanceof RemoteAttachment)) return false;
+        RemoteAttachment other = (RemoteAttachment) obj;
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = true && 
+            ((this.comment==null && other.getComment()==null) || 
+             (this.comment!=null &&
+              this.comment.equals(other.getComment()))) &&
+            ((this.contentType==null && other.getContentType()==null) || 
+             (this.contentType!=null &&
+              this.contentType.equals(other.getContentType()))) &&
+            ((this.created==null && other.getCreated()==null) || 
+             (this.created!=null &&
+              this.created.equals(other.getCreated()))) &&
+            ((this.creator==null && other.getCreator()==null) || 
+             (this.creator!=null &&
+              this.creator.equals(other.getCreator()))) &&
+            ((this.fileName==null && other.getFileName()==null) || 
+             (this.fileName!=null &&
+              this.fileName.equals(other.getFileName()))) &&
+            this.fileSize == other.getFileSize() &&
+            this.id == other.getId() &&
+            this.pageId == other.getPageId() &&
+            ((this.title==null && other.getTitle()==null) || 
+             (this.title!=null &&
+              this.title.equals(other.getTitle()))) &&
+            ((this.url==null && other.getUrl()==null) || 
+             (this.url!=null &&
+              this.url.equals(other.getUrl())));
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    private boolean __hashCodeCalc = false;
+    public synchronized int hashCode() {
+        if (__hashCodeCalc) {
+            return 0;
+        }
+        __hashCodeCalc = true;
+        int _hashCode = 1;
+        if (getComment() != null) {
+            _hashCode += getComment().hashCode();
+        }
+        if (getContentType() != null) {
+            _hashCode += getContentType().hashCode();
+        }
+        if (getCreated() != null) {
+            _hashCode += getCreated().hashCode();
+        }
+        if (getCreator() != null) {
+            _hashCode += getCreator().hashCode();
+        }
+        if (getFileName() != null) {
+            _hashCode += getFileName().hashCode();
+        }
+        _hashCode += new Long(getFileSize()).hashCode();
+        _hashCode += new Long(getId()).hashCode();
+        _hashCode += new Long(getPageId()).hashCode();
+        if (getTitle() != null) {
+            _hashCode += getTitle().hashCode();
+        }
+        if (getUrl() != null) {
+            _hashCode += getUrl().hashCode();
+        }
+        __hashCodeCalc = false;
+        return _hashCode;
+    }
+
+    // Type metadata
+    private static org.apache.axis.description.TypeDesc typeDesc =
+        new org.apache.axis.description.TypeDesc(RemoteAttachment.class, true);
+
+    static {
+        typeDesc.setXmlType(new javax.xml.namespace.QName("http://beans.soap.rpc.confluence.atlassian.com", "RemoteAttachment"));
+        org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("comment");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "comment"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("contentType");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "contentType"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("created");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "created"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "dateTime"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("creator");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "creator"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("fileName");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "fileName"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("fileSize");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "fileSize"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "long"));
+        elemField.setNillable(false);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("id");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "id"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "long"));
+        elemField.setNillable(false);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("pageId");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "pageId"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "long"));
+        elemField.setNillable(false);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("title");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "title"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("url");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "url"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+    }
+
+    /**
+     * Return type metadata object
+     */
+    public static org.apache.axis.description.TypeDesc getTypeDesc() {
+        return typeDesc;
+    }
+
+    /**
+     * Get Custom Serializer
+     */
+    public static org.apache.axis.encoding.Serializer getSerializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanSerializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+    /**
+     * Get Custom Deserializer
+     */
+    public static org.apache.axis.encoding.Deserializer getDeserializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanDeserializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+}

src/main/java/com/atlassian/confluence/rpc/soap/beans/RemoteBlogEntry.java

+/**
+ * RemoteBlogEntry.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package com.atlassian.confluence.rpc.soap.beans;
+
+public class RemoteBlogEntry  extends com.atlassian.confluence.rpc.soap.beans.RemoteBlogEntrySummary  implements java.io.Serializable {
+    private java.lang.String content;
+
+    private int version;
+
+    public RemoteBlogEntry() {
+    }
+
+    public RemoteBlogEntry(
+           long id,
+           int permissions,
+           java.lang.String space,
+           java.lang.String title,
+           java.lang.String url,
+           java.lang.String author,
+           java.util.Calendar publishDate,
+           java.lang.String content,
+           int version) {
+        super(
+            id,
+            permissions,
+            space,
+            title,
+            url,
+            author,
+            publishDate);
+        this.content = content;
+        this.version = version;
+    }
+
+
+    /**
+     * Gets the content value for this RemoteBlogEntry.
+     * 
+     * @return content
+     */
+    public java.lang.String getContent() {
+        return content;
+    }
+
+
+    /**
+     * Sets the content value for this RemoteBlogEntry.
+     * 
+     * @param content
+     */
+    public void setContent(java.lang.String content) {
+        this.content = content;
+    }
+
+
+    /**
+     * Gets the version value for this RemoteBlogEntry.
+     * 
+     * @return version
+     */
+    public int getVersion() {
+        return version;
+    }
+
+
+    /**
+     * Sets the version value for this RemoteBlogEntry.
+     * 
+     * @param version
+     */
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    private java.lang.Object __equalsCalc = null;
+    public synchronized boolean equals(java.lang.Object obj) {
+        if (!(obj instanceof RemoteBlogEntry)) return false;
+        RemoteBlogEntry other = (RemoteBlogEntry) obj;
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = super.equals(obj) && 
+            ((this.content==null && other.getContent()==null) || 
+             (this.content!=null &&
+              this.content.equals(other.getContent()))) &&
+            this.version == other.getVersion();
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    private boolean __hashCodeCalc = false;
+    public synchronized int hashCode() {
+        if (__hashCodeCalc) {
+            return 0;
+        }
+        __hashCodeCalc = true;
+        int _hashCode = super.hashCode();
+        if (getContent() != null) {
+            _hashCode += getContent().hashCode();
+        }
+        _hashCode += getVersion();
+        __hashCodeCalc = false;
+        return _hashCode;
+    }
+
+    // Type metadata
+    private static org.apache.axis.description.TypeDesc typeDesc =
+        new org.apache.axis.description.TypeDesc(RemoteBlogEntry.class, true);
+
+    static {
+        typeDesc.setXmlType(new javax.xml.namespace.QName("http://beans.soap.rpc.confluence.atlassian.com", "RemoteBlogEntry"));
+        org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("content");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "content"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("version");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "version"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "int"));
+        elemField.setNillable(false);
+        typeDesc.addFieldDesc(elemField);
+    }
+
+    /**
+     * Return type metadata object
+     */
+    public static org.apache.axis.description.TypeDesc getTypeDesc() {
+        return typeDesc;
+    }
+
+    /**
+     * Get Custom Serializer
+     */
+    public static org.apache.axis.encoding.Serializer getSerializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanSerializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+    /**
+     * Get Custom Deserializer
+     */
+    public static org.apache.axis.encoding.Deserializer getDeserializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanDeserializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+}

src/main/java/com/atlassian/confluence/rpc/soap/beans/RemoteBlogEntrySummary.java

+/**
+ * RemoteBlogEntrySummary.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package com.atlassian.confluence.rpc.soap.beans;
+
+public class RemoteBlogEntrySummary  extends com.atlassian.confluence.rpc.soap.beans.AbstractRemotePageSummary  implements java.io.Serializable {
+    private java.lang.String author;
+
+    private java.util.Calendar publishDate;
+
+    public RemoteBlogEntrySummary() {
+    }
+
+    public RemoteBlogEntrySummary(
+           long id,
+           int permissions,
+           java.lang.String space,
+           java.lang.String title,
+           java.lang.String url,
+           java.lang.String author,
+           java.util.Calendar publishDate) {
+        super(
+            id,
+            permissions,
+            space,
+            title,
+            url);
+        this.author = author;
+        this.publishDate = publishDate;
+    }
+
+
+    /**
+     * Gets the author value for this RemoteBlogEntrySummary.
+     * 
+     * @return author
+     */
+    public java.lang.String getAuthor() {
+        return author;
+    }
+
+
+    /**
+     * Sets the author value for this RemoteBlogEntrySummary.
+     * 
+     * @param author
+     */
+    public void setAuthor(java.lang.String author) {
+        this.author = author;
+    }
+
+
+    /**
+     * Gets the publishDate value for this RemoteBlogEntrySummary.
+     * 
+     * @return publishDate
+     */
+    public java.util.Calendar getPublishDate() {
+        return publishDate;
+    }
+
+
+    /**
+     * Sets the publishDate value for this RemoteBlogEntrySummary.
+     * 
+     * @param publishDate
+     */
+    public void setPublishDate(java.util.Calendar publishDate) {
+        this.publishDate = publishDate;
+    }
+
+    private java.lang.Object __equalsCalc = null;
+    public synchronized boolean equals(java.lang.Object obj) {
+        if (!(obj instanceof RemoteBlogEntrySummary)) return false;
+        RemoteBlogEntrySummary other = (RemoteBlogEntrySummary) obj;
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (__equalsCalc != null) {
+            return (__equalsCalc == obj);
+        }
+        __equalsCalc = obj;
+        boolean _equals;
+        _equals = super.equals(obj) && 
+            ((this.author==null && other.getAuthor()==null) || 
+             (this.author!=null &&
+              this.author.equals(other.getAuthor()))) &&
+            ((this.publishDate==null && other.getPublishDate()==null) || 
+             (this.publishDate!=null &&
+              this.publishDate.equals(other.getPublishDate())));
+        __equalsCalc = null;
+        return _equals;
+    }
+
+    private boolean __hashCodeCalc = false;
+    public synchronized int hashCode() {
+        if (__hashCodeCalc) {
+            return 0;
+        }
+        __hashCodeCalc = true;
+        int _hashCode = super.hashCode();
+        if (getAuthor() != null) {
+            _hashCode += getAuthor().hashCode();
+        }
+        if (getPublishDate() != null) {
+            _hashCode += getPublishDate().hashCode();
+        }
+        __hashCodeCalc = false;
+        return _hashCode;
+    }
+
+    // Type metadata
+    private static org.apache.axis.description.TypeDesc typeDesc =
+        new org.apache.axis.description.TypeDesc(RemoteBlogEntrySummary.class, true);
+
+    static {
+        typeDesc.setXmlType(new javax.xml.namespace.QName("http://beans.soap.rpc.confluence.atlassian.com", "RemoteBlogEntrySummary"));
+        org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("author");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "author"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+        elemField = new org.apache.axis.description.ElementDesc();
+        elemField.setFieldName("publishDate");
+        elemField.setXmlName(new javax.xml.namespace.QName("", "publishDate"));
+        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "dateTime"));
+        elemField.setNillable(true);
+        typeDesc.addFieldDesc(elemField);
+    }
+
+    /**
+     * Return type metadata object
+     */
+    public static org.apache.axis.description.TypeDesc getTypeDesc() {
+        return typeDesc;
+    }
+
+    /**
+     * Get Custom Serializer
+     */
+    public static org.apache.axis.encoding.Serializer getSerializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanSerializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+    /**
+     * Get Custom Deserializer
+     */
+    public static org.apache.axis.encoding.Deserializer getDeserializer(
+           java.lang.String mechType, 
+           java.lang.Class _javaType,  
+           javax.xml.namespace.QName _xmlType) {
+        return 
+          new  org.apache.axis.encoding.ser.BeanDeserializer(
+            _javaType, _xmlType, typeDesc);
+    }
+
+}

src/main/java/com/atlassian/confluence/rpc/soap/beans/RemoteClusterInformation.java

+/**
+ * RemoteClusterInformation.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
+ */
+
+package com.atlassian.confluence.rpc.soap.beans;
+
+public class RemoteClusterInformation  implements java.io.Serializable {
+    private java.lang.String description;
+
+    private int memberCount;
+
+    private java.lang.Object[] members;
+
+    private java.lang.String multicastAddress;
+
+    private java.lang.String multicastPort;
+
+    private java.lang.String name;
+
+    private boolean running;
+
+    public RemoteClusterInformation() {
+    }
+
+    public RemoteClusterInformation(
+           java.lang.String description,
+           int memberCount,
+           java.lang.Object[] members,
+           java.lang.String multicastAddress,
+           java.lang.String multicastPort,
+           java.lang.String name,
+           boolean running) {
+           this.description = description;
+           this.memberCount = memberCount;
+           this.members = members;
+           this.multicastAddress = multicastAddress;
+           this.multicastPort = multicastPort;
+           this.name = name;
+           this.running = running;
+    }
+
+
+    /**
+     * Gets the description value for this RemoteClusterInformation.
+     * 
+     * @return description
+     */
+    public java.lang.String getDescription() {
+        return description;
+    }
+
+
+    /**
+     * Sets the description value for this RemoteClusterInformation.
+     * 
+     * @param description
+     */
+    public void setDescription(java.lang.String description) {
+        this.description = description;
+    }
+
+
+    /**
+     * Gets the memberCount value for this RemoteClusterInformation.
+     * 
+     * @return memberCount
+     */
+    public int getMemberCount() {
+        return memberCount;
+    }
+
+
+    /**
+     * Sets the memberCount value for this RemoteClusterInformation.
+     * 
+     * @param memberCount
+     */
+    public void setMemberCount(int memberCount) {
+        this.memberCount = memberCount;
+    }
+
+
+    /**
+     * Gets the members value for this RemoteClusterInformation.
+     * 
+     * @return members
+     */
+    public java.lang.Object[] getMembers() {
+        return members;
+    }
+
+
+    /**
+     * Sets the members value for this RemoteClusterInformation.
+     * 
+     * @param members
+     */
+    public void setMembers(java.lang.Object[] members) {
+        this.members = members;
+    }
+
+
+    /**
+     * Gets the multicastAddress value for this RemoteClusterInformation.
+     * 
+     * @return multicastAddress
+     */
+    public java.lang.String getMulticastAddress() {
+        return multicastAddress;
+    }
+
+
+    /**
+     * Sets the multicastAddress value for this RemoteClusterInformation.
+     * 
+     * @param multicastAddress
+     */
+    public void setMulticastAddress(java.lang.String multicastAddress) {
+        this.multicastAddress = multicastAddress;
+    }
+
+
+    /**
+     * Gets the multicastPort value for this RemoteClusterInformation.
+     * 
+     * @return multicastPort
+     */
+    public java.lang.String getMulticastPort() {
+        return multicastPort;
+    }
+
+
+    /**
+     * Sets the multicastPort value for this RemoteClusterInformation.
+     * 
+     * @param multicastPort
+     */
+    public void setMulticastPort(java.lang.String multicastPort) {
+        this.multicastPort = multicastPort;
+    }
+
+
+    /**
+     * Gets the name value for this RemoteClusterInformation.
+     * 
+     * @return name
+     */
+    public java.lang.String getName() {
+        return name;
+    }
+
+
+    /**
+     * Sets the name value for this RemoteClusterInformation.
+     * 
+     * @param name
+     */
+    public void setName(java.lang.String name) {
+        this.name = name;
+    }
+
+
+    /**
+     * Gets the running value for this RemoteClusterInformation.
+     * 
+     * @return running
+     */
+    public boolean isRunning() {
+        return running;
+    }