Extracted hook specific project: event-publisher-hook

This commit is contained in:
Mauro Mugnaini 2020-07-21 18:33:03 +02:00
parent f3917353fa
commit a9d9dfb649
30 changed files with 51 additions and 1049 deletions

View File

@ -14,7 +14,6 @@
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/com.liferay.ide.eclipse.server.tomcat.runtimeClasspathProvider/Liferay v6.2 (Tomcat 7)">

View File

@ -28,7 +28,6 @@
</buildSpec>
<natures>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>

View File

@ -1,7 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="event-publisher-portal-hook">
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<property name="java-output-path" value="/event-publisher-portal/target/classes"/>

View File

@ -2,8 +2,6 @@
<faceted-project>
<runtime name="Liferay v6.2 (Tomcat 7)"/>
<fixed facet="wst.jsdt.web"/>
<installed facet="jst.web" version="2.4"/>
<installed facet="liferay.hook" version="6.0"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="java" version="1.8"/>
</faceted-project>

View File

@ -1,6 +1,6 @@
# Changelog for "event-publisher-portal"
## [v1.0.0-SNAPSHOT]
## [v1.0.1-SNAPSHOT]
- First release (#19461)

View File

@ -1,6 +1,6 @@
# Event Publisher Portal
**Event Publisher Portal** is a [Liferay](https://liferay.com) 6.2 hook that provides the portal related implementation classes for event publishing and some portal's events and model listeners that push events to a broker endpoint.
**Event Publisher Portal** provides the portal ([Liferay](https://liferay.com)) related implementation classes for event publishing to a broker endpoint.
## Structure of the project
@ -13,7 +13,7 @@ The source code is present in `src` folder.
## Documentation
To build the hook WAR file it is sufficient to type
To build the library JAR file it is sufficient to type
mvn clean package

46
pom.xml
View File

@ -10,20 +10,8 @@
</parent>
<groupId>org.gcube.portal</groupId>
<artifactId>event-publisher-portal</artifactId>
<packaging>war</packaging>
<version>1.0.0-SNAPSHOT</version>
<properties>
<liferay.version>6.2.5</liferay.version>
<liferay.maven.plugin.version>6.2.10.12</liferay.maven.plugin.version>
<liferay.auto.deploy.dir>/Users/themaxx/Development/Server/liferay-portal-6.2-ce-ga6/deploy
</liferay.auto.deploy.dir>
<liferay.app.server.deploy.dir>/Users/themaxx/Development/Server/liferay-portal-6.2-ce-ga6/tomcat-7.0.62/webapps
</liferay.app.server.deploy.dir>
<liferay.app.server.lib.global.dir>/Users/themaxx/Development/Server/liferay-portal-6.2-ce-ga6/tomcat-7.0.62/lib/ext
</liferay.app.server.lib.global.dir>
<liferay.app.server.portal.dir>/Users/themaxx/Development/Server/liferay-portal-6.2-ce-ga6/tomcat-7.0.62/webapps/ROOT
</liferay.app.server.portal.dir>
</properties>
<packaging>jar</packaging>
<version>1.0.1-SNAPSHOT</version>
<dependencyManagement>
<dependencies>
<dependency>
@ -37,19 +25,6 @@
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>com.liferay.maven.plugins</groupId>
<artifactId>liferay-maven-plugin</artifactId>
<version>${liferay.maven.plugin.version}</version>
<configuration>
<autoDeployDir>${liferay.auto.deploy.dir}</autoDeployDir>
<appServerDeployDir>${liferay.app.server.deploy.dir}</appServerDeployDir>
<appServerLibGlobalDir>${liferay.app.server.lib.global.dir}</appServerLibGlobalDir>
<appServerPortalDir>${liferay.app.server.portal.dir}</appServerPortalDir>
<liferayVersion>${liferay.version}</liferayVersion>
<pluginType>hook</pluginType>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
@ -58,13 +33,6 @@
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<!-- <plugin> -->
<!-- <artifactId>maven-resources-plugin</artifactId> -->
<!-- <configuration> -->
<!-- <encoding>UTF-8</encoding> -->
<!-- </configuration> -->
<!-- <version>2.5</version> -->
<!-- </plugin> -->
</plugins>
</build>
<dependencies>
@ -116,11 +84,11 @@
<artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<scope>provided</scope>
</dependency>
<!-- <dependency> -->
<!-- <groupId>org.slf4j</groupId> -->
<!-- <artifactId>slf4j-log4j12</artifactId> -->
<!-- <scope>provided</scope> -->
<!-- </dependency> -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>

View File

@ -31,6 +31,7 @@ public abstract class AbstractLR62EventPublisher extends AbstractEventPublisher
} else {
OpenIdConnectConfiguration openIdConnectConfiguration = LiferayOpenIdConnectConfiguration
.getConfiguration();
EventPublisherConfiguration eventPublisherConfiguration = EventPublisherConfiguration.getConfiguration();
return new HTTPWithUMAAuthEventSender(eventPublisherConfiguration.getEventPublisherURL(),
openIdConnectConfiguration.getPortalClientId(), openIdConnectConfiguration.getPortalClientSecret(),

View File

@ -1,15 +1,27 @@
package org.gcube.portal.event.publisher.lr62;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;
import org.gcube.event.publisher.Event;
import org.gcube.vomanagement.usermanagement.GroupManager;
import org.gcube.vomanagement.usermanagement.RoleManager;
import org.gcube.vomanagement.usermanagement.UserManager;
import org.gcube.vomanagement.usermanagement.exception.GroupRetrievalFault;
import org.gcube.vomanagement.usermanagement.exception.RoleRetrievalFault;
import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException;
import org.gcube.vomanagement.usermanagement.exception.UserRetrievalFault;
import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager;
import org.gcube.vomanagement.usermanagement.impl.LiferayRoleManager;
import org.gcube.vomanagement.usermanagement.impl.LiferayUserManager;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.Role;
import com.liferay.portal.model.User;
public class PortalEvent extends Event {
@ -19,13 +31,14 @@ public class PortalEvent extends Event {
protected static final Log log = LogFactoryUtil.getLog(PortalEvent.class);
protected static final UserManager USER_MANAGER = new LiferayUserManager();
protected static final GroupManager GROUP_MANAGER = new LiferayGroupManager();
protected static final RoleManager ROLE_MANAGER = new LiferayRoleManager();
public static final String TYPE = "portal";
public static final String USER_ENTRY = "user";
public static final String GROUP_ENTRY = "group";
public static final String ROLE_ENTRY = "role";
public PortalEvent(String name) {
this(name, null);
}
@ -58,6 +71,19 @@ public class PortalEvent extends Event {
return (String) get(GROUP_ENTRY);
}
public void setGroup(Group group) throws PortalException, SystemException {
setGroup(getGroupIdentifier(group));
}
protected String getGroupIdentifier(Group group) throws PortalException, SystemException {
try {
return URLEncoder.encode(GROUP_MANAGER.getInfrastructureScope(group.getGroupId()), "UTF-8");
} catch (UnsupportedEncodingException | UserManagementSystemException | GroupRetrievalFault e) {
log.error("Cannot get URL encoded infrastrucure scope for group: " + group, e);
return null;
}
}
public void setRole(String role) {
set(ROLE_ENTRY, role);
}
@ -66,4 +92,17 @@ public class PortalEvent extends Event {
return (String) get(ROLE_ENTRY);
}
public void setRole(Role role) throws PortalException, SystemException {
setRole(getRoleIdentifier(role));
}
protected String getRoleIdentifier(Role role) throws PortalException, SystemException {
try {
return ROLE_MANAGER.getRole(role.getRoleId()).getRoleName();
} catch (UserManagementSystemException | RoleRetrievalFault e) {
log.error("Cannot get gCube role for role: " + role, e);
return null;
}
}
}

View File

@ -1,50 +0,0 @@
package org.gcube.portal.event.publisher.lr62.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.gcube.portal.event.publisher.lr62.PortalEvent;
import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException;
import org.gcube.vomanagement.usermanagement.exception.UserRetrievalFault;
import com.liferay.portal.model.User;
public class ActionEvent extends PortalEvent {
private static final long serialVersionUID = -256209939036712171L;
public static final String LOGIN_NAME = "login";
public static final String LOGOUT_NAME = "logout";
private ActionEvent(String name, User user) throws UserManagementSystemException, UserRetrievalFault {
super(name);
setUser(user);
}
public static ActionEvent newLoginEvent(HttpServletRequest request, HttpServletResponse response) {
User user = (User) request.getSession(false).getAttribute("USER");
if (log.isDebugEnabled()) {
log.debug("Sending login event for user: " + user.getScreenName());
}
try {
return new ActionEvent(LOGIN_NAME, user);
} catch (UserManagementSystemException | UserRetrievalFault e) {
log.error("Cannot create action event for user: " + user, e);
return null;
}
}
public static ActionEvent newLogoutEvent(HttpServletRequest request, HttpServletResponse response) {
User user = (User) request.getSession(false).getAttribute("USER");
if (log.isDebugEnabled()) {
log.debug("Sending logut event for user: " + user.getScreenName());
}
try {
return new ActionEvent(LOGOUT_NAME, user);
} catch (UserManagementSystemException | UserRetrievalFault e) {
log.error("Cannot create action event for user: " + user, e);
return null;
}
}
}

View File

@ -1,11 +0,0 @@
package org.gcube.portal.event.publisher.lr62.action;
import org.gcube.portal.event.publisher.lr62.AbstractLR62EventPublisher;
public class ActionEventPublisher extends AbstractLR62EventPublisher {
public ActionEventPublisher() {
super();
}
}

View File

@ -1,32 +0,0 @@
package org.gcube.portal.event.publisher.lr62.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.gcube.event.publisher.EventPublisher;
import com.liferay.portal.kernel.events.Action;
import com.liferay.portal.kernel.events.ActionException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
public class PostLoginAction extends Action {
protected static final Log log = LogFactoryUtil.getLog(PostLoginAction.class);
private EventPublisher eventPublisher;
public PostLoginAction() {
eventPublisher = new ActionEventPublisher();
}
@Override
public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException {
ActionEvent actionEvent = ActionEvent.newLoginEvent(request, response);
if (log.isDebugEnabled()) {
log.debug("ActionEvent is: " + actionEvent);
}
eventPublisher.publish(actionEvent);
}
}

View File

@ -1,32 +0,0 @@
package org.gcube.portal.event.publisher.lr62.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.gcube.event.publisher.EventPublisher;
import com.liferay.portal.kernel.events.Action;
import com.liferay.portal.kernel.events.ActionException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
public class PreLogoutAction extends Action {
protected static final Log log = LogFactoryUtil.getLog(PreLogoutAction.class);
private EventPublisher eventPublisher;
public PreLogoutAction() {
eventPublisher = new ActionEventPublisher();
}
@Override
public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException {
ActionEvent actionEvent = ActionEvent.newLogoutEvent(request, response);
if (log.isDebugEnabled()) {
log.debug("ActionEvent is: " + actionEvent);
}
eventPublisher.publish(actionEvent);
}
}

View File

@ -1,38 +0,0 @@
package org.gcube.portal.event.publisher.lr62.action;
import org.gcube.event.publisher.EventPublisher;
import com.liferay.portal.kernel.events.ActionException;
import com.liferay.portal.kernel.events.SimpleAction;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
public class ShutdownAction extends SimpleAction implements Runnable {
protected static final Log log = LogFactoryUtil.getLog(ShutdownAction.class);
private EventPublisher eventPublisher;
public ShutdownAction() {
eventPublisher = new ActionEventPublisher();
// Runtime.getRuntime().addShutdownHook(new Thread(this));
}
@Override
public void run(String[] ids) throws ActionException {
if (log.isInfoEnabled()) {
log.info("Sending shutdown event");
}
eventPublisher.publish(SimpleActionEvent.newShutdownEvent(ids));
}
@Override
public void run() {
try {
this.run(null);
} catch (ActionException e) {
// Left intentionally as it is
e.printStackTrace();
}
}
}

View File

@ -1,31 +0,0 @@
package org.gcube.portal.event.publisher.lr62.action;
import org.gcube.portal.event.publisher.lr62.PortalEvent;
public class SimpleActionEvent extends PortalEvent {
private static final long serialVersionUID = -256209939036712171L;
public static final String STARTUP_NAME = "startup";
public static final String SHUTDOWN_NAME = "shutdown";
public static final String IDS_ENTRY = "ids";
private SimpleActionEvent(String name, String[] ids) {
super(name);
setData(ids);
}
public static SimpleActionEvent newStartupEvent(String[] ids) {
return new SimpleActionEvent(STARTUP_NAME, ids);
}
public static SimpleActionEvent newShutdownEvent(String[] ids) {
return new SimpleActionEvent(SHUTDOWN_NAME, ids);
}
public void setData(String[] ids) {
set(IDS_ENTRY, String.join(", ", ids));
}
}

View File

@ -1,29 +0,0 @@
package org.gcube.portal.event.publisher.lr62.action;
import org.gcube.event.publisher.EventPublisher;
import com.liferay.portal.kernel.events.ActionException;
import com.liferay.portal.kernel.events.SimpleAction;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
public class StartupAction extends SimpleAction {
protected static final Log log = LogFactoryUtil.getLog(StartupAction.class);
private EventPublisher eventPublisher;
public StartupAction() {
eventPublisher = new ActionEventPublisher();
}
@Override
public void run(String[] ids) throws ActionException {
SimpleActionEvent event = SimpleActionEvent.newStartupEvent(ids);
if (log.isInfoEnabled()) {
log.info("Sending startup event: " + event);
}
eventPublisher.publish(event);
}
}

View File

@ -1,16 +0,0 @@
package org.gcube.portal.event.publisher.lr62.model;
import org.gcube.portal.event.publisher.lr62.AbstractLR62EventPublisher;
import com.liferay.portal.model.BaseModel;
import com.liferay.portal.model.ModelListener;
public abstract class AbstractEventPublisherBaseModelListener<T extends BaseModel<T>>
extends AbstractLR62EventPublisher
implements ModelListener<T> {
public AbstractEventPublisherBaseModelListener() {
super();
}
}

View File

@ -1,37 +0,0 @@
package org.gcube.portal.event.publisher.lr62.model;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.model.Group;
public class GroupEvent extends PortalModelListenerEvent<Group> {
private static final long serialVersionUID = 3939268094440017646L;
public static final String CREATED_NAME = "group_created";
public static final String DELETED_NAME = "group_deleted";
private GroupEvent(String name, Group group) throws PortalException, SystemException {
super(name, group);
setGroup(group);
}
public static GroupEvent newCreatedEvent(Group group) {
try {
return new GroupEvent(CREATED_NAME, group);
} catch (PortalException | SystemException e) {
log.error("Cannot create event from Group model object", e);
return null;
}
}
public static GroupEvent newDeletedEvent(Group group) {
try {
return new GroupEvent(DELETED_NAME, group);
} catch (PortalException | SystemException e) {
log.error("Cannot create event from Group model object", e);
return null;
}
}
}

View File

@ -1,83 +0,0 @@
package org.gcube.portal.event.publisher.lr62.model;
import com.liferay.portal.ModelListenerException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.model.Group;
public class GroupEventPublisher extends AbstractEventPublisherBaseModelListener<Group> {
protected static final Log log = LogFactoryUtil.getLog(GroupEventPublisher.class);
public GroupEventPublisher() {
super();
log.info("New GroupEventPublisher instance created");
}
@Override
public void onAfterCreate(Group group) throws ModelListenerException {
if (group.isSite()) {
log.info("Created a site Group");
GroupEvent groupEvent = GroupEvent.newCreatedEvent(group);
if (log.isTraceEnabled()) {
log.trace("Group event is: " + groupEvent);
}
publish(groupEvent);
} else if (log.isDebugEnabled()) {
log.debug("Created a non-site Group");
}
}
@Override
public void onBeforeRemove(Group group) throws ModelListenerException {
if (group.isSite()) {
log.info("Deleted a site Group");
GroupEvent groupEvent = GroupEvent.newDeletedEvent(group);
if (log.isDebugEnabled()) {
log.debug("Group event is: " + groupEvent);
}
publish(groupEvent);
} else if (log.isDebugEnabled()) {
log.debug("Deleted a non-site Group");
}
}
/* Uninteresting model events */
@Override
public void onAfterRemove(Group group) throws ModelListenerException {
}
@Override
public void onAfterAddAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
}
@Override
public void onAfterRemoveAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
}
@Override
public void onAfterUpdate(Group group) throws ModelListenerException {
}
@Override
public void onBeforeAddAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
}
@Override
public void onBeforeCreate(Group group) throws ModelListenerException {
}
@Override
public void onBeforeRemoveAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
}
@Override
public void onBeforeUpdate(Group group) throws ModelListenerException {
}
}

View File

@ -1,88 +0,0 @@
package org.gcube.portal.event.publisher.lr62.model;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;
import org.gcube.portal.event.publisher.lr62.PortalEvent;
import org.gcube.vomanagement.usermanagement.GroupManager;
import org.gcube.vomanagement.usermanagement.RoleManager;
import org.gcube.vomanagement.usermanagement.exception.GroupRetrievalFault;
import org.gcube.vomanagement.usermanagement.exception.RoleRetrievalFault;
import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException;
import org.gcube.vomanagement.usermanagement.exception.UserRetrievalFault;
import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager;
import org.gcube.vomanagement.usermanagement.impl.LiferayRoleManager;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.model.BaseModel;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.Role;
import com.liferay.portal.model.User;
public class PortalModelListenerEvent<T extends BaseModel<T>> extends PortalEvent {
private static final long serialVersionUID = -9062395669075373612L;
public static final String MODELCLASSNAME_ENTRY = "model-class-name";
protected static final GroupManager GROUP_MANAGER = new LiferayGroupManager();
protected static final RoleManager ROLE_MANAGER = new LiferayRoleManager();
public PortalModelListenerEvent(String name, T baseModel) {
super(name);
setModelClassName(baseModel.getModelClassName());
}
public PortalModelListenerEvent(String name, User user, T baseModel)
throws UserManagementSystemException, UserRetrievalFault {
super(name);
setUser(user);
setModelClassName(baseModel.getModelClassName());
}
public PortalModelListenerEvent(String name, Map<String, String> data, User user, T baseModel)
throws UserManagementSystemException, UserRetrievalFault {
super(name, data);
setUser(user);
setModelClassName(baseModel.getModelClassName());
}
public void setGroup(Group group) throws PortalException, SystemException {
setGroup(getGroupIdentifier(group));
}
protected String getGroupIdentifier(Group group) throws PortalException, SystemException {
try {
return URLEncoder.encode(GROUP_MANAGER.getInfrastructureScope(group.getGroupId()), "UTF-8");
} catch (UnsupportedEncodingException | UserManagementSystemException | GroupRetrievalFault e) {
log.error("Cannot get URL encoded infrastrucure scope for group: " + group, e);
return null;
}
}
public void setRole(Role role) throws PortalException, SystemException {
setRole(getRoleIdentifier(role));
}
protected String getRoleIdentifier(Role role) throws PortalException, SystemException {
try {
return ROLE_MANAGER.getRole(role.getRoleId()).getRoleName();
} catch (UserManagementSystemException | RoleRetrievalFault e) {
log.error("Cannot get gCube role for role: " + role, e);
return null;
}
}
public void setModelClassName(String group) {
set(MODELCLASSNAME_ENTRY, group);
}
public String getModelClassName() {
return (String) get(MODELCLASSNAME_ENTRY);
}
}

View File

@ -1,69 +0,0 @@
package org.gcube.portal.event.publisher.lr62.model;
import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException;
import org.gcube.vomanagement.usermanagement.exception.UserRetrievalFault;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.User;
public class UserEvent extends PortalModelListenerEvent<User> {
private static final long serialVersionUID = 3939268094440017646L;
public static final String CREATED_NAME = "user_created";
public static final String DELETED_NAME = "user_deleted";
public static final String UG_CREATED_NAME = "user-group_created";
public static final String UG_DELETED_NAME = "user-group_deleted";
private UserEvent(String name, User user) throws UserManagementSystemException, UserRetrievalFault {
super(name, user, user);
}
private UserEvent(String name, User user, Group group)
throws PortalException, SystemException, UserManagementSystemException, UserRetrievalFault {
this(name, user);
setGroup(group);
}
public static UserEvent newCreatedEvent(User user) {
try {
return new UserEvent(CREATED_NAME, user);
} catch (UserManagementSystemException | UserRetrievalFault e) {
log.error("Cannot create event from User model object", e);
return null;
}
}
public static UserEvent newDeletedEvent(User user) {
try {
return new UserEvent(DELETED_NAME, user);
} catch (UserManagementSystemException | UserRetrievalFault e) {
log.error("Cannot create event from User model object", e);
return null;
}
}
public static UserEvent newCreatedEvent(User user, Group group) {
try {
return new UserEvent(UG_CREATED_NAME, user, group);
} catch (PortalException | SystemException | UserManagementSystemException | UserRetrievalFault e) {
log.error("Cannot create event from one model object", e);
return null;
}
}
public static UserEvent newDeletedEvent(User user, Group group) {
try {
return new UserEvent(UG_DELETED_NAME, user, group);
} catch (PortalException | SystemException | UserManagementSystemException | UserRetrievalFault e) {
log.error("Cannot create event from one model object", e);
return null;
}
}
}

View File

@ -1,154 +0,0 @@
package org.gcube.portal.event.publisher.lr62.model;
import com.liferay.portal.ModelListenerException;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.User;
import com.liferay.portal.service.GroupLocalServiceUtil;
import com.liferay.portal.service.UserLocalServiceUtil;
public class UserEventPublisher extends AbstractEventPublisherBaseModelListener<User> {
protected static final Log log = LogFactoryUtil.getLog(UserEventPublisher.class);
public UserEventPublisher() {
super();
log.info("New UserEventPublisher instance created");
}
@Override
public void onAfterCreate(User user) throws ModelListenerException {
log.info("New user created");
UserEvent userEvent = UserEvent.newCreatedEvent(user);
if (log.isTraceEnabled()) {
log.trace("User event is: " + userEvent);
}
publish(userEvent);
}
@Override
public void onBeforeRemove(User user) throws ModelListenerException {
log.info("User removed");
UserEvent userEvent = UserEvent.newDeletedEvent(user);
if (log.isTraceEnabled()) {
log.trace("User event is: " + userEvent);
}
publish(userEvent);
}
@Override
public void onAfterAddAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
if (Group.class.getName().equals(associationClassName)) {
log.info("User has been associated to a group");
User user = getUser((Long) classPK);
Group group = getGroup((Long) associationClassPK);
if (user != null && group != null) {
if (group.isSite()) {
if (log.isDebugEnabled()) {
log.debug("Target group is a site: " + group.getName());
}
UserEvent userEvent = UserEvent.newCreatedEvent(user, group);
if (log.isTraceEnabled()) {
log.trace("User event is: " + userEvent);
}
publish(userEvent);
} else if (log.isDebugEnabled()) {
log.debug("Target group is not a site");
}
}
} else {
if (log.isDebugEnabled()) {
log.debug("Uninteresting association with: " + associationClassName);
}
}
}
@Override
public void onBeforeRemoveAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
if (Group.class.getName().equals(associationClassName)) {
log.info("User has been associated to a group");
User user = getUser((Long) classPK);
Group group = getGroup((Long) associationClassPK);
if (user != null && group != null) {
if (group.isSite()) {
if (log.isDebugEnabled()) {
log.debug("Target group is a site: " + group.getName());
}
UserEvent userEvent = UserEvent.newDeletedEvent(user, group);
if (log.isTraceEnabled()) {
log.trace("User event is: " + userEvent);
}
publish(userEvent);
} else if (log.isDebugEnabled()) {
log.debug("Target group is not a site");
}
}
} else {
if (log.isDebugEnabled()) {
log.debug("Uninteresting association removal with: " + associationClassName);
}
}
}
protected User getUser(Long userPK) {
User user = null;
try {
if (log.isTraceEnabled()) {
log.trace("Getting user object idetified by pk: " + userPK);
}
user = UserLocalServiceUtil.getUser(userPK);
} catch (PortalException | SystemException e) {
logger.error("Cannot get user with pk: " + userPK, e);
}
return user;
}
protected Group getGroup(Long groupPK) {
Group group = null;
try {
if (log.isTraceEnabled()) {
log.trace("Getting group object idetified by pk: " + groupPK);
}
group = GroupLocalServiceUtil.getGroup((Long) groupPK);
} catch (PortalException | SystemException e) {
logger.error("Cannot get group with pk: " + groupPK, e);
}
return group;
}
/* Uninteresting model events */
@Override
public void onAfterRemove(User user) throws ModelListenerException {
}
@Override
public void onAfterRemoveAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
}
@Override
public void onAfterUpdate(User user) throws ModelListenerException {
}
@Override
public void onBeforeAddAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
}
@Override
public void onBeforeCreate(User user) throws ModelListenerException {
}
@Override
public void onBeforeUpdate(User user) throws ModelListenerException {
}
}

