Package com.eviware.soapui.support.resolver

Source Code of com.eviware.soapui.support.resolver.ChangeRestMethodResolver$PropertyChangeDialog

/*
*  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.support.resolver;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;

import com.eviware.soapui.impl.rest.RestMethod;
import com.eviware.soapui.impl.rest.RestResource;
import com.eviware.soapui.impl.rest.RestService;
import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.impl.wsdl.actions.project.SimpleDialog;
import com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep;
import com.eviware.soapui.model.iface.Interface;
import com.eviware.soapui.model.iface.Operation;
import com.eviware.soapui.support.components.SimpleForm;
import com.eviware.soapui.support.resolver.ResolveContext.Resolver;
import com.eviware.soapui.support.swing.ModelItemListCellRenderer;

public abstract class ChangeRestMethodResolver implements Resolver
{
  private boolean resolved = false;
  private WsdlProject project;
  private RestMethod selectedMethod;

  public ChangeRestMethodResolver( RestTestRequestStep testStep )
  {
    this.project = testStep.getTestCase().getTestSuite().getProject();
  }

  public String getResolvedPath()
  {
    return "";
  }

  public boolean isResolved()
  {
    return resolved;
  }

  public boolean resolve()
  {
    PropertyChangeDialog pDialog = new PropertyChangeDialog( "Resolve REST Method" );
    pDialog.setVisible( true );
    resolved = update();
    return resolved;
  }

  public abstract boolean update();

  protected abstract Interface[] getInterfaces( WsdlProject project );

  public String getDescription()
  {
    return "Resolve: Select another REST Method";
  }

  @Override
  public String toString()
  {
    return getDescription();
  }

  @SuppressWarnings( "serial" )
  private class PropertyChangeDialog extends SimpleDialog
  {
    private JComboBox serviceCombo;
    private JComboBox resourceCombo;
    private JComboBox methodCombo;

    public PropertyChangeDialog( String title )
    {
      super( title, getDescription(), null );
    }

    protected Component buildContent()
    {
      SimpleForm form = new SimpleForm();

      form.addSpace( 5 );
      Interface[] ifaces = getInterfaces( project );
      DefaultComboBoxModel serviceComboModel = new DefaultComboBoxModel();
      serviceCombo = form.appendComboBox( "REST Services", serviceComboModel, "Target Service" );
      serviceCombo.setRenderer( new ModelItemListCellRenderer() );
      for( Interface element : ifaces )
      {
        if( element instanceof RestService )
          serviceComboModel.addElement( element );
      }

      resourceCombo = form.appendComboBox( "REST Resources", ( ( RestService )serviceCombo.getSelectedItem() )
          .getOperationList().toArray(), "Target Resource" );
      resourceCombo.setRenderer( new ModelItemListCellRenderer() );

      methodCombo = form.appendComboBox( "REST Methods", ( ( RestResource )resourceCombo.getSelectedItem() )
          .getRestMethodList().toArray(), "Target Method" );
      methodCombo.setRenderer( new ModelItemListCellRenderer() );

      serviceCombo.addActionListener( new ActionListener()
      {
        public void actionPerformed( ActionEvent e )
        {
          Interface iface = project.getInterfaceByName( ( ( Interface )serviceCombo.getSelectedItem() ).getName() );
          resourceCombo.removeAllItems();
          if( iface != null )
          {
            resourceCombo.setEnabled( true );
            for( Operation op : iface.getOperationList() )
              resourceCombo.addItem( op );
          }
          else
          {
            resourceCombo.setEnabled( false );
          }
        }
      } );

      resourceCombo.addActionListener( new ActionListener()
      {
        public void actionPerformed( ActionEvent e )
        {
          RestResource resource = ( RestResource )resourceCombo.getSelectedItem();
          methodCombo.removeAllItems();
          if( resource != null )
          {
            methodCombo.setEnabled( true );
            for( RestMethod method : resource.getRestMethodList() )
              methodCombo.addItem( method );
          }
          else
          {
            methodCombo.setEnabled( false );
          }
        }
      } );

      form.addSpace( 5 );
      return form.getPanel();
    }

    protected boolean handleOk()
    {
      selectedMethod = ( RestMethod )methodCombo.getSelectedItem();
      return true;
    }
  }

  public RestMethod getSelectedRestMethod()
  {
    return selectedMethod;
  }

}
TOP

Related Classes of com.eviware.soapui.support.resolver.ChangeRestMethodResolver$PropertyChangeDialog

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.