/** * @return a cloned Object[] object. * @throws KettleValueException in case something is not quite right with the expected data */ @Override public Object[] cloneRow( Object[] objects, Object[] newObjects ) throws KettleValueException { List<Integer> list = getOrCreateValuesThatNeedRealClone( valueMetaList ); lock.readLock().lock(); try { for ( Integer i : list ) { ValueMetaInterface valueMeta = valueMetaList.get( i ); newObjects[ i ] = valueMeta.cloneValueData( objects[ i ] ); } return newObjects; } finally { lock.readLock().unlock(); } }