Jump to content
Changes to the Jaspersoft community edition download ×

Report fill error com.jaspersoft.jasperserver.api.JSException: Error filling report


vermaravi764

Recommended Posts

2021-05-26 10:07:59,035 ERROR ErrorPageHandlerAction,default task-4:115 - Error UID e6251a20-c141-406b-8b87-40244433f7c1
com.jaspersoft.jasperserver.api.JSException: Error filling report
Arguments: 
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$FillResultListener.reportFillError(EngineServiceImpl.java:1327)
    at net.sf.jasperreports.engine.fill.BaseFillHandle.notifyError(BaseFillHandle.java:216)
    at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFill.run(BaseFillHandle.java:138)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$SynchronousExecutor.execute(EngineServiceImpl.java:952)
    at net.sf.jasperreports.engine.fill.BaseFillHandle.startFill(BaseFillHandle.java:169)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$AsynchronousReportFiller.fillReport(EngineServiceImpl.java:903)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:1831)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runWithDataSource(EngineServiceImpl.java:1150)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runReport(EngineServiceImpl.java:1079)
    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportRunnable.run(EngineServiceImpl.java:974)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: net.sf.jasperreports.engine.JRException: java.lang.NullPointerException
    at com.jaspersoft.ji.adhoc.strategy.StrategyAwareDomainQueryExecuter.createDatasource(StrategyAwareDomainQueryExecuter.java:251)
    at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1245)
    at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:723)
    at net.sf.jasperreports.engine.fill.BaseReportFiller.setParameters(BaseReportFiller.java:429)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:570)
    at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFill.run(BaseFillHandle.java:123)
    ... 10 more
Caused by: java.lang.NullPointerException
    at com.jaspersoft.ji.adhoc.strategy.DataStrategyServiceImpl.getDataStrategy(DataStrategyServiceImpl.java:82)
    at com.jaspersoft.ji.adhoc.strategy.DataStrategyServiceImpl.getDataStrategy(DataStrategyServiceImpl.java:40)
    at com.jaspersoft.ji.adhoc.service.AdhocEngineServiceImpl.getDataStrategy(AdhocEngineServiceImpl.java:393)
    at com.jaspersoft.ji.adhoc.strategy.StrategyAwareDomainQueryExecuter.createDatasource(StrategyAwareDomainQueryExecuter.java:164)
    ... 15 more

Link to comment
Share on other sites

  • Replies 2
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Hi vermaravi. 
Not able to give you solution but a bit of guidance. 
Main problem is : "NullPointerException"
Something is not defined of does not exist. 
Might have something to do with your datasource. You making use of adhoc report, maybe the domain is not correctly defined. 
com.jaspersoft.ji.adhoc.strategy.StrategyAwareDomainQueryExecuter.createDatasource 

Also you might have more stack strace logs in the jasperserver.log file that gives you more pinpointed log issues.
 

Link to comment
Share on other sites

Hi Joseng62,

Thanks for your help.

Basically issue is in com.jaspersoft.ji.adhoc.strategy.DataStrategyServiceImpl class and this class define in ji-gyroscope-7.1.3.jar .this jar use in jasper report,when execute this line

 dataStrategyFromJRXML = adhocData.getDataset().getPropertiesMap().getProperty(PREFERRED_DATA_STRATEGY_PROPERTY);

dhocData.getDataset().getPropertiesMap() getting null, that resaon generate null pointer execption.   but because of this DataStrategyServiceImpl class define in ji-gyroscope-7.1.3.jar jar so we unable to handle null or we don't know why this dhocData.getDataset().getPropertiesMap()  line of code getting null. below are the full method.

Thanks,I am waiting for your response.

