#1 2019-04-02 09:44:37

Patryx
Member
Registered: 2019-03-25
Posts: 150

Additional Report Executors - the example doesn't work

Hi,
Could you give us a working example how to create such generator and how to add Output Generator to the Client?
The example given in your manual:
https://reportserver.net/en/guides/scri … Executors/
does not work in version ReportServer 3.0.6.

I saw the method initialize has changed and now there two more parameters, so the function is:

 	void initialize(OutputStream os, TableDefinition td, boolean withSubtotals, TableReport report, TableReport originalReport, CellFormatter[] cellFormatters, ParameterSet parameterSet, User user, ReportExecutionConfig... configs).

I added the parameters. Then I executed the script:
http://127.0.0.1:81/reportserver/report … ormat=MAPA
but now there is an inner exeception in your ReportServer:

Error: An error occurred during report execution.
The report could not be executed: null
To get help please contact an administrator.
Details
net.datenwerke.rs.core.service.reportmanager.exceptions.ReportExecutorException: The report could not be executed: null at net.datenwerke.rs.core.service.reportmanager.ReportExecutorServiceImpl.execute(ReportExecutorServiceImpl.java:218) at net.datenwerke.rs.core.service.reportmanager.ReportExecutorServiceImpl.execute(ReportExecutorServiceImpl.java:119) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.exeucteReport(ReportExportServlet.java:557) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.doExportReport(ReportExportServlet.java:438) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.exportReport(ReportExportServlet.java:368) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.exportReportById(ReportExportServlet.java:294) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.exportReportByIdViaRequest(ReportExportServlet.java:285) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.doGet(ReportExportServlet.java:169) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$f219ddff.CGLIB$doGet$1() at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$f219ddff$$FastClassByGuice$$8b822795.invoke() at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228) at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72) at com.google.inject.persist.jpa.JpaLocalTxnInterceptor.invoke(JpaLocalTxnInterceptor.java:66) at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72) at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109) at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72) at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$f219ddff.doGet() at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$f219ddff.CGLIB$service$13() at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$f219ddff$$FastClassByGuice$$8b822795.invoke() at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228) at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72) at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109) at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72) at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52) at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$f219ddff.service() at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263) at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178) at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62) at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:89) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:394) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.NullPointerException at java.base/java.io.Writer.(Writer.java:174) at java.base/java.io.OutputStreamWriter.(OutputStreamWriter.java:108) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77) at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:57) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:232) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:244) at MyGenerator.initialize(Script93.groovy:26) at net.datenwerke.rs.base.service.reportengines.table.TableReportEngine.createReport(TableReportEngine.java:272) at net.datenwerke.rs.base.service.reportengines.table.TableReportEngine.doExecuteNormal(TableReportEngine.java:191) at net.datenwerke.rs.base.service.reportengines.table.TableReportEngine.doExecuteNormal(TableReportEngine.java:151) at net.datenwerke.rs.base.service.reportengines.table.TableReportEngine.doExecute(TableReportEngine.java:88) at net.datenwerke.rs.core.service.reportmanager.engine.ReportEngine.execute(ReportEngine.java:150) at net.datenwerke.rs.core.service.reportmanager.ReportExecutorServiceImpl.execute(ReportExecutorServiceImpl.java:186) ... 59 more

What's more I added script for GUI to add a button - it doesn't work at all.

import net.datenwerke.rs.base.client.reportengines.table.dto.decorator.TableReportDtoDec

/* obtain ClientExtensionService */
def ces = GLOBALS.services['clientExtensionService']

/* register format */
ces.addReportExportOutputFormat(new TableReportDtoDec(), "New ext", "MAPA", "resources/rs/ReportServer-Logo_plain.png");

The button is never visible in export buttons for any reports (including dynamic reports). I tried to exec the script and also I added the file under onlogin.d directory, logout and login and it still doesn't work.
What's more how to add my own icon to resources/rs/ directory (via terminal)? The icon "resources/rs/ReportServer-Logo_plain.png" I found in terminal...Is it possible to skip icon (maybe I should put null as the fourth parameter in method addReportExportOutputFormat)?

I hope you will help me soon because I stuck with many problems and I cannot go on sad

My reportserver version: #
version=RS3.0.6-6006
schemaversion=RS3.0-12

