/** * @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()); }
/** * @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()); }
PartTree parts = new PartTree(mtd.getName(), metadata.getDomainType()); sql.append("FROM ").append(metadata.getDomainType().getSimpleName());
PartTree parts = new PartTree(mtd.getName(), metadata.getDomainType()); sql.append("FROM ").append(metadata.getDomainType().getSimpleName());
@Override protected RepositoryFragments getRepositoryFragments(RepositoryMetadata metadata) { RepositoryFragments fragments = RepositoryFragments.empty(); boolean isQueryDslRepository = QUERY_DSL_PRESENT && ReactiveQuerydslPredicateExecutor.class.isAssignableFrom(metadata.getRepositoryInterface()); if (isQueryDslRepository) { MongoEntityInformation<?, Serializable> entityInformation = getEntityInformation(metadata.getDomainType(), metadata); fragments = fragments.append(RepositoryFragment.implemented(getTargetRepositoryViaReflection( ReactiveQuerydslMongoPredicateExecutor.class, entityInformation, operations))); } return fragments; }
@Override protected RepositoryFragments getRepositoryFragments(RepositoryMetadata metadata) { RepositoryFragments fragments = RepositoryFragments.empty(); if (QueryByExampleExecutor.class.isAssignableFrom(metadata.getRepositoryInterface())) { RedisMappingContext mappingContext = (RedisMappingContext) this.operations.getMappingContext(); RedisPersistentEntity<?> persistentEntity = mappingContext.getRequiredPersistentEntity(metadata.getDomainType()); MappingRedisEntityInformation<?, ?> entityInformation = new MappingRedisEntityInformation<>(persistentEntity); fragments = fragments.append(RepositoryFragment.implemented(QueryByExampleExecutor.class, getTargetRepositoryViaReflection(QueryByExampleRedisExecutor.class, entityInformation, operations))); } return fragments; }
@Override protected RepositoryFragments getRepositoryFragments(RepositoryMetadata metadata) { RepositoryFragments fragments = RepositoryFragments.empty(); boolean isQueryDslRepository = QUERY_DSL_PRESENT && QuerydslPredicateExecutor.class.isAssignableFrom(metadata.getRepositoryInterface()); if (isQueryDslRepository) { if (metadata.isReactiveRepository()) { throw new InvalidDataAccessApiUsageException( "Cannot combine Querydsl and reactive repository support in a single interface"); } MongoEntityInformation<?, Serializable> entityInformation = getEntityInformation(metadata.getDomainType(), metadata); fragments = fragments.append(RepositoryFragment.implemented( getTargetRepositoryViaReflection(QuerydslMongoPredicateExecutor.class, entityInformation, operations))); } return fragments; }
@Override protected RepositoryComposition.RepositoryFragments getRepositoryFragments(RepositoryMetadata metadata) { RepositoryComposition.RepositoryFragments fragments = RepositoryComposition.RepositoryFragments.empty(); boolean isQueryDslRepository = QUERY_DSL_PRESENT && QuerydslPredicateExecutor.class.isAssignableFrom(metadata.getRepositoryInterface()); if (isQueryDslRepository) { if (metadata.isReactiveRepository()) { throw new InvalidDataAccessApiUsageException( "Cannot combine Querydsl and reactive repository support in a single interface"); } JpaEntityInformation<?, Serializable> entityInformation = getEntityInformation(metadata.getDomainType()); Object querydslFragment = getTargetRepositoryViaReflection(QuerydslJpaPredicateExecutor.class, entityInformation, entityManager, entityPathResolver, crudMethodMetadataPostProcessor.getCrudMethodMetadata()); fragments = fragments.append(RepositoryFragment.implemented(querydslFragment)); } return fragments; }
@Override public Class<?> getDomainType() { return repositoryMetadata.getDomainType(); }
@Override public SearchResourceMappings getSearchResourceMappings() { return provider.getSearchResourceMappings(repositoryMetadata.getDomainType()); }
@Override public <T, ID, R extends Repository<T, ?>> IdMappingRegistrar<T, R> forLookupRepository(Class<R> type) { this.lookupTypes.add(AbstractRepositoryMetadata.getMetadata(type).getDomainType()); return forRepository(type); }
@Override public <T, ID, R extends Repository<T, ?>> EntityLookupRegistrar forValueRepository(Class<R> type, Converter<T, ID> identifierMapping, Lookup<R, ID> lookup) { this.lookupTypes.add(AbstractRepositoryMetadata.getMetadata(type).getDomainType()); return forRepository(type, identifierMapping, lookup); }
@Override public boolean isExported(RepositoryMetadata metadata) { return isExplicitlyExported(metadata.getRepositoryInterface(), isExplicitlyExported(metadata.getDomainType(), VISIBILITY.isExported(metadata))); } },
/** * Creates a new {@link RepositoryCollectionResourceMapping} for the given repository using the given * {@link RelProvider}. * * @param strategy must not be {@literal null}. * @param relProvider must not be {@literal null}. * @param repositoryType must not be {@literal null}. */ RepositoryCollectionResourceMapping(RepositoryMetadata metadata, RepositoryDetectionStrategy strategy, RelProvider relProvider) { Assert.notNull(metadata, "Repository metadata must not be null!"); Assert.notNull(relProvider, "RelProvider must not be null!"); Assert.notNull(strategy, "RepositoryDetectionStrategy must not be null!"); Class<?> repositoryType = metadata.getRepositoryInterface(); this.metadata = metadata; this.annotation = AnnotationUtils.findAnnotation(repositoryType, RestResource.class); this.repositoryAnnotation = AnnotationUtils.findAnnotation(repositoryType, RepositoryRestResource.class); this.repositoryExported = strategy.isExported(metadata); Class<?> domainType = metadata.getDomainType(); this.domainTypeMapping = EVO_INFLECTOR_IS_PRESENT ? new EvoInflectorTypeBasedCollectionResourceMapping(domainType, relProvider) : new TypeBasedCollectionResourceMapping(domainType, relProvider); if (annotation != null) { LOGGER.warn( "@RestResource detected to customize the repository resource for {}! Use @RepositoryRestResource instead!", metadata.getRepositoryInterface().getName()); } }
@Override protected RepositoryFragments getRepositoryFragments(RepositoryMetadata metadata) { RepositoryFragments fragments = RepositoryFragments.empty(); boolean isQueryDslRepository = QUERY_DSL_PRESENT && QuerydslPredicateExecutor.class.isAssignableFrom(metadata.getRepositoryInterface()); if (isQueryDslRepository) { if (metadata.isReactiveRepository()) { throw new InvalidDataAccessApiUsageException( "Cannot combine Querydsl and reactive repository support in a single interface"); } MongoEntityInformation<?, Serializable> entityInformation = getEntityInformation(metadata.getDomainType(), metadata); fragments = fragments.append(RepositoryFragment.implemented( getTargetRepositoryViaReflection(QuerydslMongoPredicateExecutor.class, entityInformation, operations))); } return fragments; }
String getEntityRegionName(@NonNull RepositoryMetadata repositoryMetadata, @Nullable GemfirePersistentEntity entity) { Optional<GemfirePersistentEntity> optionalEntity = Optional.ofNullable(entity); return optionalEntity .map(GemfirePersistentEntity::getRegionName) .filter(StringUtils::hasText) .orElseGet(() -> optionalEntity .map(GemfirePersistentEntity::getType) .map(Class::getSimpleName) .orElseGet(() -> repositoryMetadata.getDomainType().getSimpleName())); }
public PersistentEntity<?, ?> getPersistentEntity() { if (mappingContext == null) { return null; } return mappingContext.getPersistentEntity(repositoryMetadata.getDomainType()); }
@Override protected void validate(RepositoryMetadata repositoryMetadata) { super.validate(repositoryMetadata); if (cbf.getService(EntityMetamodel.class).getEntity(repositoryMetadata.getDomainType()) == null) { throw new InvalidDataAccessApiUsageException( String.format("Cannot implement repository %s when using a non-entity domain type %s. Only types annotated with @Entity are supported!", repositoryMetadata.getRepositoryInterface().getName(), repositoryMetadata.getDomainType().getName())); } }
@Override protected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) { if (isEntityView(metadata.getDomainType())) { return EntityViewRepositoryImpl.class; } else { return super.getRepositoryBaseClass(metadata); } }
@Override @SuppressWarnings({"unchecked", "rawtypes"}) protected <T, ID extends Serializable> DynamoDBRepository<?, ?> getDynamoDBRepository( RepositoryMetadata metadata) { return new SimpleDynamoDBRepository(getEntityInformation(metadata.getDomainType()), dynamoDBOperations, getEnableScanPermissions(metadata)); } }