diff --git a/config/checkstyle/checkstyle-suppressions.xml b/config/checkstyle/checkstyle-suppressions.xml
index f74d9234..2c9a1795 100644
--- a/config/checkstyle/checkstyle-suppressions.xml
+++ b/config/checkstyle/checkstyle-suppressions.xml
@@ -5,4 +5,5 @@
+
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/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-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/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/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/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..a31b3171 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,6 +1,7 @@
rootProject.name = 'spring-restdocs'
include 'docs'
+include 'spring-restdocs-asciidoctor-extensions'
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-extensions/build.gradle b/spring-restdocs-asciidoctor-extensions/build.gradle
new file mode 100644
index 00000000..4c24e8b3
--- /dev/null
+++ b/spring-restdocs-asciidoctor-extensions/build.gradle
@@ -0,0 +1,6 @@
+description = 'Spring REST Docs Asciidoctor Extensions'
+
+dependencies {
+ compile 'org.asciidoctor:asciidoctorj:1.5.2'
+ optional 'junit:junit'
+}
diff --git a/spring-restdocs-asciidoctor-extensions/src/main/java/org/springframework/restdocs/asciidoctor/extensions/RestDocsExtensionRegistry.java b/spring-restdocs-asciidoctor-extensions/src/main/java/org/springframework/restdocs/asciidoctor/extensions/RestDocsExtensionRegistry.java
new file mode 100644
index 00000000..82a8e60b
--- /dev/null
+++ b/spring-restdocs-asciidoctor-extensions/src/main/java/org/springframework/restdocs/asciidoctor/extensions/RestDocsExtensionRegistry.java
@@ -0,0 +1,45 @@
+/*
+ * 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.extensions;
+
+import org.asciidoctor.Asciidoctor;
+import org.asciidoctor.extension.spi.ExtensionRegistry;
+
+/**
+ * ExtensionRegistry for the Spring Rest Docs macros to get registered
+ * in all projects that include this asciidoctor extension module.
+ *
+ * Macros provided:
+ *
+ * - {@link RestDocsSnippetBlockMacro}
+ *
+ *
+ * @author Gerrit Meier
+ */
+public class RestDocsExtensionRegistry implements ExtensionRegistry {
+
+ /**
+ * the name that identifies the block macro in the asciidoctor document
+ * (e.g. snippet::file_to_include[]
)
+ */
+ private static final String SNIPPET_BLOCK_NAME = "snippet";
+
+ @Override
+ public void register(Asciidoctor asciidoctor) {
+ asciidoctor.javaExtensionRegistry().blockMacro(SNIPPET_BLOCK_NAME, RestDocsSnippetBlockMacro.class);
+ }
+}
diff --git a/spring-restdocs-asciidoctor-extensions/src/main/java/org/springframework/restdocs/asciidoctor/extensions/RestDocsSnippetBlockMacro.java b/spring-restdocs-asciidoctor-extensions/src/main/java/org/springframework/restdocs/asciidoctor/extensions/RestDocsSnippetBlockMacro.java
new file mode 100644
index 00000000..896133f3
--- /dev/null
+++ b/spring-restdocs-asciidoctor-extensions/src/main/java/org/springframework/restdocs/asciidoctor/extensions/RestDocsSnippetBlockMacro.java
@@ -0,0 +1,66 @@
+/*
+ * 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.extensions;
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Map;
+
+import org.asciidoctor.Asciidoctor;
+import org.asciidoctor.OptionsBuilder;
+import org.asciidoctor.ast.AbstractBlock;
+import org.asciidoctor.extension.BlockMacroProcessor;
+
+/**
+ * Block macro to include snippets generated by Spring Rest Docs in a convenient way.
+ * Defaults to build (gradle) or target directory to look for the generated-snippets folder and its content.
+ *
+ * @author Gerrit Meier
+ */
+class RestDocsSnippetBlockMacro extends BlockMacroProcessor {
+
+ private static final String GENERATED_SNIPPETS_PATH = "generated-snippets";
+ private static final String MAVEN_TARGET_PATH = "target" + File.separator + GENERATED_SNIPPETS_PATH;
+ private static final String GRADLE_BUILD_PATH = "build" + File.separator + GENERATED_SNIPPETS_PATH;
+ private static final String MAVEN_POM = "pom.xml";
+
+ public RestDocsSnippetBlockMacro(String macroName, Map config) {
+ super(macroName, config);
+ }
+
+ @Override
+ protected Object process(AbstractBlock parent, String fileToInclude, Map attributes) {
+ String generatedSnippetPath = getDefaultOutputDirectory() + File.separator + fileToInclude;
+
+ // since 'pass' context does not convert the content, we have to do this manually
+ String convertedContent = Asciidoctor.Factory.create().convertFile(
+ new File(generatedSnippetPath),
+ OptionsBuilder.options().toFile(false).inPlace(false).get());
+
+ return createBlock(parent, "pass", convertedContent, attributes, getConfig());
+ }
+
+ private static String getDefaultOutputDirectory() {
+ String executingDirectory = Paths.get(".").toFile().getAbsolutePath();
+
+ if (Files.exists(Paths.get(MAVEN_POM))) {
+ return executingDirectory + File.separator + MAVEN_TARGET_PATH;
+ }
+ return executingDirectory + File.separator + GRADLE_BUILD_PATH;
+ }
+}
diff --git a/spring-restdocs-asciidoctor-extensions/src/main/resources/META-INF/services/org.asciidoctor.extension.spi.ExtensionRegistry b/spring-restdocs-asciidoctor-extensions/src/main/resources/META-INF/services/org.asciidoctor.extension.spi.ExtensionRegistry
new file mode 100644
index 00000000..084eaa64
--- /dev/null
+++ b/spring-restdocs-asciidoctor-extensions/src/main/resources/META-INF/services/org.asciidoctor.extension.spi.ExtensionRegistry
@@ -0,0 +1 @@
+org.springframework.restdocs.asciidoctor.extensions.RestDocsExtensionRegistry
\ No newline at end of file
diff --git a/spring-restdocs-asciidoctor-extensions/src/test/java/org/springframework/restdocs/asciidoctor/extensions/RestDocsSnippetBlockMacroTest.java b/spring-restdocs-asciidoctor-extensions/src/test/java/org/springframework/restdocs/asciidoctor/extensions/RestDocsSnippetBlockMacroTest.java
new file mode 100644
index 00000000..9876af57
--- /dev/null
+++ b/spring-restdocs-asciidoctor-extensions/src/test/java/org/springframework/restdocs/asciidoctor/extensions/RestDocsSnippetBlockMacroTest.java
@@ -0,0 +1,54 @@
+/*
+ * 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.extensions;
+
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+
+import org.asciidoctor.Asciidoctor;
+import org.asciidoctor.Options;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Tests for {@link RestDocsSnippetBlockMacro}.
+ *
+ * @author Gerrit Meier
+ */
+public class RestDocsSnippetBlockMacroTest {
+
+ @Before
+ public void prepareIncludeFiles() throws Exception {
+ Files.createDirectories(Paths.get("build/generated-snippets/"));
+ Files.copy(Paths.get("src/test/resources/rest_docs_macro.adoc"),
+ Paths.get("build/generated-snippets/rest_docs_macro.adoc"), StandardCopyOption.REPLACE_EXISTING);
+ }
+
+ @Test
+ public void replaceRestDocsSnippetBlockWithFile() {
+ Asciidoctor asciidoctor = Asciidoctor.Factory.create();
+ asciidoctor.javaExtensionRegistry().blockMacro("snippet", RestDocsSnippetBlockMacro.class);
+
+ assertThat(asciidoctor.convert("snippet::rest_docs_macro.adoc[]", new Options()),
+ equalTo(""));
+ }
+
+}
diff --git a/spring-restdocs-asciidoctor-extensions/src/test/resources/rest_docs_macro.adoc b/spring-restdocs-asciidoctor-extensions/src/test/resources/rest_docs_macro.adoc
new file mode 100644
index 00000000..276e7895
--- /dev/null
+++ b/spring-restdocs-asciidoctor-extensions/src/test/resources/rest_docs_macro.adoc
@@ -0,0 +1 @@
+test text
\ 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..19a8188c 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
@@ -17,6 +17,8 @@
package org.springframework.restdocs;
import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Paths;
/**
* {@code ManualRestDocumentation} is used to manually manage the
@@ -31,10 +33,23 @@ import java.io.File;
*/
public final class ManualRestDocumentation implements RestDocumentationContextProvider {
+ private static final String GENERATED_SNIPPETS_PATH = "generated-snippets";
+ private static final String MAVEN_TARGET_PATH = "target" + File.separator + GENERATED_SNIPPETS_PATH;
+ private static final String GRADLE_BUILD_PATH = "build" + File.separator + GENERATED_SNIPPETS_PATH;
+ private static final String MAVEN_POM = "pom.xml";
+
private final File outputDirectory;
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}.
@@ -79,4 +94,12 @@ public final class ManualRestDocumentation implements RestDocumentationContextPr
return this.context;
}
+ private static String getDefaultOutputDirectory() {
+ String executingDirectory = Paths.get(".").toFile().getAbsolutePath();
+
+ if (Files.exists(Paths.get(MAVEN_POM))) {
+ return executingDirectory + File.separator + MAVEN_TARGET_PATH;
+ }
+ return executingDirectory + File.separator + GRADLE_BUILD_PATH;
+ }
}
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-core/src/test/java/org/springframework/restdocs/config/RestDocumentationConfigurerTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/config/RestDocumentationConfigurerTests.java
index 995a6ffb..0692cf61 100644
--- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/config/RestDocumentationConfigurerTests.java
+++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/config/RestDocumentationConfigurerTests.java
@@ -195,8 +195,7 @@ public class RestDocumentationConfigurerTests {
}
private RestDocumentationContext createContext() {
- ManualRestDocumentation manualRestDocumentation = new ManualRestDocumentation(
- "build");
+ ManualRestDocumentation manualRestDocumentation = new ManualRestDocumentation("build");
manualRestDocumentation.beforeTest(null, null);
RestDocumentationContext context = manualRestDocumentation.beforeOperation();
return context;
diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/RestDocumentationContextPlaceholderResolverTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/RestDocumentationContextPlaceholderResolverTests.java
index 83f96e61..7fa1d1c4 100644
--- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/RestDocumentationContextPlaceholderResolverTests.java
+++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/RestDocumentationContextPlaceholderResolverTests.java
@@ -83,8 +83,7 @@ public class RestDocumentationContextPlaceholderResolverTests {
}
private RestDocumentationContext createContext(String methodName) {
- ManualRestDocumentation manualRestDocumentation = new ManualRestDocumentation(
- "build");
+ ManualRestDocumentation manualRestDocumentation = new ManualRestDocumentation("build");
manualRestDocumentation.beforeTest(getClass(), methodName);
RestDocumentationContext context = manualRestDocumentation.beforeOperation();
return context;
diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/StandardWriterResolverTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/StandardWriterResolverTests.java
index a4d3460d..49bdd4cc 100644
--- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/StandardWriterResolverTests.java
+++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/snippet/StandardWriterResolverTests.java
@@ -70,8 +70,7 @@ public class StandardWriterResolverTests {
}
private RestDocumentationContext createContext(String outputDir) {
- ManualRestDocumentation manualRestDocumentation = new ManualRestDocumentation(
- outputDir);
+ ManualRestDocumentation manualRestDocumentation = new ManualRestDocumentation(outputDir);
manualRestDocumentation.beforeTest(getClass(), null);
RestDocumentationContext context = manualRestDocumentation.beforeOperation();
return context;
diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/OperationBuilder.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/OperationBuilder.java
index 698a80da..154c59e2 100644
--- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/OperationBuilder.java
+++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/OperationBuilder.java
@@ -123,8 +123,7 @@ public class OperationBuilder extends OperationTestRule {
}
private RestDocumentationContext createContext() {
- ManualRestDocumentation manualRestDocumentation = new ManualRestDocumentation(
- this.outputDirectory.getAbsolutePath());
+ ManualRestDocumentation manualRestDocumentation = new ManualRestDocumentation(this.outputDirectory.getAbsolutePath());
manualRestDocumentation.beforeTest(null, null);
RestDocumentationContext context = manualRestDocumentation.beforeOperation();
return context;
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;