View File

@ -1,75 +0,0 @@
package org.gcube.portal.event.publisher.lr62.model;
import com.liferay.portal.ModelListenerException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.model.UserGroup;
public class UserGroupEventPublisher extends AbstractEventPublisherBaseModelListener<UserGroup> {
protected static final Log log = LogFactoryUtil.getLog(UserGroupEventPublisher.class);
public UserGroupEventPublisher() {
super();
log.info("New UserGroupEventPublisher instance created");
}
@Override
public void onAfterCreate(UserGroup userGroup) throws ModelListenerException {
log.info("onAfterCreate");
}
@Override
public void onBeforeRemove(UserGroup userGroup) throws ModelListenerException {
log.info("onBeforeRemove");
}
@Override
public void onAfterAddAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
log.info("onAfterAddAssociation");
}
@Override
public void onAfterRemove(UserGroup userGroupRole) throws ModelListenerException {
log.info("onAfterRemove");
}
@Override
public void onAfterRemoveAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
log.info("onAfterRemoveAssociation");
}
@Override
public void onAfterUpdate(UserGroup userGroupRole) throws ModelListenerException {
log.info("onAfterUpdate");
}
@Override
public void onBeforeAddAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
log.info("onBeforeAddAssociation");
}
@Override
public void onBeforeCreate(UserGroup userGroupRole) throws ModelListenerException {
log.info("onBeforeCreate");
}
@Override
public void onBeforeRemoveAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
log.info("onBeforeRemoveAssociation");
}
@Override
public void onBeforeUpdate(UserGroup userGroupRole) throws ModelListenerException {
log.info("onBeforeUpdate");
}
}

