Skip to content

Commit 425087b

Browse files
committed
Increased the visibility of the AfSubmissionHandler interface.
Also added some clarifying JavaDocs.
1 parent 967d107 commit 425087b

4 files changed

Lines changed: 52 additions & 15 deletions

File tree

spring/fluentforms-spring-boot-autoconfigure/src/main/java/com/_4point/aem/fluentforms/spring/AemProxyAfSubmission.java

Lines changed: 49 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,55 @@ private static byte[] transferFromAem(Response result, Logger logger) {
263263

264264
}
265265

266+
/**
267+
* Implement this interface in order to provide code that will handle an Adaptive Form submission
268+
*
269+
*/
270+
public interface AfSubmissionHandler {
271+
/**
272+
* Object that contains the data submitted by the Adaptive Form
273+
*/
274+
public record Submission(String formData, String formName, String redirectUrl, MultiValueMap<String, String> headers) {};
275+
276+
/**
277+
* Interface that is a tagging interface for the different types of response.
278+
*/
279+
public sealed interface SubmitResponse permits SubmitResponse.Response, SubmitResponse.Redirect {
280+
/**
281+
* A Normal response with a 200 HTTP status code (204 if the responseBytes variable is empty)
282+
*/
283+
public record Response(byte[] responseBytes, String mediaType) implements SubmitResponse {};
284+
/**
285+
* A Temporary Redirect (307 HTTP status code) response
286+
*/
287+
public record Redirect(URI redirectUrl) implements SubmitResponse {};
288+
}
289+
/**
290+
* Called to determine if this handler can handle a submission from this form.
291+
*
292+
* The first handler that can handle a form submission (i.e. for which canHandle() returns true) will be selected.
293+
*
294+
* @param formName
295+
* Adaptive Form name (full path under formsanddocuments)
296+
* @return
297+
* true indicates the this handler can handle the submission, false indicates that it cannot
298+
*/
299+
boolean canHandle(String formName);
300+
301+
/**
302+
* Called to process the submission
303+
*
304+
* The incoming submission is parsed into a Submission object and then the first handler that indicates
305+
* that is can handle the submission will have its processSubmission method called.
306+
*
307+
* @param submission
308+
* Submission object containing the form submission data
309+
* @return
310+
* a SubmitResponse object that will be turned into an HTTP response to the submission.
311+
*/
312+
SubmitResponse processSubmission(Submission submission);
313+
}
314+
266315
/**
267316
* This processor will process Adaptive Forms submissions locally without sending anything to AEM.
268317
*
@@ -276,18 +325,6 @@ static class AfSubmitLocalProcessor implements AfSubmitProcessor {
276325
private final static Logger logger = LoggerFactory.getLogger(AfSubmitLocalProcessor.class);
277326
private static final String REMAINDER_PATH_SUFFIX = "/jcr:content/guideContainer.af.submit.jsp";
278327

279-
public interface AfSubmissionHandler {
280-
public record Submission(String formData, String formName, String redirectUrl, MultiValueMap<String, String> headers) {};
281-
282-
public sealed interface SubmitResponse permits SubmitResponse.Response, SubmitResponse.Redirect {
283-
public record Response(byte[] responseBytes, String mediaType) implements SubmitResponse {};
284-
public record Redirect(URI redirectUrl) implements SubmitResponse {};
285-
}
286-
boolean canHandle(String formName);
287-
288-
SubmitResponse processSubmission(Submission submission);
289-
}
290-
291328
private final List<AfSubmissionHandler> submissionHandlers;
292329

293330
AfSubmitLocalProcessor(List<AfSubmissionHandler> submissionHandlers) {

spring/fluentforms-spring-boot-autoconfigure/src/main/java/com/_4point/aem/fluentforms/spring/AemProxyAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1313
import org.springframework.context.annotation.Bean;
1414

15-
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmitLocalProcessor.AfSubmissionHandler;
15+
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmissionHandler;
1616
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmitLocalProcessor;
1717
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmitAemProxyProcessor;
1818
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmitProcessor;

spring/fluentforms-spring-boot-autoconfigure/src/test/java/com/_4point/aem/fluentforms/spring/AemProxyAfSubmissionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmitAemProxyProcessor;
2929
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmitLocalProcessor;
30-
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmitLocalProcessor.AfSubmissionHandler;
30+
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmissionHandler;
3131
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmitProcessor;
3232
import com.github.tomakehurst.wiremock.client.WireMock;
3333
import com.github.tomakehurst.wiremock.junit5.WireMockTest;

spring/fluentforms-spring-boot-autoconfigure/src/test/java/com/_4point/aem/fluentforms/spring/AutoConfigurationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import com._4point.aem.fluentforms.api.output.OutputService;
1616
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmitAemProxyProcessor;
1717
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmitLocalProcessor;
18-
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmitLocalProcessor.AfSubmissionHandler;
18+
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmissionHandler;
1919
import com._4point.aem.fluentforms.spring.AemProxyAfSubmission.AfSubmitProcessor;
2020

2121
/**

0 commit comments

Comments
 (0)