@Transactional
 // @Secured({"ROLE_ADMIN", "IP_LOCAL_HOST"})
 @Secured("ACL_MESSAGE_DELETE")
 public synchronized void deleteMessage(Message message) {
   messages.remove(message.getId());
   ObjectIdentity oid = new ObjectIdentityImpl(Message.class, message.getId());
   mutableAclService.deleteAcl(oid, false);
 }
 @Transactional
 @Secured("ROLE_USER")
 public synchronized void postMessage(Message message) {
   message.setId(System.currentTimeMillis());
   messages.put(message.getId(), message);
   ObjectIdentity oid = new ObjectIdentityImpl(Message.class, message.getId());
   MutableAcl acl = mutableAclService.createAcl(oid);
   acl.insertAce(0, BasePermission.ADMINISTRATION, new PrincipalSid(message.getAuthor()), true);
   acl.insertAce(1, BasePermission.DELETE, new GrantedAuthoritySid("ROLE_ADMIN"), true);
   acl.insertAce(2, BasePermission.READ, new GrantedAuthoritySid("ROLE_USER"), true);
   mutableAclService.updateAcl(acl);
 }