View File

@ -1,75 +0,0 @@
package org.gcube.portal.event.publisher.lr62.model;
import com.liferay.portal.ModelListenerException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.model.UserGroupGroupRole;
public class UserGroupGroupRoleEventPublisher extends AbstractEventPublisherBaseModelListener<UserGroupGroupRole> {
protected static final Log log = LogFactoryUtil.getLog(UserGroupGroupRoleEventPublisher.class);
public UserGroupGroupRoleEventPublisher() {
super();
log.info("New UserGroupGroupRoleEventPublisher instance created");
}
@Override
public void onAfterCreate(UserGroupGroupRole userGroupGroupRole) throws ModelListenerException {
log.info("onAfterCreate");
}
@Override
public void onBeforeRemove(UserGroupGroupRole userGroupGroupRole) throws ModelListenerException {
log.info("onBeforeRemove");
}
@Override
public void onAfterAddAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
log.info("onAfterAddAssociation: "+ associationClassName);
}
@Override
public void onAfterRemove(UserGroupGroupRole userGroupGroupRole) throws ModelListenerException {
log.info("onAfterRemove");
}
@Override
public void onAfterRemoveAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
log.info("onAfterRemoveAssociation: " + associationClassName);
}
@Override
public void onAfterUpdate(UserGroupGroupRole userGroupGroupRole) throws ModelListenerException {
log.info("onAfterUpdate");
}
@Override
public void onBeforeAddAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
log.info("onBeforeAddAssociation: " + associationClassName);
}
@Override
public void onBeforeCreate(UserGroupGroupRole userGroupGroupRole) throws ModelListenerException {
log.info("onBeforeCreate");
}
@Override
public void onBeforeRemoveAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
log.info("onBeforeRemoveAssociation: "+ associationClassName);
}
@Override
public void onBeforeUpdate(UserGroupGroupRole userGroupGroupRole) throws ModelListenerException {
log.info("onBeforeUpdate");
}
}