Offline

#2 2019-04-04 12:29:09

eduardo
Administrator
Registered: 2016-11-01
Posts: 1,250
Website

Re: Additional Report Executors - the example doesn't work

Hi Patryx,

thanks for sending this. I raised ticket RS-3380 for this. At the moment, we are working on some bugfixes for the next 3.0.6 patch version, but we will take a look at this as soon as possible. Thanks for your patience.

Regards,
Eduardo

Offline

#3 2019-04-10 13:01:56

eduardo
Administrator
Registered: 2016-11-01
Posts: 1,250
Website

Re: Additional Report Executors - the example doesn't work

Hi Patryx,

I see the problem with the documentation. We are working on a solution. I will update here.

Regards,
Eduardo

Offline

#4 2019-04-10 13:41:46

Patryx
Member
Registered: 2019-03-25
Posts: 150

Re: Additional Report Executors - the example doesn't work

Perfect,
I look forward to getting a solution/example.

Last edited by Patryx (2019-04-10 13:43:03)

Offline

#5 2019-04-10 13:58:13

eduardo
Administrator
Registered: 2016-11-01
Posts: 1,250
Website

Re: Additional Report Executors - the example doesn't work

Hi Patryx,

please modify the script as follows:

1. boolean supportsStreaming(){
       return false;
    }

-> boolean supportsStreaming(){
       return true;
    }

2. void initialize(OutputStream os, TableDefinition td, boolean withSubtotals, TableReport report, TableReport originalReport, CellFormatter[] cellFormatters, ReportExecutionConfig... configs ){
        writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(os)));
