Package com.eviware.soapui.impl.wsdl.teststeps

Source Code of com.eviware.soapui.impl.wsdl.teststeps.WsdlTestStepResult

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

import java.awt.event.ActionEvent;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

import javax.swing.AbstractAction;
import javax.swing.Action;

import com.eviware.soapui.model.testsuite.TestStep;
import com.eviware.soapui.model.testsuite.TestStepResult;
import com.eviware.soapui.support.UISupport;
import com.eviware.soapui.support.action.swing.ActionList;
import com.eviware.soapui.support.action.swing.DefaultActionList;

/**
* Default implementation of TestStepResult interface
*
* @author Ole.Matzura
*/

public class WsdlTestStepResult implements TestStepResult
{
  private static final String[] EMPTY_MESSAGES = new String[0];
  private final WsdlTestStep testStep;
  private List<String> messages = new ArrayList<String>();
  private Throwable error;
  private TestStepStatus status = TestStepStatus.UNKNOWN;
  private long timeTaken;
  private long timeStamp;
  private long size;
  private DefaultActionList actionList;
  private long startTime;
  private boolean discarded;
  private String testStepName;

  private static DefaultActionList discardedActionList = new DefaultActionList( null );

  static
  {
    discardedActionList.setDefaultAction( new AbstractAction()
    {
      public void actionPerformed( ActionEvent arg0 )
      {
        UISupport.showErrorMessage( "Result has been discarded" );
      }
    } );
  }

  public WsdlTestStepResult( WsdlTestStep testStep )
  {
    this.testStep = testStep;
    testStepName = testStep.getName();
    timeStamp = System.currentTimeMillis();
  }

  public TestStepStatus getStatus()
  {
    return status;
  }

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

  public TestStep getTestStep()
  {
    try
    {
      if( testStep != null )
        testStep.getName();

      return testStep;
    }
    catch( Throwable t )
    {
    }

    return null;
  }

  public ActionList getActions()
  {
    if( isDiscarded() )
      return discardedActionList;

    if( actionList == null )
    {
      actionList = new DefaultActionList( testStepName );
      actionList.setDefaultAction( new AbstractAction()
      {

        public void actionPerformed( ActionEvent e )
        {
          if( getMessages().length > 0 )
          {
            StringBuffer buf = new StringBuffer( "<html><body>" );
            if( getError() != null )
              buf.append( getError().toString() ).append( "<br/>" );

            for( String s : getMessages() )
              buf.append( s ).append( "<br/>" );

            UISupport.showExtendedInfo( "TestStep Result", "Step [" + testStepName + "] ran with status ["
                + getStatus() + "]", buf.toString(), null );
          }
          else if( getError() != null )
          {
            UISupport.showExtendedInfo( "TestStep Result", "Step [" + testStepName + "] ran with status ["
                + getStatus() + "]", getError().toString(), null );
          }
          else
          {
            UISupport.showInfoMessage( "Step [" + testStepName + "] ran with status [" + getStatus() + "]",
                "TestStep Result" );
          }
        }
      } );
    }

    return actionList;
  }

  public void addAction( Action action, boolean isDefault )
  {
    if( isDiscarded() )
      return;

    if( actionList == null )
    {
      actionList = new DefaultActionList( testStepName );
    }

    actionList.addAction( action );
    if( isDefault )
      actionList.setDefaultAction( action );
  }

  public Throwable getError()
  {
    return error;
  }

  public void setError( Throwable error )
  {
    this.error = error;
  }

  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 long getTimeTaken()
  {
    return timeTaken;
  }

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

  public long getTimeStamp()
  {
    return timeStamp;
  }

  public void setTimeStamp( long timeStamp )
  {
    this.timeStamp = timeStamp;
  }

  public void setSize( long size )
  {
    this.size = size;
  }

  public long getSize()
  {
    return size;
  }

  public void writeTo( PrintWriter writer )
  {
    writer.println( "Status: " + getStatus() );
    writer.println( "Time Taken: " + getTimeTaken() );
    writer.println( "Size: " + getSize() );
    writer.println( "Timestamp: " + new Date( getTimeStamp() ).toString() );
    writer.println( "TestStep: " + getTestStep().getName() );
    if( error != null )
      writer.println( "Error:" + error.toString() );

    if( messages != null )
    {
      writer.println( "\r\n----------------- Messages ------------------------------" );
      for( String message : messages )
        if( message != null )
          writer.println( message );
    }

    if( isDiscarded() )
      writer.println( "Result has been Discarded!" );
  }

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

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

  public void discard()
  {
    discarded = true;

    messages = null;
    error = null;
    actionList = null;
  }

  public boolean isDiscarded()
  {
    return discarded;
  }

  public void addMessages( String[] messages )
  {
    if( this.messages != null )
      this.messages.addAll( Arrays.asList( messages ) );
  }
}
TOP

Related Classes of com.eviware.soapui.impl.wsdl.teststeps.WsdlTestStepResult

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.