JPT_ENT
16 years agoOccasional Contributor
Problems with Listeners
I'm using SoapUI Pro, and am trying to use a listener to strip out certain tag items from requests (those that contain a value of "--null--"). This is necessary because I'm using a datasource for the request, and some the test cases contain null values. Given I don't want to send empty tags through, I need to to remove them.
Looking through the forum, I found the following example which is just what I'm after. The only problem is, it's giving me an error when I run it.
Here the details...
demo-listeners.xml
------------------------
listenerClass="com.eviware.soapui.support.scripting.listeners.ScriptRequestFilter"
groovyClass="soapui.demo.DemoRequestFilter"
listenerInterface="com.eviware.soapui.impl.wsdl.submit.RequestFilter"/>
DemoRequestFilter.groovy
---------------------------------
package soapui.demo
import com.eviware.soapui.SoapUI
import com.eviware.soapui.impl.wsdl.submit.transports.http.BaseHttpRequestTransport
import com.eviware.soapui.impl.wsdl.submit.RequestFilter
import com.eviware.soapui.impl.wsdl.WsdlRequest
import com.eviware.soapui.model.iface.Request
import com.eviware.soapui.model.iface.Response
import com.eviware.soapui.model.iface.SubmitContext
public class DemoRequestFilter implements RequestFilter
{
public void afterRequest( SubmitContext context, Response response )
{}
public void filterRequest( SubmitContext context, WsdlRequest wsdlRequest )
{
String content = (String) context.getProperty( BaseHttpRequestTransport.REQUEST_CONTENT )
if( content == null )
{
System.err.println( "Missing request content in context, skipping demofilter" )
}
else
{
System.out.println( "running demofilter" )
content = content.replaceAll( "<(.+)>--null--", "" )
context.setProperty( BaseHttpRequestTransport.REQUEST_CONTENT, content )
}
}
}
I get 2 identical errors shown in the log when submitting requests. I don't get any errors when starting up soapUI, the class seems to be loaded fine it's just when they're actually being run that problems occur.
16:06:42,521 ERROR [SoapUI] An error occured [startup failed:
soapui.demo.DemoRequestFilter: 11: Can't have an abstract method in a non-abstra
ct class. The class 'soapui.demo.DemoRequestFilter' must be declared abstract or
the method 'void afterRequest(com.eviware.soapui.model.iface.SubmitContext, com
.eviware.soapui.model.iface.Request)' must be implemented.
@ line 11, column 1.
public class DemoRequestFilter implements RequestFilter
Can anyone help??
Looking through the forum, I found the following example which is just what I'm after. The only problem is, it's giving me an error when I run it.
Here the details...
demo-listeners.xml
------------------------
listenerClass="com.eviware.soapui.support.scripting.listeners.ScriptRequestFilter"
groovyClass="soapui.demo.DemoRequestFilter"
listenerInterface="com.eviware.soapui.impl.wsdl.submit.RequestFilter"/>
DemoRequestFilter.groovy
---------------------------------
package soapui.demo
import com.eviware.soapui.SoapUI
import com.eviware.soapui.impl.wsdl.submit.transports.http.BaseHttpRequestTransport
import com.eviware.soapui.impl.wsdl.submit.RequestFilter
import com.eviware.soapui.impl.wsdl.WsdlRequest
import com.eviware.soapui.model.iface.Request
import com.eviware.soapui.model.iface.Response
import com.eviware.soapui.model.iface.SubmitContext
public class DemoRequestFilter implements RequestFilter
{
public void afterRequest( SubmitContext context, Response response )
{}
public void filterRequest( SubmitContext context, WsdlRequest wsdlRequest )
{
String content = (String) context.getProperty( BaseHttpRequestTransport.REQUEST_CONTENT )
if( content == null )
{
System.err.println( "Missing request content in context, skipping demofilter" )
}
else
{
System.out.println( "running demofilter" )
content = content.replaceAll( "<(.+)>--null--", "" )
context.setProperty( BaseHttpRequestTransport.REQUEST_CONTENT, content )
}
}
}
I get 2 identical errors shown in the log when submitting requests. I don't get any errors when starting up soapUI, the class seems to be loaded fine it's just when they're actually being run that problems occur.
16:06:42,521 ERROR [SoapUI] An error occured [startup failed:
soapui.demo.DemoRequestFilter: 11: Can't have an abstract method in a non-abstra
ct class. The class 'soapui.demo.DemoRequestFilter' must be declared abstract or
the method 'void afterRequest(com.eviware.soapui.model.iface.SubmitContext, com
.eviware.soapui.model.iface.Request)' must be implemented.
@ line 11, column 1.
public class DemoRequestFilter implements RequestFilter
Can anyone help??