Foros de discusión

Making custom portlet searchable in Liferay default search portlet

thumbnail
Atin Agarwal, modificado hace 11 años.

Making custom portlet searchable in Liferay default search portlet

Junior Member Mensajes: 86 Fecha de incorporación: 20/02/12 Mensajes recientes
Hi,
To search the contents of my custom portlet from the Liferay's default search portlet I have followed the following steps but it doesn't showing up the results -

1. Created Indexes while adding my entity in DB -

public Sample addSample(Sample sample) {
---------------code to add entity----------------
Indexer indexer = IndexerRegistryUtil.getIndexer(Sample.class);
indexer.reindex(sample);
}

Also i did the same thing while updating my entity.

2.Created my Indexer Class -

public class SampleIndexer extends BaseIndexer {

public static final String[] CLASS_NAMES = { Sample.class.getName() };

public static final String PORTLET_ID = "sample -portlet";

public String[] getClassNames() {

return CLASS_NAMES;
}

@Override
protected void doDelete(Object obj) throws Exception {

Sample sample = (Sample) obj;
Document document = new DocumentImpl();

document.addUID(PORTLET_ID, sample.getPrimaryKey());

String searchEngineId = SearchEngineUtil.getDefaultSearchEngineId();
SearchEngineUtil.deleteDocument(searchEngineId, sample.getCompanyId(),
document.get(Field.UID));
}

@Override
protected Document doGetDocument(Object obj) throws Exception {

Sample sample= (Sample) obj;
long groupId = getParentGroupId(sample.getGroupId());
long scopeGroupId = sample.getGroupId();
String description = sample.getSampleDescription();

Document document = getBaseModelDocument(PORTLET_ID, sample);

document.addKeyword(Field.GROUP_ID, groupId);
document.addKeyword(Field.SCOPE_GROUP_ID, scopeGroupId);
document.addText(Field.DESCRIPTION, description);

return document;
}

@Override
public void postProcessSearchQuery(BooleanQuery searchQuery,
SearchContext searchContext) throws Exception {

addSearchTerm(searchQuery, searchContext, Field.DESCRIPTION, false);

}

@Override
protected void doReindex(Object obj) throws Exception {

Sample sample= (Sample) obj;
String searchEngineId = SearchEngineUtil.getDefaultSearchEngineId();
SearchEngineUtil.updateDocument(searchEngineId, sample.getCompanyId(),
getDocument(sample));
}

@Override
protected void doReindex(String className, long classPK) throws Exception {

Sample sample= SampleLocalServiceUtil.getSample(classPK);

doReindex(sample);
}

@Override
protected void doReindex(String[] ids) throws Exception {

long companyId = GetterUtil.getLong(ids[0]);

doReindexAll(companyId);
}

private void doReindexAll(long companyId) throws Exception {

int count = SampleLocalServiceUtil.getSamplesCount();

int pages = count / Indexer.DEFAULT_INTERVAL;

for (int i = 0; i <= pages; i++) {
int start = (i * Indexer.DEFAULT_INTERVAL);
int end = start + Indexer.DEFAULT_INTERVAL;

reindexSamples(companyId, start, end);
}
}

protected void reindexSamples(long companyId, int start, int end)
throws Exception {

List< Sample> samples= SampleLocalServiceUtil.getSamples(start,
end);

if ( samples.isEmpty()) {
return;
}

Collection<Document> documents = new ArrayList<Document>();

for ( Sample sample: Samples) {
Document document = getDocument( sample);
documents.add(document);
}

String searchEngineId = SearchEngineUtil.getDefaultSearchEngineId();
SearchEngineUtil.updateDocuments(searchEngineId, companyId, documents);
}

@Override
protected String getPortletId(SearchContext searchContext) {

return PORTLET_ID;
}

public Summary doGetSummary(Document document, Locale locale,
String snippet, PortletURL portletURL) {

String title = document.get(Field.TITLE);

String content = snippet;

if (Validator.isNull(snippet)) {
content = document.get(Field.DESCRIPTION);

if (Validator.isNull(content)) {
content = StringUtil.shorten(document.get(Field.CONTENT), 200);
}
}

String id = document.get(Field.ENTRY_CLASS_PK);

portletURL.setParameter("struts_action", "/search/search");
portletURL.setParameter("id", id);

return new Summary(title, content, portletURL);
}

@Override
public String getPortletId() {
return PORTLET_ID;
}
}


