PKI REST Data Model - dogtagpki/pki GitHub Wiki

The data model is defined using Plain Old Java Objects. The data model also contains annotations to map the resource to XML to transport over HTTP. For a single resource the data model can be defined as follows:

@XmlRootElement(name="User")
public class UserData {

    @XmlAttribute(name="id")
    String id;

    @XmlElement(name="FullName")
    String fullName;

    @XmlElement(name="Email")
    String email;

    ...

    public int hashCode() { ... }
    public boolean equals(Object object) { ... }

    public String toString() { ... generate XML data ... }
    public static UserData valueOf(String string) { ... parse XML data ... }
}

The XML annotations map the class and the fields to the following XML object:

<User id="...">
    <FullName>...</FullName>
    <Email>...</Email>
    ...
</User>

For a collection of resources the data model can be defined as follows:

@XmlRootElement(name="Users")
public class UserCollection {

    Collection<UserData> users = new ArrayList<UserData>();

    @XmlElementRef
    public Collection<UserData> getUsers() {
        return users;
    }
}

The XML annotations map the class and the fields to the following XML object:

<Users>
    <User id="...">
        <FullName>...</FullName>
        <Email>...</Email>
        ...
    </User>
    <User id="...">
        <FullName>...</FullName>
        <Email>...</Email>
        ...
    </User>
    ...
</Users>
⚠️ **GitHub.com Fallback** ⚠️