@Override public long getEntityOwnerId() { final Long volumeId = getVolumeId(); final Long snapshotId = getSnapshotId(); final Account callingAccount = CallContext.current().getCallingAccount(); if (volumeId != null) { final Volume volume = _entityMgr.findById(Volume.class, volumeId); if (volume != null) { _accountService.checkAccess( callingAccount, SecurityChecker.AccessType.UseEntry, false, volume); } else { throw new InvalidParameterValueException("Unable to find volume by id=" + volumeId); } } else { final Snapshot snapshot = _entityMgr.findById(Snapshot.class, snapshotId); if (snapshot != null) { _accountService.checkAccess( callingAccount, SecurityChecker.AccessType.UseEntry, false, snapshot); } else { throw new InvalidParameterValueException("Unable to find snapshot by id=" + snapshotId); } } if (projectId != null) { final Project project = _projectService.getProject(projectId); if (project != null) { if (project.getState() == Project.State.Active) { final Account projectAccount = _accountService.getAccount(project.getProjectAccountId()); _accountService.checkAccess( callingAccount, SecurityChecker.AccessType.UseEntry, false, projectAccount); return project.getProjectAccountId(); } else { final PermissionDeniedException ex = new PermissionDeniedException( "Can't add resources to the project with specified projectId in state=" + project.getState() + " as it's no longer active"); ex.addProxyObject(project.getUuid(), "projectId"); throw ex; } } else { throw new InvalidParameterValueException("Unable to find project by id"); } } return callingAccount.getId(); }