3. Made an entry of my indexer in liferay-portlet.xml -
<indexer-class>com.my.search.SampleIndexer</indexer-class>

4. Created my OpenSearchImpl class -
public class SampleOpenSearchImpl extends HitsOpenSearchImpl {

public static final String SEARCH_PATH = "/search/search";

public static final String TITLE = "Sample Search: ";

@Override
public Indexer getIndexer() {
return IndexerRegistryUtil.getIndexer(Sample.class);
}

@Override
public String getPortletId() {
return SampleIndexer.PORTLET_ID;
}

@Override
public String getSearchPath() {
return SEARCH_PATH;
}

@Override
public String getTitle(String keywords) {
return TITLE + keywords;
}
}

5. Made an entry of my open search class in liferay-portlet.xml -
<open-search-class>com.my.search.SampleOpenSearchImpl</open-search-class>

-----------------------------------------------------------------------------------------------------------------------------------
This is all i did , but got no results in search portlet.

Kindly, suggest if i am missing anything or doing something wrong.
Any help would be appreciated.


Thanks in advance,
Atin Agarwal
thumbnail
Hitoshi Ozawa, modificado hace 11 años.

RE: Making custom portlet searchable in Liferay default search portlet

Liferay Legend Mensajes: 7942 Fecha de incorporación: 24/03/10 Mensajes recientes
I have tried the steps mentioned in the following thread?

http://www.liferay.com/community/forums/-/message_boards/message/1839079
thumbnail
Atin Agarwal, modificado hace 10 años.

RE: Making custom portlet searchable in Liferay default search portlet (Respuesta)

Junior Member Mensajes: 86 Fecha de incorporación: 20/02/12 Mensajes recientes
Though its a bit late but found the solution, I missed out to add companyId in the document.

After adding it-
document.addKeyword(Field.COMPANY_ID, companyId);

It worked.

Regards,
Atin Agarwal
Muhammad Taha, modificado hace 10 años.

RE: Making custom portlet searchable in Liferay default search portlet

Junior Member Mensajes: 63 Fecha de incorporación: 1/05/12 Mensajes recientes
Thanks Atin.
Pavel Fomin, modificado hace 9 años.

RE: Making custom portlet searchable in Liferay default search portlet

New Member Mensajes: 2 Fecha de incorporación: 26/11/14 Mensajes recientes
Good example - thank you for sharing.
One other step not mentioned above was adding the Sample model class into the advanced configuration JSON of the search portlet: Configure -> Advanced -> Search Configuration. Specifically adding com.example.model.Sample to the data.values array.
Prateeksha Mandloi, modificado hace 9 años.

RE: Making custom portlet searchable in Liferay default search portlet

Regular Member Mensajes: 112 Fecha de incorporación: 5/02/14 Mensajes recientes
Hello Atin,