-> void initialize(OutputStream os, TableDefinition td, boolean withSubtotals, TableReport report, TableReport originalReport, CellFormatter[] cellFormatters,
                    ParameterSet parameters, User user,
                    ReportExecutionConfig... configs ){

Part 1 should work now, i.e. you should be able to export by URL. We will correct the documentation. Please let me know.

Regards,
Eduardo

Offline

#6 2019-04-10 14:50:02

eduardo
Administrator
Registered: 2016-11-01
Posts: 1,250
Website

Re: Additional Report Executors - the example doesn't work

Hi Patryx,

part 2 (the client-side part) 11.2. Adding the Output Generator to the Client
has a bug. We will correct this and the client part will then work. I raised ticket RS-3386 for this. Until then, please use the export per URL as I described above.

Regards,
Eduardo

Offline

#7 2019-04-10 16:33:30

eduardo
Administrator
Registered: 2016-11-01
Posts: 1,250
Website

Re: Additional Report Executors - the example doesn't work

Hi Patryx,

we corrected part 2. This will work with the next patch version, released in the next couple of weeks.

Regards,
Eduardo

Offline

#8 2019-04-11 08:22:00

Patryx
Member
Registered: 2019-03-25
Posts: 150

Re: Additional Report Executors - the example doesn't work

Hi!
Yes, Part 1 works (problem with boolean flag resolved the problem in my case) smile

I look forward to releasing new patch.

I want to ask few more questions connected with this topic:
1. Are all script files created via Terminal (fileserver/bin) only stored in database or can I find them phisically on disk (if on disk too, where?)?
2. In your examples how to cooperate with GUI you have a "path to icon". I don't know how can I add new icons to "fileserver/bin" etc. I found only one there: "resources/rs/ReportServer-Logo_plain.png"
3. Until your solution of Part 2, is there any other possibility which nowadays works to add anywhere in Report View Execution my button which will fire "TableOutputGeneratorProviderHook"?

Last edited by Patryx (2019-04-11 08:22:46)

Offline

#9 2019-04-11 10:55:14

eduardo
Administrator
Registered: 2016-11-01
Posts: 1,250
Website

Re: Additional Report Executors - the example doesn't work

Hi Patryx,

thanks for letting me know.

1. Yes, these are stored in the database. You can access these per FTP server, though, as if they were "real" files: the file system is "simulated" in this case. Check here for more information on the SFTP server:
https://forum.reportserver.net/viewtopic.php?id=715
https://reportserver.net/en/guides/admi … TP-Server/
You can also access these by URL: https://reportserver.net/en/guides/admi … le-System/

2. You can put either a "real" filepath or a reportserver file path into the "pathToIcon" string, for example:
A "real" file path:
"resources/icons/flags/pl.png"
or a file you previously uploaded to your reportserver file system:
"http://yourHost/reportserver/fileServerAccess?id=2169800"
The second option is clearly better, since it will work after reportserver upgrades without any change by your part. You can find the URL you need in the "properties" tab of your file in the reportserver file system. Please note that you have to set the folder "accessible for web access". A good place to put files would be here: "/resources" (again, remember I am here talking about the reportserver file system, *not* the "real" file system).
More information here: https://reportserver.net/en/guides/admi … le-System/

3. No, there is no easy workaround for this currently.
But, since you can already export by URL, you can work on your export script and for now export only per URL. Just the button would be missing.
The patch release should be ready by the end of next week or 1 week later at the latest. If you need to test this urgently please let me know and we will think about a solution, maybe a nightly (unofficial) patch for you to test this.

Regards,
Eduardo

Offline

#10 2019-04-11 11:16:44

eduardo
Administrator
Registered: 2016-11-01
Posts: 1,250
Website

Re: Additional Report Executors - the example doesn't work

Hi Patryx,

fyi, we corrected the documentation here: https://reportserver.net/en/guides/scri … Executors/

Regards,
Eduardo

Offline

#11 2019-04-11 12:24:39

Patryx
Member
Registered: 2019-03-25
Posts: 150

Re: Additional Report Executors - the example doesn't work

I understand.

Now I will try to use TableOutputGeneratorProviderHook where I want to create new variant (new column) report and write the column values to database after executing. I don't want to return any file etc, just export some data to database. I can read data from CompiledReport and save in database (I found out how to do it in ReportExecutionNotificationHook).
Problem is what should I put inside methods: CompiledXHtmlReport getTableObject() and CompiledXHtmlReport getFormatInfo() and where create and execute variant (in initialize()? in close()?)?
Or maybe should I use sth different taking into consideration that I have to rememeber that I need to use parameters form url and configurations chosen by user in ReportExecutionView, so typical script for manipulating a report like "def report = reportService.getReportById(reportId)" doesn't seem to resolve my requirements.

Last edited by Patryx (2019-04-11 12:26:36)

Offline

#12 2019-04-11 12:55:37

eduardo
Administrator
Registered: 2016-11-01
Posts: 1,250
Website

Re: Additional Report Executors - the example doesn't work

Hi Patryx,

since you don't need any file, maybe another Hook would be more appropriate:
Please check the SendTo documentation here: https://reportserver.net/en/guides/scri … s/Send-To/

This hook allows you to send a report to wherever place you need. You may perform the data export here. As a working example please take a look at the following script:
In the example, the report (mainReport) is sent along a second report (extraReport) per Email.

import java.util.HashMap;

import net.datenwerke.rs.core.service.sendto.hooks.SendToTargetProviderHook
import net.datenwerke.rs.core.service.sendto.hooks.adapter.SendToTargetProviderHookAdapter
import net.datenwerke.rs.core.client.sendto.SendToClientConfig
import net.datenwerke.rs.core.service.mail.MailService;
import net.datenwerke.rs.core.service.mail.SimpleAttachement;
import net.datenwerke.rs.core.service.mail.SimpleMail;
import net.datenwerke.rs.core.service.reportmanager.ReportExecutorService;
import net.datenwerke.rs.core.service.reportmanager.ReportService;
import net.datenwerke.rs.core.service.reportmanager.engine.CompiledReport;
import net.datenwerke.rs.core.service.reportmanager.engine.config.ReportExecutionConfig;
import net.datenwerke.rs.core.service.reportmanager.entities.reports.Report;
import net.datenwerke.rs.core.service.reportmanager.exceptions.ReportExecutorException;
import net.datenwerke.rs.core.service.sendto.hooks.SendToTargetProviderHook;
import net.datenwerke.rs.scripting.service.scripting.scriptservices.CallbackRegistry;
import net.datenwerke.scheduler.service.scheduler.entities.AbstractJob;
import java.util.HashMap

def HOOK_NAME = "MY_SEND_TO"

reportService = GLOBALS.getInstance(ReportService.class)
reportExec = GLOBALS.getInstance(ReportExecutorService.class)
mailService = GLOBALS.getInstance(MailService.class)

String doSendMail(report, values, execConfig) {
  
  try {
		CompiledReport mainReportCompiled = null;
		
        if (execConfig != null) {
			mainReportCompiled = reportExec.execute(report, "EXCEL", execConfig);
        } else {
            mainReportCompiled = reportExec.execute(report, "EXCEL", ReportExecutionConfig.EMPTY_CONFIG);
        }

		Report extraReport = reportService.getReportById(722609);
		CompiledReport extraReportCompiled = extraReportCompiled = reportExec.execute(extraReport, "PDF", ReportExecutionConfig.EMPTY_CONFIG);

		SimpleMail mail = mailService.newSimpleMail();
		mail.setSubject("Testreport");
		mail.setToRecipients("to@infofabrik.de");
		mail.setFrom("from@reportserver.net");

		SimpleAttachement mainReportAttachement = new SimpleAttachement(mainReportCompiled.getReport(),
				mainReportCompiled.getMimeType(), "mainReport.xlsx");
		SimpleAttachement extraReportAttachement = new SimpleAttachement(extraReportCompiled.getReport(),
				extraReportCompiled.getMimeType(), "extraReport.pdf");
		// Attach the files
		mail.setContent("Some text", mainReportAttachement, extraReportAttachement);

		// send mail
		mailService.sendMail(mail);

		return "Send the report via mail. Config " + values;
    
    } catch (ReportExecutorException e) {
			e.printStackTrace();
	}
}


def callback = [
  consumes : { report ->
    def config = new SendToClientConfig();
    config.setTitle("Send via MY_SEND_TO");
    return config;
  },
  getId : { ->
    return "someUniqueId"
  },
  sendTo : { report, values, execConfig ->
  	return this.doSendMail(report, values, execConfig);
  },
  
  scheduledSendTo: { compiledReport, report,
			format, values,
			execConfig ->
	return this.doSendMail(report, values, execConfig);
  }

] as SendToTargetProviderHookAdapter

GLOBALS.services.callbackRegistry.attachHook(HOOK_NAME, SendToTargetProviderHook.class, callback)

Regards,
Eduardo

Offline

#13 2019-04-11 12:57:15

eduardo
Administrator
Registered: 2016-11-01
Posts: 1,250
Website

Re: Additional Report Executors - the example doesn't work

Hi Patryx,

the script adds an entry into the "send to" list automatically in the gui, so you can test it right away.

Regards,
Eduardo

Offline

#14 2019-04-12 08:09:18

Patryx
Member
Registered: 2019-03-25
Posts: 150

Re: Additional Report Executors - the example doesn't work

I will try this.

 
  getId : { ->
    return "someUniqueId"
  }

Should I create every time a unique key (generate it?)?
Is there any possibility to control when an additional button is added to "Send to..." or not? Let's say I know keys of report and want to have such a button only for them...

Last edited by Patryx (2019-04-12 10:25:18)

Offline

#15 2019-04-12 08:35:07

Patryx
Member
Registered: 2019-03-25
Posts: 150

Re: Additional Report Executors - the example doesn't work

I have another issue: I have to embed Report Execution View as embedded in my application, so using URL:
http://127.0.0.1:81/reportserver/Report … key:xxxxxx, there is no visible buttons for "Send to..." (no section like this), just "Excel-Export" and other formats and "Display report documentation".

In your next patch will there be possibility to add my own button (let's say next to "Excel-Export"), where I can execute a report (like in send to..., so I will have access to report class at start with all parameters from url etc) and also decide when such a button is visible (or enabled)?

Offline

#16 2019-04-12 13:31:16

Patryx
Member
Registered: 2019-03-25
Posts: 150

Re: Additional Report Executors - the example doesn't work

When I open through administration I see button in Send to...
I even implemented new variant and executed the report. I get expected values but I noticed that there were erros in reportserver.2019-04-11.log

2-Apr-2019 15:23:03.264 INFO [ajp-nio-8009-exec-5] net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke Intercepted NonFatalException
 java.lang.NullPointerException

12-Apr-2019 15:23:03.265 INFO [ajp-nio-8009-exec-5] net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke Intercepted NonFatalException
 net.datenwerke.gxtdto.client.servercommunication.exceptions.ServerCallFailedException
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:62)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:587)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
	at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
	at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
	at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:89)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
	at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:394)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.NullPointerException