View File

@ -1,46 +0,0 @@
package org.gcube.portal.event.publisher.lr62.model;
import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException;
import org.gcube.vomanagement.usermanagement.exception.UserRetrievalFault;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.Role;
import com.liferay.portal.model.User;
import com.liferay.portal.model.UserGroupRole;
public class UserGroupRoleEvent extends PortalModelListenerEvent<UserGroupRole> {
private static final long serialVersionUID = 3939268094440017646L;
public static final String CREATED_NAME = "user-group-role_created";
public static final String DELETED_NAME = "user-group-role_deleted";
private UserGroupRoleEvent(String name, UserGroupRole userGroupRole, User user, Group group, Role role)
throws PortalException, SystemException, UserManagementSystemException, UserRetrievalFault {
super(name, user, userGroupRole);
setGroup(group);
setRole(role);
}
public static UserGroupRoleEvent newCreatedEvent(UserGroupRole userGroupRole, User user, Group group, Role role) {
try {
return new UserGroupRoleEvent(CREATED_NAME, userGroupRole, user, group, role);
} catch (PortalException | SystemException | UserManagementSystemException | UserRetrievalFault e) {
log.error("Cannot create event from model object", e);
return null;
}
}
public static UserGroupRoleEvent newDeletedEvent(UserGroupRole userGroupRole, User user, Group group, Role role) {
try {
return new UserGroupRoleEvent(DELETED_NAME, userGroupRole, user, group, role);
} catch (PortalException | SystemException | UserManagementSystemException | UserRetrievalFault e) {
log.error("Cannot create event from model object", e);
return null;
}
}
}

