Liferay 7-DXP Service Wrapper Hook

blog-banner

Liferay has implemented portal services in a way that makes it independent from core portlet classes. Such architecture allows us to modify any Liferay functionality easily without worrying about modification of core portlet classes. We can achieve portal service customization with the help of Service Wrapper hook. Basically, Liferay generates wrapper classes for all services. For example,  BlogsEntityLocalServiceWrapper class is created for  BlogsEntityService which contains methods to add, update, delete Blogs entry. If we want to modify any of these services then we need to create custom class that extends BlogsEntityLocalServiceWrapper via Service Wrapper hook. Once we deploy such hook, Liferay portal container will use custom service class instead of original service wrapper class.

Prerequisite :

Basic knowledge of Liferay 7 Development and Liferay Hooks

Previously, in Liferay 6.1 and 6.2, we created Hook plugin with entry of service wrapper in liferay-hook.xml file. In Liferay 7, we need to create module project using “servicewrapper” template. Here “ServiceWrapper.class” is used as service in Component class(which will be generated if you are using IDE).

Suppose you need to create service wrapper hook for Blogs entry. You need to create hook by following steps.

1. Create gradle module project (I am using Eclipse with Liferay IDE plugin) with appropriate name. Select “servicewrapper” in Project Template name.

2. Now select service for Blogs entry as shown in below screenshot and click on finish. IDE will create component class as per given class and package name.


 

3. Override addEntry method of BlogsEntryServiceWrapper class and prepend “Surekhatech” in blog title. Below is sample code for component class.

package com.st.hook;

 

import statements;

 

@Component(

immediate = true,

property = {

},

service = ServiceWrapper.class

)

 

public class CustomBlogsEntryServiceWrapper extends BlogsEntryLocalServiceWrapper {

 

public CustomBlogsEntryServiceWrapper() {

super(null);

}

 

@Override

public BlogsEntry addEntry(long userId, String title, String subtitle,

String description, String content, int displayDateMonth,

int displayDateDay, int displayDateYear, int displayDateHour,

int displayDateMinute, boolean allowPingbacks,

boolean allowTrackbacks, String[] trackbacks,

String coverImageCaption, ImageSelector coverImageImageSelector,

ImageSelector smallImageImageSelector, ServiceContext serviceContext)

throws PortalException {

 

title = title + " : Surekhatech";

 

return super.addEntry(userId, title, subtitle, description, content,

displayDateMonth, displayDateDay, displayDateYear, displayDateHour,

displayDateMinute, allowPingbacks, allowTrackbacks, trackbacks,

coverImageCaption, coverImageImageSelector, smallImageImageSelector,

serviceContext);

}

}

Hook is ready, deploy it in Liferay 7 server. Create any blog entry and you will see that “Surekhatech” is appended in blog title.

I have attached sample jar file which you can download.

Attachment : Service Wrapper Hook.

Contact us

For Your Business Requirements

Text to Identify Refresh CAPTCHA
Background Image Close Button

2 - 4 October 2024

Hall: 10, Booth: #B8 Brussels, Belgium