Error in executing Java code with method arguments Object input & ExtensionToolContext context
I have a scenario where the xml file stored in local should be passed in one of the element of the SOAP Request in string format. Steps followed to achieve this task:
1. Added SOAP Request
2. Selected correct Data Source in SOAP Request
3. Written a Java code to read file from local & pass it in request tag
4. Xml file location is stored in excel data source
5. Selected Script option for that element/tag
6. In the Edit Script screen, checked box Use Data Source, Selected Language as Java, Specified the Class name which automatically populated the method name
7. Classpath is already added in System properties
In my Java class method, I'm passing two arguments & used context.getValue parameter to access value from excel data source
1. Object input
2. ExtensionToolContext context
After running the SOAP Test, it is failing with below method error-
- unable to invoke method Expected number of arguments should be 0 or 1 instead of 2
I tried to remove Object input argument but it failed again with argument mismatch error
Can someone help me with this error? Does these method arguments can only be used with Extension Tool & not with normal Scripting in other tool like in my case SOAP request element/tag?
Note- Other java codes with these arguments are working fine with Extension tool
Comments
-
Hi Nitzi,
When you're working with individual elements, scripts will only accept 0 or 1 arguments. If you have the one argument it should be the type ScriptingContext instead of ExtensionToolContext.
Hope this helps!
0 -
Any scripted fields should have a small link label which explains the expected arguments and the type of each argument. This way you don't have to guess beforehand.
Scripted fields generally don't have an "Object input" argument unless it is an Extension Tool which has an Input tab or can receive input from a parent tool. Similarly, the Extension Tool is the only thing which accepts ExtensionToolContext. All other scripted fields generally accept ScriptingContext. Regardless, the link label I mentioned should indicate what's required.
As a disclaimer, I have a vague recollection about there being some old version of SOAtest where one of the link labels in a scripted request field indicated the wrong thing. However, even if this were the case and I had to guess what you need, you do seem to be describing a place where the script only takes a single argument of type ScriptingContext.
1 -
Thanks @Thomas Moore & @benken_parasoft .... Now I know where I was going wrong. This time I have replaced method argument with (ScriptingContext context) & inside using context.getValue(datasource name, datasource column name) to access the values from datasource.
Unfortunately it is failing with error "No Data Source column named FilePath(column name used)". I don't see the reason why it can't found that column. Correct Datasource & Use data source are selected.
0 -
Did you check the "use data source" box? Did you double check you are passing the data source name first and the column name second, and not in the wrong order? Please also check for typos.
0 -
I am facing similar problem. Trying to load data source value in script ( in request payload i selected scripted option , Java ) loaded my java method which accepts ScriptingContext. I selected Data source check box. I used context.getValue("Datasource name", "coulum name") . When i am running the script. I am getting "argument type mismatch". Please help
0 -
When i am running the script. I am getting "argument type mismatch". Please help
This means that the arguments in the method you selected do not match the expected arguments. Look for a link label next to the "Method" box that says "Expected number of arguments". Click that label to see what arguments are expected for your method including the expected type of each argument.
0