View File

@ -1,102 +0,0 @@
package org.gcube.portal.event.publisher.lr62.model;
import com.liferay.portal.ModelListenerException;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.UserGroupRole;
public class UserGroupRoleEventPublisher extends AbstractEventPublisherBaseModelListener<UserGroupRole> {
protected static final Log log = LogFactoryUtil.getLog(UserGroupRoleEventPublisher.class);
public UserGroupRoleEventPublisher() {
super();
log.info("New UserGroupRoleEventPublisher instance created");
}
@Override
public void onAfterCreate(UserGroupRole userGroupRole) throws ModelListenerException {
try {
Group group = userGroupRole.getGroup();
if (group.isSite()) {
log.info("Created a site user's group role");
UserGroupRoleEvent event = UserGroupRoleEvent.newCreatedEvent(userGroupRole, userGroupRole.getUser(),
group, userGroupRole.getRole());
if (log.isTraceEnabled()) {
log.trace("Event is: " + event);
}
publish(event);
} else if (log.isDebugEnabled()) {
log.debug("Created a non-site user's group role");
}
} catch (PortalException | SystemException e) {
log.error("Cannot get related model objects", e);
}
}
@Override
public void onBeforeRemove(UserGroupRole userGroupRole) throws ModelListenerException {
try {
Group group = userGroupRole.getGroup();
if (group.isSite()) {
log.info("Deleted a site user's group role");
UserGroupRoleEvent event = UserGroupRoleEvent.newDeletedEvent(userGroupRole, userGroupRole.getUser(),
group, userGroupRole.getRole());
if (log.isTraceEnabled()) {
log.trace("Event is: " + event);
}
publish(event);
} else if (log.isDebugEnabled()) {
log.debug("Deleted a non-site user's group role");
}
} catch (PortalException | SystemException e) {
log.error("Cannot get related model objects", e);
}
}
/* Uninteresting model events */
@Override
public void onAfterAddAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
}
@Override
public void onAfterRemove(UserGroupRole userGroupRole) throws ModelListenerException {
}
@Override
public void onAfterRemoveAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
}
@Override
public void onAfterUpdate(UserGroupRole userGroupRole) throws ModelListenerException {
}
@Override
public void onBeforeAddAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
}
@Override
public void onBeforeCreate(UserGroupRole userGroupRole) throws ModelListenerException {
}
@Override
public void onBeforeRemoveAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
}
@Override
public void onBeforeUpdate(UserGroupRole userGroupRole) throws ModelListenerException {
}
}

