/* * Copyright (C) 2013 Intel Corporation * All rights reserved. */ package com.intel.mtwilson.jaxrs2; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.intel.dcsg.cpg.crypto.Sha1Digest; import com.intel.dcsg.cpg.io.UUID; import com.intel.dcsg.cpg.util.ByteArray; import java.net.URL; import java.util.Date; import java.util.HashMap; import java.util.Map; //import org.codehaus.jackson.map.annotate.JsonSerialize; /** * * When using Jackson to serialize a Document subclass, the default behavior * is to omit null or empty fields. When using Jackson to de-serialize a * Document subclass, the default behavior is to ignore unknown fields. * The combination is intended to facilitate backward-compatible future changes * in the API. * * @author jbuhacoff */ //@JsonSerialize(include=JsonSerialize.Inclusion.NON_EMPTY) // jackson 1.9 @JsonInclude(JsonInclude.Include.NON_EMPTY) // jackson 2.0 @JsonIgnoreProperties(ignoreUnknown=true) public abstract class Document { private UUID id; private URL href; private final HashMap<String,Object> meta = new HashMap<>(); private final HashMap<String,Object> links = new HashMap<>(); private String etag; private Date createdOn; private Date modifiedOn; public UUID getId() { return id; } public void setId(UUID id) { this.id = id; } public URL getHref() { return href; } public void setHref(URL href) { this.href = href; } public Map<String, Object> getMeta() { return meta; } public Map<String, Object> getLinks() { return links; } public Date getCreatedOn() { return createdOn; } public void setCreatedOn(Date createdOn) { this.createdOn = createdOn; } public Date getModifiedOn() { return modifiedOn; } public void setModifiedOn(Date modifiedOn) { this.modifiedOn = modifiedOn; } public void setEtag(String etag) { this.etag = etag; } public String getEtag() { if( etag != null ) { return etag; } if( modifiedOn != null ) { String hex = Long.toHexString(modifiedOn.getTime()); ByteArray byteArray = ByteArray.fromHex(hex); Sha1Digest digest = Sha1Digest.digestOf(byteArray.getBytes()); return digest.toHexString(); } return null; } }