public void updateProjectRole(final ProjectRole projectRole) {
   try {
     delegate.updateProjectRole(projectRole);
   } finally {
     projectRoles.reset();
   }
 }
 public ProjectRole addProjectRole(final ProjectRole projectRole) {
   try {
     return delegate.addProjectRole(projectRole);
   } finally {
     projectRoles.reset();
   }
 }
 public void deleteProjectRole(final ProjectRole projectRole) {
   final long projectRoleId =
       notNull("projectRole.getId()", notNull("projectRole", projectRole).getId());
   try {
     delegate.deleteProjectRole(projectRole);
   } finally {
     projectRoles.reset();
     defaultRoleActors.remove(projectRoleId);
     projectRoleActors.removeAll();
   }
 }
 /** {@inheritDoc} */
 @Override
 public String getAlias(String plainAlias) {
   // TODO: BUG inside AO in case of ORACLE:
   // AO does not quote aliases except of group by clause
   // mixed quoted and unquoted aliases are problems, because oracle does automatically upper case
   // of unquoted aliases
   // this workaround does that all aliases in case of oracle will be upper-cased, regardless if it
   // is quoted or not.
   if (ORACLE.equals(dataSourceMetaData.get().databaseType)) {
     return plainAlias.toUpperCase();
   }
   return plainAlias;
 }
 public ProjectRole getProjectRoleByName(final String name) {
   return projectRoles.get().getByName(name);
 }
 public ProjectRole getProjectRole(final Long id) {
   return projectRoles.get().get(id);
 }
 public Collection<ProjectRole> getAllProjectRoles() {
   return projectRoles.get().getAll();
 }
 public void clearCaches() {
   projectRoles.reset();
   defaultRoleActors.removeAll();
   projectRoleActors.removeAll();
 }