@Override protected boolean useRepositoryConfiguration(RepositoryMetadata metadata) { return metadata.isReactiveRepository(); } }
/** * @param entity */ private <S extends T> void doSave(S entity) { EntityInformation<Object, S> entityInformation = getEntityInformation(entity); if (entityInformation.isNew(entity)) { entityManager.persist(entity); } else { entityManager.merge(entity); } }
@Override protected Object getTargetRepository(RepositoryInformation information) { ElasticsearchEntityInformation<?, Serializable> entityInformation = getEntityInformation( information.getDomainType(), information); return getTargetRepositoryViaReflection(information, entityInformation, operations); }
/** * @param metadata Metadata. * @param qry Query. * @param mtd Method. * @param factory Factory. * @param cache Cache. */ public IgniteRepositoryQuery(RepositoryMetadata metadata, IgniteQuery qry, Method mtd, ProjectionFactory factory, IgniteCache cache) { type = metadata.getDomainType(); this.qry = qry; this.cache = cache; this.metadata = metadata; this.mtd = mtd; this.factory = factory; returnStgy = calcReturnType(mtd, qry.isFieldQuery()); }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory, NamedQueries namedQueries) { ReactiveElasticsearchQueryMethod queryMethod = new ReactiveElasticsearchQueryMethod(method, metadata, factory, mappingContext); String namedQueryName = queryMethod.getNamedQueryName(); if (namedQueries.hasQuery(namedQueryName)) { String namedQuery = namedQueries.getQuery(namedQueryName); return new ReactiveElasticsearchStringQuery(namedQuery, queryMethod, operations, EXPRESSION_PARSER, evaluationContextProvider); } else if (queryMethod.hasAnnotatedQuery()) { return new ReactiveElasticsearchStringQuery(queryMethod, operations, EXPRESSION_PARSER, evaluationContextProvider); } else { return new ReactivePartTreeElasticsearchQuery(queryMethod, operations); } } }
/** * Creates a {@link SpringDataMongodbQuery}. * * @return */ private SpringDataMongodbQuery<T> createQuery() { return new SpringDataMongodbQuery<>(mongoOperations, typeInformation().getJavaType()); }
/** {@inheritDoc} */ @Override protected Object getTargetRepository(RepositoryInformation metadata) { return getTargetRepositoryViaReflection(metadata, ignite.getOrCreateCache(repoToCache.get(metadata.getRepositoryInterface()))); }
private <T, ID> MongoEntityInformation<T, ID> getEntityInformation(Class<T> domainClass, @Nullable RepositoryMetadata metadata) { MongoPersistentEntity<?> entity = mappingContext.getRequiredPersistentEntity(domainClass); return MongoEntityInformationSupport.<T, ID> entityInformationFor(entity, metadata != null ? metadata.getIdType() : null); }
@Override protected Object getTargetRepository(RepositoryInformation information) { MongoEntityInformation<?, Serializable> entityInformation = getEntityInformation(information.getDomainType(), information); return getTargetRepositoryViaReflection(information, entityInformation, operations); }
/** * @param metadata Metadata. * @param qry Query. * @param mtd Method. * @param factory Factory. * @param cache Cache. */ public IgniteRepositoryQuery(RepositoryMetadata metadata, IgniteQuery qry, Method mtd, ProjectionFactory factory, IgniteCache cache) { type = metadata.getDomainType(); this.qry = qry; this.cache = cache; this.metadata = metadata; this.mtd = mtd; this.factory = factory; returnStgy = calcReturnType(mtd, qry.isFieldQuery()); }
@Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory, NamedQueries namedQueries) { ReactiveMongoQueryMethod queryMethod = new ReactiveMongoQueryMethod(method, metadata, factory, mappingContext); String namedQueryName = queryMethod.getNamedQueryName(); if (namedQueries.hasQuery(namedQueryName)) { String namedQuery = namedQueries.getQuery(namedQueryName); return new ReactiveStringBasedMongoQuery(namedQuery, queryMethod, operations, EXPRESSION_PARSER, evaluationContextProvider); } else if (queryMethod.hasAnnotatedQuery()) { return new ReactiveStringBasedMongoQuery(queryMethod, operations, EXPRESSION_PARSER, evaluationContextProvider); } else { return new ReactivePartTreeMongoQuery(queryMethod, operations); } } }
@Override public <S extends T> Iterable<S> findAll(Example<S> example) { RedisOperationChain operationChain = createQuery(example); return (Iterable<S>) keyValueTemplate.find(new KeyValueQuery<>(operationChain), entityInformation.getJavaType()); }
/** {@inheritDoc} */ @Override protected Object getTargetRepository(RepositoryInformation metadata) { return getTargetRepositoryViaReflection(metadata, ignite.getOrCreateCache(repoToCache.get(metadata.getRepositoryInterface()))); }
@Override protected boolean useRepositoryConfiguration(RepositoryMetadata metadata) { return metadata.isReactiveRepository(); } }
@SuppressWarnings("unchecked") private <T, ID> MongoEntityInformation<T, ID> getEntityInformation(Class<T> domainClass, @Nullable RepositoryMetadata metadata) { MongoPersistentEntity<?> entity = mappingContext.getRequiredPersistentEntity(domainClass); return new MappingMongoEntityInformation<>((MongoPersistentEntity<T>) entity, metadata != null ? (Class<ID>) metadata.getIdType() : null); }
@Override protected Object getTargetRepository(RepositoryInformation information) { MongoEntityInformation<?, Serializable> entityInformation = getEntityInformation(information.getDomainType(), information); return getTargetRepositoryViaReflection(information, entityInformation, operations); }
@Override public <S extends T> long count(Example<S> example) { RedisOperationChain operationChain = createQuery(example); return keyValueTemplate.count(new KeyValueQuery<>(operationChain), entityInformation.getJavaType()); }
@Override protected boolean useRepositoryConfiguration(RepositoryMetadata metadata) { return !metadata.isReactiveRepository(); } }
/** * Callback to create a {@link JpaRepository} instance with the given {@link EntityManager} * * @param information will never be {@literal null}. * @param entityManager will never be {@literal null}. * @return */ protected JpaRepositoryImplementation<?, ?> getTargetRepository(RepositoryInformation information, EntityManager entityManager) { JpaEntityInformation<?, Serializable> entityInformation = getEntityInformation(information.getDomainType()); Object repository = getTargetRepositoryViaReflection(information, entityInformation, entityManager); Assert.isInstanceOf(JpaRepositoryImplementation.class, repository); return (JpaRepositoryImplementation<?, ?>) repository; }
/** * Creates a {@link ReactiveSpringDataMongodbQuery}. * * @return */ private ReactiveSpringDataMongodbQuery<T> createQuery() { Class<T> javaType = typeInformation().getJavaType(); return new ReactiveSpringDataMongodbQuery<>(mongodbSerializer(), mongoOperations, javaType, mongoOperations.getCollectionName(javaType)); }