MyFirstPlugin - button Project menu in Ready Api
hello,
I'm trying to create my first plugin for ReadyApi. I would like to add a button in the Project menu, only when a project is open.
I've got the template Smartbear provided (https://github.com/SmartBear/ready-api-plugins) working and i see all kind of extra teststep/screens/buttons, but none in the project menu.
In the template is an action which suggest to add a button:
package com.smartbear.ready.plugin.template.actions;
import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.plugins.ActionConfiguration;
import com.eviware.soapui.support.UISupport;
import com.eviware.soapui.support.action.support.AbstractSoapUIAction;
import com.google.inject.Inject;
@ActionConfiguration(actionGroup = "EnabledWsdlProjectActions", targetType = WsdlProject.class)
public class SampleJavaAction extends AbstractSoapUIAction<WsdlProject> {
@Inject
public SampleJavaAction() {
super("Sample Java Action", "A sample action at the project level");
}
@Override
public void perform(WsdlProject project, Object o) {
UISupport.showInfoMessage("Hello from project [" + project.getName() + "]!");
}
}
But no luck. The documentation says that actionGroup won't work in ReadyApi, see: https://support.smartbear.com/readyapi/docs/configure/plugins/annotations/actions/action.html
Is there an alternative to add a button in the Project menu?
thank you
sorry for the late reaction. I found another way to create an plugin. Instead of using java i used groovy.
i start using the template: Smartbears template
and added my own UpdateFunctionLibrary.groovy to it:
package com.smartbear.ready.plugin.template.actions; import com.eviware.soapui.impl.wsdl.WsdlProject; import com.eviware.soapui.impl.wsdl.WsdlProjectPro; import com.eviware.soapui.plugins.ActionConfiguration; import com.eviware.soapui.support.UISupport; import com.eviware.soapui.support.action.support.AbstractSoapUIAction; import com.smartbear.ready.functional.actions.FunctionalActionGroups; import com.eviware.soapui.SoapUI import com.eviware.soapui.SoapUIProSettings @ActionConfiguration(actionGroup = FunctionalActionGroups.FUNCTIONAL_MODULE_TOOLBAR_ACTIONS, targetType = WsdlProjectPro.class, isToolbarAction = true, iconPath = "com/smartbear/ready/plugin/template/icons/jira.svg",description = "Update FunctionLibrary") public class updateFunctionLibrary extends AbstractSoapUIAction<WsdlProjectPro> { // @Inject public updateFunctionLibrary() { super( "toolbar", "Update FunctionLibrary", ""); } @Override public void perform(WsdlProjectPro project, Object o) { if (SoapUI.settings.getString(SoapUIProSettings.SCRIPT_LIBRARY, "") == "") { return } if (!project.open) { UISupport.showErrorMessage("Project " + project.getName() + " is closed."); } else { if (project.name.toLowerCase() == "fl") { UISupport.showErrorMessage("not possible."); } else { Boolean functionLibraryExists = false project.testSuiteList.each{ if (it.name.toLowerCase() == "functionlibrary") { functionLibraryExists = true } } if (functionLibraryExists) { project.runAfterLoadScript() UISupport.showInfoMessage("FunctionLibraryupdated"); } else { UISupport.showErrorMessage("Error updateing FunctionLibrary"); } } } } }
And later build it with maven (mvn install)
Maybe not the best way to code, but it works for me
After I installed the plugin as .jar file and restart ReadyApi I get a button. when i click it, it will start the project load script
ps. i borrow the icon of the Jira plugin