Package com.eviware.soapui.security.support

Source Code of com.eviware.soapui.security.support.SecurityCheckedParameterHolder

package com.eviware.soapui.security.support;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.eviware.soapui.config.CheckedParameterConfig;
import com.eviware.soapui.config.CheckedParametersListConfig;
import com.eviware.soapui.model.security.SecurityScan;
import com.eviware.soapui.model.security.SecurityScanParameterHolderListener;
import com.eviware.soapui.model.security.SecurityCheckedParameter;
import com.eviware.soapui.model.testsuite.TestPropertyListener;

/**
* Holder for SecurityScanPameters, which are request parameters on which
* security scan is applied.
*
* @author robert
*
*/
public class SecurityCheckedParameterHolder extends SecurityScanParameterListenerAdapter implements
    TestPropertyListener
{

  private SecurityScan securityCheck;
  private CheckedParametersListConfig paramsConfig;

  private List<SecurityCheckedParameter> params = new ArrayList<SecurityCheckedParameter>();
  private Map<String, SecurityCheckedParameter> paramsMap = new HashMap<String, SecurityCheckedParameter>();

  private Set<SecurityScanParameterHolderListener> listeners = new HashSet<SecurityScanParameterHolderListener>();

  public SecurityCheckedParameterHolder( SecurityScan securityCheck, CheckedParametersListConfig checkedPameters )
  {
    this.securityCheck = securityCheck;
    this.paramsConfig = checkedPameters;

    for( CheckedParameterConfig param : paramsConfig.getParametersList() )
    {
      addParameter( param );
    }

    securityCheck.getTestStep().addTestPropertyListener( this );
  }

  public void addParameterListener( SecurityScanParameterHolderListener listener )
  {
    listeners.add( listener );
  }

  public void removeParameterListener( SecurityScanParameterHolderListener listener )
  {
    listeners.remove( listener );
  }

  public void updateConfig( CheckedParametersListConfig config )
  {
    paramsConfig = config;

    List<CheckedParameterConfig> paramsList = config.getParametersList();
    for( int c = 0; c < paramsList.size(); c++ )
    {
      if( params.get( c ) instanceof SecurityCheckedParameterImpl )
      {
        ( ( SecurityCheckedParameterImpl )params.get( c ) ).setConfig( paramsList.get( c ) );
      }
    }
  }

  SecurityCheckedParameter addParameter( CheckedParameterConfig param )
  {
    SecurityCheckedParameter result = new SecurityCheckedParameterImpl( param );
    params.add( result );
    paramsMap.put( result.getLabel().toUpperCase(), result );

    fireParameterAdded( result );

    return result;
  }

  public boolean addParameter( String label, String name, String xpath, boolean used )
  {
    if( paramsMap.get( label.toUpperCase() ) != null )
      return false;

    CheckedParameterConfig newParameterConfig = paramsConfig.addNewParameters();
    SecurityCheckedParameterImpl newParameter = new SecurityCheckedParameterImpl( newParameterConfig );
    newParameter.setLabel( label );
    newParameter.setName( name );
    newParameter.setXpath( xpath );
    newParameter.setChecked( used );
    params.add( newParameter );
    paramsMap.put( newParameter.getLabel().toUpperCase(), newParameter );

    fireParameterAdded( newParameter );

    return true;
  }

  public void removeParameter( SecurityCheckedParameter parameter )
  {

    int index = params.indexOf( parameter );
    params.remove( parameter );
    paramsMap.remove( parameter.getLabel().toUpperCase() );

    paramsConfig.removeParameters( index );

    fireParameterRemoved( parameter );
  }

  public void fireParameterAdded( SecurityCheckedParameter parameter )
  {
    for( SecurityScanParameterHolderListener listener : listeners )
      listener.parameterAdded( parameter );
  }

  public void fireParameterRemoved( SecurityCheckedParameter parameter )
  {
    for( SecurityScanParameterHolderListener listener : listeners )
      listener.parameterRemoved( parameter );
  }

  public List<SecurityCheckedParameter> getParameterList()
  {
    return params;
  }

  public String[] getParameterLabels()
  {
    String[] labels = new String[params.size()];
    for( int c = 0; c < labels.length; c++ )
    {
      labels[c] = params.get( c ).getLabel();
    }

    return labels;
  }

  /*
   * Need to keep track on parameter label change.
   *
   * (non-Javadoc)
   *
   * @see
   * com.eviware.soapui.security.support.SecurityScanParameterListenerAdapter
   * #parameterLabelChanged
   * (com.eviware.soapui.model.security.SecurityCheckedParameter,
   * java.lang.String, java.lang.String)
   */
  @Override
  public void parameterLabelChanged( SecurityCheckedParameter parameter, String oldLabel, String newLabel )
  {
    SecurityCheckedParameter param = paramsMap.get( oldLabel );
    paramsMap.remove( oldLabel );
    paramsMap.put( newLabel, param );
  }

  /**
   * This method returns parameter based on its label.
   *
   * @param paramLabel
   * @return parameter
   */
  public SecurityCheckedParameter getParametarByLabel( String paramLabel )
  {
    for( SecurityCheckedParameter param : params )
      if( param.getLabel().equals( paramLabel ) )
        return param;
    return null;
  }

  /**
   * This method returns parameter based on its name.
   *
   * @param paramName
   * @return parameter
   */
  public List<SecurityCheckedParameter> getParametarsByName( String paramName )
  {
    List<SecurityCheckedParameter> paramsList = new ArrayList<SecurityCheckedParameter>();
    for( SecurityCheckedParameter param : params )
      if( param.getName().equals( paramName ) )
        paramsList.add( param );
    return paramsList;
  }

  public void removeParameters( int[] selected )
  {
    ArrayList<SecurityCheckedParameter> paramsToRemove = new ArrayList<SecurityCheckedParameter>();
    for( int index : selected )
      paramsToRemove.add( params.get( index ) );

    for( SecurityCheckedParameter param : paramsToRemove )
      removeParameter( param );
  }

  @Override
  public void propertyAdded( String name )
  {
    // TODO Auto-generated method stub
    // we do not care for this
  }

  @Override
  public void propertyMoved( String name, int oldIndex, int newIndex )
  {
    // TODO Auto-generated method stub
    // we do not care about this, we keep order by label
  }

  @Override
  public void propertyRemoved( String name )
  {
    ArrayList<SecurityCheckedParameter> parameterToRemove = new ArrayList<SecurityCheckedParameter>();
    for( SecurityCheckedParameter param : params )
      if( param.getName().equals( name ) )
      {
        parameterToRemove.add( param );
      }
    for( SecurityCheckedParameter param : parameterToRemove )
      removeParameter( param );
  }

  @Override
  public void propertyRenamed( String oldName, String newName )
  {
    ArrayList<SecurityCheckedParameter> parameterToRemove = new ArrayList<SecurityCheckedParameter>();
    for( SecurityCheckedParameter param : params )
      if( param.getName().equals( oldName ) )
      {
        parameterToRemove.add( param );
      }
    for( SecurityCheckedParameter param : parameterToRemove )
      ( ( SecurityCheckedParameterImpl )param ).setName( newName );

  }

  @Override
  public void propertyValueChanged( String name, String oldValue, String newValue )
  {
    // TODO Auto-generated method stub
    // we do not cate for this
  }

  public void release()
  {
    securityCheck.getTestStep().removeTestPropertyListener( this );
  }
}
TOP

Related Classes of com.eviware.soapui.security.support.SecurityCheckedParameterHolder

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.