Obtenir le userId dans un ModelListener Liferay

Lorsqu’on est dans un ModelListener, nous n’avons pas la request et donc à priori aucun moyen d’obtenir le userId. Pourtant, en regardant la classe com.liferay.portal.service.base.PrincipalBean (dont tous les services liferay héritent) on aperçoit la méthode getUserId() ci-dessous.

    public long getUserId() throws PrincipalException {
    String name = PrincipalThreadLocal.getName();

    if (name == null) {
    throw new PrincipalException();
    }

    if (Validator.isNull(name)) {
    throw new PrincipalException("Principal cannot be null");
    }
    else {
    for (int i = 0; i < ANONYMOUS_NAMES.length; i++) {
    if (name.equalsIgnoreCase(ANONYMOUS_NAMES[i])) {
    throw new PrincipalException(
    "Principal cannot be " + ANONYMOUS_NAMES[i]);
    }
    }
    }

    return GetterUtil.getLong(name);
    }

On a donc juste à réutiliser le code de cette méthode dans un ModelListener pour récupérer le userId courant.

You may also like...

Laisser un commentaire