@Override
 protected void validateForUpdate(RangerServiceResource vObj, XXServiceResource entityObj) {
   if (StringUtils.equals(entityObj.getGuid(), vObj.getGuid())
       && StringUtils.equals(entityObj.getResourceSignature(), vObj.getResourceSignature())) {
     serviceUpdateNeeded = false;
   } else {
     serviceUpdateNeeded = true;
   }
 }
  public RangerServiceResource preCreateServiceResource(RangerServiceResource resource)
      throws Exception {
    RangerServiceResource ret = null;

    if (StringUtils.isBlank(resource.getServiceName())
        || MapUtils.isEmpty(resource.getResourceElements())) {
      throw new Exception("No serviceName or resource in RangerServiceResource");
    }

    String guid = resource.getGuid();
    if (!StringUtils.isBlank(guid)) {
      ret = tagStore.getServiceResourceByGuid(guid);
    }

    RangerServiceResourceSignature serializer = new RangerServiceResourceSignature(resource);

    resource.setResourceSignature(serializer.getSignature());

    return ret;
  }
  public void preUpdateServiceResource(Long id, RangerServiceResource resource) throws Exception {
    if (StringUtils.isBlank(resource.getServiceName())
        || MapUtils.isEmpty(resource.getResourceElements())) {
      throw new Exception("No serviceName or resource in RangerServiceResource");
    }

    if (id == null) {
      throw new Exception("Invalid/null id");
    }

    RangerServiceResource existing = tagStore.getServiceResource(id);
    if (existing == null) {
      throw new Exception("Attempt to update nonexistent resource, id=" + id);
    }

    RangerServiceResourceSignature serializer = new RangerServiceResourceSignature(resource);

    resource.setId(existing.getId());
    resource.setGuid(existing.getGuid());
    resource.setResourceSignature(serializer.getSignature());
  }