Package com.eviware.soapui.impl.wsdl.teststeps.actions

Source Code of com.eviware.soapui.impl.wsdl.teststeps.actions.SetMockOperationAction

/*
*  soapUI, copyright (C) 2004-2011 eviware.com
*
*  soapUI is free software; you can redistribute it and/or modify it under the
*  terms of version 2.1 of the GNU Lesser General Public License as published by
*  the Free Software Foundation.
*
*  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
*  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*  See the GNU Lesser General Public License for more details at gnu.org.
*/

package com.eviware.soapui.impl.wsdl.teststeps.actions;

import java.util.ArrayList;
import java.util.List;

import com.eviware.soapui.impl.wsdl.WsdlInterface;
import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.impl.wsdl.support.HelpUrls;
import com.eviware.soapui.impl.wsdl.teststeps.WsdlMockResponseTestStep;
import com.eviware.soapui.model.iface.Interface;
import com.eviware.soapui.model.iface.Operation;
import com.eviware.soapui.model.util.ModelItemNames;
import com.eviware.soapui.support.UISupport;
import com.eviware.soapui.support.action.support.AbstractSoapUIAction;
import com.eviware.x.form.XFormDialog;
import com.eviware.x.form.XFormField;
import com.eviware.x.form.XFormFieldListener;
import com.eviware.x.form.support.ADialogBuilder;
import com.eviware.x.form.support.AField;
import com.eviware.x.form.support.AField.AFieldType;
import com.eviware.x.form.support.AForm;

public class SetMockOperationAction extends AbstractSoapUIAction<WsdlMockResponseTestStep>
{
  private XFormDialog dialog;
  private WsdlProject project;

  public SetMockOperationAction()
  {
    super( "Set MockOperation", "Sets which Operation to Mock" );
  }

  public void perform( WsdlMockResponseTestStep mockResponseTestStep, Object param )
  {
    if( dialog == null )
    {
      dialog = ADialogBuilder.buildDialog( CreateForm.class );
      dialog.getFormField( CreateForm.INTERFACE ).addFormFieldListener( new XFormFieldListener()
      {

        public void valueChanged( XFormField sourceField, String newValue, String oldValue )
        {
          updateOperations( newValue );
        }
      } );
    }

    project = mockResponseTestStep.getTestCase().getTestSuite().getProject();
    List<Interface> interfaces = new ArrayList<Interface>();
    for( int c = 0; c < project.getInterfaceCount(); c++ )
    {
      if( project.getInterfaceAt( c ).getOperationCount() > 0 )
        interfaces.add( project.getInterfaceAt( c ) );
    }

    dialog.setOptions( CreateForm.INTERFACE, new ModelItemNames<Interface>( interfaces ).getNames() );
    String ifaceName = mockResponseTestStep.getOperation().getInterface().getName();
    updateOperations( ifaceName );

    dialog.setValue( CreateForm.INTERFACE, ifaceName );
    dialog.setValue( CreateForm.OPERATION, mockResponseTestStep.getOperation().getName() );

    if( dialog.show() )
    {
      mockResponseTestStep.setInterface( dialog.getValue( CreateForm.INTERFACE ) );
      mockResponseTestStep.setOperation( dialog.getValue( CreateForm.OPERATION ) );
    }
  }

  private void updateOperations( String interfaceName )
  {
    WsdlInterface iface = ( WsdlInterface )project.getInterfaceByName( interfaceName );
    dialog.setOptions( CreateForm.OPERATION, new ModelItemNames<Operation>( iface.getOperationList() ).getNames() );
  }

  @AForm( description = "Set the Operation to mock (required for dispatch and validations)", name = "Set MockOperation", helpUrl = HelpUrls.SETMOCKOPERATION_HELP_URL, icon = UISupport.TOOL_ICON_PATH )
  private interface CreateForm
  {
    @AField( description = "Specifies the operation to be mocked", name = "Operation", type = AFieldType.ENUMERATION )
    public final static String OPERATION = "Operation";

    @AField( description = "Specifies the interface containing the operation to be mocked", name = "Interface", type = AFieldType.ENUMERATION )
    public final static String INTERFACE = "Interface";
  }
}
TOP

Related Classes of com.eviware.soapui.impl.wsdl.teststeps.actions.SetMockOperationAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.