callable functions not accessible after upgrade 4.5.3 -->

Post any questions regarding Installing or Upgrading Ebase, including problems starting up the Ebase Xi Server or Designer

Moderators: Jon, Steve, Ian, Dave

User avatar
dvanhussel
Ebase User
Posts: 161
Joined: Fri Oct 19, 2007 12:45 pm
Location: Haarlem, the Netherlands

callable functions not accessible after upgrade 4.5.3 -->

#1

Postby dvanhussel » Thu Feb 18, 2016 11:26 pm

Hi,

On some forms that where upated the callable functions don't work any more.

The script with the functions is listed in 'calleble functions' in the form properties dialog. I tried removing and adding it again, but it does not make a difference.

The script is in the GLOBAL folder that was created by the upgrade. The server logs this error (the function is present in the script by the correct name):

Code: Select all

Thu Feb 18 23:58:27: ERROR Server Error: validateBeforeSendingMoveForm is not accessible.
com.ebasetech.ufs.kernel.FormException: validateBeforeSendingMoveForm is not accessible.
        at com.ebasetech.ufs.runtime.events.JVMExecuteFunctionsNode.executeInComponentPrefixContext(JVMExecuteFunctionsNode.java:102)
        at com.ebasetech.ufs.runtime.events.JVMExecuteFunctionsNode.execute(JVMExecuteFunctionsNode.java:43)
        at com.ebasetech.ufs.runtime.events.RunnableContext.execute(RunnableContext.java:69)
        at com.ebasetech.ufs.runtime.events.SuspendableExecutable.execute(SuspendableExecutable.java:47)
        at com.ebasetech.ufs.runtime.events.SuspendableContainerExecutable.execute(SuspendableContainerExecutable.java:26)
        at com.ebasetech.ufs.runtime.events.ExecuteFunctionNode.execute(ExecuteFunctionNode.java:40)
        at com.ebasetech.ufs.runtime.events.RunnableContext.execute(RunnableContext.java:69)
        at com.ebasetech.ufs.runtime.Request.execute(Request.java:444)
        at com.ebasetech.ufs.runtime.Request.execute(Request.java:413)
        at com.ebasetech.ufs.runtime.Request._execute(Request.java:348)
        at com.ebasetech.ufs.clientserverapi.ClientAPIRequest._execute(ClientAPIRequest.java:67)
        at com.ebasetech.ufs.clientserverapi.ClientAPIRequest._execute(ClientAPIRequest.java:13)
        at com.ebasetech.ufs.runtime.Request.execute(Request.java:313)
        at formservlets.FormProcessingUtil.executeRequest(FormProcessingUtil.java:502)
        at formservlets.EbaseExternalAPIServlet.process(EbaseExternalAPIServlet.java:96)
        at formservlets.EbaseExternalAPIServlet.doPost(EbaseExternalAPIServlet.java:48)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at formservlets.EbaseFilter.processRequest(EbaseFilter.java:223)
        at formservlets.EbaseFilter.performFilter(EbaseFilter.java:173)
        at formservlets.EbaseFilter.doFilter(EbaseFilter.java:99)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:198)
        at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:176)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
        at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Unknown Source)