How to eliminate such an exception to prevent filling log with errors every time I use my "send to..." button?

Last edited by Patryx (2019-04-12 13:32:00)

Offline

#17 2019-04-12 14:11:50

eduardo
Administrator
Registered: 2016-11-01
Posts: 1,250
Website

Re: Additional Report Executors - the example doesn't work

Hi Patryx,

please check in the admin -> license page if your enterprise evaluation version is still active.
Also, did you send the complete error stack? Something seems to be missing.

Regards,
Eduardo

Offline

#18 2019-04-15 08:30:50

Patryx
Member
Registered: 2019-03-25
Posts: 150

Re: Additional Report Executors - the example doesn't work

Hi,

eduardo wrote:

please check in the admin -> license page if your enterprise evaluation version is still active.

I checked, it is still valid till 28.04.2019. Is there any possibility to extend the licence (expire date)?


eduardo wrote:

Also, did you send the complete error stack? Something seems to be missing.

I did a mistake while describing the conditions. The error is generated not in my script, so let's skip this problem because it could be caused by other report added in my administration etc.
Just for your information, I attach all error stack from log:

15-Apr-2019 09:43:25.778 INFO [ajp-nio-8009-exec-1] net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke Intercepted NonFatalException
 java.lang.NullPointerException
	at net.datenwerke.rs.scripting.service.scripting.ScriptingServiceImpl.executeScript(ScriptingServiceImpl.java:316)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.rs.scriptreport.server.scriptreport.ScriptReportRpcServiceImpl.getScriptParameterContents(ScriptReportRpcServiceImpl.java:122)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:587)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
	at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
	at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
	at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:89)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
	at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:394)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:834)