I followed the steps mentioned by you. But after the doGetDocument() method returns document object. It throws below error :
java.lang.NullPointerException
2 at com.liferay.portal.search.SearchPermissionCheckerImpl.addPermissionFields(SearchPermissionCheckerImpl.java:107)
3 at com.liferay.portal.kernel.search.SearchEngineUtil.updateDocument(SearchEngineUtil.java:726)
4 at com.tmf.news.MySampleIndexerClass.doReindex(MySampleIndexerClass.java:121)
5 at com.liferay.portal.kernel.search.BaseIndexer.reindex(BaseIndexer.java:418)
6 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
7 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
8 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
9 at java.lang.reflect.Method.invoke(Unknown Source)
10 at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:67)
11 at com.sun.proxy.$Proxy659.reindex(Unknown Source)
12 at com.tmf.news.service.impl.NewsLocalServiceImpl.addNewsEntry(NewsLocalServiceImpl.java:92)
13 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
14 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
15 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
16 at java.lang.reflect.Method.invoke(Unknown Source)
17 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:115)
18 at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:62)
19 at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:51)
20 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
21 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
22 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
23 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
24 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
25 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
26 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
27 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
28 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
29 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
30 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
31 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
32 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
33 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
34 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
35 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
36 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
37 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
38 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
39 at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:175)
40 at com.sun.proxy.$Proxy652.addNewsEntry(Unknown Source)
41 at com.tmf.news.service.NewsLocalServiceUtil.addNewsEntry(NewsLocalServiceUtil.java:277)
42 at com.tmf.news.NewsFollowPortlet.updateNewsEntry(NewsFollowPortlet.java:149)
43 at com.tmf.news.NewsFollowPortlet.processAction(NewsFollowPortlet.java:85)
44 at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:71)
45 at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:48)
46 at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:112)
47 at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
48 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
49 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
50 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
51 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:96)
52 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
53 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
54 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
55 at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:605)
56 at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:544)
57 at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:604)
58 at com.liferay.portlet.InvokerPortletImpl.invokeAction(InvokerPortletImpl.java:649)
59 at com.liferay.portlet.InvokerPortletImpl.processAction(InvokerPortletImpl.java:312)
60 at com.liferay.portlet.PortletContainerImpl._doProcessAction(PortletContainerImpl.java:402)
61 at com.liferay.portlet.PortletContainerImpl.processAction(PortletContainerImpl.java:110)
62 at com.liferay.portlet.SecurityPortletContainerWrapper.processAction(SecurityPortletContainerWrapper.java:109)
63 at com.liferay.portlet.RestrictPortletContainerWrapper.processAction(RestrictPortletContainerWrapper.java:75)
64 at com.liferay.portal.kernel.portlet.PortletContainerUtil.processAction(PortletContainerUtil.java:115)
65 at com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:356)
66 at com.liferay.portal.action.LayoutAction.doExecute(LayoutAction.java:178)
67 at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:79)
68 at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
69 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
70 at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:173)
71 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
72 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
73 at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
74 at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:546)
75 at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:523)
76 at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
77 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
78 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
79 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
80 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
81 at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:293)
82 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
83 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
84 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
85 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
86 at com.liferay.portal.servlet.filters.jsoncontenttype.JSONContentTypeFilter.processFilter(JSONContentTypeFilter.java:42)
87 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
88 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
89 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
90 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:96)
91 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
92 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
93 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
94 at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
95 at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
96 at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
97 at com.liferay.portal.servlet.FriendlyURLServlet.service(FriendlyURLServlet.java:160)
98 at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
99 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
100 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
101 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
102 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
103 at com.liferay.portal.servlet.filters.strip.StripFilter.processFilter(StripFilter.java:359)
104 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
105 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
106 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
107 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
108 at com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:123)
109 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
110 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
111 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
112 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
113 at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:293)
114 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
115 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
116 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
117 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
118 at com.liferay.portal.servlet.filters.i18n.I18nFilter.processFilter(I18nFilter.java:243)
119 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
120 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
121 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
122 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
123 at com.liferay.portal.servlet.filters.jsoncontenttype.JSONContentTypeFilter.processFilter(JSONContentTypeFilter.java:42)
124 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
125 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
126 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
127 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
128 at com.liferay.portal.servlet.filters.autologin.AutoLoginFilter.processFilter(AutoLoginFilter.java:267)
129 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
130 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
131 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
132 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
133 at com.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter.processFilter(NtlmPostFilter.java:83)
134 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
135 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
136 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
137 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
138 at com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.java:88)
139 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
140 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
141 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
142 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
143 at com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.processFilter(VirtualHostFilter.java:226)
144 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
145 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
146 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
147 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:185)
148 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)
149 at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
150 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
151 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
152 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:165)
153 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)
154 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:165)
155 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)
156 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:185)
157 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)
158 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:96)
159 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
160 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
161 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
162 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
163 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
164 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
165 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
166 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
167 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
168 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
169 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
170 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
171 at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
172 at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
173 at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
174 at java.lang.Thread.run(Unknown Source)

Can you please help !!
Mohit S, modificado hace 9 años.

RE: Making custom portlet searchable in Liferay default search portlet

New Member Mensajes: 20 Fecha de incorporación: 28/02/14 Mensajes recientes
Hi,

Sounds interesting!!!
It looks like that Indexer is null , which is causing NPE.
Can you please make sure if you have register your Indexer class successfully?

It would be great if you can upload the source code here.

Cheers,