TField field = new TField();
public void serialize(Object o, ObjectInspector oi, TProtocol oprot) throws TException, SerDeException, NoSuchFieldException,IllegalAccessException {
// Assuming the ObjectInspector represents exactly the same type as this struct.
// This assumption should be checked during query compile time.
assert(oi instanceof StructObjectInspector);
StructObjectInspector soi = (StructObjectInspector) oi;
boolean writeNulls = oprot instanceof org.apache.hadoop.hive.serde2.thrift.WriteNullsProtocol;
// For every field
List<? extends StructField> fields = soi.getAllStructFieldRefs();
if (fields.size() != ordered_types.length) {
throw new SerDeException("Trying to serialize " + fields.size()
+ " fields into a struct with " + ordered_types.length
+ " object=" + o + " objectinspector=" + oi.getTypeName());
}
for (int i=0; i<fields.size(); i++) {
Object f = soi.getStructFieldData(o, fields.get(i));
DynamicSerDeTypeBase mt = ordered_types[i];
if (f == null && !writeNulls) {
continue;
}