15-Apr-2019 09:43:25.779 INFO [ajp-nio-8009-exec-1] net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke Intercepted NonFatalException
 net.datenwerke.gxtdto.client.servercommunication.exceptions.ServerCallFailedException
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:62)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:587)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
	at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
	at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
	at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:89)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
	at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:394)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.NullPointerException
	at net.datenwerke.rs.scripting.service.scripting.ScriptingServiceImpl.executeScript(ScriptingServiceImpl.java:316)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.rs.scriptreport.server.scriptreport.ScriptReportRpcServiceImpl.getScriptParameterContents(ScriptReportRpcServiceImpl.java:122)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	... 52 more

15-Apr-2019 09:43:25.780 INFO [ajp-nio-8009-exec-1] net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke Intercepted NonFatalException
 net.datenwerke.gxtdto.client.servercommunication.exceptions.ServerCallFailedException
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:62)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:587)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
	at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
	at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
	at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:89)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
	at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
	at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:394)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.NullPointerException
	at net.datenwerke.rs.scripting.service.scripting.ScriptingServiceImpl.executeScript(ScriptingServiceImpl.java:316)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.rs.scriptreport.server.scriptreport.ScriptReportRpcServiceImpl.getScriptParameterContents(ScriptReportRpcServiceImpl.java:122)
	at net.datenwerke.rsenterprise.license.service.EnterpriseCheckInterceptor.invoke(EnterpriseCheckInterceptor.java:35)
	at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:109)
	at net.datenwerke.gf.service.gwtstacktrace.CatchStacktraceInterceptor.invoke(CatchStacktraceInterceptor.java:38)
	... 52 more

15-Apr-2019 09:43:30.521 INFO [ajp-nio-8009-exec-2] net.datenwerke.rs.saiku.service.saiku.ThinQueryServiceImpl.<init> loaded thinqueryservice
15-Apr-2019 09:43:30.523 INFO [ajp-nio-8009-exec-3] net.datenwerke.rs.saiku.service.saiku.ThinQueryServiceImpl.<init> loaded thinqueryservice
15-Apr-2019 09:43:30.648 INFO [ajp-nio-8009-exec-4] net.datenwerke.rs.saiku.service.saiku.ThinQueryServiceImpl.<init> loaded thinqueryservice

Offline

#19 2019-04-15 08:34:20

