package org.jbpm.identity.mail;
import net.conselldemallorca.helium.jbpm3.integracio.Jbpm3HeliumBridge;
import org.jbpm.JbpmContext;
import org.jbpm.identity.User;
import org.jbpm.identity.hibernate.IdentitySession;
import org.jbpm.mail.AddressResolver;
import org.jbpm.svc.Service;
import org.jbpm.svc.ServiceFactory;
/**
* translates actorIds into email addresses with the jBPM identity module.
* Only user actorIds are resolved to their email addresses. Group actorIds return null.
*/
public class IdentityAddressResolver implements AddressResolver, ServiceFactory, Service {
private static final long serialVersionUID = 1L;
private HeliumAddressResolver heliumAr;
@SuppressWarnings("deprecation")
public Object resolveAddress(String actorId) {
if (useHeliumAssignmentHandler()) {
return getHeliumAddressResolver().resolveAddress(actorId);
} else {
String emailAddress = null;
IdentitySession identitySession = new IdentitySession(
JbpmContext.getCurrentJbpmContext().getSession());
User user = identitySession.getUserByName(actorId);
if (user!=null) {
emailAddress = user.getEmail();
}
return emailAddress;
}
}
public Service openService() {
return this;
}
public void close() {
}
private boolean useHeliumAssignmentHandler() {
String organigramaActiu = Jbpm3HeliumBridge.getInstanceService().getHeliumProperty("app.jbpm.identity.source");
return "helium".equalsIgnoreCase(organigramaActiu);
}
private HeliumAddressResolver getHeliumAddressResolver() {
if (heliumAr == null)
heliumAr = new HeliumAddressResolver();
return heliumAr;
}
}