View File

@ -1,13 +0,0 @@
value.object.listener.com.liferay.portal.model.User=org.gcube.portal.event.publisher.lr62.model.UserEventPublisher
value.object.listener.com.liferay.portal.model.Group=org.gcube.portal.event.publisher.lr62.model.GroupEventPublisher
#value.object.listener.com.liferay.portal.model.UserGroup=org.gcube.portal.event.publisher.lr62.model.UserGroupEventPublisher
#value.object.listener.com.liferay.portal.model.UserGroupGroupRole=org.gcube.portal.event.publisher.lr62.model.UserGroupGroupRoleEventPublisher
value.object.listener.com.liferay.portal.model.UserGroupRole=org.gcube.portal.event.publisher.lr62.model.UserGroupRoleEventPublisher
login.events.post=org.gcube.portal.event.publisher.lr62.action.PostLoginAction
logout.events.pre=org.gcube.portal.event.publisher.lr62.action.PreLogoutAction
#servlet.session.destroy.events=
#global.startup.events is not hook-able but they should be configured in main portal*.properties
#global.shutdown.events is not hook-able but they should be configured in main portal*.properties
application.startup.events=org.gcube.portal.event.publisher.lr62.action.StartupAction
application.shutdown.events=org.gcube.portal.event.publisher.lr62.action.ShutdownAction
# shutdown event is never called. See issue at https://issues.liferay.com/browse/LPS-11613

View File

@ -1,6 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.2.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_2_0.dtd">
<hook>
<portal-properties>portal.properties</portal-properties>
</hook>

View File

@ -1,9 +0,0 @@
name=event-publisher-hook
module-group-id=liferay
module-incremental-version=1
tags=
short-description=
change-log=
page-url=http://www.liferay.com
author=Liferay, Inc.
licenses=LGPL

View File

@ -1,4 +0,0 @@
<?xml version="1.0"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>