XAttrFeature implements INode.Feature { public XAttrFeature(List<XAttr> xAttrs) { if (xAttrs != null && !xAttrs.isEmpty()) { List<XAttr> toPack = new ArrayList<XAttr>(); ImmutableList.Builder<XAttr> b = null; for (XAttr attr : xAttrs) { if (attr.getValue() == null || attr.getValue().length <= PACK_THRESHOLD) { toPack.add(attr); } else { if (b == null) { b = ImmutableList.builder(); } b.add(attr); } } this.attrs = XAttrFormat.toBytes(toPack); if (b != null) { this.xAttrs = b.build(); } } } XAttrFeature(List<XAttr> xAttrs); List<XAttr> getXAttrs(); XAttr getXAttr(String prefixedName);  }
@Test public void testXAttrFeature() throws Exception { List<XAttr> xAttrs = new ArrayList<>(); XAttrFeature feature = new XAttrFeature(xAttrs); assertTrue(feature.getXAttrs().isEmpty()); XAttr a1 = XAttrHelper.buildXAttr(name1, value1); xAttrs.add(a1); feature = new XAttrFeature(xAttrs); XAttr r1 = feature.getXAttr(name1); assertTrue(a1.equals(r1)); assertEquals(feature.getXAttrs().size(), 1); XAttr a2 = XAttrHelper.buildXAttr(name2, value2); XAttr a3 = XAttrHelper.buildXAttr(name3); XAttr a4 = XAttrHelper.buildXAttr(name4, value4); XAttr a5 = XAttrHelper.buildXAttr(name5, value5); XAttr a6 = XAttrHelper.buildXAttr(name6, value6); XAttr a7 = XAttrHelper.buildXAttr(name7, value7); XAttr bigXattr = XAttrHelper.buildXAttr(bigXattrKey, bigXattrValue); xAttrs.add(a2); xAttrs.add(a3); xAttrs.add(a4); xAttrs.add(a5); xAttrs.add(a6); xAttrs.add(a7); xAttrs.add(bigXattr); feature = new XAttrFeature(xAttrs); XAttr r2 = feature.getXAttr(name2); assertTrue(a2.equals(r2)); XAttr r3 = feature.getXAttr(name3); assertTrue(a3.equals(r3)); XAttr r4 = feature.getXAttr(name4); assertTrue(a4.equals(r4)); XAttr r5 = feature.getXAttr(name5); assertTrue(a5.equals(r5)); XAttr r6 = feature.getXAttr(name6); assertTrue(a6.equals(r6)); XAttr r7 = feature.getXAttr(name7); assertTrue(a7.equals(r7)); XAttr rBigXattr = feature.getXAttr(bigXattrKey); assertTrue(bigXattr.equals(rBigXattr)); List<XAttr> rs = feature.getXAttrs(); assertEquals(rs.size(), xAttrs.size()); for (int i = 0; i < rs.size(); i++) { assertTrue(xAttrs.contains(rs.get(i))); } XAttr r8 = feature.getXAttr(name8); assertTrue(r8 == null); }