@Override public void addExceptionMapper(ExceptionMapper<?> exceptionMapper) { checkNotInitialized(); aggregatedModule.addExceptionMapper(exceptionMapper); }
@Override public void addRepository(Object repository) { aggregatedModule.addRepository(repository); }
@Override public void addRepositoryFilter(RepositoryFilter filter) { checkNotInitialized(); aggregatedModule.addRepositoryFilter(filter); }
SimpleModule module = new SimpleModule("discovery"); module.addRepositoryInformationBuilder(new DefaultResourceRepositoryInformationBuilder()); module.addRepositoryInformationBuilder(new DefaultRelationshipRepositoryInformationBuilder()); module.addResourceInformationBuilder(new AnnotationResourceInformationBuilder(resourceFieldNameTransformer)); module.addExceptionMapper(exceptionMapper); module.addFilter(filter); JsonApiResourceRepository annotation = ClassUtils.getAnnotation(repository.getClass(), JsonApiResourceRepository.class).get(); Class<?> resourceClass = annotation.value(); module.addRepository(resourceClass, repository); module.addRepository(annotation.source(), annotation.target(), repository);
@Override public void addResourceInformationBuilder(ResourceInformationBuilder resourceInformationBuilder) { checkNotInitialized(); aggregatedModule.addResourceInformationBuilder(resourceInformationBuilder); }
@Override public void addJacksonModule(com.fasterxml.jackson.databind.Module module) { checkNotInitialized(); aggregatedModule.addJacksonModule(module); if (objectMapper != null) { objectMapper.registerModule(module); } }
@Override public void addRepositoryDecoratorFactory(RepositoryDecoratorFactory decoratorFactory) { checkNotInitialized(); aggregatedModule.addRepositoryDecoratorFactory(decoratorFactory); }
@Override public void addExceptionMapperLookup(ExceptionMapperLookup exceptionMapperLookup) { checkNotInitialized(); aggregatedModule.addExceptionMapperLookup(exceptionMapperLookup); }
@Override public void addRepositoryInformationBuilder(RepositoryInformationBuilder repositoryInformationBuilder) { checkNotInitialized(); aggregatedModule.addRepositoryInformationBuilder(repositoryInformationBuilder); }
@Override public void addFilter(DocumentFilter filter) { checkNotInitialized(); aggregatedModule.addFilter(filter); }
@Override public void addRepository(Class<?> sourceType, Class<?> targetType, Object repository) { checkNotInitialized(); aggregatedModule.addRepository(repository); }
@Override public void addRepository(Class<?> type, Object repository) { checkNotInitialized(); aggregatedModule.addRepository(repository); }
private void setupRepository(SimpleModule module, Object repository) { if (repository instanceof ResourceRepository) { ResourceRepository resRepository = (ResourceRepository) repository; Class<?>[] typeArgs = TypeResolver.resolveRawArguments(ResourceRepository.class, resRepository.getClass()); Class resourceClass = typeArgs[0]; module.addRepository(resourceClass, resRepository); } else if (repository instanceof RelationshipRepository) { RelationshipRepository relRepository = (RelationshipRepository) repository; Class<?>[] typeArgs = TypeResolver.resolveRawArguments(RelationshipRepository.class, relRepository.getClass()); Class sourceResourceClass = typeArgs[0]; Class targetResourceClass = typeArgs[2]; module.addRepository(sourceResourceClass, targetResourceClass, relRepository); } else if (repository instanceof ResourceRepositoryV2) { ResourceRepositoryV2<?, ?> resRepository = (ResourceRepositoryV2<?, ?>) repository; module.addRepository(resRepository.getResourceClass(), resRepository); } else if (repository instanceof RelationshipRepositoryV2) { RelationshipRepositoryV2<?, ?, ?, ?> relRepository = (RelationshipRepositoryV2<?, ?, ?, ?>) repository; module.addRepository(relRepository.getSourceResourceClass(), relRepository.getTargetResourceClass(), relRepository); } else { throw new IllegalStateException(repository.toString()); } }