@Override protected boolean isReference(@Nullable Path<?> path) { MongoPersistentProperty property = getPropertyForPotentialDbRef(path); return property == null ? false : property.isAssociation(); }
public Object nextConverted(MongoPersistentProperty property) { Object next = next(); if (next == null) { return null; } if (property.isAssociation()) { if (next.getClass().isArray() || next instanceof Iterable) { List<DBRef> dbRefs = new ArrayList<DBRef>(); for (Object element : asCollection(next)) { dbRefs.add(writer.toDBRef(element, property)); } return dbRefs; } else { return writer.toDBRef(next, property); } } return getConvertedValue(next, property.getTypeInformation()); }
if (property.isAssociation()) { associationDetected = true; continue;
private void writeProperties(Bson bson, MongoPersistentEntity<?> entity, PersistentPropertyAccessor<?> accessor, DocumentAccessor dbObjectAccessor, @Nullable MongoPersistentProperty idProperty) { // Write the properties for (MongoPersistentProperty prop : entity) { if (prop.equals(idProperty) || !prop.isWritable()) { continue; } if (prop.isAssociation()) { writeAssociation(prop.getRequiredAssociation(), accessor, dbObjectAccessor); continue; } Object value = accessor.getProperty(prop); if (value == null) { continue; } if (!conversions.isSimpleType(value.getClass())) { writePropertyInternal(value, dbObjectAccessor, prop); } else { writeSimpleInternal(value, bson, prop); } } }
private void readProperties(MongoPersistentEntity<?> entity, PersistentPropertyAccessor<?> accessor, DocumentAccessor documentAccessor, MongoDbPropertyValueProvider valueProvider, ObjectPath currentPath, SpELExpressionEvaluator evaluator) { DbRefResolverCallback callback = null; for (MongoPersistentProperty prop : entity) { if (prop.isAssociation() && !entity.isConstructorArgument(prop)) { if (callback == null) { callback = getDbRefResolverCallback(documentAccessor, currentPath, evaluator); } readAssociation(prop.getRequiredAssociation(), accessor, documentAccessor, dbRefProxyHandler, callback); continue; } // We skip the id property since it was already set if (entity.isIdProperty(prop)) { continue; } if (entity.isConstructorArgument(prop) || !documentAccessor.hasValue(prop)) { continue; } if (prop.isAssociation()) { if (callback == null) { callback = getDbRefResolverCallback(documentAccessor, currentPath, evaluator); } readAssociation(prop.getRequiredAssociation(), accessor, documentAccessor, dbRefProxyHandler, callback); continue; } accessor.setProperty(prop, valueProvider.getPropertyValue(prop)); } }
@Override protected boolean isReference(@Nullable Path<?> path) { MongoPersistentProperty property = getPropertyForPotentialDbRef(path); return property == null ? false : property.isAssociation(); }
public Object nextConverted(MongoPersistentProperty property) { Object next = next(); if (next == null) { return null; } if (property.isAssociation()) { if (next.getClass().isArray() || next instanceof Iterable) { List<DBRef> dbRefs = new ArrayList<DBRef>(); for (Object element : asCollection(next)) { dbRefs.add(writer.toDBRef(element, property)); } return dbRefs; } else { return writer.toDBRef(next, property); } } return getConvertedValue(next, property.getTypeInformation()); }
if (property.isAssociation()) { associationDetected = true; continue;
private void writeProperties(Bson bson, MongoPersistentEntity<?> entity, PersistentPropertyAccessor<?> accessor, DocumentAccessor dbObjectAccessor, @Nullable MongoPersistentProperty idProperty) { // Write the properties for (MongoPersistentProperty prop : entity) { if (prop.equals(idProperty) || !prop.isWritable()) { continue; } if (prop.isAssociation()) { writeAssociation(prop.getRequiredAssociation(), accessor, dbObjectAccessor); continue; } Object value = accessor.getProperty(prop); if (value == null) { continue; } if (!conversions.isSimpleType(value.getClass())) { writePropertyInternal(value, dbObjectAccessor, prop); } else { writeSimpleInternal(value, bson, prop); } } }
private void readProperties(MongoPersistentEntity<?> entity, PersistentPropertyAccessor<?> accessor, DocumentAccessor documentAccessor, MongoDbPropertyValueProvider valueProvider, ObjectPath currentPath, SpELExpressionEvaluator evaluator) { DbRefResolverCallback callback = null; for (MongoPersistentProperty prop : entity) { if (prop.isAssociation() && !entity.isConstructorArgument(prop)) { if (callback == null) { callback = getDbRefResolverCallback(documentAccessor, currentPath, evaluator); } readAssociation(prop.getRequiredAssociation(), accessor, documentAccessor, dbRefProxyHandler, callback); continue; } // We skip the id property since it was already set if (entity.isIdProperty(prop)) { continue; } if (entity.isConstructorArgument(prop) || !documentAccessor.hasValue(prop)) { continue; } if (prop.isAssociation()) { if (callback == null) { callback = getDbRefResolverCallback(documentAccessor, currentPath, evaluator); } readAssociation(prop.getRequiredAssociation(), accessor, documentAccessor, dbRefProxyHandler, callback); continue; } accessor.setProperty(prop, valueProvider.getPropertyValue(prop)); } }