|
|
Problème de persistence de modification des délégations via un DataController
Gildas de Cadoudal -
on 1/27/12 at 3:07 PM
Bonjour,
L'objectif de notre développement du DataController est de mettre à jour automatiquement la liste des membres autorisés à se connecter avec le compte d'un autre membre prédéfini et cela en fonction de l'appartenance ou non du membre modifié à un WKRole.
Voici une version simplifiée du code de la méthode beforeWrite de notre DataController :
// on récupère le membre prédéfini pour lequel on veut modifier les membres pouvant s'authentifier avec
Member mbrPredefini = Channel.getChannel().getMember("son_id");
// on récupère le WKRole qui sert de critère
Workspace wk = Channel.getChannel().getWorkspace("son_id");
WKRole wkR = wk.getRole("son_id");
// ça c'est le membre qui est modifié
Member mbr = (Member)data;
// on détermine si le membre modifié possède ou non le WKRole
boolean aLeRole = mbr.belongsToRole(wkR , true);
// on met à jour la liste de délégation du membre modifié
mbr.updateDelegationHolderSet(mbrPredefini, aLeRole);
Le problème est donc le suivant : le code fonctionne très bien et le membre modifié à bien la possibilité de s'authentifier avec le compte prédéfini. Mais il y a un hic, en fait la modification effectuée n'est pas enregistré dans le store, elle reste en mémoire. En effet si je regarde via l'interface la liste des membres délégués du membre prédéfini, je ne vois pas le membre que j'ai rajouté par le code. De plus lorsque je redémarre JCMS, le membre qui avait été modifié ne peut plus se connecter avec le compte prédéfini.
J'ai aussi essayé en plus de l'utilisation de la méthode "updateDelegationHolderSet" de rajouter le code suivant mais cela ne change rien au problème :
if (aLeRole) {
MemberIndexManager.getInstance().addDelegate(mbrPredefini, mbr);
} else {
MemberIndexManager.getInstance().removeDelegate(mbrPredefini, mbr);
}
D'où la question : comment faire pour que cela fonctionne ?
J'espère avoir été assez clair et précis et sinon je répondrais naturellement aux demandes de précisions.
Environnement
|
|