JBoss.orgCommunity Documentation
APIs provide notification interfaces which you can implement to create your own handlers for notification when having the profile modifications by extending the ProfileListenerPlugin class, or relationship changes by extending RelationshipListenerPlugin.
1. Create the ProfileLoggerListener class to log all profile modifications of the systems. The abstract class named ProfileListenerPlugin provides the interface to implement this method.
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.social.core.identity.lifecycle.ProfileListenerPlugin;
import org.exoplatform.social.core.identity.spi.ProfileLifeCycleEvent;
public class ProfileLoggerListener extends ProfileListenerPlugin{
private static final Log logger = ExoLogger.getExoLogger(ProfileLoggerListener.class);
@Override
public void avatarUpdated(ProfileLifeCycleEvent event) {
logger.info("@" + event.getUsername() + " profile has updated his basic profile info.");
}
@Override
public void basicInfoUpdated(ProfileLifeCycleEvent event) {
logger.info("@" + event.getUsername() + " profile has updated his basic profile info.");
}
@Override
public void contactSectionUpdated(ProfileLifeCycleEvent event) {
logger.info("@" + event.getUsername() + " profile has updated his contact info.");
}
@Override
public void experienceSectionUpdated(ProfileLifeCycleEvent event) {
logger.info("@" + event.getUsername() + " profile has an updated experience section.");
}
@Override
public void headerSectionUpdated(ProfileLifeCycleEvent event) {
logger.info("@" + event.getUsername() + " has updated his header info.");
}
}
2. Add some configurations to this class to the configuration.xml:
<external-component-plugins>
<target-component>org.exoplatform.social.core.identity.IdentityManager</target-component>
<component-plugin>
<name>ProfileLoggerListener</name>
<set-method>addProfileListener</set-method>
<type>path.to.ProfileLoggerListener</type>
</component-plugin>
</external-component-plugins>