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’:
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.