public void getFields( RowMetaInterface row, String name, RowMetaInterface[] info, StepMeta nextStep,
      VariableSpace space, Repository repository, IMetaStore metaStore ) {

    // No values are added to the row in this type of step
    // However, in case of Fixed length records,
    // the field precisions and lengths are altered!

    for ( int i = 0; i < outputFields.length; i++ ) {
      XMLField field = outputFields[i];
      ValueMetaInterface v = row.searchValueMeta( field.getFieldName() );
      if ( v != null ) {
        v.setLength( field.getLength(), field.getPrecision() );
      }
    }

  }
@Test
  public void testGetFields() throws Exception {
    XMLOutputMeta xmlOutputMeta = new XMLOutputMeta();
    xmlOutputMeta.setDefault();
    XMLField xmlField = new XMLField();
    xmlField.setFieldName( "aField" );
    xmlField.setLength( 10 );
    xmlField.setPrecision( 3 );
    xmlOutputMeta.setOutputFields( new XMLField[] { xmlField } );
    RowMetaInterface row = mock( RowMetaInterface.class );
    RowMetaInterface rmi = mock( RowMetaInterface.class );
    StepMeta nextStep = mock( StepMeta.class );
    Repository repo = mock( Repository.class );
    IMetaStore metastore = mock( IMetaStore.class );
    ValueMetaInterface vmi = mock( ValueMetaInterface.class );
    when( row.searchValueMeta( "aField" ) ).thenReturn( vmi );
    xmlOutputMeta.getFields( row, "", new RowMetaInterface[] { rmi }, nextStep, new Variables(), repo, metastore );
    verify( vmi ).setLength( 10, 3 );
  }