/** * Create a new {@link MongoTypeMapper} given {@link MongoConverter}. * * @param converter must not be {@literal null}. */ public MongoExampleMapper(MongoConverter converter) { this.converter = converter; this.mappingContext = converter.getMappingContext(); }
/** * Create a new {@link MongoJsonSchemaMapper} facilitating the given {@link MongoConverter}. * * @param converter must not be {@literal null}. */ public MongoJsonSchemaMapper(MongoConverter converter) { Assert.notNull(converter, "Converter must not be null!"); this.converter = converter; this.mappingContext = converter.getMappingContext(); }
/** * Creates a new {@link ReactiveMongoRepositoryFactory} with the given {@link ReactiveMongoOperations}. * * @param mongoOperations must not be {@literal null}. */ public ReactiveMongoRepositoryFactory(ReactiveMongoOperations mongoOperations) { Assert.notNull(mongoOperations, "ReactiveMongoOperations must not be null!"); this.operations = mongoOperations; this.mappingContext = mongoOperations.getConverter().getMappingContext(); }
/** * Creates a new {@link MongoRepositoryFactory} with the given {@link MongoOperations}. * * @param mongoOperations must not be {@literal null}. */ public MongoRepositoryFactory(MongoOperations mongoOperations) { Assert.notNull(mongoOperations, "MongoOperations must not be null!"); this.operations = mongoOperations; this.mappingContext = mongoOperations.getConverter().getMappingContext(); }
/** * Creates a new {@link QuerydslRepositorySupport} for the given {@link MongoOperations}. * * @param operations must not be {@literal null}. */ public QuerydslRepositorySupport(MongoOperations operations) { Assert.notNull(operations, "MongoOperations must not be null!"); this.template = operations; this.context = operations.getConverter().getMappingContext(); }
/** * Creates a new {@link SpringDataMongodbSerializer} for the given {@link MongoConverter}. * * @param converter must not be {@literal null}. */ public SpringDataMongodbSerializer(MongoConverter converter) { Assert.notNull(converter, "MongoConverter must not be null!"); this.mappingContext = converter.getMappingContext(); this.converter = converter; this.mapper = new QueryMapper(converter); }
@Override public void afterPropertiesSet() { super.afterPropertiesSet(); Assert.state(operations != null, "MongoTemplate must not be null!"); if (!mappingContextConfigured) { setMappingContext(operations.getConverter().getMappingContext()); } } }
@Override public void afterPropertiesSet() { super.afterPropertiesSet(); Assert.state(operations != null, "ReactiveMongoOperations must not be null!"); if (!mappingContextConfigured) { setMappingContext(operations.getConverter().getMappingContext()); } } }
/** * Creates a new {@link QueryMapper} with the given {@link MongoConverter}. * * @param converter must not be {@literal null}. */ public QueryMapper(MongoConverter converter) { Assert.notNull(converter, "MongoConverter must not be null!"); this.conversionService = converter.getConversionService(); this.converter = converter; this.mappingContext = converter.getMappingContext(); this.exampleMapper = new MongoExampleMapper(converter); this.schemaMapper = new MongoJsonSchemaMapper(converter); }
List<Document> prepareFilter(ChangeStreamOptions options) { Object filter = options.getFilter().orElse(Collections.emptyList()); if (filter instanceof Aggregation) { Aggregation agg = (Aggregation) filter; AggregationOperationContext context = agg instanceof TypedAggregation ? new TypeBasedAggregationOperationContext(((TypedAggregation<?>) agg).getInputType(), getConverter().getMappingContext(), queryMapper) : Aggregation.DEFAULT_CONTEXT; return agg.toPipeline(new PrefixingDelegatingAggregationOperationContext(context, "fullDocument", Arrays.asList("operationType", "fullDocument", "documentKey", "updateDescription", "ns"))); } if (filter instanceof List) { return (List<Document>) filter; } throw new IllegalArgumentException( "ChangeStreamRequestOptions.filter mut be either an Aggregation or a plain list of Documents"); }
@SuppressWarnings("unchecked") List<Document> prepareFilter(MongoTemplate template, ChangeStreamOptions options) { if (!options.getFilter().isPresent()) { return Collections.emptyList(); } Object filter = options.getFilter().orElse(null); if (filter instanceof Aggregation) { Aggregation agg = (Aggregation) filter; AggregationOperationContext context = agg instanceof TypedAggregation ? new TypeBasedAggregationOperationContext(((TypedAggregation<?>) agg).getInputType(), template.getConverter().getMappingContext(), queryMapper) : Aggregation.DEFAULT_CONTEXT; return agg.toPipeline(new PrefixingDelegatingAggregationOperationContext(context, "fullDocument", blacklist)); } if (filter instanceof List) { return (List<Document>) filter; } throw new IllegalArgumentException( "ChangeStreamRequestOptions.filter mut be either an Aggregation or a plain list of Documents"); }
/** * Constructor used for a basic template configuration. * * @param mongoDbFactory must not be {@literal null}. * @param mongoConverter */ public MongoTemplate(MongoDbFactory mongoDbFactory, @Nullable MongoConverter mongoConverter) { Assert.notNull(mongoDbFactory, "MongoDbFactory must not be null!"); this.mongoDbFactory = mongoDbFactory; this.exceptionTranslator = mongoDbFactory.getExceptionTranslator(); this.mongoConverter = mongoConverter == null ? getDefaultMongoConverter(mongoDbFactory) : mongoConverter; this.queryMapper = new QueryMapper(this.mongoConverter); this.updateMapper = new UpdateMapper(this.mongoConverter); this.schemaMapper = new MongoJsonSchemaMapper(this.mongoConverter); this.projectionFactory = new SpelAwareProxyProjectionFactory(); this.operations = new EntityOperations(this.mongoConverter.getMappingContext()); this.propertyOperations = new PropertyOperations(this.mongoConverter.getMappingContext()); // We always have a mapping context in the converter, whether it's a simple one or not mappingContext = this.mongoConverter.getMappingContext(); // We create indexes based on mapping events if (mappingContext instanceof MongoMappingContext) { MongoMappingContext mappingContext = (MongoMappingContext) this.mappingContext; if (mappingContext.isAutoIndexCreation()) { indexCreator = new MongoPersistentEntityIndexCreator(mappingContext, this); eventPublisher = new MongoMappingEventPublisher(indexCreator); mappingContext.setApplicationEventPublisher(eventPublisher); } } }
filter.putAll(queryMapper.getMappedObject(query.getQueryObject(), template.getConverter().getMappingContext() .getPersistentEntity(targetType.equals(Document.class) ? Object.class : targetType)));
@Override public Object convert(Object source) { ReturnedType returnedType = processor.getReturnedType(); if (ClassUtils.isPrimitiveOrWrapper(returnedType.getReturnedType())) { return source; } Converter<Object, Object> converter = new DtoInstantiatingConverter(returnedType.getReturnedType(), operations.getConverter().getMappingContext(), instantiators); return processor.processResult(source, converter); } }
/** * Creates a new {@link PartTreeMongoQuery} from the given {@link QueryMethod} and {@link MongoTemplate}. * * @param method must not be {@literal null}. * @param mongoOperations must not be {@literal null}. */ public PartTreeMongoQuery(MongoQueryMethod method, MongoOperations mongoOperations) { super(method, mongoOperations); this.processor = method.getResultProcessor(); this.tree = new PartTree(method.getName(), processor.getReturnedType().getDomainType()); this.isGeoNearQuery = method.isGeoNearQuery(); this.context = mongoOperations.getConverter().getMappingContext(); }
/** * Creates a new {@link ReactivePartTreeMongoQuery} from the given {@link QueryMethod} and {@link MongoTemplate}. * * @param method must not be {@literal null}. * @param mongoOperations must not be {@literal null}. */ public ReactivePartTreeMongoQuery(ReactiveMongoQueryMethod method, ReactiveMongoOperations mongoOperations) { super(method, mongoOperations); this.processor = method.getResultProcessor(); this.tree = new PartTree(method.getName(), processor.getReturnedType().getDomainType()); this.isGeoNearQuery = method.isGeoNearQuery(); this.context = mongoOperations.getConverter().getMappingContext(); }
/** * Create a new {@link MongoTypeMapper} given {@link MongoConverter}. * * @param converter must not be {@literal null}. */ public MongoExampleMapper(MongoConverter converter) { this.converter = converter; this.mappingContext = converter.getMappingContext(); }
this.mappingContext = this.mongoConverter.getMappingContext(); this.operations = new EntityOperations(this.mappingContext); this.propertyOperations = new PropertyOperations(this.mappingContext);
String collection = sourceDocument.getString("$ref"); MongoPersistentEntity<?> entity = getMappingContext().getPersistentEntity(targetType); if (entity != null && entity.hasIdProperty()) { id = convertId(id, entity.getIdProperty().getFieldType());
@Override public Object convert(Object source) { ReturnedType returnedType = processor.getReturnedType(); if (ClassUtils.isPrimitiveOrWrapper(returnedType.getReturnedType())) { return source; } Converter<Object, Object> converter = new DtoInstantiatingConverter(returnedType.getReturnedType(), operations.getConverter().getMappingContext(), instantiators); return processor.processResult(source, converter); } }