掲示板

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

thumbnail
11年前 に Domenico Costa によって更新されました。

[Hook] Aggiunta di un utente ad un gruppo di utenti

Regular Member 投稿: 153 参加年月日: 12/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
thumbnail
11年前 に Andrea Di Giorgi によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

New Member 投稿: 19 参加年月日: 10/06/01 最新の投稿
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:

public class UserGroupListener extends BaseModelListener<usergroup> {

	public void onAfterAddAssociation(
			Object classPK, String associationClassName,
			Object associationClassPK)
		throws ModelListenerException {

		if (!associationClassName.equals(User.class.getName())) {
			return;
		}

		long userGroupId = GetterUtil.getLong(classPK);
		long userId = GetterUtil.getLong(associationClassPK);

		if (_log.isInfoEnabled()) {
			_log.info("User " + userId + " added to UserGroup " + userGroupId);
		}
	}

	public void onAfterRemoveAssociation(
			Object classPK, String associationClassName,
			Object associationClassPK)
		throws ModelListenerException {

		if (!associationClassName.equals(User.class.getName())) {
			return;
		}

		long userGroupId = GetterUtil.getLong(classPK);
		long userId = GetterUtil.getLong(associationClassPK);

		if (_log.isInfoEnabled()) {
			_log.info(
				"User " + userId + " removed from UserGroup " + userGroupId);
		}
	}

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

}</usergroup>


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

value.object.listener.com.liferay.portal.model.UserGroup=com.example.test.hook.listeners.UserGroupListener
thumbnail
11年前 に Denis Signoretto によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

Expert 投稿: 375 参加年月日: 09/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.
thumbnail
11年前 に Domenico Costa によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

Regular Member 投稿: 153 参加年月日: 12/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 :


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


	  public void onAfterAddAssociation(Object classPK, String associationClassName,Object associationClassPK) throws ModelListenerException {

		  System.out.println("-----------&gt; TEST TEST");
		  log.info("-----------&gt; TEST TEST");
		  
	        if (associationClassName.equals(User.class.getName())) {
	        	
	        	System.out.println("-----------&gt; User");
	        	log.info("-----------&gt; User");
	            
	        }
	        
	        if (associationClassName.equals(UserGroup.class.getName())) {
	        	
	        	System.out.println("-----------&gt; UserGroup");
	        	log.info("-----------&gt; UserGroup");
	            
	        }
	        
	        if (associationClassName.equals(Group.class.getName())) {
	        	
	        	System.out.println("-----------&gt; Group");
	        	log.info("-----------&gt; Group");
	            
	        }
	        
	  }




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??
thumbnail
11年前 に Andrea Di Giorgi によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

New Member 投稿: 19 参加年月日: 10/06/01 最新の投稿
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...
thumbnail
11年前 に Domenico Costa によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

Regular Member 投稿: 153 参加年月日: 12/05/22 最新の投稿
Yes, aggiornato.

il codice dell liferay-hook.xml è questo

<!--?xml version="1.0"?-->


<hook>

	<portal-properties>portal.properties</portal-properties>
</hook>



Sembra che non entri dentro, eppure al deploy dell'hook non da errori!
thumbnail
11年前 に Andrea Di Giorgi によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

New Member 投稿: 19 参加年月日: 10/06/01 最新の投稿
Uhm... dove si trova il file portal.properties nel hook? Magari si fa prima se mi passi direttamente lo zip del hook emoticon
thumbnail
11年前 に Domenico Costa によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

Regular Member 投稿: 153 参加年月日: 12/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
thumbnail
11年前 に Domenico Costa によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

Regular Member 投稿: 153 参加年月日: 12/05/22 最新の投稿
Niente??? Non logga niente.. neanche il system.out.printl emoticon emoticon

help help
thumbnail
11年前 に Denis Signoretto によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

Expert 投稿: 375 参加年月日: 09/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.
thumbnail
11年前 に Domenico Costa によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

Regular Member 投稿: 153 参加年月日: 12/05/22 最新の投稿
Dal log4j.properties di liferay il livello di log è impostato a debug.

Il log che utilizzo nella classe è dichiarato in questo modo

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


La dicitura mi sembra corretta.

Per inserire un log effettuo questo codice

 log.error("-----------&gt; 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.
thumbnail
11年前 に Domenico Costa によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

Regular Member 投稿: 153 参加年月日: 12/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
thumbnail
11年前 に Denis Signoretto によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

Expert 投稿: 375 参加年月日: 09/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.
thumbnail
11年前 に Domenico Costa によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

Regular Member 投稿: 153 参加年月日: 12/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.
thumbnail
11年前 に Denis Signoretto によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

Expert 投稿: 375 参加年月日: 09/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.
thumbnail
11年前 に Domenico Costa によって更新されました。

RE: [Hook] Aggiunta di un utente ad un gruppo di utenti

Regular Member 投稿: 153 参加年月日: 12/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