/** * Root entry method into write conversion. Adds a type discriminator to the {@link Document}. Shouldn't be called for * nested conversions. * * @see org.springframework.data.mongodb.core.convert.MongoWriter#write(java.lang.Object, com.mongodb.Document) */ public void write(Object obj, Bson bson) { if (null == obj) { return; } Class<?> entityType = ClassUtils.getUserClass(obj.getClass()); TypeInformation<? extends Object> type = ClassTypeInformation.from(entityType); Object target = obj instanceof LazyLoadingProxy ? ((LazyLoadingProxy) obj).getTarget() : obj; writeInternal(target, bson, type); if (asMap(bson).containsKey("_id") && asMap(bson).get("_id") == null) { removeFromMap(bson, "_id"); } if (requiresTypeHint(entityType)) { typeMapper.writeType(type, bson); } }
public DBRef toDBRef(Object object, @Nullable MongoPersistentProperty referringProperty) { org.springframework.data.mongodb.core.mapping.DBRef annotation; if (referringProperty != null) { annotation = referringProperty.getDBRef(); Assert.isTrue(annotation != null, "The referenced property has to be mapped with @DBRef!"); } // DATAMONGO-913 if (object instanceof LazyLoadingProxy) { return ((LazyLoadingProxy) object).toDBRef(); } return createDBRef(object, referringProperty); }
/** * Root entry method into write conversion. Adds a type discriminator to the {@link Document}. Shouldn't be called for * nested conversions. * * @see org.springframework.data.mongodb.core.convert.MongoWriter#write(java.lang.Object, com.mongodb.Document) */ public void write(Object obj, Bson bson) { if (null == obj) { return; } Class<?> entityType = ClassUtils.getUserClass(obj.getClass()); TypeInformation<? extends Object> type = ClassTypeInformation.from(entityType); Object target = obj instanceof LazyLoadingProxy ? ((LazyLoadingProxy) obj).getTarget() : obj; writeInternal(target, bson, type); if (asMap(bson).containsKey("_id") && asMap(bson).get("_id") == null) { removeFromMap(bson, "_id"); } if (requiresTypeHint(entityType)) { typeMapper.writeType(type, bson); } }
public DBRef toDBRef(Object object, @Nullable MongoPersistentProperty referringProperty) { org.springframework.data.mongodb.core.mapping.DBRef annotation; if (referringProperty != null) { annotation = referringProperty.getDBRef(); Assert.isTrue(annotation != null, "The referenced property has to be mapped with @DBRef!"); } // DATAMONGO-913 if (object instanceof LazyLoadingProxy) { return ((LazyLoadingProxy) object).toDBRef(); } return createDBRef(object, referringProperty); }
protected StateDocumentImpl getStateDocument(T stateful) throws IllegalArgumentException, IllegalAccessException { Object stateDoc = getStateField().get(stateful); if (stateDoc instanceof LazyLoadingProxy) { stateDoc = ((LazyLoadingProxy)stateDoc).getTarget(); } return (StateDocumentImpl)stateDoc; }
@Override public Optional<ObjectAccessProxy<Object>> createAccessor(Object entity) { if (entity instanceof LazyLoadingProxy) { LazyLoadingProxy proxy = (LazyLoadingProxy) entity; return Optional.of(new ObjectAccessProxy(() -> proxy.getTarget(), proxy.getTarget().getClass(), proxy.toDBRef().getId().toString())); } return Optional.empty(); } }
@Override public Optional<ObjectAccessProxy<Object>> createAccessor(Object entity) { if (entity instanceof LazyLoadingProxy) { LazyLoadingProxy proxy = (LazyLoadingProxy) entity; return Optional.of(new ObjectAccessProxy(() -> proxy.getTarget(), proxy.getTarget().getClass(), proxy.toDBRef().getId().toString())); } return Optional.empty(); } }