Package com.eviware.soapui.impl.wsdl.submit.filters

Source Code of com.eviware.soapui.impl.wsdl.submit.filters.WsdlRequestCredentialsProvider

/*
*  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.submit.filters;

import java.io.IOException;

import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.NTCredentials;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScheme;
import org.apache.commons.httpclient.auth.CredentialsNotAvailableException;
import org.apache.commons.httpclient.auth.CredentialsProvider;
import org.apache.commons.httpclient.auth.NTLMScheme;
import org.apache.commons.httpclient.auth.RFC2617Scheme;
import org.apache.log4j.Logger;

import com.eviware.soapui.impl.wsdl.WsdlRequest;

/**
* Provided credentials from equivilant WsdlRequest properties
*
* @author Ole.Matzura
*/

public final class WsdlRequestCredentialsProvider implements CredentialsProvider
{
  private boolean checkedCredentials;
  private final WsdlRequest wsdlRequest;
  private final static Logger logger = Logger.getLogger( WsdlRequestCredentialsProvider.class );

  public WsdlRequestCredentialsProvider( WsdlRequest wsdlRequest )
  {
    this.wsdlRequest = wsdlRequest;
  }

  public Credentials getCredentials( final AuthScheme authscheme, final String host, int port, boolean proxy )
      throws CredentialsNotAvailableException
  {
    if( checkedCredentials )
      throw new CredentialsNotAvailableException( "Missing valid credentials" );

    if( authscheme == null )
    {
      return null;
    }
    try
    {
      String password = wsdlRequest.getPassword();
      if( password == null )
        password = "";

      if( authscheme instanceof NTLMScheme )
      {
        logger.info( host + ":" + port + " requires Windows authentication" );
        return new NTCredentials( wsdlRequest.getUsername(), password, host, wsdlRequest.getDomain() );
      }
      else if( authscheme instanceof RFC2617Scheme )
      {
        logger.info( host + ":" + port + " requires authentication with the realm '" + authscheme.getRealm() + "'" );
        return new UsernamePasswordCredentials( wsdlRequest.getUsername(), password );
      }
      else
      {
        throw new CredentialsNotAvailableException( "Unsupported authentication scheme: "
            + authscheme.getSchemeName() );
      }
    }
    catch( IOException e )
    {
      throw new CredentialsNotAvailableException( e.getMessage(), e );
    }
    finally
    {
      checkedCredentials = true;
    }
  }
}
TOP

Related Classes of com.eviware.soapui.impl.wsdl.submit.filters.WsdlRequestCredentialsProvider

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.