log.debug("enrollProjectParticipant: start identity=" + identity + " project=" + project);
Codepoint.codepoint(ProjectBrokerManagerImpl.class, "beforeDoInSync");
Boolean result = CoordinatorManager.getCoordinator().getSyncer().doInSync(projectOres, new SyncerCallback<Boolean>(){
public Boolean execute() {
// For cluster-safe : reload project object here another node might have changed this in the meantime
Project reloadedProject = (Project) DBFactory.getInstance().loadObject(project, true);
log.debug("enrollProjectParticipant: project.getMaxMembers()=" + reloadedProject.getMaxMembers());
log.debug("enrollProjectParticipant: project.getSelectedPlaces()=" + reloadedProject.getSelectedPlaces());
if ( ProjectBrokerManagerFactory.getProjectBrokerManager().canBeProjectSelectedBy(identity, reloadedProject, moduleConfig, nbrSelectedProjects, isParticipantInAnyProject) ) {
if (moduleConfig.isAcceptSelectionManually() ) {
ManagerFactory.getManager().addIdentityToSecurityGroup(identity, reloadedProject.getCandidateGroup());
log.audit("ProjectBroker: Add as candidate identity=" + identity + " to project=" + reloadedProject);
} else {
ManagerFactory.getManager().addIdentityToSecurityGroup(identity, reloadedProject.getProjectParticipantGroup());
log.audit("ProjectBroker: Add as participant identity=" + identity + " to project=" + reloadedProject);
if ( (reloadedProject.getMaxMembers() != Project.MAX_MEMBERS_UNLIMITED) && (reloadedProject.getSelectedPlaces() >= reloadedProject.getMaxMembers()) ) {
reloadedProject.setState(Project.STATE_ASSIGNED);
DBFactory.getInstance().updateObject(reloadedProject);
}
}
return Boolean.TRUE;
} else {