// default configuration has this provided on the fly via IoC
protected abstract GroupResource newEmptyResource();
public GroupResource newGroup(String creatorID) throws ManageException {
final GroupResource resource = this.newEmptyResource();
final String idStr = this.uuidGen.generateRandomBasedUUID().toString();
final Lock lock = this.lockManager.getLock(idStr);
try {
lock.lockInterruptibly();
} catch (InterruptedException e) {
throw new ManageException(e.getMessage(), e);
}
try {
resource.setID(idStr);
resource.setCreatorID(creatorID);
this.persistence.addGroup(resource);
final Element el = this.cache.get(idStr);
if (el == null) {
this.cache.put(new Element(idStr, resource));