Skip to content

Commit

Permalink
refac: avoid use native field in fieldmetadata
Browse files Browse the repository at this point in the history
Signed-off-by: Otavio Santana <otaviopolianasantana@gmail.com>
  • Loading branch information
otaviojava committed Jul 30, 2023
1 parent 698a56b commit 4a9ee1a
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,7 @@ enum FieldConverter {
@Override
public <X, Y, T> void convert(T instance, List<Column> columns, Column column,
FieldMetadata field, ColumnEntityConverter converter) {
Field nativeField = field.nativeField();
Object subEntity = converter.toEntity(nativeField.getType(), columns);
Object subEntity = converter.toEntity(field.type(), columns);
EntityMetadata mapping = converter.getEntities().get(subEntity.getClass());
boolean areAllFieldsNull = mapping.fields()
.stream()
Expand All @@ -56,7 +55,7 @@ public <X, Y, T> void convert(T instance, List<Column> columns, Column subColumn
if (Objects.nonNull(subColumn)) {
converterSubDocument(instance, subColumn, field, converter);
} else {
field.write(instance, converter.toEntity(field.nativeField().getType(), columns));
field.write(instance, converter.toEntity(field.type(), columns));
}
}

Expand All @@ -69,10 +68,10 @@ private <T> void converterSubDocument(T instance, Column subColumn, FieldMetadat
for (Map.Entry entry : (Set<Map.Entry>) map.entrySet()) {
embeddedColumns.add(Column.of(entry.getKey().toString(), entry.getValue()));
}
field.write(instance, converter.toEntity(field.nativeField().getType(), embeddedColumns));
field.write(instance, converter.toEntity(field.type(), embeddedColumns));

} else {
field.write(instance, converter.toEntity(field.nativeField().getType(),
field.write(instance, converter.toEntity(field.type(),
subColumn.get(new TypeReference<List<Column>>() {
})));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,15 @@ public interface FieldMetadata {
*/
MappingType mappingType();

/**
* The {@link Field}
*
* @return the field
*/
default Field nativeField() {
return null;
}

/**
* Returns a {@code Class} object that identifies the
* declared type for the field represented by this
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public static Object getValue(Object value, EntityMetadata mapping, String name,
*/
public static Object getValue(Object value, Converters converters, FieldMetadata field) {
Field nativeField = field.nativeField();
if (!nativeField.getType().equals(value.getClass())) {
if (!field.type().equals(value.getClass())) {
return field.converter()
.map(converters::get)
.map(useConverter(value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,7 @@ enum FieldConverter {
public <X, Y, T> void convert(T instance, List<Document> documents, Document document,
FieldMetadata field, DocumentEntityConverter converter) {

Field nativeField = field.nativeField();
Object subEntity = converter.toEntity(nativeField.getType(), documents);
Object subEntity = converter.toEntity(field.type(), documents);
EntityMetadata mapping = converter.getEntities().get(subEntity.getClass());
boolean areAllFieldsNull = mapping.fields()
.stream()
Expand All @@ -58,7 +57,7 @@ public <X, Y, T> void convert(T instance, List<Document> documents, Document doc
if (Objects.nonNull(document)) {
converterSubDocument(instance, document, field, converter);
} else {
field.write(instance, converter.toEntity(field.nativeField().getType(), documents));
field.write(instance, converter.toEntity(field.type(), documents));
}
}

Expand All @@ -71,10 +70,10 @@ private <T> void converterSubDocument(T instance, Document sudDocument, FieldMet
for (Map.Entry entry : (Set<Map.Entry>) map.entrySet()) {
embeddedDocument.add(Document.of(entry.getKey().toString(), entry.getValue()));
}
field.write(instance, converter.toEntity(field.nativeField().getType(), embeddedDocument));
field.write(instance, converter.toEntity(field.type(), embeddedDocument));

} else {
field.write(instance, converter.toEntity(field.nativeField().getType(),
field.write(instance, converter.toEntity(field.type(),
sudDocument.get(new TypeReference<List<Document>>() {
})));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ private Consumer<String> feedObject(T instance, List<Property<?>> elements,

private void embeddedField(T instance, List<Property<?>> elements,
FieldMetadata field, Vertex vertex) {
Class<T> type = (Class<T>) field.nativeField().getType();
Class<T> type = (Class<T>) field.type();
field.write(instance, convert(type, elements, vertex));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ private <T> Object getKey(Object key, Class<T> type, boolean toEntity) {
return attributeConverter.convertToDatabaseColumn(key);
}
} else {
return Value.of(key).get(id.nativeField().getType());
return Value.of(key).get(id.type());
}
}

Expand Down

0 comments on commit 4a9ee1a

Please sign in to comment.