Fri Feb 19 00:03:49: ERROR java.lang.NullPointerException
com.ebasetech.ufs.runtime.events.rhinojavascript.JavascriptExecutionHandler$RhinoScriptException: java.lang.NullPointerException
        at com.ebasetech.ufs.runtime.events.rhinojavascript.JavascriptExecutionHandler.handleExecutionErrors(JavascriptExecutionHandler.java:178)
        at com.ebasetech.ufs.runtime.events.rhinojavascript.JavascriptExecutionHandler.execute(JavascriptExecutionHandler.java:118)
        at com.ebasetech.ufs.runtime.events.JVMScriptNode.execute_(JVMScriptNode.java:132)
        at com.ebasetech.ufs.runtime.events.JVMScriptNode.execute(JVMScriptNode.java:98)
        at com.ebasetech.ufs.runtime.events.JVMExecuteFunctionsNode.executeInComponentPrefixContext(JVMExecuteFunctionsNode.java:91)
        at com.ebasetech.ufs.runtime.events.JVMExecuteFunctionsNode.execute(JVMExecuteFunctionsNode.java:43)
        at com.ebasetech.ufs.runtime.events.RunnableContext.execute(RunnableContext.java:69)
        at com.ebasetech.ufs.runtime.events.SuspendableExecutable.execute(SuspendableExecutable.java:47)
        at com.ebasetech.ufs.runtime.events.SuspendableContainerExecutable.execute(SuspendableContainerExecutable.java:26)
        at com.ebasetech.ufs.runtime.events.ExecuteFunctionNode.execute(ExecuteFunctionNode.java:40)
        at com.ebasetech.ufs.runtime.events.RunnableContext.execute(RunnableContext.java:69)
        at com.ebasetech.ufs.runtime.Request.execute(Request.java:444)
        at com.ebasetech.ufs.runtime.Request.execute(Request.java:413)
        at com.ebasetech.ufs.runtime.Request._execute(Request.java:348)
        at com.ebasetech.ufs.clientserverapi.ClientAPIRequest._execute(ClientAPIRequest.java:67)
        at com.ebasetech.ufs.clientserverapi.ClientAPIRequest._execute(ClientAPIRequest.java:13)
        at com.ebasetech.ufs.runtime.Request.execute(Request.java:313)
        at formservlets.FormProcessingUtil.executeRequest(FormProcessingUtil.java:502)
        at formservlets.EbaseExternalAPIServlet.process(EbaseExternalAPIServlet.java:96)
        at formservlets.EbaseExternalAPIServlet.doPost(EbaseExternalAPIServlet.java:48)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at formservlets.EbaseFilter.processRequest(EbaseFilter.java:223)
        at formservlets.EbaseFilter.performFilter(EbaseFilter.java:173)
        at formservlets.EbaseFilter.doFilter(EbaseFilter.java:99)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:198)
        at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:176)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
        at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
        at com.ebasetech.ufs.kernel.AnnotatedEventsSupporter.fullDescription(AnnotatedEventsSupporter.java:198)
        at com.ebasetech.ufs.runtime.eventScriptOwners.FormEventScriptOwner.getEventDescription(FormEventScriptOwner.java:20)
        at com.ebasetech.ufs.runtime.EventScriptContext.getEventDescription(EventScriptContext.java:101)
        at com.ebasetech.ufs.runtime.external.api.impl.EventContextImpl.getEventDescription(EventContextImpl.java:50)
        at sun.reflect.GeneratedMethodAccessor535.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126)
        at org.mozilla.javascript.JavaMembers.get(JavaMembers.java:85)
        at org.mozilla.javascript.NativeJavaObject.get(NativeJavaObject.java:77)
        at org.mozilla.javascript.ScriptableObject.getProperty(ScriptableObject.java:2269)
        at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1512)
        at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1505)
        at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1240)
        at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:815)
        at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109)
        at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
        at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3280)
        at org.mozilla.javascript.Context.callFunctionWithContinuations(Context.java:1284)
        at org.mozilla.javascript.Context.executeScriptWithContinuations(Context.java:1251)
        at com.ebasetech.ufs.runtime.events.rhinojavascript.JavascriptExecutionHandler.execute(JavascriptExecutionHandler.java:114)
        ... 49 more
I have tried moving the script to the project containing the form but it has the same effect.

Do you have any ideas on how to fix this?

Regards,

David
0 x

Jon
Moderator
Moderator
Posts: 1342
Joined: Wed Sep 12, 2007 12:49 pm

#2

Postby Jon » Fri Feb 19, 2016 9:15 am

From the stack trace it looks like it's executing the function and has gone wrong trying to access the event description. Could you try commenting out anything that refers to event.eventDescription.
0 x

User avatar
dvanhussel
Ebase User
Posts: 161
Joined: Fri Oct 19, 2007 12:45 pm
Location: Haarlem, the Netherlands

#3

Postby dvanhussel » Fri Feb 19, 2016 12:10 pm

Jon wrote:From the stack trace it looks like it's executing the function and has gone wrong trying to access the event description. Could you try commenting out anything that refers to event.eventDescription.
This was indeed the problem.

Code: Select all

event.eventDescription; 
is run in a function we use for logging. It has always worked in V4.5.x

Is this because the function was called by client side script? Would it be an idea to provide an eventDescription when a script is called this way?

For now I have fixed it by putting this in a try/catch block.

Thanks,

David
0 x

Jon
Moderator
Moderator
Posts: 1342
Joined: Wed Sep 12, 2007 12:49 pm

#4

Postby Jon » Fri Feb 19, 2016 12:39 pm

It's a bug. We'll try and fix it in the next service pack.
0 x

User avatar
dvanhussel
Ebase User
Posts: 161
Joined: Fri Oct 19, 2007 12:45 pm
Location: Haarlem, the Netherlands

#5

Postby dvanhussel » Fri Feb 19, 2016 2:35 pm

Hi,

I'm running into a similar problem on another form. This form is submitted exactly the same way as the form that is working ok now, using the same callable script.

On this form I have added a test button with test funtcion that only prints 'test' to the server console.

The code attached to the Jquery click event is:

Code: Select all

$eb.executeFunction('test', null, true, false);
The server side code is:

Code: Select all

function test(){
	print('test');
}


When clicked this error is thrown:

Code: Select all

