Package com.eviware.soapui.security.result

Source Code of com.eviware.soapui.security.result.SecurityScanRequestResult

/*
*  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.security.result;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.eviware.soapui.impl.wsdl.teststeps.actions.ShowMessageExchangeAction;
import com.eviware.soapui.model.iface.MessageExchange;
import com.eviware.soapui.model.security.SecurityScan;
import com.eviware.soapui.security.scan.AbstractSecurityScanWithProperties;
import com.eviware.soapui.support.action.swing.ActionList;
import com.eviware.soapui.support.action.swing.DefaultActionList;
import com.eviware.soapui.support.types.StringToStringMap;

/**
* A SecurityScan result represents result of one request (modified by a
* security scan and run)
*
* @author dragica.soldo
*/

public class SecurityScanRequestResult implements SecurityResult
{
  private static final String[] EMPTY_MESSAGES = new String[0];
  public final static String TYPE = "SecurityScanRequestResult";
  private ResultStatus status = ResultStatus.UNKNOWN;
  private SecurityScan securityCheck;
  private List<String> messages = new ArrayList<String>();
  private long timeTaken;
  private long startTime;
  private long timeStamp;
  private long size;
  private boolean discarded;
  private MessageExchange messageExchange;
  private DefaultActionList actionList;
  private boolean addedAction;

  public SecurityScanRequestResult( SecurityScan securityCheck )
  {
    this.securityCheck = securityCheck;
    timeStamp = System.currentTimeMillis();
  }

  public ResultStatus getStatus()
  {
    return status;
  }

  public void setStatus( ResultStatus status )
  {
    this.status = status;
  }

  public SecurityScan getSecurityScan()
  {
    return securityCheck;
  }

  /**
   * Returns a list of actions that can be applied to this result
   */

  public ActionList getActions()
  {
    if( actionList == null )
    {
      actionList = new DefaultActionList( getSecurityScan().getName() );
    }
    if( !addedAction )
    {
      actionList.addAction( new ShowMessageExchangeAction( this.getMessageExchange(), "SecurityScanRequest" ), true );
      addedAction = true;
    }
    return actionList;
  }

  public String[] getMessages()
  {
    return messages == null ? EMPTY_MESSAGES : messages.toArray( new String[messages.size()] );
  }

  public void addMessage( String message )
  {
    if( messages != null )
      messages.add( message );
  }

  // public Throwable getError();

  public long getTimeTaken()
  {
    return timeTaken;
  }

  public long getTimeStamp()
  {
    return timeStamp;
  }

  /**
   * Used for calculating the output
   *
   * @return the number of bytes in this result
   */

  public long getSize()
  {
    return size;
  }

  /**
   * Writes this result to the specified writer, used for logging.
   */

  public void writeTo( PrintWriter writer )
  {

  }

  /**
   * Can discard any result data that may be taking up memory. Timing-values
   * must not be discarded.
   */

  public void discard()
  {

  }

  public boolean isDiscarded()
  {
    return discarded;
  }

  public MessageExchange getMessageExchange()
  {
    return messageExchange;
  }

  // TODO not sure if this should exist, it should be set when result is
  // created
  // but for now for first step refactoring it's added this way
  public void setMessageExchange( MessageExchange messageExchange )
  {
    this.messageExchange = messageExchange;
  }

  public void setTimeTaken( long timeTaken )
  {
    this.timeTaken = timeTaken;
  }

  public void startTimer()
  {
    startTime = System.nanoTime();
  }

  public void stopTimer()
  {
    timeTaken = ( ( System.nanoTime() - startTime ) / 1000000 );
  }

  @Override
  public String getResultType()
  {
    return TYPE;
  }

  @Override
  public ResultStatus getExecutionProgressStatus()
  {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public ResultStatus getLogIconStatus()
  {
    // TODO Auto-generated method stub
    return null;
  }

  public String getChangedParamsInfo( int requestCount )
  {
    StringToStringMap changedParams = null;

    if( getMessageExchange() != null && getMessageExchange().getProperties() != null )
    {
      changedParams = StringToStringMap.fromXml( getMessageExchange().getProperties().get(
          AbstractSecurityScanWithProperties.SECURITY_CHANGED_PARAMETERS ) );
    }
    else
    {
      changedParams = new StringToStringMap();
    }
    StringBuilder changedParamsInfo = new StringBuilder();
    changedParamsInfo.append( "[" );
    Iterator<String> keys = changedParams.keySet().iterator();
    while( keys.hasNext() )
    {
      String param = ( String )keys.next();
      String value = changedParams.get( param );
      if( value.length() > SecurityScanResult.MAX_SECURITY_CHANGED_PARAMETERS_LENGTH )
      {
        value = value.substring( 0, SecurityScanResult.MAX_SECURITY_CHANGED_PARAMETERS_LENGTH );
      }
      changedParamsInfo.append( param + "=" + value + "," );
    }
    changedParamsInfo.replace( changedParamsInfo.length() - 1, changedParamsInfo.length(), "]" );

    StringBuilder checkRequestResultStr = new StringBuilder( "[" + getSecurityScan().getName() + "] Request "
        + requestCount + " - " + getStatus() );
    if( changedParamsInfo.length() > 1 )
    {
      checkRequestResultStr.append( " - " + changedParamsInfo.toString() );
    }
    checkRequestResultStr.append( ": took " ).append( getTimeTaken() ).append( " ms" );
    return checkRequestResultStr.toString();
  }
 
  public void release() {
    securityCheck = null;
  }

}
TOP

Related Classes of com.eviware.soapui.security.result.SecurityScanRequestResult

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.