public int getCacheVersion() throws KettleException {
    HashCodeBuilder hashCodeBuilder =  new HashCodeBuilder( 17, 31 )
        // info
        .append( this.getName() )
        .append( this.getTransformationType() )
        .append( this.getSizeRowset() )
        .append( this.getSleepTimeEmpty() )
        .append( this.getSleepTimeFull() )
        .append( this.isUsingUniqueConnections() )
        .append( this.isFeedbackShown() )
        .append( this.getFeedbackSize() )
        .append( this.isUsingThreadPriorityManagment() )
        .append( this.getSharedObjectsFile() )
        .append( this.isCapturingStepPerformanceSnapShots() )
        .append( this.getStepPerformanceCapturingDelay() )
        .append( this.getStepPerformanceCapturingSizeLimit() )

        .append( this.getMaxDateConnection() )
        .append( this.getMaxDateTable() )
        .append( this.getMaxDateField() )
        .append( this.getMaxDateOffset() )
        .append( this.getMaxDateDifference() )

        .append( this.getDependencies() )
        .append( this.getPartitionSchemas() )
        .append( this.getSlaveServers() )
        .append( this.getClusterSchemas() )
        .append( this.getSlaveStepCopyPartitionDistribution() )
        .append( this.isSlaveTransformation() )

        .append( this.nrTransHops() )

        // steps
        .append( this.getSteps().size() )
        .append( this.getStepNames() )

        // hops
        .append( this.hops );

    List<StepMeta> steps = this.getSteps();

    for ( StepMeta step : steps ) {
      hashCodeBuilder
          .append( step.getName() )
          .append( step.getStepMetaInterface().getXML() )
          .append( step.getClusterSchema() )
          .append( step.getRemoteInputSteps() )
          .append( step.getRemoteOutputSteps() )
          .append( step.isDoingErrorHandling() );
    }
    return hashCodeBuilder.toHashCode();
  }
@Test
  public void testGetCacheVersion() throws Exception {
    TransMeta transMeta = new TransMeta( getClass().getResource( "one-step-trans.ktr" ).getPath() );
    int oldCacheVersion = transMeta.getCacheVersion();
    transMeta.setSizeRowset( 10 );
    int currCacheVersion = transMeta.getCacheVersion();
    assertNotEquals( oldCacheVersion, currCacheVersion );
  }