vr feb 19 15:21:33: INFO Executing Javascript script Execute Function: test
vr feb 19 15:21:34: ERROR java.lang.NullPointerException
com.ebasetech.ufs.runtime.events.rhinojavascript.JavascriptExecutionHandler$RhinoScriptException: java.lang.NullPointerException
	at com.ebasetech.ufs.runtime.events.rhinojavascript.JavascriptExecutionHandler.handleExecutionErrors(JavascriptExecutionHandler.java:178)
	at com.ebasetech.ufs.runtime.events.rhinojavascript.JavascriptExecutionHandler.execute(JavascriptExecutionHandler.java:118)
	at com.ebasetech.ufs.runtime.events.JVMScriptNode.execute_(JVMScriptNode.java:132)
	at com.ebasetech.ufs.runtime.events.JVMScriptNode.execute(JVMScriptNode.java:98)
	at com.ebasetech.ufs.runtime.events.JVMExecuteFunctionsNode.executeInComponentPrefixContext(JVMExecuteFunctionsNode.java:91)
	at com.ebasetech.ufs.runtime.events.JVMExecuteFunctionsNode.execute(JVMExecuteFunctionsNode.java:43)
	at com.ebasetech.ufs.runtime.events.RunnableContext.execute(RunnableContext.java:69)
	at com.ebasetech.ufs.runtime.events.SuspendableExecutable.execute(SuspendableExecutable.java:47)
	at com.ebasetech.ufs.runtime.events.SuspendableContainerExecutable.execute(SuspendableContainerExecutable.java:26)
	at com.ebasetech.ufs.runtime.events.ExecuteFunctionNode.execute(ExecuteFunctionNode.java:40)
	at com.ebasetech.ufs.runtime.events.RunnableContext.execute(RunnableContext.java:69)
	at com.ebasetech.ufs.runtime.Request.execute(Request.java:444)
	at com.ebasetech.ufs.runtime.Request.execute(Request.java:413)
	at com.ebasetech.ufs.runtime.Request._execute(Request.java:348)
	at com.ebasetech.ufs.clientserverapi.ClientAPIRequest._execute(ClientAPIRequest.java:67)
	at com.ebasetech.ufs.clientserverapi.ClientAPIRequest._execute(ClientAPIRequest.java:13)
	at com.ebasetech.ufs.runtime.Request.execute(Request.java:313)
	at formservlets.FormProcessingUtil.executeRequest(FormProcessingUtil.java:502)
	at formservlets.EbaseExternalAPIServlet.process(EbaseExternalAPIServlet.java:96)
	at formservlets.EbaseExternalAPIServlet.doPost(EbaseExternalAPIServlet.java:48)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at formservlets.EbaseFilter.processRequest(EbaseFilter.java:223)
	at formservlets.EbaseFilter.performFilter(EbaseFilter.java:173)
	at formservlets.EbaseFilter.doFilter(EbaseFilter.java:99)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:198)
	at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:176)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:203)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
	at com.ebasetech.ufs.kernel.AnnotatedEventsSupporter.fullDescription(AnnotatedEventsSupporter.java:198)
	at com.ebasetech.ufs.runtime.eventScriptOwners.FormEventScriptOwner.getEventDescription(FormEventScriptOwner.java:20)
	at com.ebasetech.ufs.runtime.EventScriptContext.getEventDescription(EventScriptContext.java:101)
	at com.ebasetech.ufs.runtime.external.api.impl.EventContextImpl.getEventDescription(EventContextImpl.java:50)
	at sun.reflect.GeneratedMethodAccessor103.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126)
	at org.mozilla.javascript.JavaMembers.get(JavaMembers.java:85)
	at org.mozilla.javascript.NativeJavaObject.get(NativeJavaObject.java:77)
	at org.mozilla.javascript.ScriptableObject.getProperty(ScriptableObject.java:2269)
	at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1512)
	at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1505)
	at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1240)
	at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:815)
	at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109)
	at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
	at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3280)
	at org.mozilla.javascript.Context.callFunctionWithContinuations(Context.java:1284)
	at org.mozilla.javascript.Context.executeScriptWithContinuations(Context.java:1251)
	at com.ebasetech.ufs.runtime.events.rhinojavascript.JavascriptExecutionHandler.execute(JavascriptExecutionHandler.java:114)
	... 49 more
vr feb 19 15:21:34: INFO Transaction rolled back
vr feb 19 15:21:34: INFO Transaction rolled back
When I copy/past the button to the form that was fixed this morning, the testbutton works as expected.
I have tried removing and re-adding the script to the form, but it does not make a difference.

Can you see what is going wrong?

Regards,

David
0 x

User avatar
dvanhussel
Ebase User
Posts: 161
Joined: Fri Oct 19, 2007 12:45 pm
Location: Haarlem, the Netherlands

#6

Postby dvanhussel » Fri Feb 19, 2016 3:01 pm

Sorry, this was yet caused by the same bug.

Code: Select all

event.eventDescription; 
was used in a shared functions file that is not used by the other form. Applying the same work around fixed this.

Regards,

David
0 x

Jon
Moderator
Moderator
Posts: 1342
Joined: Wed Sep 12, 2007 12:49 pm

#7

Postby Jon » Fri Feb 19, 2016 3:18 pm

This has now been fixed so will be in next V5 service pack.
0 x

User avatar
dvanhussel
Ebase User
Posts: 161
Joined: Fri Oct 19, 2007 12:45 pm
Location: Haarlem, the Netherlands

#8

Postby dvanhussel » Fri Feb 19, 2016 3:23 pm

Jon wrote:This has now been fixed so will be in next V5 service pack.
Thx!

One of the benefits of using V5: I 'grepped' in all the files in the Workspace to find any other place we are using this code. Now I'm sure that I have not missed any other occurence :D
0 x


Who is online

Users browsing this forum: No registered users and 53 guests