package com.wesabe.grendel.representations;
import java.net.URI;
import javax.ws.rs.core.UriInfo;
import org.codehaus.jackson.annotate.JsonGetter;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.ISODateTimeFormat;
import com.wesabe.grendel.entities.User;
/**
* A representation of a response containing information about a user.
* <p>
* Example JSON:
* <pre>
* {
* "id":"codahale",
* "created-at":"20091228T234341Z",
* "modified-at":"20091228T234341Z",
* "keys":"[2048-RSA/38CDB097, 2048-RSA/204DB69D]"
* }
* </pre>
*
* @author coda
*/
public class UserInfoRepresentation {
private static final DateTimeFormatter ISO_DATETIME = ISODateTimeFormat.basicDateTimeNoMillis();
public static class DocumentLink {
private final String name;
private final URI uri;
public DocumentLink(String name, URI uri) {
this.name = name;
this.uri = uri;
}
@JsonGetter("name")
public String getName() {
return name;
}
@JsonGetter("uri")
public String getUri() {
return uri.toASCIIString();
}
}
private final User user;
private final UriInfo uriInfo;
public UserInfoRepresentation(UriInfo uriInfo, User user) {
this.user = user;
this.uriInfo = uriInfo;
}
@JsonGetter("id")
public String getId() {
return user.getId();
}
@JsonGetter("created-at")
public String getCreatedAt() {
return ISO_DATETIME.print(user.getCreatedAt());
}
@JsonGetter("modified-at")
public String getModifiedAt() {
return ISO_DATETIME.print(user.getModifiedAt());
}
@JsonGetter("keys")
public String getKeys() {
return user.getKeySet().toString();
}
@JsonIgnore
public User getUser() {
return user;
}
@JsonIgnore
public UriInfo getUriInfo() {
return uriInfo;
}
}