@Override
 public int hashCode() {
   final int prime = 31;
   int result = super.hashCode();
   result = prime * result + ((metric == null) ? 0 : metric.hashCode());
   result = prime * result + ((aboutResource == null) ? 0 : aboutResource.hashCode());
   result = prime * result + ((timeStamp == null) ? 0 : timeStamp.hashCode());
   result = prime * result + ((value == null) ? 0 : value.hashCode());
   return result;
 }
 @Override
 public boolean equals(Object obj) {
   if (this == obj) return true;
   if (!super.equals(obj)) return false;
   if (getClass() != obj.getClass()) return false;
   MonitoringDatum other = (MonitoringDatum) obj;
   if (metric == null) {
     if (other.metric != null) return false;
   } else if (!metric.equals(other.metric)) return false;
   if (aboutResource == null) {
     if (other.aboutResource != null) return false;
   } else if (!aboutResource.equals(other.aboutResource)) return false;
   if (timeStamp == null) {
     if (other.timeStamp != null) return false;
   } else if (!timeStamp.equals(other.timeStamp)) return false;
   if (value == null) {
     if (other.value != null) return false;
   } else if (!value.equals(other.value)) return false;
   return true;
 }