@Override
  public ArrayList<Object> getFieldsAsList() {
    ArrayList<Object> allFields = new ArrayList<Object>();

    List<? extends StructField> fields = oi.getAllStructFieldRefs();

    for (int i = 0; i < fields.size(); i++) {
      allFields.add(getField(i));
    }

    return allFields;
  }
HBaseCompositeKey extension of LazyStruct. All complex composite keys should extend this class
and override the {@link LazyStruct#getField(int)} method where fieldID corresponds to the ID of a
key in the composite key.
<br>
For example, for a composite key <i>"/part1/part2/part3"</i>, <i>part1</i> will have an id
<i>0</i>, <i>part2</i> will have an id <i>1</i> and <i>part3</i> will have an id <i>2</i>. Custom
implementations of getField(fieldID) should return the value corresponding to that fieldID. So,
for the above example, the value returned for <i>getField(0)</i> should be <i>part1</i>,
<i>getField(1)</i> should be <i>part2</i> and <i>getField(2)</i> should be <i>part3</i>.


<br>
All custom implementation are expected to have a constructor of the form:

<pre>
MyCustomCompositeKey(LazySimpleStructObjectInspector oi, Properties tbl, Configuration conf)
</pre>
hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseCompositeKey.java