Patryx
Member
Registered: 2019-03-25
Posts: 150

Re: Additional Report Executors - the example doesn't work

Do you know if there is possibility to add button in "Sent to..." from URL:
"http://127.0.0.1:81/reportserver/Report … key:xxxxxx"
Can I decide when such a button is expected to be shown (for example I just want such a button for ReportX, ReportY, and not for others)?

Offline

#20 2019-04-16 10:25:09

eduardo
Administrator
Registered: 2016-11-01
Posts: 1,250
Website

Re: Additional Report Executors - the example doesn't work

Hi Patryx,

please note that the patch 3.0.6 6007 is available for download. The problem with the GUI should be resolved here, please check the release notes: https://reportserver.net/releasenotes/RS3.0.6.html
RS-3386    Bug    Installing additional report executors in the client-side is not working

Patryx wrote:

Can I decide when such a button is expected to be shown (for example I just want such a button for ReportX, ReportY, and not for others)?

You can use report properties for allowing/disabling a specific export format. In this case, you would disable the custom export for the reports you don't want to show this button. Specifically, you can use the report property output_format_auth for this. This property can be set per report or per variable, depending on your needs.
More information here: https://reportserver.net/en/guides/admi … roperties/

Regards,
Eduardo

Offline

#21 2019-04-16 13:18:36

Patryx
Member
Registered: 2019-03-25
Posts: 150

Re: Additional Report Executors - the example doesn't work

Ok.
And can I also decide which "Send to" button and when could be shown? "Send to" hook is for me perfect and I can complete my study case execept visibility of button for particular reports.
As you suggested to resolve my issue with saving data in database it would be better to use SEND TO hook than OUTPUT one.
I just remind that I want to execute report and save sth in database. In Output hook I am supposed to return a formatted Compile Report so I am not sure if I can use it and not return CompiledReport to save as a file.

Offline

#22 2019-04-16 13:29:42

eduardo
Administrator
Registered: 2016-11-01
Posts: 1,250
Website

Re: Additional Report Executors - the example doesn't work

Hi Patryx,

"execept visibility of button for particular reports"
Do you mean during the "normal" report execution or during the execution of reports per URL ? In which mood of both do you need the "send to" button ?

Regarding your question on your evaluation license expiring: yes, of course we can extend your evaluation period. Please send us an email with your server id to support at infofabrik.de and we will send you an extended evaluation license.

Regards,
Eduardo

Offline

#23 2019-04-17 06:18:38

Patryx
Member
Registered: 2019-03-25
Posts: 150

Re: Additional Report Executors - the example doesn't work

Hi,
I meant "except visibility of button for particular reports".
I want to control if my created "Send to" button (in my case "Send to db") should be shown or hidden depending on report. When it comes to mode, in both of them but nowadays, as I told you, in inline report execution view (by url) I don't have any "Send to" button - is it a bug (I have still valid licence)? .
You mentioned about how to control export buttons (I can choose which options/export buttons are visible in definitions of report). Do you have such mechanism for "send to" buttons (the best solution for me if only "Send to" button would be available in url calling?

Offline

#24 2019-04-17 11:02:08

eduardo
Administrator
Registered: 2016-11-01
Posts: 1,250
Website

Re: Additional Report Executors - the example doesn't work

Hi Patryx,

ok, as I expected, you don't see the button by url. This is not a bug, this is the current approach. If you need the button to be shown by url this could be made by a feature request.
That's why I suggested using the export functionality, since it already contains everything you need, also for execution by URL.

You can always return a simple HTML report as in the documentation, e.g. containing confirmation for the user that everything went right or if something went wrong, a report of the problems.

Regards,
Eduardo

Offline

#25 2019-04-17 11:34:55

Patryx
Member
Registered: 2019-03-25
Posts: 150

Re: Additional Report Executors - the example doesn't work

Hi Eduardo,
Ok, but as you said "You can always return a simple HTML report as in the documentation, e.g. containing confirmation for the user that everything went right or if something went wrong, a report of the problems.", it means that i am forced to download html file. It's not good for our application. It would be much better to show information (like in Send to button in the right upper corner). Is there any possibility to skip download file and let's say show notification like in send to button?

Offline

Board footer

Powered by FluxBB