@ SuppressWarnings ( "unchecked" ) private static TBase < ? , ? > toThrift ( TStructDescriptor tDesc , Tuple tuple ) { int size = tDesc . getFields ( ) . size ( ) ; int tupleSize = tuple . size ( ) ; @ SuppressWarnings ( "rawtypes" ) TBase tObj = newTInstance ( tDesc . getThriftClass ( ) ) ; for ( int i = 0 ; i < size && i < tupleSize ; i ++ ) { Object pObj ; try { pObj = tuple . get ( i ) ; } catch ( ExecException e ) { throw new RuntimeException ( e ) ; } if ( pObj != null ) { Field field = tDesc . getFieldAt ( i ) ; try { tObj . setFieldValue ( field . getFieldIdEnum ( ) , toThriftValue ( field , pObj ) ) ; } catch ( Exception e ) { String value = String . valueOf ( tObj ) ; final int max_length = 100 ; if ( max_length < value . length ( ) ) { value = value . substring ( 0 , max_length - 3 ) + "..." ; } String type = tObj == null ? "unknown" : tObj . getClass ( ) . getName ( ) ; throw new RuntimeException ( String . format ( "Failed to set field '%s' using tuple value '%s' of type '%s' at index %d" , field . getName ( ) , value , type , i ) , e ) ; } } // if tDesc is a union, at least one field needs to be non-null. // user is responsible for ensuring that. } return tObj ; }
Construct a Thrift object from the tuple .