Sobrescribiendo los servicios de LiferayDXP 7

20-08-2016
 

En versiones anteriores de Liferay cuando queríamos sobrescribir los servicios de Liferay lo hacíamos mediante un Hook. A partir de ahora, deberemos hacerlo mediante un componente OSGI. El proceso se ha simplificado bastante. En Liferay 7 se han eliminado los Hooks y el entorno de extensión porque ya no son necesarios gracias a los módulos OSGI.

Por ejemplo, si queremos sobrescribir el servicio de usuarios de Liferay, por ejemplo, para hacer algo cada vez que alguien solicita un usuario(En este caso, escribiremos “Hookeado!!!!”). Para ello nos crearemos un módulo OSGI(Liferay Module Project) con Liferay IDE y usando la plantilla ‘servicewrapper’:

Create Liferay Module Project

Create Liferay Module Project

Create Liferay Module Project 2

Create Liferay Module Project 2

Después nuestra classe que sobreescriba el servicio deberá tener esta pinta:

@Component(
		immediate = true,
		property = {
		},
		service = ServiceWrapper.class
	)
public class NewUser extends UserLocalServiceWrapper {
	
	public NewUser() {
		super(null);
		}
	
	public NewUser(UserLocalService userLocalService) {
		super(userLocalService);
		// TODO Auto-generated constructor stub
		}

	@Override
	public User getUser(long userId) throws PortalException {
		System.out.println("Hookeado!!!!");
		
		// TODO Auto-generated method stub
		return super.getUser(userId);
		}
	
}

Solamente una classe que extiende del wrapper sobrescribe el servicio, ya no tenemos que configurar XMLs ni cosas por el estilo. Más fácil gracias a OSGI y al nuevo Liferay 7.

Leave a Reply

© Albert Coronado Calzada