[#10651] - java.lang.NullPointerException: Cannot invoke method replace() on null object

Category:
Bug report
Priority:
Urgent
Status:
New
Project: Severity:
Major
Resolution:
Open
Component: Reproducibility:
Always
Assigned to:

Hi Team,

We are facing NullPointerException in Input Control of Adhoc reports. Earlier we were on JasperServer 4.7.1. We have created few adhoc reports. Now we have migrated to jasperserver 6.4. If we don't give any value in the input control then we are getting below error.

2018-03-15 05:38:12,436; [WebContainer : 11]; ERROR; com.jaspersoft.jasperserver.war.action.ErrorPageHandlerAction; -Error UID 2f23b608-9425-4110-9145-f9490de800fd
com.jaspersoft.jasperserver.api.JSException: Exception getting data strategygroovy evaluation failed on string
def search = args[1].value;
if (search == null)
return " regexp_like(" + sqlArgs[0] + "," + "'" + sqlArgs[1] + "', 'i')"
if (! (search instanceof String)) { search = search.value }
return " regexp_like(" + sqlArgs[0] + "," + "'" + search.replace("'","''") + "', 'i')"
and expression contains(ENTERPRISEACCESSLEVEL, ENTERPRISEACCESSLEVEL_1)
Arguments:
at com.jaspersoft.ji.adhoc.datasource.AdhocDataSourceService.setReportParameterValues(AdhocDataSourceService.java:193)
at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:1806)
at com.alnt.common.ALNTEngineService.fillReport(ALNTEngineService.java:68)
at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runWithDataSource(EngineServiceImpl.java:1143)
at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runReport(EngineServiceImpl.java:1072)
at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportRunnable.run(EngineServiceImpl.java:967)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1153)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.lang.Thread.run(Thread.java:785)
Caused by:
java.lang.RuntimeException: groovy evaluation failed on string
def search = args[1].value;
if (search == null)
return " regexp_like(" + sqlArgs[0] + "," + "'" + sqlArgs[1] + "', 'i')"
if (! (search instanceof String)) { search = search.value }
return " regexp_like(" + sqlArgs[0] + "," + "'" + search.replace("'","''") + "', 'i')"
and expression contains(ENTERPRISEACCESSLEVEL, ENTERPRISEACCESSLEVEL_1)
at com.jaspersoft.commons.semantic.dsimpl.SQLGenerator.generateSQLForFunction(SQLGenerator.java:1264)
at com.jaspersoft.commons.semantic.dsimpl.SQLGenerator.function(SQLGenerator.java:1210)
at com.jaspersoft.commons.dataset.expr.ExpressionWalker.operator(ExpressionWalker.java:138)
at com.jaspersoft.commons.semantic.dsimpl.SQLGenerator.operator(SQLGenerator.java:1481)
at com.jaspersoft.commons.dataset.expr.ExpressionWalker.walk(ExpressionWalker.java:65)
at com.jaspersoft.commons.semantic.dsimpl.SQLGenerator.logical(SQLGenerator.java:1472)
at com.jaspersoft.commons.dataset.expr.ExpressionWalker.operator(ExpressionWalker.java:132)
at com.jaspersoft.commons.semantic.dsimpl.SQLGenerator.operator(SQLGenerator.java:1481)
at com.jaspersoft.commons.dataset.expr.ExpressionWalker.walk(ExpressionWalker.java:65)
at com.jaspersoft.commons.semantic.dsimpl.SQLGenerator.getSQL(SQLGenerator.java:193)
at com.jaspersoft.commons.semantic.dsimpl.JdbcBaseDataSet.getQueryDataSet(JdbcBaseDataSet.java:102)
at com.jaspersoft.commons.semantic.dsimpl.JdbcBaseDataSet.getDatasetKey(JdbcBaseDataSet.java:112)
at com.jaspersoft.commons.datarator.AbstractDataSet.getCacheKey(AbstractDataSet.java:270)
at com.jaspersoft.commons.semantic.dsimpl.AbstractSemanticLayerDataSet.getCacheKey(AbstractSemanticLayerDataSet.java:2567)
at com.jaspersoft.commons.datarator.CachedDatasetKey.<init>(CachedDatasetKey.java:224)
at com.jaspersoft.commons.datarator.BaseDataSetCacheImpl.getCachedDataSet(BaseDataSetCacheImpl.java:113)
at com.jaspersoft.commons.datarator.BaseDataSetCacheImpl.getWorkingDataSet(BaseDataSetCacheImpl.java:280)
at com.jaspersoft.commons.semantic.dsimpl.memory.MemoryDataSet.getWorkingDataSet(MemoryDataSet.java:108)
at com.jaspersoft.commons.semantic.dsimpl.memory.MemoryDataSet.getWorkingDataSet(MemoryDataSet.java:81)
at com.jaspersoft.ji.adhoc.strategy.CommonDomainDataStrategy.getWorkingDataSet(CommonDomainDataStrategy.java:1356)
at com.jaspersoft.ji.adhoc.strategy.CommonDomainDataStrategy.getRuntimeDataSet(CommonDomainDataStrategy.java:1753)
at com.jaspersoft.ji.adhoc.strategy.DomainDataStrategy.getRuntimeDataSet(DomainDataStrategy.java:323)
at com.jaspersoft.ji.adhoc.strategy.CompiledDomainQuery.getRuntimeDataSet(CompiledDomainQuery.java:103)
at com.jaspersoft.ji.adhoc.datasource.AdhocDataSourceService.setReportParameterValues(AdhocDataSourceService.java:164)
... 8 more
Caused by:
java.lang.NullPointerException: Cannot invoke method replace() on null object
at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:35)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at java_lang_String$replace$0.call(Unknown Source)
at JRS_Script1118.run(JRS_Script1118.groovy:6)
at com.jaspersoft.commons.groovy.JRS_GroovyShell.evaluate(JRS_GroovyShell.java:130)
at com.jaspersoft.commons.groovy.JRS_GroovyShell.evaluate(JRS_GroovyShell.java:97)
at com.jaspersoft.commons.groovy.GroovyRunner.evaluate(GroovyRunner.java:131)
at com.jaspersoft.commons.groovy.GroovyRunnerFactory.evaluate(GroovyRunnerFactory.java:318)
at com.jaspersoft.commons.groovy.GroovyRunnerFactory.evaluateTrusted(GroovyRunnerFactory.java:309)
at com.jaspersoft.commons.semantic.dsimpl.SQLGenerator.generateSQLForFunction(SQLGenerator.java:1243)
... 31 more

These same adhoc reports were working fine on 4.7.1 jasperserver. But here it seems like if no value is given in input control then somehow "NULL" object is being propagated from input control to the query layer where we are getting above error.
However if we give some value in the Input Control then reports are working fine.

AttachmentSize
Image icon jasperissue.png69.5 KB
v6.4
ashuthakur1904's picture
Joined: Mar 15 2018 - 6:53am
Last seen: 4 years 1 month ago
Feedback