### Question:
ValueMeta extends ValueMetaBase { @Override public Class<?> getNativeDataTypeClass() throws KettleValueException { if ( nativeType == null ) { try { nativeType = ValueMetaFactory.createValueMeta( getType() ); } catch ( KettlePluginException e ) { throw new KettleValueException( e ); } } return nativeType.getNativeDataTypeClass(); } ValueMeta(); @Deprecated  ValueMeta( String name );  ValueMeta( String name, int type ); @Deprecated  ValueMeta( String name, int type, int storageType );  ValueMeta( String name, int type, int length, int precision ); @Deprecated  ValueMeta( DataInputStream inputStream ); @Deprecated  ValueMeta( Node node ); @Override @Deprecated void setType( int type ); @Override Class<?> getNativeDataTypeClass(); static final String DEFAULT_DATE_FORMAT_MASK; static final String DEFAULT_TIMESTAMP_FORMAT_MASK; static final String XML_META_TAG; static final String XML_DATA_TAG; static final boolean EMPTY_STRING_AND_NULL_ARE_DIFFERENT; static final String[] trimTypeCode; static final String[] trimTypeDesc; static final String[] SINGLE_BYTE_ENCODINGS; }### Answer:
@Test public void testGetNativeDataTypeClass() throws KettleException { PluginRegistry.addPluginType( ValueMetaPluginType.getInstance() ); PluginRegistry.init(); String[] valueMetaNames = ValueMetaFactory.getValueMetaNames(); for ( int i = 0; i < valueMetaNames.length; i++ ) { int vmId = ValueMetaFactory.getIdForValueMeta( valueMetaNames[i] ); ValueMeta vm = new ValueMeta( "", vmId ); ValueMetaInterface vmi = ValueMetaFactory.createValueMeta( vmId ); assertTrue( vm.getNativeDataTypeClass().equals( vmi.getNativeDataTypeClass() ) ); } }