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.