Forum Discussion

rj3000's avatar
rj3000
New Contributor
3 months ago

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.co...
  • rj3000's avatar
    rj3000
    3 months ago

    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