We now expose reactive interfaces to facilitate reactive repository support in store-specific modules. Spring Data modules are free to implement their reactive support using either RxJava 1 or Project Reactor (Reactive Streams). We expose a set of base interfaces: * `ReactiveCrudRepository` * `ReactiveSortingRepository` * `RxJava1CrudRepository` * `RxJava1SortingRepository` Reactive repositories provide a similar feature coverage to blocking repositories. Reactive paging support is limited to a `Mono<Page>`/`Single<Page>`. Data is fetched in a deferred way to provide a paging experience similar to blocking paging. A store module can choose either Project Reactor or RxJava 1 to implement reactive repository support. Project Reactor and RxJava types are converted in both directions allowing repositories to be composed of Project Reactor and RxJava 1 query methods. Reactive wrapper type conversion handles wrapper type conversion at repository level. Query/implementation method selection uses multi-pass candidate selection to invoke the most appropriate method (exact arguments, convertible wrappers, assignable arguments). We also provide ReactiveWrappers to expose metadata about reactive types and their value multiplicity.
332 lines
7.9 KiB
XML
332 lines
7.9 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
|
|
<modelVersion>4.0.0</modelVersion>
|
|
|
|
<groupId>org.springframework.data</groupId>
|
|
<artifactId>spring-data-commons</artifactId>
|
|
<version>2.0.0.BUILD-SNAPSHOT</version>
|
|
|
|
<name>Spring Data Core</name>
|
|
|
|
<parent>
|
|
<groupId>org.springframework.data.build</groupId>
|
|
<artifactId>spring-data-parent</artifactId>
|
|
<version>2.0.0.BUILD-SNAPSHOT</version>
|
|
</parent>
|
|
|
|
<properties>
|
|
<scala>2.11.7</scala>
|
|
<reactor>2.5.0.M2</reactor>
|
|
<xmlbeam>1.4.8</xmlbeam>
|
|
</properties>
|
|
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-core</artifactId>
|
|
<exclusions>
|
|
<exclusion>
|
|
<groupId>commons-logging</groupId>
|
|
<artifactId>commons-logging</artifactId>
|
|
</exclusion>
|
|
</exclusions>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-beans</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-context</artifactId>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-expression</artifactId>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-tx</artifactId>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-oxm</artifactId>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.fasterxml.jackson.core</groupId>
|
|
<artifactId>jackson-databind</artifactId>
|
|
<version>${jackson}</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-web</artifactId>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>javax.servlet</groupId>
|
|
<artifactId>javax.servlet-api</artifactId>
|
|
<version>3.0.1</version>
|
|
<scope>provided</scope>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>javax.annotation</groupId>
|
|
<artifactId>jsr250-api</artifactId>
|
|
<version>1.0</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>joda-time</groupId>
|
|
<artifactId>joda-time</artifactId>
|
|
<version>${jodatime}</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.threeten</groupId>
|
|
<artifactId>threetenbp</artifactId>
|
|
<version>${threetenbp}</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<!-- Project Reactor -->
|
|
|
|
<dependency>
|
|
<groupId>io.projectreactor</groupId>
|
|
<artifactId>reactor-core</artifactId>
|
|
<version>${reactor}</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<!-- RxJava -->
|
|
|
|
<dependency>
|
|
<groupId>io.reactivex</groupId>
|
|
<artifactId>rxjava</artifactId>
|
|
<version>${rxjava}</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<!-- Querydsl -->
|
|
|
|
<dependency>
|
|
<groupId>com.querydsl</groupId>
|
|
<artifactId>querydsl-core</artifactId>
|
|
<version>${querydsl}</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>com.querydsl</groupId>
|
|
<artifactId>querydsl-apt</artifactId>
|
|
<version>${querydsl}</version>
|
|
<scope>provided</scope>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>com.querydsl</groupId>
|
|
<artifactId>querydsl-collections</artifactId>
|
|
<version>${querydsl}</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<!-- EJB Transactions -->
|
|
<dependency>
|
|
<groupId>javax.ejb</groupId>
|
|
<artifactId>ejb-api</artifactId>
|
|
<version>3.0</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<!-- CDI -->
|
|
<dependency>
|
|
<groupId>javax.enterprise</groupId>
|
|
<artifactId>cdi-api</artifactId>
|
|
<version>${cdi}</version>
|
|
<scope>provided</scope>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>com.google.guava</groupId>
|
|
<artifactId>guava</artifactId>
|
|
<version>${guava}</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>javax.el</groupId>
|
|
<artifactId>el-api</artifactId>
|
|
<version>${cdi}</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.apache.openwebbeans.test</groupId>
|
|
<artifactId>cditest-owb</artifactId>
|
|
<version>${webbeans}</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.springframework.hateoas</groupId>
|
|
<artifactId>spring-hateoas</artifactId>
|
|
<version>${spring-hateoas}</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-webmvc</artifactId>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>com.sun.xml.bind</groupId>
|
|
<artifactId>jaxb-impl</artifactId>
|
|
<version>2.2.3U1</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>xmlunit</groupId>
|
|
<artifactId>xmlunit</artifactId>
|
|
<version>1.6</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
|
|
<!-- Groovy -->
|
|
<dependency>
|
|
<groupId>org.codehaus.groovy</groupId>
|
|
<artifactId>groovy-all</artifactId>
|
|
<version>2.4.4</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
|
|
<!-- Scala -->
|
|
<dependency>
|
|
<groupId>org.scala-lang</groupId>
|
|
<artifactId>scala-library</artifactId>
|
|
<version>${scala}</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>javax.transaction</groupId>
|
|
<artifactId>javax.transaction-api</artifactId>
|
|
<version>1.2</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>com.jayway.jsonpath</groupId>
|
|
<artifactId>json-path</artifactId>
|
|
<version>${jsonpath}</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.xmlbeam</groupId>
|
|
<artifactId>xmlprojector</artifactId>
|
|
<version>${xmlbeam}</version>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
|
|
</dependencies>
|
|
|
|
<build>
|
|
<plugins>
|
|
|
|
<plugin>
|
|
<groupId>com.mysema.maven</groupId>
|
|
<artifactId>apt-maven-plugin</artifactId>
|
|
<version>${apt}</version>
|
|
<executions>
|
|
<execution>
|
|
<phase>generate-test-sources</phase>
|
|
<goals>
|
|
<goal>test-process</goal>
|
|
</goals>
|
|
<configuration>
|
|
<outputDirectory>${project.build.directory}/generated-sources/test-annotations</outputDirectory>
|
|
<processor>com.querydsl.apt.QuerydslAnnotationProcessor</processor>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-enforcer-plugin</artifactId>
|
|
<version>1.3.1</version>
|
|
<executions>
|
|
<execution>
|
|
<id>enforce-rules</id>
|
|
<goals>
|
|
<goal>enforce</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
<configuration>
|
|
<rules>
|
|
<requireJavaVersion>
|
|
<version>[1.8,1.9)</version>
|
|
</requireJavaVersion>
|
|
</rules>
|
|
</configuration>
|
|
</plugin>
|
|
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-assembly-plugin</artifactId>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<artifactId>wagon-maven-plugin</artifactId>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.asciidoctor</groupId>
|
|
<artifactId>asciidoctor-maven-plugin</artifactId>
|
|
</plugin>
|
|
|
|
</plugins>
|
|
</build>
|
|
|
|
<profiles>
|
|
<profile>
|
|
<id>release</id>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.jfrog.buildinfo</groupId>
|
|
<artifactId>artifactory-maven-plugin</artifactId>
|
|
<inherited>false</inherited>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</profile>
|
|
</profiles>
|
|
|
|
<repositories>
|
|
<repository>
|
|
<id>spring-libs-snapshot</id>
|
|
<url>https://repo.spring.io/libs-snapshot</url>
|
|
</repository>
|
|
</repositories>
|
|
|
|
<pluginRepositories>
|
|
<pluginRepository>
|
|
<id>spring-plugins-release</id>
|
|
<url>https://repo.spring.io/plugins-release</url>
|
|
</pluginRepository>
|
|
</pluginRepositories>
|
|
|
|
</project>
|