@Parameters
  public static Collection<Object[]> params() {
    Object[][] pojo1Args = { new Object[] { "foo", 5, 10.001 }, new Object[] { "foo", 100, 7.0 },
      new Object[] { "foo", 100, 10.001 }, new Object[] { "bar", 5, 10.001 },
      new Object[] { "bar", 100, 10.001 }, new Object[] { "baz", 5, 10.001 }, };

    Object[][] pojo2Args =
      { new Object[] { new byte[0], Bytes.toBytes("it"), "was", Bytes.toBytes("the") },
        new Object[] { Bytes.toBytes("best"), new byte[0], "of", Bytes.toBytes("times,") },
        new Object[] { Bytes.toBytes("it"), Bytes.toBytes("was"), "", Bytes.toBytes("the") },
        new Object[] { Bytes.toBytes("worst"), Bytes.toBytes("of"), "times,", new byte[0] },
        new Object[] { new byte[0], new byte[0], "", new byte[0] }, };

    Object[][] params =
      new Object[][] { { SpecializedPojo1Type1.GENERIC, new SpecializedPojo1Type1(), pojo1Args },
        { SpecializedPojo2Type1.GENERIC, new SpecializedPojo2Type1(), pojo2Args }, };
    return Arrays.asList(params);
  }
This class both tests and demonstrates how to construct compound rowkeys from a POJO. The code
under test is {@link Struct}. {@link SpecializedPojo1Type1} demonstrates how one might create
their own custom data type extension for an application POJO.
hbase-common/src/test/java/org/apache/hadoop/hbase/types/TestStruct.java