@Override @SuppressWarnings("unchecked") protected String getStringFieldValue(T pojo, String fieldName) { return delegate.getStringFieldValue(pojo, fieldName); }
@Override public DefinitionId getId(final T pojo) { final String fieldId = getIdField(pojo); final String definitionId = getDefinitionId(pojo.getClass()); if (null != fieldId) { final String id = BindableAdapterUtils.getDynamicDefinitionId(definitionId, getStringFieldValue(pojo, fieldId)); return DefinitionId.build(id, definitionId.length()); } return DefinitionId.build(definitionId); }
@Test @SuppressWarnings("unchecked") public void testGetIdWhenDynamic() { String idFieldName = "theIdField"; String idFieldValue = "theIdFieldValue"; propertyIdFieldNames.put(SomePojo.class, idFieldName); when(delegate.getStringFieldValue(eq(pojo), eq(idFieldName))).thenReturn(idFieldValue); DefinitionId id = testeed.getId(pojo); assertEquals(getDynamicDefinitionId(SomePojo.class, idFieldValue), id.value()); assertEquals(getDefinitionId(SomePojo.class), id.type()); assertTrue(id.isDynamic()); }