@Test public void mainFieldAccessTest() { Function<Object, Object> accessorId = factory.getAccessor(Person.class, "id"); assertEquals(1L, accessorId.apply(person)); Function<Object, Object> accessorName = factory.getAccessor(Person.class, "name"); assertEquals("Sherlock Holmes", accessorName.apply(person)); }
public EntityInfo inspect() { JpaFieldsInspector fieldsInspector = new JpaFieldsInspector(); List<FieldInfo> fieldsFromClass = fieldsInspector.getFieldsFromClass(entityClass); EntityFieldAccesorFactory factory = new EntityFieldAccesorFactory(); List<ColumnInfo> columns = fieldsFromClass.stream().map(field -> { Function<Object, Object> accessor = factory.getAccessor(entityClass, field.getFieldName()); return new ColumnInfo(field.getColumnName(), field.getFieldType(), accessor); }).collect(Collectors.toList()); return new EntityInfo(entityClass, getTableName(), columns); }
@Test public void embeddedFieldAccessTest() { Function<Object, Object> accessorStreet = factory.getAccessor(Person.class, "address.street"); assertEquals("221b Baker St", accessorStreet.apply(person)); Function<Object, Object> accessorCity = factory.getAccessor(Person.class, "address.city"); assertEquals("London", accessorCity.apply(person)); }
@Test public void parentFieldOnHierarchy() { Function<Object, Object> accessor = factory.getAccessor(ChildClass.class, "beanField"); assertEquals("bean value", accessor.apply(instanceChild)); }
@Test public void beanFieldOnPublicClassTest() { Function<Object, Object> accessor = factory.getAccessor(PublicClass.class, "beanField"); assertEquals("bean", accessor.apply(instancePublic)); }
@Test public void parentPublicFieldOnHierarchy() { Function<Object, Object> accessor = factory.getAccessor(ChildClass.class, "publicField"); assertEquals("public one", accessor.apply(instanceChild)); }
@Test public void beanFieldOnPackageClassTest() { Function<Object, Object> accessor = factory.getAccessor(PackageClass.class, "beanField"); assertEquals("bean", accessor.apply(instancePackage)); }
@Test public void publicFieldOnPrivateClassTest() { Function<Object, Object> accessor = factory.getAccessor(PrivateClass.class, "publicField"); assertEquals("public", accessor.apply(instancePrivate)); }
@Test public void privateFieldOnPublicClassTest() { Function<Object, Object> accessor = factory.getAccessor(PublicClass.class, "privateField"); assertEquals("private", accessor.apply(instancePublic)); }
@Test public void privateFieldOnPackageClassTest() { Function<Object, Object> accessor = factory.getAccessor(PackageClass.class, "privateField"); assertEquals("private", accessor.apply(instancePackage)); }
@Test public void childFieldOnHierarchy() { Function<Object, Object> accessor = factory.getAccessor(ChildClass.class, "otherField"); assertEquals(1, accessor.apply(instanceChild)); }
@Test public void composedField() { Function<Object, Object> accessor = factory.getAccessor(ManyToOneClass.class, "reference.privateField"); assertEquals("private", accessor.apply(intanceManyToOne)); }
@Test public void publicFieldOnPublicClassTest() { Function<Object, Object> accessor = factory.getAccessor(PublicClass.class, "publicField"); assertEquals("public", accessor.apply(instancePublic)); }
@Test public void publicFieldOnPackageClassTest() { Function<Object, Object> accessor = factory.getAccessor(PackageClass.class, "publicField"); assertEquals("public", accessor.apply(instancePackage)); }
@Test public void privateFieldOnPrivateClassTest() { Function<Object, Object> accessor = factory.getAccessor(PrivateClass.class, "privateField"); assertEquals("private", accessor.apply(instancePrivate)); }
@Test public void beanFieldOnPrivateClassTest() { Function<Object, Object> accessor = factory.getAccessor(PrivateClass.class, "beanField"); assertEquals("bean", accessor.apply(instancePrivate)); }
@Test public void nonExistentField() { Function<Object, Object> accessor = factory.getAccessor(PublicClass.class, "nonExistent"); assertNull(accessor); }
@Test public void nonExistentComposedFieldOnChildClass() { Function<Object, Object> accessor = factory.getAccessor(ManyToOneChildClass.class, "nonExistent.privateField"); assertNull(accessor); }
@Test public void nonExistentComposedField() { Function<Object, Object> accessor = factory.getAccessor(ManyToOneClass.class, "nonExistent.privateField"); assertNull(accessor); }
public EntityInfoBuilder<T> addField(FieldInfo fieldInfo) { validate(fieldInfo.getColumnName()); Function<Object, Object> accessor = accesorFactory.getAccessor(entityClass, fieldInfo.getFieldName()); return addColumn(new ColumnInfo(fieldInfo.getColumnName(), fieldInfo.getFieldType(), accessor)); }