Package com.eviware.soapui.support.resolver

Source Code of com.eviware.soapui.support.resolver.ImportInterfaceResolver

/*
*  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.io.File;

import javax.swing.JOptionPane;

import com.eviware.soapui.impl.WsdlInterfaceFactory;
import com.eviware.soapui.impl.rest.RestService;
import com.eviware.soapui.impl.rest.RestServiceFactory;
import com.eviware.soapui.impl.rest.support.WadlImporter;
import com.eviware.soapui.impl.support.definition.support.InvalidDefinitionException;
import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStepInterface;
import com.eviware.soapui.impl.wsdl.teststeps.WsdlTestStep;
import com.eviware.soapui.model.iface.Interface;
import com.eviware.soapui.model.propertyexpansion.resolvers.providers.ProjectDirProvider;
import com.eviware.soapui.support.UISupport;
import com.eviware.soapui.support.resolver.ResolveContext.Resolver;

public abstract class ImportInterfaceResolver implements Resolver
{
  private boolean resolved = false;
  private WsdlTestStep item;

  public ImportInterfaceResolver( WsdlTestStep item )
  {
    this.item = item;
  }

  public String getResolvedPath()
  {
    return "";
  }

  public boolean isResolved()
  {
    return resolved;
  }

  public boolean resolve()
  {
    String[] options = { "File(Wsdl)", "Url(Wsdl)", "File(Wadl)", "Url(Wadl)", "Cancel" };
    int choosed = JOptionPane
        .showOptionDialog( UISupport.getMainFrame(), "Choose source for new interface from ...",
            "New interface source", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null,
            options, null );
    switch( choosed )
    {
    case 0 :
      loadWsdlFromFile();
      resolved = update();
      break;
    case 1 :
      loadWsdlFromUrl();
      resolved = update();
      break;
    case 2 :
      loadWadlFromFile();
      resolved = update();
      break;
    case 3 :
      loadWadlFromUrl();
      resolved = update();
      break;
    default :
      resolved = false;
      break;
    }

    return resolved;
  }

  private void loadWadlFromUrl()
  {
    WsdlProject project = item.getTestCase().getTestSuite().getProject();
    String url = UISupport.prompt( "Enter WADL URL", "Add WADL from URL", "" );
    if( url == null )
      return;

    importWadl( project, url );

  }

  private void loadWadlFromFile()
  {
    WsdlProject project = item.getTestCase().getTestSuite().getProject();
    File file = UISupport.getFileDialogs().open( this, "Select WADL file", ".wadl", "WADL Files (*.wadl)",
        ProjectDirProvider.getProjectFolder( project ) );
    if( file == null )
      return;

    String path = file.getAbsolutePath();
    if( path == null )
      return;

    importWadl( project, "file:/" + path );
  }

  private void importWadl( WsdlProject project, String path )
  {
    RestService restService = ( RestService )project.addNewInterface( ( ( RestTestRequestStepInterface )item )
        .getRequestStepConfig().getService(), RestServiceFactory.REST_TYPE );
    try
    {
      new WadlImporter( restService ).initFromWadl( path );
    }
    catch( Exception e )
    {
      UISupport.showErrorMessage( e );
    }
  }

  protected abstract boolean update();

  private void loadWsdlFromUrl()
  {
    WsdlProject project = item.getTestCase().getTestSuite().getProject();
    String url = UISupport.prompt( "Enter WSDL URL", "Add WSDL from URL", "" );
    if( url == null )
      return;

    importWsdl( project, url );
  }

  private void loadWsdlFromFile()
  {

    WsdlProject project = item.getTestCase().getTestSuite().getProject();
    File file = UISupport.getFileDialogs().open( this, "Select WSDL file", ".wsdl", "WSDL Files (*.wsdl)",
        ProjectDirProvider.getProjectFolder( project ) );
    if( file == null )
      return;

    String path = file.getAbsolutePath();
    if( path == null )
      return;

    importWsdl( project, file.getAbsolutePath() );
  }

  private void importWsdl( WsdlProject project, String file )
  {
    try
    {
      Boolean createRequests = UISupport.confirmOrCancel( "Create default requests for all operations",
          "Import WSDL" );
      if( createRequests == null )
        return;

      Interface[] ifaces = WsdlInterfaceFactory.importWsdl( project, file, createRequests );
      if( ifaces.length > 0 )
        UISupport.select( ifaces[0] );
    }
    catch( InvalidDefinitionException ex )
    {
      UISupport.showExtendedInfo( "Error loading WSDL",
          "There was something wrong with the WSDL you are trying to import", ex.getDetailedMessage(), null );
    }
    catch( Exception ex )
    {
      UISupport.showErrorMessage( ex.getMessage() + ":" + ex.getCause() );
    }
  }

  public String getDescription()
  {
    return "Resolve: Import inteface";
  }

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

Related Classes of com.eviware.soapui.support.resolver.ImportInterfaceResolver

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.