private AdhocDataStrategy getDataStrategy(AdhocMetadata adhocData, String preferredDataStrategy, boolean wrap, Map<String, String> parameters) throws Exception {
        // ordered set of all beans (we put preferred beans in first, then add the rest later)
        Set<String> allSet = new LinkedHashSet<String>();
        // list of enabled beans; start with base list, but add preferred beans if not present
        Set<String> enabledSet = new LinkedHashSet<String>(dataStrategyBeans);

        // if we can find a preferred data strategy, try that first
        if (preferredDataStrategy != null) {
            allSet.add(preferredDataStrategy);
            enabledSet.add(preferredDataStrategy);
        }
        // then try one from jrxml
        String dataStrategyFromJRXML = null;
        if (adhocData.getDataset() != null) {
            dataStrategyFromJRXML = adhocData.getDataset().getPropertiesMap().getProperty(PREFERRED_DATA_STRATEGY_PROPERTY);
            // special case of upgrading from 3.5; if a report was created from a domain with the domain ds off,
            // this property would be set to "classicDataStrategy" which is now a clone of "newClassicDataStrategy",
            // but in 3.7 we are using "classicDomainDataStrategy" for domains when domain ds is off
            if ("classicDataStrategy".equals(dataStrategyFromJRXML) && adhocData instanceof AdhocTopicMetadata) {
                String language = ((AdhocTopicMetadata) adhocData).getQueryLanguage();
                if (language != null && language.equals(Query.SL_LANGUAGE)) {
                    dataStrategyFromJRXML = "classicDomainDataStrategy";
                }
            }
        }
        if (dataStrategyFromJRXML != null) {
            allSet.add(dataStrategyFromJRXML);
            enabledSet.add(dataStrategyFromJRXML);
        }

        // For diagnostic adhoc
        String diagnosticDataStrategy = null;
        Boolean isDiagnostic = false;
        String diagnosticMode = null;
        if (parameters != null) {
            if (parameters.containsKey(IS_DIAGNOSTIC))
                isDiagnostic = Boolean.parseBoolean(parameters.get(IS_DIAGNOSTIC));
            if (parameters.containsKey(DIAGNOSTIC_MODE)) diagnosticMode = parameters.get(DIAGNOSTIC_MODE);
        }

        if (isDiagnostic && diagnosticMode != null && beanFactory.containsBean(diagnosticMode)) {
            diagnosticDataStrategy = parameters.get(DIAGNOSTIC_MODE);
            allSet.add(diagnosticDataStrategy);
            enabledSet.add(diagnosticDataStrategy);
        }

        // try all others not mentioned previously
        // (note: this contains both enabled and disabled beans)
        allSet.addAll(getAllDataStrategyBeans());
        AdhocDataStrategy validStrategy = null;
        for (String strategyBeanName : allSet) {
            // make sure it's in the set of enabled beans before testing
            if (!enabledSet.contains(strategyBeanName)) {
                continue;
            }
            AdhocDataStrategy strategy = (AdhocDataStrategy) beanFactory.getBean(strategyBeanName);
            strategy.setName(strategyBeanName);
            strategy.setAdhocData(adhocData);
//            strategy.setReportParameters(reportParameters);
            // don't check data strategy if it was specified in jrxml
            if (strategy.isValid() ||
                strategyBeanName.equals(dataStrategyFromJRXML) ||
                strategyBeanName.equals(diagnosticDataStrategy)) {
                validStrategy = strategy;
                break;
            }
        }
        if (validStrategy == null) {
            throw new RuntimeException("Can't find strategy to handle request");
        }
        validStrategy.getProperties().put(IS_DIAGNOSTIC, isDiagnostic.toString());

        // Wrapping no longer results in a new data strategy.
        // It is query dependent, and will be locally managed by the effective datastrategy.
//        // if there is a wrapper and wrapping is requested, apply it to your strategy
//        if (wrap && wrapper != null) {
//            //TODO: Sergey P. in wrapper query is used only for logging
//            //We need a way to get DataStrategy without query
//            validStrategy = wrapper.wrap(query, validStrategy);
//        }
        // Save wrapping, dataStrategy will try to wrap if appropriate.
        validStrategy.setWrap(wrap);
        validStrategy.init();
        return validStrategy;
    }

 

 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...