mappingContext.getPersistentEntity(persistentProperty.getActualType()), optionsForNestedType, guard); } catch (CyclicPropertyReferenceException e) { LOGGER.info(e.getMessage());
mappingContext.getPersistentEntity(persistentProperty.getActualType()), optionsForNestedType, guard); } catch (CyclicPropertyReferenceException e) { LOGGER.info(e.getMessage());
/** * Gets persistent entity. * * @param type * the type * @return the persistent entity */ @Override public BasicMongoPersistentEntity<?> getPersistentEntity(Class<?> type) { return super.getPersistentEntity(getEntityContractFromType(type)); }
@Override public void onBeforeDelete(BeforeDeleteEvent<Launch> event) { DBObject dboq = queryMapper.getMappedObject(event.getDBObject(), mappingContext.getPersistentEntity(Launch.class)); List<String> ids = stream(mongoTemplate.getCollection(event.getCollectionName()).find(dboq).spliterator(), false) .map(dbObject -> dbObject.get("_id").toString()).distinct().collect(toList()); final BasicDBObject itemsQuery = new BasicDBObject("parent", new BasicDBObject("$exists", false)); itemsQuery.put("launchRef", new BasicDBObject("$in", ids)); final List<String> itemIds = stream(mongoTemplate.getCollection("testItem").find(itemsQuery).spliterator(), false) .map(dbObject -> dbObject.get("_id").toString()).collect(toList()); testItemRepository.delete(itemIds); } }
@Override public BasicMongoPersistentEntity<?> getPersistentEntity(TypeInformation<?> type) { final BasicMongoPersistentEntity<?> entity = super.getPersistentEntity(type); if (entity == null) { return null; } Enhancer e = new Enhancer(); e.setSuperclass(BasicMongoPersistentEntity.class); e.setCallback(new MethodInterceptor() { @Override public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { if (GET_COLLECTION.equals(method.getName())) { return getCollection(entity); } return method.invoke(entity, args); } }); return (BasicMongoPersistentEntity<?>) e.create(ArrayUtils.toArray(TypeInformation.class), ArrayUtils.toArray(type)); } };
@Override public void onBeforeDelete(BeforeDeleteEvent<Log> event) { List<String> ids = new ArrayList<>(); for (DBObject dbObject : mongoTemplate.getCollection(event.getCollectionName()) .find(queryMapper.getMappedObject(event.getDBObject(), mongoMappingContext.getPersistentEntity(Log.class)))) { if (dbObject.containsField("binary_content")) { @SuppressWarnings("unchecked") Map<String, Object> binaries = (Map<String, Object>) dbObject.get("binary_content"); if (binaries.containsKey("id")) { ids.add(binaries.get("id").toString()); } if (binaries.containsKey("thumbnail_id")) { ids.add(binaries.get("thumbnail_id").toString()); } } } dataStorage.delete(ids); } }
@Override public void onBeforeDelete(BeforeDeleteEvent<TestItem> event) { DBObject dbqo = queryMapper.getMappedObject(event.getDBObject(), mappingContext.getPersistentEntity(TestItem.class)); for (DBObject dbObject : mongoTemplate.getCollection(event.getCollectionName()).find(dbqo)) { Boolean isRetryProcessed = (Boolean) dbObject.get("retryProcessed"); if (isRetryProcessed == null || isRetryProcessed) { String objectId = dbObject.get("_id").toString(); List<TestItem> itemsForDelete = mongoTemplate.find(queryItems(objectId), TestItem.class); List<ObjectId> objectIds = itemsForDelete.stream().map(it -> new ObjectId(it.getId())).collect(toList()); BasicDBObject query = new BasicDBObject("_id", new BasicDBObject("$in", objectIds)); mongoTemplate.getCollection(event.getCollectionName()).remove(query); List<String> itemRefs = getLogItemReferences(itemsForDelete); logRepository.deleteByItemRef(itemRefs); } } }
@Override public void onBeforeDelete(BeforeDeleteEvent<Project> event) { for (DBObject dbObject : mongoTemplate.getCollection(event.getCollectionName()) .find(queryMapper.getMappedObject(event.getDBObject(), context.getPersistentEntity(Project.class)))) { final String id = dbObject.get("_id").toString(); updateDefaultProject(id); removeProjectShareable(id); externalSystemRepository.deleteByProjectRef(id); activityRepository.deleteByProjectRef(id); launchRepository.deleteByProjectRef(id); } }