構造的に表示 平面上に表示 ツリー上に表示
スレッド [ 前へ | 次へ ]
toggle
Domenico Costa
[Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/22 8:23
答え

Domenico Costa

ランク: Regular Member

投稿: 126

参加年月日: 2012/05/22

最近の投稿

Ciao a tutti,

Sto creando un Hook che all'aggiunta di un Gruppo di utenti ad unutente scatena un evento.
Per questa funzionalità ho esteso la classe UserLocalServiceWrapper ed utilizzato i metodi:

setUserGroupUsers

unsetGroupUsers

Ho inserito una system.out.println al metodo ma non entra in quel metodono quando aggiunto il gruppo.

Ho errato la classe da estendere??

Ho provato anche con la GroupLocalServiceWrapper ma nessun risultato.

Avete qualche suggerimento?

Grazie e buon lavoro
Andrea Di Giorgi
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/22 13:44
答え

Andrea Di Giorgi

ランク: New Member

投稿: 19

参加年月日: 2010/05/31

最近の投稿

Ciao!
Se ricordo bene, quei metodi della UserLocalService sono invocati da Liferay soltanto quando fai "Assign Members" dalla sezione "User Groups" del Control Panel, cioè quando aggiungi o rimuovi utenti da uno UserGroup in modo batch...
Il modo più sicuro per essere sempre notificato dell'aggiunta/rimozione di un utente da uno UserGroup è sicuramente creare un listener sull'entità UserGroup e mettersi in ascolto dei metodi onAfterAddAssociatione onAfterRemoveAssociation. Qualcosa del genere:

 1public class UserGroupListener extends BaseModelListener<UserGroup> {
 2
 3    public void onAfterAddAssociation(
 4            Object classPK, String associationClassName,
 5            Object associationClassPK)
 6        throws ModelListenerException {
 7
 8        if (!associationClassName.equals(User.class.getName())) {
 9            return;
10        }
11
12        long userGroupId = GetterUtil.getLong(classPK);
13        long userId = GetterUtil.getLong(associationClassPK);
14
15        if (_log.isInfoEnabled()) {
16            _log.info("User " + userId + " added to UserGroup " + userGroupId);
17        }
18    }
19
20    public void onAfterRemoveAssociation(
21            Object classPK, String associationClassName,
22            Object associationClassPK)
23        throws ModelListenerException {
24
25        if (!associationClassName.equals(User.class.getName())) {
26            return;
27        }
28
29        long userGroupId = GetterUtil.getLong(classPK);
30        long userId = GetterUtil.getLong(associationClassPK);
31
32        if (_log.isInfoEnabled()) {
33            _log.info(
34                "User " + userId + " removed from UserGroup " + userGroupId);
35        }
36    }
37
38    private static Log _log = LogFactoryUtil.getLog(UserGroupListener.class);
39
40}


Chiaramente, nel portal.properties del tuo hook dovrai scrivere:

1value.object.listener.com.liferay.portal.model.UserGroup=com.example.test.hook.listeners.UserGroupListener
Denis Signoretto
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/22 13:57
答え

Denis Signoretto

ランク: Regular Member

投稿: 220

参加年月日: 2009/04/21

最近の投稿

Concordo con Andrea e ti avrei suggerito la stessa soluzione. Ulteriore documentazione la puoi trovare cercando informazioni sugli Hook Model Listener

Ciao,
Denis.
Domenico Costa
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/23 2:19
答え

Domenico Costa

ランク: Regular Member

投稿: 126

参加年月日: 2012/05/22

最近の投稿

Grazie per le risposte, avevo paura non rispondesse nessuno emoticon


Cmq sto usando il listener con il metodo da te consigliato.

Una domanda sul logger.. per loggare nell'hook sto utilizzando :


 1    private static Log log = LogFactoryUtil.getLog(UserGroupListener.class);
 2
 3
 4      public void onAfterAddAssociation(Object classPK, String associationClassName,Object associationClassPK) throws ModelListenerException {
 5
 6          System.out.println("-----------> TEST TEST");
 7          log.info("-----------> TEST TEST");
 8         
 9            if (associationClassName.equals(User.class.getName())) {
10               
11                System.out.println("-----------> User");
12                log.info("-----------> User");
13               
14            }
15            
16            if (associationClassName.equals(UserGroup.class.getName())) {
17               
18                System.out.println("-----------> UserGroup");
19                log.info("-----------> UserGroup");
20               
21            }
22            
23            if (associationClassName.equals(Group.class.getName())) {
24               
25                System.out.println("-----------> Group");
26                log.info("-----------> Group");
27               
28            }
29            
30      }



Quando effettuo un associazioen di un utente ad un gruppo di utenti non vedo nessuno di questi messaggi nel catalina.out

forse non passa da questo metodo??
Andrea Di Giorgi
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/23 3:56
答え

Andrea Di Giorgi

ランク: New Member

投稿: 19

参加年月日: 2010/05/31

最近の投稿

Ciao!
Hai aggiornato il file liferay-hook.xml con il riferimento al tuo nuovo portal.properties? Al max, prova a passarmi il sorgente del tuo hook...
Domenico Costa
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/23 6:12
答え

Domenico Costa

ランク: Regular Member

投稿: 126

参加年月日: 2012/05/22

最近の投稿

Yes, aggiornato.

il codice dell liferay-hook.xml è questo

1<?xml version="1.0"?>
2<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.1.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_1_0.dtd">
3
4<hook>
5
6    <portal-properties>portal.properties</portal-properties>
7</hook>


Sembra che non entri dentro, eppure al deploy dell'hook non da errori!
Andrea Di Giorgi
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/23 6:23
答え

Andrea Di Giorgi

ランク: New Member

投稿: 19

参加年月日: 2010/05/31

最近の投稿

Uhm... dove si trova il file portal.properties nel hook? Magari si fa prima se mi passi direttamente lo zip del hook emoticon
Domenico Costa
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/23 6:54
答え

Domenico Costa

ランク: Regular Member

投稿: 126

参加年月日: 2012/05/22

最近の投稿

Questo e lo ZIP ho tolto alcune classi che non servivano e ridotto al minimo.

Forse mi sfugge qualcosa


cmq il portal.properties si trova nel resource
添付ファイル: AlfrescoUserGroupSinc.zip (50,221.5k)
Domenico Costa
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/24 3:43
答え

Domenico Costa

ランク: Regular Member

投稿: 126

参加年月日: 2012/05/22

最近の投稿

Niente??? Non logga niente.. neanche il system.out.printl emoticon emoticon

help help
Denis Signoretto
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/24 3:52
答え

Denis Signoretto

ランク: Regular Member

投稿: 220

参加年月日: 2009/04/21

最近の投稿

Ciao Domenico,

come logger stai usando quello della classe com.liferay.portal.model.UserGroupListener,
dal pannello di controllo prova ad inserire questa categoria e ad impostare un livello di log alto (e.g. Debug).

In alternativa imposta una tua classe di log.

Se stai usando Tomcat su Linux le System.out le trovi nel catalina.out, se sei su windows
a meno che tu non lo imposti specificatamente l'output delle system out non viene loggato.

Ciao,
Denis.
Domenico Costa
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/24 3:58
答え

Domenico Costa

ランク: Regular Member

投稿: 126

参加年月日: 2012/05/22

最近の投稿

Dal log4j.properties di liferay il livello di log è impostato a debug.

Il log che utilizzo nella classe è dichiarato in questo modo

1    private static Log log = LogFactoryUtil.getLog(UserGroupListener.class);


La dicitura mi sembra corretta.

Per inserire un log effettuo questo codice

1 log.error("-----------> onAfterCreate");


Dovrebbe loggare giusto?

Ma non logga.. io sto cercando di intercettare l'aggiunta di un gruppo di utenti ma da li non passa.

Ho provato ad inserire il log in tutti i metodi della classe estesa.. ma niente da fare.
Domenico Costa
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/24 4:10
答え

Domenico Costa

ランク: Regular Member

投稿: 126

参加年月日: 2012/05/22

最近の投稿

Ho inserito la classe con l'aggiunta di categoria e impostato il livello di log ad "ALL" ma non vedo nessun log dell'hook.

emoticon
Denis Signoretto
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/24 4:18
答え

Denis Signoretto

ランク: Regular Member

投稿: 220

参加年月日: 2009/04/21

最近の投稿

Prova a controllare che gli import siano corretti (ci sono omonime classi di Log4j nel package org.apache)

import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;

Ulteriore test: prova con il debugger a verificare se effettivamente il metodo viene eseguito.

Ciao,
Denis.
Domenico Costa
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/24 6:31
答え

Domenico Costa

ランク: Regular Member

投稿: 126

参加年月日: 2012/05/22

最近の投稿

Risolto ora mi effettua i log tranquillamente.

Ti rignrazio.

Un altra domanda....

Per fare un lsitener che intercetta la creazioen di un utente quale metodo devo overraidare?

nel onAfterCreate non passa, ho già guardato.
Denis Signoretto
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/24 6:49
答え

Denis Signoretto

ランク: Regular Member

投稿: 220

参加年月日: 2009/04/21

最近の投稿

L'approccio è analogo al precedente, utilizzando il model della classe User

value.object.listener.com.liferay.portal.model.User=com.liferay.portal.model.UserListener

Ciao,
Denis.
Domenico Costa
RE: [Hook] Aggiunta di un utente ad un gruppo di utenti
2012/05/25 8:42
答え

Domenico Costa

ランク: Regular Member

投稿: 126

参加年月日: 2012/05/22

最近の投稿

Ti ringrazio ho risolto.
Creando il listener e isnernedo la classe nelle categorie per i log sono riuscito ad intercettare la chiamata.

Grazie e buon lavoro emoticon

a buon rendere