diff --git a/build.gradle b/build.gradle
index 330e8355..fc664c7e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -67,6 +67,7 @@ subprojects {
dependency 'javax.servlet:javax.servlet-api:3.1.0'
dependency 'javax.validation:validation-api:1.1.0.Final'
dependency 'junit:junit:4.12'
+ dependency 'org.asciidoctor:asciidoctorj:1.5.3.1'
dependency 'org.hamcrest:hamcrest-core:1.3'
dependency 'org.hamcrest:hamcrest-library:1.3'
dependency 'org.hibernate:hibernate-validator:5.2.2.Final'
diff --git a/docs/src/docs/asciidoc/getting-started.adoc b/docs/src/docs/asciidoc/getting-started.adoc
index 9b0040ab..a282bf46 100644
--- a/docs/src/docs/asciidoc/getting-started.adoc
+++ b/docs/src/docs/asciidoc/getting-started.adoc
@@ -94,13 +94,9 @@ the configuration are described below.
test
- <2>
- ${project.build.directory}/generated-snippets
-
-
- <3>
+ <2>
org.apache.maven.plugins
maven-surefire-plugin
@@ -109,26 +105,30 @@ the configuration are described below.
- <4>
+ <3>
org.asciidoctor
asciidoctor-maven-plugin
- 1.5.2
+ 1.5.3
generate-docs
- prepare-package <6>
+ prepare-package <4>
process-asciidoc
html
book
-
- ${snippetsDirectory} <5>
-
+
+ <5>
+ org.springframework.restdocs
+ spring-restdocs-asciidoctor
+ {project-version}
+
+
@@ -136,49 +136,50 @@ the configuration are described below.
<1> Add a dependency on `spring-restdocs-mockmvc` in the `test` scope. If you want to use
REST Assured rather than MockMvc, add a dependency on `spring-restdocs-restassured`
instead.
-<2> Configure a property to define the output location for generated snippets.
-<3> Add the SureFire plugin and configure it to include files whose names end with
+<2> Add the SureFire plugin and configure it to include files whose names end with
`Documentation.java`.
-<4> Add the Asciidoctor plugin
-<5> Define an attribute named `snippets` that can be used when including the generated
- snippets in your documentation.
-<6> Using `prepare-package` allows the documentation to be
+<3> Add the Asciidoctor plugin.
+<4> Using `prepare-package` allows the documentation to be
<>.
+<5> Add `spring-restdocs-asciidoctor` as a dependency of the Asciidoctor plugin. This
+ will automatically configure the `snippets` attribute for use in your `.adoc` files to
+ point to `target/generated-snippets`.
[source,groovy,indent=0,subs="verbatim,attributes",role="secondary"]
.Gradle
----
plugins { <1>
- id "org.asciidoctor.convert" version "1.5.2"
+ id "org.asciidoctor.convert" version "1.5.3"
}
- dependencies { <2>
- testCompile 'org.springframework.restdocs:spring-restdocs-mockmvc:{project-version}'
+ dependencies {
+ asciidoctor 'org.springframework.restdocs:spring-restdocs-asciidoctor:{project-version}' <2>
+ testCompile 'org.springframework.restdocs:spring-restdocs-mockmvc:{project-version}' <3>
}
- ext { <3>
+ ext { <4>
snippetsDir = file('build/generated-snippets')
}
- test { <4>
+ test { <5>
outputs.dir snippetsDir
}
- asciidoctor { <5>
- attributes 'snippets': snippetsDir <6>
+ asciidoctor { <6>
inputs.dir snippetsDir <7>
dependsOn test <8>
}
----
<1> Apply the Asciidoctor plugin.
-<2> Add a dependency on `spring-restdocs-mockmvc` in the `testCompile` configuration. If
+<2> Add a dependency on `spring-restdocs-asciidoctor` in the `asciidoctor` configuration.
+ This will automatically configure the `snippets` attribute for use in your `.adoc`
+ files to point to `build/generated-snippets`.
+<3> Add a dependency on `spring-restdocs-mockmvc` in the `testCompile` configuration. If
you want to use REST Assured rather than MockMvc, add a dependency on
`spring-restdocs-restassured` instead.
-<3> Configure a property to define the output location for generated snippets.
-<4> Configure the `test` task to add the snippets directory as an output.
-<5> Configure the `asciidoctor` task
-<6> Define an attribute named `snippets` that can be used when including the generated
- snippets in your documentation.
+<4> Configure a property to define the output location for generated snippets.
+<5> Configure the `test` task to add the snippets directory as an output.
+<6> Configure the `asciidoctor` task
<7> Configure the snippets directory as an input.
<8> Make the task depend on the test task so that the tests are run before the
documentation is created.
@@ -271,28 +272,38 @@ are also supported although slightly more setup is required.
===== Setting up your JUnit tests
When using JUnit, the first step in generating documentation snippets is to declare a
-`public` `JUnitRestDocumentation` field that's annotated as a JUnit `@Rule`. The
-`JUnitRestDocumentation` rule is configured with the output directory into which generated
-snippets should be written. This output directory should match the snippets directory that
-you have configured in your `build.gradle` or `pom.xml` file.
+`public` `JUnitRestDocumentation` field that's annotated as a JUnit `@Rule`.
-For Maven (`pom.xml`) that will typically be `target/generated-snippets` and for
-Gradle (`build.gradle`) it will typically be `build/generated-snippets`:
-[source,java,indent=0,role="primary"]
-.Maven
+[source,java,indent=0]
----
@Rule
-public JUnitRestDocumentation restDocumentation =
- new JUnitRestDocumentation("target/generated-snippets");
+public JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
----
-[source,java,indent=0,role="secondary"]
-.Gradle
+
+By default, the `JUnitRestDocumentation` rule is automatically configured with an output
+directory based on your project's build tool:
+
+[cols="2,5"]
+|===
+| Build tool | Output directory
+
+| Maven
+| `target/generated-snippets`
+
+| Gradle
+| `build/generated-snippets`
+
+|===
+
+The default can be overridden by providing an output directory when creating the
+`JUnitRestDocumentation` instance:
+
+[source,java,indent=0]
----
@Rule
-public JUnitRestDocumentation restDocumentation =
- new JUnitRestDocumentation("build/generated-snippets");
+public JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("custom");
----
Next, provide an `@Before` method to configure MockMvc or REST Assured:
@@ -331,18 +342,9 @@ illustrates the approach.
The first difference is that `ManualRestDocumentation` should be used in place of
`JUnitRestDocumentation` and there's no need for the `@Rule` annotation:
-[source,java,indent=0,role="primary"]
-.Maven
+[source,java,indent=0]
----
-private ManualRestDocumentation restDocumentation =
- new ManualRestDocumentation("target/generated-snippets");
-----
-
-[source,java,indent=0,role="secondary"]
-.Gradle
-----
-private ManualRestDocumentation restDocumentation =
- new ManualRestDocumentation("build/generated-snippets");
+private ManualRestDocumentation restDocumentation = new ManualRestDocumentation();
----
Secondly, `ManualRestDocumentation.beforeTest(Class, String)`
@@ -441,7 +443,8 @@ the resulting HTML files depends on whether you are using Maven or Gradle:
The generated snippets can then be included in the manually created Asciidoctor file from
above using the
http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/#include-files[include macro].
-The `snippets` attribute specified in the <> can be used to reference the snippets output directory. For example:
[source,adoc,indent=0]
diff --git a/docs/src/docs/asciidoc/working-with-asciidoctor.adoc b/docs/src/docs/asciidoc/working-with-asciidoctor.adoc
index b3981dfe..283afcdf 100644
--- a/docs/src/docs/asciidoc/working-with-asciidoctor.adoc
+++ b/docs/src/docs/asciidoc/working-with-asciidoctor.adoc
@@ -17,10 +17,11 @@ relevant to Spring REST Docs.
[[working-with-asciidoctor-including-snippets]]
=== Including snippets
-The http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/#include-files[include
+The http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/#include-files[include
macro] is used to include generated snippets in your documentation. The `snippets`
-attribute specified in the <>
-can be used to reference the snippets output directory, for example:
+attribute that is automatically set by `spring-restdocs-asciidoctor` configured in the
+<> can be used to reference the
+snippets output directory. For example:
[source,adoc,indent=0]
----
diff --git a/docs/src/test/java/com/example/mockmvc/CustomDefaultSnippets.java b/docs/src/test/java/com/example/mockmvc/CustomDefaultSnippets.java
index 6c974927..1644912e 100644
--- a/docs/src/test/java/com/example/mockmvc/CustomDefaultSnippets.java
+++ b/docs/src/test/java/com/example/mockmvc/CustomDefaultSnippets.java
@@ -31,8 +31,7 @@ import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.docu
public class CustomDefaultSnippets {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation(
- "build");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@Autowired
private WebApplicationContext context;
diff --git a/docs/src/test/java/com/example/mockmvc/CustomEncoding.java b/docs/src/test/java/com/example/mockmvc/CustomEncoding.java
index 0351216a..86bbe0da 100644
--- a/docs/src/test/java/com/example/mockmvc/CustomEncoding.java
+++ b/docs/src/test/java/com/example/mockmvc/CustomEncoding.java
@@ -29,7 +29,7 @@ import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.docu
public class CustomEncoding {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@Autowired
private WebApplicationContext context;
diff --git a/docs/src/test/java/com/example/mockmvc/CustomFormat.java b/docs/src/test/java/com/example/mockmvc/CustomFormat.java
index b0cae3b1..1e85a49a 100644
--- a/docs/src/test/java/com/example/mockmvc/CustomFormat.java
+++ b/docs/src/test/java/com/example/mockmvc/CustomFormat.java
@@ -30,7 +30,7 @@ import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.docu
public class CustomFormat {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@Autowired
private WebApplicationContext context;
diff --git a/docs/src/test/java/com/example/mockmvc/CustomUriConfiguration.java b/docs/src/test/java/com/example/mockmvc/CustomUriConfiguration.java
index bc3e0e75..d71549a8 100644
--- a/docs/src/test/java/com/example/mockmvc/CustomUriConfiguration.java
+++ b/docs/src/test/java/com/example/mockmvc/CustomUriConfiguration.java
@@ -29,7 +29,7 @@ import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.docu
public class CustomUriConfiguration {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@Autowired
private WebApplicationContext context;
diff --git a/docs/src/test/java/com/example/mockmvc/EveryTestPreprocessing.java b/docs/src/test/java/com/example/mockmvc/EveryTestPreprocessing.java
index 31d88354..934a353e 100644
--- a/docs/src/test/java/com/example/mockmvc/EveryTestPreprocessing.java
+++ b/docs/src/test/java/com/example/mockmvc/EveryTestPreprocessing.java
@@ -38,8 +38,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
public class EveryTestPreprocessing {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation(
- "target/generated-snippets");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
private WebApplicationContext context;
diff --git a/docs/src/test/java/com/example/mockmvc/ExampleApplicationTestNgTests.java b/docs/src/test/java/com/example/mockmvc/ExampleApplicationTestNgTests.java
index fac8c5ca..5bec235e 100644
--- a/docs/src/test/java/com/example/mockmvc/ExampleApplicationTestNgTests.java
+++ b/docs/src/test/java/com/example/mockmvc/ExampleApplicationTestNgTests.java
@@ -30,8 +30,7 @@ import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.docu
public class ExampleApplicationTestNgTests {
- public final ManualRestDocumentation restDocumentation = new ManualRestDocumentation(
- "target/generated-snippets");
+ public final ManualRestDocumentation restDocumentation = new ManualRestDocumentation();
@SuppressWarnings("unused")
// tag::setup[]
private MockMvc mockMvc;
diff --git a/docs/src/test/java/com/example/mockmvc/ExampleApplicationTests.java b/docs/src/test/java/com/example/mockmvc/ExampleApplicationTests.java
index 21afd53d..61a36118 100644
--- a/docs/src/test/java/com/example/mockmvc/ExampleApplicationTests.java
+++ b/docs/src/test/java/com/example/mockmvc/ExampleApplicationTests.java
@@ -30,8 +30,7 @@ import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.docu
public class ExampleApplicationTests {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation(
- "target/generated-snippets");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@SuppressWarnings("unused")
// tag::setup[]
diff --git a/docs/src/test/java/com/example/mockmvc/ParameterizedOutput.java b/docs/src/test/java/com/example/mockmvc/ParameterizedOutput.java
index d39102bf..3011f416 100644
--- a/docs/src/test/java/com/example/mockmvc/ParameterizedOutput.java
+++ b/docs/src/test/java/com/example/mockmvc/ParameterizedOutput.java
@@ -29,7 +29,7 @@ import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.docu
public class ParameterizedOutput {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@SuppressWarnings("unused")
private MockMvc mockMvc;
diff --git a/docs/src/test/java/com/example/restassured/CustomDefaultSnippets.java b/docs/src/test/java/com/example/restassured/CustomDefaultSnippets.java
index 27512e64..39544db0 100644
--- a/docs/src/test/java/com/example/restassured/CustomDefaultSnippets.java
+++ b/docs/src/test/java/com/example/restassured/CustomDefaultSnippets.java
@@ -29,8 +29,7 @@ import static org.springframework.restdocs.restassured.RestAssuredRestDocumentat
public class CustomDefaultSnippets {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation(
- "build");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@SuppressWarnings("unused")
private RequestSpecification spec;
diff --git a/docs/src/test/java/com/example/restassured/CustomEncoding.java b/docs/src/test/java/com/example/restassured/CustomEncoding.java
index 6e5c6e86..caa2d623 100644
--- a/docs/src/test/java/com/example/restassured/CustomEncoding.java
+++ b/docs/src/test/java/com/example/restassured/CustomEncoding.java
@@ -28,7 +28,7 @@ import static org.springframework.restdocs.restassured.RestAssuredRestDocumentat
public class CustomEncoding {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@SuppressWarnings("unused")
private RequestSpecification spec;
diff --git a/docs/src/test/java/com/example/restassured/CustomFormat.java b/docs/src/test/java/com/example/restassured/CustomFormat.java
index c0d8adb7..8f6cf4ab 100644
--- a/docs/src/test/java/com/example/restassured/CustomFormat.java
+++ b/docs/src/test/java/com/example/restassured/CustomFormat.java
@@ -29,7 +29,7 @@ import static org.springframework.restdocs.restassured.RestAssuredRestDocumentat
public class CustomFormat {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@SuppressWarnings("unused")
private RequestSpecification spec;
diff --git a/docs/src/test/java/com/example/restassured/EveryTestPreprocessing.java b/docs/src/test/java/com/example/restassured/EveryTestPreprocessing.java
index 43ef84e7..c31cf228 100644
--- a/docs/src/test/java/com/example/restassured/EveryTestPreprocessing.java
+++ b/docs/src/test/java/com/example/restassured/EveryTestPreprocessing.java
@@ -38,8 +38,7 @@ import static org.springframework.restdocs.restassured.RestAssuredRestDocumentat
public class EveryTestPreprocessing {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation(
- "target/generated-snippets");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
// tag::setup[]
private RequestSpecification spec;
diff --git a/docs/src/test/java/com/example/restassured/ExampleApplicationTestNgTests.java b/docs/src/test/java/com/example/restassured/ExampleApplicationTestNgTests.java
index aa0a5796..aa91cd4e 100644
--- a/docs/src/test/java/com/example/restassured/ExampleApplicationTestNgTests.java
+++ b/docs/src/test/java/com/example/restassured/ExampleApplicationTestNgTests.java
@@ -29,8 +29,7 @@ import static org.springframework.restdocs.restassured.RestAssuredRestDocumentat
public class ExampleApplicationTestNgTests {
- private final ManualRestDocumentation restDocumentation = new ManualRestDocumentation(
- "build/generated-snippets");
+ private final ManualRestDocumentation restDocumentation = new ManualRestDocumentation();
@SuppressWarnings("unused")
// tag::setup[]
diff --git a/docs/src/test/java/com/example/restassured/ExampleApplicationTests.java b/docs/src/test/java/com/example/restassured/ExampleApplicationTests.java
index c7b8d774..7133906c 100644
--- a/docs/src/test/java/com/example/restassured/ExampleApplicationTests.java
+++ b/docs/src/test/java/com/example/restassured/ExampleApplicationTests.java
@@ -28,8 +28,7 @@ import static org.springframework.restdocs.restassured.RestAssuredRestDocumentat
public class ExampleApplicationTests {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation(
- "build/generated-snippets");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@SuppressWarnings("unused")
// tag::setup[]
diff --git a/docs/src/test/java/com/example/restassured/ParameterizedOutput.java b/docs/src/test/java/com/example/restassured/ParameterizedOutput.java
index 88db51d8..e5f2ce47 100644
--- a/docs/src/test/java/com/example/restassured/ParameterizedOutput.java
+++ b/docs/src/test/java/com/example/restassured/ParameterizedOutput.java
@@ -29,8 +29,7 @@ import static org.springframework.restdocs.restassured.RestAssuredRestDocumentat
public class ParameterizedOutput {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation(
- "build/generated-snippets");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@SuppressWarnings("unused")
private RequestSpecification spec;
diff --git a/samples/rest-assured/build.gradle b/samples/rest-assured/build.gradle
index ea67c861..b8776d37 100644
--- a/samples/rest-assured/build.gradle
+++ b/samples/rest-assured/build.gradle
@@ -37,6 +37,7 @@ dependencies {
compile 'org.springframework.boot:spring-boot-starter-web'
testCompile 'org.springframework.boot:spring-boot-starter-test'
testCompile "org.springframework.restdocs:spring-restdocs-restassured:${project.ext['spring-restdocs.version']}"
+ asciidoctor "org.springframework.restdocs:spring-restdocs-asciidoctor:${project.ext['spring-restdocs.version']}"
}
test {
@@ -44,7 +45,6 @@ test {
}
asciidoctor {
- attributes 'snippets': snippetsDir
inputs.dir snippetsDir
dependsOn test
}
diff --git a/samples/rest-assured/src/test/java/com/example/restassured/SampleRestAssuredApplicationTests.java b/samples/rest-assured/src/test/java/com/example/restassured/SampleRestAssuredApplicationTests.java
index 92ef6374..6eea9876 100644
--- a/samples/rest-assured/src/test/java/com/example/restassured/SampleRestAssuredApplicationTests.java
+++ b/samples/rest-assured/src/test/java/com/example/restassured/SampleRestAssuredApplicationTests.java
@@ -42,7 +42,7 @@ import com.jayway.restassured.specification.RequestSpecification;
public class SampleRestAssuredApplicationTests {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/generated-snippets");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
private RequestSpecification documentationSpec;
diff --git a/samples/rest-notes-grails/.gitignore b/samples/rest-notes-grails/.gitignore
index a521ca89..18afeb78 100644
--- a/samples/rest-notes-grails/.gitignore
+++ b/samples/rest-notes-grails/.gitignore
@@ -11,7 +11,4 @@ classes/
.settings
.classpath
gradlew*
-gradle/wrapper
-
-
-src/docs/generated-snippets
+gradle/wrapper
\ No newline at end of file
diff --git a/samples/rest-notes-grails/build.gradle b/samples/rest-notes-grails/build.gradle
index 52ef8395..64e2e6d8 100644
--- a/samples/rest-notes-grails/build.gradle
+++ b/samples/rest-notes-grails/build.gradle
@@ -44,6 +44,7 @@ repositories {
dependencyManagement {
dependencies {
dependency "org.springframework.restdocs:spring-restdocs-restassured:$restDocsVersion"
+ dependency "org.springframework.restdocs:spring-restdocs-asciidoctor:$restDocsVersion"
}
imports {
mavenBom "org.grails:grails-bom:$grailsVersion"
@@ -53,6 +54,8 @@ dependencyManagement {
}
dependencies {
+ asciidoctor "org.springframework.restdocs:spring-restdocs-asciidoctor"
+
compile "org.springframework.boot:spring-boot-starter-logging"
compile "org.springframework.boot:spring-boot-starter-actuator"
compile "org.springframework.boot:spring-boot-autoconfigure"
@@ -85,24 +88,16 @@ task wrapper(type: Wrapper) {
}
ext {
- snippetsDir = file('src/docs/generated-snippets')
-}
-
-task cleanTempDirs(type: Delete) {
- delete fileTree(dir: 'src/docs/generated-snippets')
+ snippetsDir = file('build/generated-snippets')
}
test {
- dependsOn cleanTempDirs
outputs.dir snippetsDir
}
asciidoctor {
dependsOn integrationTest
inputs.dir snippetsDir
- sourceDir = file('src/docs')
- separateOutputDirs = false
- attributes 'snippets': snippetsDir
}
build.dependsOn asciidoctor
diff --git a/samples/rest-notes-grails/src/docs/index.adoc b/samples/rest-notes-grails/src/docs/asciidoc/index.adoc
similarity index 100%
rename from samples/rest-notes-grails/src/docs/index.adoc
rename to samples/rest-notes-grails/src/docs/asciidoc/index.adoc
diff --git a/samples/rest-notes-grails/src/integration-test/groovy/com/example/ApiDocumentationSpec.groovy b/samples/rest-notes-grails/src/integration-test/groovy/com/example/ApiDocumentationSpec.groovy
index 3f0da9ca..2c014fc0 100644
--- a/samples/rest-notes-grails/src/integration-test/groovy/com/example/ApiDocumentationSpec.groovy
+++ b/samples/rest-notes-grails/src/integration-test/groovy/com/example/ApiDocumentationSpec.groovy
@@ -45,7 +45,7 @@ import spock.lang.Specification
class ApiDocumentationSpec extends Specification {
@Rule
- JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation('src/docs/generated-snippets')
+ JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation()
@Value('${local.server.port}')
Integer serverPort
diff --git a/samples/rest-notes-slate/src/test/java/com/example/notes/ApiDocumentation.java b/samples/rest-notes-slate/src/test/java/com/example/notes/ApiDocumentation.java
index d4ea4ca0..61564aca 100644
--- a/samples/rest-notes-slate/src/test/java/com/example/notes/ApiDocumentation.java
+++ b/samples/rest-notes-slate/src/test/java/com/example/notes/ApiDocumentation.java
@@ -61,7 +61,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
public class ApiDocumentation {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/generated-snippets");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@Autowired
private NoteRepository noteRepository;
diff --git a/samples/rest-notes-spring-data-rest/pom.xml b/samples/rest-notes-spring-data-rest/pom.xml
index cae3b9a8..022c1922 100644
--- a/samples/rest-notes-spring-data-rest/pom.xml
+++ b/samples/rest-notes-spring-data-rest/pom.xml
@@ -84,12 +84,16 @@
html
book
-
- ${project.build.directory}/generated-snippets
-
+
+
+ org.springframework.restdocs
+ spring-restdocs-asciidoctor
+ ${spring-restdocs.version}
+
+
maven-resources-plugin
diff --git a/samples/rest-notes-spring-data-rest/src/test/java/com/example/notes/ApiDocumentation.java b/samples/rest-notes-spring-data-rest/src/test/java/com/example/notes/ApiDocumentation.java
index 2db8fcb4..82a30e34 100644
--- a/samples/rest-notes-spring-data-rest/src/test/java/com/example/notes/ApiDocumentation.java
+++ b/samples/rest-notes-spring-data-rest/src/test/java/com/example/notes/ApiDocumentation.java
@@ -61,7 +61,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
public class ApiDocumentation {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("target/generated-snippets");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@Autowired
private NoteRepository noteRepository;
diff --git a/samples/rest-notes-spring-data-rest/src/test/java/com/example/notes/GettingStartedDocumentation.java b/samples/rest-notes-spring-data-rest/src/test/java/com/example/notes/GettingStartedDocumentation.java
index 29418eb1..407a8119 100644
--- a/samples/rest-notes-spring-data-rest/src/test/java/com/example/notes/GettingStartedDocumentation.java
+++ b/samples/rest-notes-spring-data-rest/src/test/java/com/example/notes/GettingStartedDocumentation.java
@@ -58,7 +58,7 @@ import com.jayway.jsonpath.JsonPath;
public class GettingStartedDocumentation {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("target/generated-snippets");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@Autowired
private ObjectMapper objectMapper;
diff --git a/samples/rest-notes-spring-hateoas/build.gradle b/samples/rest-notes-spring-hateoas/build.gradle
index 89a45741..a44f3f94 100644
--- a/samples/rest-notes-spring-hateoas/build.gradle
+++ b/samples/rest-notes-spring-hateoas/build.gradle
@@ -34,6 +34,8 @@ ext['spring.version']='4.3.1.RELEASE'
ext['spring-restdocs.version'] = '1.2.0.BUILD-SNAPSHOT'
dependencies {
+ asciidoctor "org.springframework.restdocs:spring-restdocs-asciidoctor:${project.ext['spring-restdocs.version']}"
+
compile 'org.springframework.boot:spring-boot-starter-data-jpa'
compile 'org.springframework.boot:spring-boot-starter-hateoas'
@@ -50,7 +52,6 @@ test {
}
asciidoctor {
- attributes 'snippets': snippetsDir
inputs.dir snippetsDir
dependsOn test
}
diff --git a/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/ApiDocumentation.java b/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/ApiDocumentation.java
index b3cbb58f..f6345840 100644
--- a/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/ApiDocumentation.java
+++ b/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/ApiDocumentation.java
@@ -70,7 +70,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
public class ApiDocumentation {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/generated-snippets");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
private RestDocumentationResultHandler documentationHandler;
diff --git a/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/GettingStartedDocumentation.java b/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/GettingStartedDocumentation.java
index 9531e583..e147deeb 100644
--- a/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/GettingStartedDocumentation.java
+++ b/samples/rest-notes-spring-hateoas/src/test/java/com/example/notes/GettingStartedDocumentation.java
@@ -61,7 +61,7 @@ import com.jayway.jsonpath.JsonPath;
public class GettingStartedDocumentation {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("build/generated-snippets");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@Autowired
private ObjectMapper objectMapper;
diff --git a/samples/testng/build.gradle b/samples/testng/build.gradle
index b0be8697..3be74243 100644
--- a/samples/testng/build.gradle
+++ b/samples/testng/build.gradle
@@ -34,7 +34,10 @@ ext['spring.version']='4.3.1.RELEASE'
ext['spring-restdocs.version'] = '1.2.0.BUILD-SNAPSHOT'
dependencies {
+ asciidoctor "org.springframework.restdocs:spring-restdocs-asciidoctor:${project.ext['spring-restdocs.version']}"
+
compile 'org.springframework.boot:spring-boot-starter-web'
+
testCompile('org.springframework:spring-test') {
exclude group: 'junit', module: 'junit;'
}
@@ -48,7 +51,6 @@ test {
}
asciidoctor {
- attributes 'snippets': snippetsDir
inputs.dir snippetsDir
dependsOn test
}
diff --git a/samples/testng/src/test/java/com/example/testng/SampleTestNgApplicationTests.java b/samples/testng/src/test/java/com/example/testng/SampleTestNgApplicationTests.java
index b49883b2..9c4a9c9b 100644
--- a/samples/testng/src/test/java/com/example/testng/SampleTestNgApplicationTests.java
+++ b/samples/testng/src/test/java/com/example/testng/SampleTestNgApplicationTests.java
@@ -39,7 +39,7 @@ import org.testng.annotations.Test;
@WebAppConfiguration
public class SampleTestNgApplicationTests extends AbstractTestNGSpringContextTests {
- private final ManualRestDocumentation restDocumentation = new ManualRestDocumentation("build/generated-snippets");
+ private final ManualRestDocumentation restDocumentation = new ManualRestDocumentation();
@Autowired
private WebApplicationContext context;
diff --git a/settings.gradle b/settings.gradle
index 8d6619a1..94b5f9b1 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,6 +1,7 @@
rootProject.name = 'spring-restdocs'
include 'docs'
+include 'spring-restdocs-asciidoctor'
include 'spring-restdocs-core'
include 'spring-restdocs-mockmvc'
-include 'spring-restdocs-restassured'
\ No newline at end of file
+include 'spring-restdocs-restassured'
diff --git a/spring-restdocs-asciidoctor/build.gradle b/spring-restdocs-asciidoctor/build.gradle
new file mode 100644
index 00000000..6897242e
--- /dev/null
+++ b/spring-restdocs-asciidoctor/build.gradle
@@ -0,0 +1,7 @@
+description = 'Asciidoctor extensions for Spring REST Docs'
+
+dependencies {
+ compileOnly 'org.asciidoctor:asciidoctorj'
+ testCompile 'junit:junit'
+ testCompile 'org.asciidoctor:asciidoctorj'
+}
diff --git a/spring-restdocs-asciidoctor/src/main/java/org/springframework/restdocs/asciidoctor/DefaultAttributesPreprocessor.java b/spring-restdocs-asciidoctor/src/main/java/org/springframework/restdocs/asciidoctor/DefaultAttributesPreprocessor.java
new file mode 100644
index 00000000..7caa35f9
--- /dev/null
+++ b/spring-restdocs-asciidoctor/src/main/java/org/springframework/restdocs/asciidoctor/DefaultAttributesPreprocessor.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2014-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.restdocs.asciidoctor;
+
+import java.io.File;
+
+import org.asciidoctor.ast.Document;
+import org.asciidoctor.extension.Preprocessor;
+import org.asciidoctor.extension.PreprocessorReader;
+
+/**
+ * {@link Preprocessor} that sets defaults for REST Docs-related {@link Document}
+ * attributes.
+ *
+ * @author Andy Wilkinson
+ */
+final class DefaultAttributesPreprocessor extends Preprocessor {
+
+ private final SnippetsDirectoryResolver snippetsDirectoryResolver = new SnippetsDirectoryResolver(
+ new File("."));
+
+ @Override
+ public PreprocessorReader process(Document document, PreprocessorReader reader) {
+ document.setAttr("snippets", this.snippetsDirectoryResolver
+ .getSnippetsDirectory(document.getAttributes()), false);
+ return reader;
+ }
+
+}
diff --git a/spring-restdocs-asciidoctor/src/main/java/org/springframework/restdocs/asciidoctor/RestDocsExtensionRegistry.java b/spring-restdocs-asciidoctor/src/main/java/org/springframework/restdocs/asciidoctor/RestDocsExtensionRegistry.java
new file mode 100644
index 00000000..15bca154
--- /dev/null
+++ b/spring-restdocs-asciidoctor/src/main/java/org/springframework/restdocs/asciidoctor/RestDocsExtensionRegistry.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2014-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.restdocs.asciidoctor;
+
+import org.asciidoctor.Asciidoctor;
+import org.asciidoctor.extension.spi.ExtensionRegistry;
+
+/**
+ * Asciidoctor {@link ExtensionRegistry} for Spring REST Docs.
+ *
+ * @author Andy Wilkinson
+ */
+public final class RestDocsExtensionRegistry implements ExtensionRegistry {
+
+ @Override
+ public void register(Asciidoctor asciidoctor) {
+ asciidoctor.javaExtensionRegistry()
+ .preprocessor(new DefaultAttributesPreprocessor());
+ }
+
+}
diff --git a/spring-restdocs-asciidoctor/src/main/java/org/springframework/restdocs/asciidoctor/SnippetsDirectoryResolver.java b/spring-restdocs-asciidoctor/src/main/java/org/springframework/restdocs/asciidoctor/SnippetsDirectoryResolver.java
new file mode 100644
index 00000000..dd6829ad
--- /dev/null
+++ b/spring-restdocs-asciidoctor/src/main/java/org/springframework/restdocs/asciidoctor/SnippetsDirectoryResolver.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2014-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.restdocs.asciidoctor;
+
+import java.io.File;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Map;
+
+/**
+ * Resolves the directory from which snippets can be read for inclusion in an Asciidoctor
+ * document. The resolved directory is relative to the {@code docdir} of the Asciidoctor
+ * document that it being rendered.
+ *
+ * @author Andy Wilkinson
+ */
+class SnippetsDirectoryResolver {
+
+ private final File root;
+
+ SnippetsDirectoryResolver(File root) {
+ this.root = root;
+ }
+
+ File getSnippetsDirectory(Map attributes) {
+ if (new File(this.root, "pom.xml").exists()) {
+ return getMavenSnippetsDirectory(attributes);
+ }
+ return getGradleSnippetsDirectory(attributes);
+ }
+
+ private File getMavenSnippetsDirectory(Map attributes) {
+ Path rootPath = Paths.get(this.root.getAbsolutePath());
+ Path docDirPath = Paths.get((String) attributes.get("docdir"));
+ Path relativePath = docDirPath.relativize(rootPath);
+ return new File(relativePath.toFile(), "target/generated-snippets");
+ }
+
+ private File getGradleSnippetsDirectory(Map attributes) {
+ return new File((String) attributes.get("projectdir"),
+ "build/generated-snippets");
+ }
+
+}
diff --git a/spring-restdocs-asciidoctor/src/main/resources/META-INF/services/org.asciidoctor.extension.spi.ExtensionRegistry b/spring-restdocs-asciidoctor/src/main/resources/META-INF/services/org.asciidoctor.extension.spi.ExtensionRegistry
new file mode 100644
index 00000000..7c790a30
--- /dev/null
+++ b/spring-restdocs-asciidoctor/src/main/resources/META-INF/services/org.asciidoctor.extension.spi.ExtensionRegistry
@@ -0,0 +1 @@
+org.springframework.restdocs.asciidoctor.RestDocsExtensionRegistry
\ No newline at end of file
diff --git a/spring-restdocs-asciidoctor/src/test/java/org/springframework/restdocs/asciidoctor/DefaultAttributesPreprocessorTests.java b/spring-restdocs-asciidoctor/src/test/java/org/springframework/restdocs/asciidoctor/DefaultAttributesPreprocessorTests.java
new file mode 100644
index 00000000..699bb49a
--- /dev/null
+++ b/spring-restdocs-asciidoctor/src/test/java/org/springframework/restdocs/asciidoctor/DefaultAttributesPreprocessorTests.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2014-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.restdocs.asciidoctor;
+
+import org.asciidoctor.Asciidoctor;
+import org.asciidoctor.Attributes;
+import org.asciidoctor.Options;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Tests for {@link DefaultAttributesPreprocessor}.
+ *
+ * @author Andy Wilkinson
+ */
+public class DefaultAttributesPreprocessorTests {
+
+ @Test
+ public void snippetsAttributeIsSet() {
+ String converted = Asciidoctor.Factory.create().convert("{snippets}",
+ new Options());
+ assertThat(converted, containsString("build/generated-snippets"));
+ }
+
+ @Test
+ public void snippetsAttributeFromConvertArgumentIsNotOverridden() {
+ Options options = new Options();
+ options.setAttributes(new Attributes("snippets=custom"));
+ String converted = Asciidoctor.Factory.create().convert("{snippets}", options);
+ assertThat(converted, containsString("custom"));
+ }
+
+ @Test
+ public void snippetsAttributeFromDocumentPreambleIsNotOverridden() {
+ Options options = new Options();
+ options.setAttributes(new Attributes("snippets=custom"));
+ String converted = Asciidoctor.Factory.create()
+ .convert(":snippets: custom\n{snippets}", options);
+ assertThat(converted, containsString("custom"));
+ }
+
+}
diff --git a/spring-restdocs-asciidoctor/src/test/java/org/springframework/restdocs/asciidoctor/SnippetsDirectoryResolverTests.java b/spring-restdocs-asciidoctor/src/test/java/org/springframework/restdocs/asciidoctor/SnippetsDirectoryResolverTests.java
new file mode 100644
index 00000000..f998caf4
--- /dev/null
+++ b/spring-restdocs-asciidoctor/src/test/java/org/springframework/restdocs/asciidoctor/SnippetsDirectoryResolverTests.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2014-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.restdocs.asciidoctor;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Tests for {@link SnippetsDirectoryResolver}.
+ *
+ * @author Andy Wilkinson
+ */
+public class SnippetsDirectoryResolverTests {
+
+ @Rule
+ public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+ @Test
+ public void mavenProjectsUseTargetGeneratedSnippetsRelativeToDocDir()
+ throws IOException {
+ this.temporaryFolder.newFile("pom.xml");
+ Map attributes = new HashMap<>();
+ attributes.put("docdir",
+ new File(this.temporaryFolder.getRoot(), "src/main/asciidoc")
+ .getAbsolutePath());
+ File snippetsDirectory = new SnippetsDirectoryResolver(
+ this.temporaryFolder.getRoot()).getSnippetsDirectory(attributes);
+ assertThat(snippetsDirectory.isAbsolute(), is(false));
+ assertThat(snippetsDirectory,
+ equalTo(new File("../../../target/generated-snippets")));
+ }
+
+ @Test
+ public void gradleProjectsUseBuildGeneratedSnippetsBeneathProjectDir()
+ throws IOException {
+ Map attributes = new HashMap<>();
+ attributes.put("projectdir", "project/dir");
+ File snippetsDirectory = new SnippetsDirectoryResolver(
+ this.temporaryFolder.getRoot()).getSnippetsDirectory(attributes);
+ assertThat(snippetsDirectory,
+ equalTo(new File("project/dir/build/generated-snippets")));
+ }
+
+}
diff --git a/spring-restdocs-asciidoctor/src/test/resources/sample-snippet.adoc b/spring-restdocs-asciidoctor/src/test/resources/sample-snippet.adoc
new file mode 100644
index 00000000..0a3d1fa7
--- /dev/null
+++ b/spring-restdocs-asciidoctor/src/test/resources/sample-snippet.adoc
@@ -0,0 +1,4 @@
+[source,bash]
+----
+$ curl 'http://localhost:8080/' -i -H 'Accept: application/hal+json'
+----
\ No newline at end of file
diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/JUnitRestDocumentation.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/JUnitRestDocumentation.java
index 635b57f5..8825137e 100644
--- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/JUnitRestDocumentation.java
+++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/JUnitRestDocumentation.java
@@ -32,6 +32,14 @@ public class JUnitRestDocumentation
private final ManualRestDocumentation delegate;
+ /**
+ * Creates a new {@code JUnitRestDocumentation} instance that will generate snippets
+ * to <gradle/maven build path>/generated-snippet.
+ */
+ public JUnitRestDocumentation() {
+ this.delegate = new ManualRestDocumentation();
+ }
+
/**
* Creates a new {@code JUnitRestDocumentation} instance that will generate snippets
* to the given {@code outputDirectory}.
diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/ManualRestDocumentation.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/ManualRestDocumentation.java
index 890d9a4c..472832ff 100644
--- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/ManualRestDocumentation.java
+++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/ManualRestDocumentation.java
@@ -35,6 +35,14 @@ public final class ManualRestDocumentation implements RestDocumentationContextPr
private RestDocumentationContext context;
+ /**
+ * Creates a new {@code ManualRestDocumentation} instance that will generate snippets
+ * to <gradle/maven build path>/generated-snippet.
+ */
+ public ManualRestDocumentation() {
+ this(getDefaultOutputDirectory());
+ }
+
/**
* Creates a new {@code ManualRestDocumentation} instance that will generate snippets
* to the given {@code outputDirectory}.
@@ -42,7 +50,11 @@ public final class ManualRestDocumentation implements RestDocumentationContextPr
* @param outputDirectory the output directory
*/
public ManualRestDocumentation(String outputDirectory) {
- this.outputDirectory = new File(outputDirectory);
+ this(new File(outputDirectory));
+ }
+
+ private ManualRestDocumentation(File outputDirectory) {
+ this.outputDirectory = outputDirectory;
}
/**
@@ -79,4 +91,11 @@ public final class ManualRestDocumentation implements RestDocumentationContextPr
return this.context;
}
+ private static File getDefaultOutputDirectory() {
+ if (new File("pom.xml").exists()) {
+ return new File("target/generated-snippets");
+ }
+ return new File("build/generated-snippets");
+ }
+
}
diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/RestDocumentation.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/RestDocumentation.java
index 51c96aca..6018ed69 100644
--- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/RestDocumentation.java
+++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/RestDocumentation.java
@@ -32,6 +32,14 @@ public class RestDocumentation implements TestRule, RestDocumentationContextProv
private final JUnitRestDocumentation delegate;
+ /**
+ * Creates a new {@code RestDocumentation} instance that will generate snippets to the
+ * to <gradle/maven build path>/generated-snippet.
+ */
+ public RestDocumentation() {
+ this.delegate = new JUnitRestDocumentation();
+ }
+
/**
* Creates a new {@code RestDocumentation} instance that will generate snippets to the
* given {@code outputDirectory}.
diff --git a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationConfigurerTests.java b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationConfigurerTests.java
index 281c7616..0377ec0b 100644
--- a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationConfigurerTests.java
+++ b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationConfigurerTests.java
@@ -44,7 +44,7 @@ public class MockMvcRestDocumentationConfigurerTests {
private MockHttpServletRequest request = new MockHttpServletRequest();
@Rule
- public JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("test");
+ public JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@Test
public void defaultConfiguration() {
diff --git a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationIntegrationTests.java b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationIntegrationTests.java
index 2b2df2e8..5429591f 100644
--- a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationIntegrationTests.java
+++ b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationIntegrationTests.java
@@ -101,8 +101,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
public class MockMvcRestDocumentationIntegrationTests {
@Rule
- public JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation(
- "build/generated-snippets");
+ public JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@Autowired
private WebApplicationContext context;
diff --git a/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationConfigurerTests.java b/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationConfigurerTests.java
index 3417fbba..00d88930 100644
--- a/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationConfigurerTests.java
+++ b/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationConfigurerTests.java
@@ -47,8 +47,7 @@ import static org.mockito.Mockito.verify;
public class RestAssuredRestDocumentationConfigurerTests {
@Rule
- public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation(
- "build");
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
private final FilterableRequestSpecification requestSpec = mock(
FilterableRequestSpecification.class);
diff --git a/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationIntegrationTests.java b/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationIntegrationTests.java
index f81c91f3..d1089ecc 100644
--- a/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationIntegrationTests.java
+++ b/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationIntegrationTests.java
@@ -91,8 +91,7 @@ import static org.springframework.restdocs.test.SnippetMatchers.snippet;
public class RestAssuredRestDocumentationIntegrationTests {
@Rule
- public JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation(
- "build/generated-snippets");
+ public JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
@Value("${local.server.port}")
private int port;