Skip to content

Commit

Permalink
Merge pull request #79 from tallence/headless-preparations
Browse files Browse the repository at this point in the history
Closes #53
Headless preparations
  • Loading branch information
Timo Lemke authored Sep 29, 2021
2 parents b71da15 + 690edc8 commit fe26e51
Show file tree
Hide file tree
Showing 118 changed files with 1,409 additions and 575 deletions.
19 changes: 11 additions & 8 deletions form-editor-cae/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@
<artifactId>form-editor-contentbeans-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>form-editor-shared</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>cae-base-lib</artifactId>
Expand Down Expand Up @@ -68,14 +73,6 @@
<groupId>com.coremedia.cms</groupId>
<artifactId>cap-unified-api</artifactId>
</dependency>
<dependency>
<groupId>com.coremedia.cms</groupId>
<artifactId>cae-contentbeanservices</artifactId>
</dependency>
<dependency>
<groupId>com.coremedia.cms</groupId>
<artifactId>cap-unified-api-util</artifactId>
</dependency>
<dependency>
<groupId>com.coremedia.cms</groupId>
<artifactId>coremedia-cache</artifactId>
Expand Down Expand Up @@ -187,6 +184,12 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>form-editor-test-util</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.coremedia.cms</groupId>
<artifactId>cap-client-xml</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@
package com.tallence.formeditor.cae;

import com.coremedia.blueprint.common.services.context.CurrentContextService;
import com.coremedia.cap.struct.Struct;
import com.tallence.formeditor.cae.elements.FormElement;
import com.tallence.formeditor.FormEditorHelper;
import com.tallence.formeditor.FormElementFactory;
import com.tallence.formeditor.cae.handler.ReCaptchaService;
import com.tallence.formeditor.contentbeans.FormEditor;
import java.util.Collections;
import com.tallence.formeditor.elements.FormElement;

import java.util.List;
import java.util.stream.Collectors;

/**
* FreemarkerFacade for Form elements.
Expand All @@ -44,24 +44,10 @@ public FormFreemarkerFacade(FormElementFactory formElementFactory, ReCaptchaServ
}

public List<FormElement<?>> parseFormElements(FormEditor formEditor) {

Struct formData = formEditor.getFormElements();

if (formData == null) {
return Collections.emptyList();
}

return formData.getProperties().entrySet().stream()
.filter(e -> e.getValue() instanceof Struct)
.map(e -> parseElement((Struct) e.getValue(), e.getKey()))
.collect(Collectors.toList());
return FormEditorHelper.parseFormElements(formEditor.getContent(), formElementFactory);
}

public String getReCaptchaWebsiteSecretForSite() {
return reCaptchaService.getWebsiteSecretForSite(currentContextService.getContext());
}

private FormElement<?> parseElement(Struct value, String key) {
return formElementFactory.createFormElement(value, key);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@

package com.tallence.formeditor.cae.actions;

import com.tallence.formeditor.cae.elements.FileUpload;
import com.tallence.formeditor.cae.elements.FormElement;
import com.tallence.formeditor.cae.elements.TextOnly;
import com.tallence.formeditor.cae.elements.UsersMail;
import com.tallence.formeditor.elements.FileUpload;
import com.tallence.formeditor.elements.FormElement;
import com.tallence.formeditor.elements.TextOnly;
import com.tallence.formeditor.elements.UsersMail;
import com.tallence.formeditor.contentbeans.FormEditor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -54,10 +54,12 @@ protected boolean sendUserConfirmationMail(FormEditor target, List<FormElement<?

// filter for UserMail-fields with sendCopy activated.
Optional<String> userMailOptional = formElements.stream()
.filter((element) -> (element instanceof UsersMail))
.filter((element) -> ((UsersMail) element).getValue().isSendCopy())
.map((element) -> ((UsersMail) element).getValue().getUsersMail())
.findFirst();
.filter(element -> (element instanceof UsersMail))
.map(element -> ((UsersMail) element).getValue())
.filter(Objects::nonNull)
.filter(UsersMail.UsersMailData::isSendCopy)
.map(UsersMail.UsersMailData::getUsersMail)
.findFirst();

if (userMailOptional.isPresent()) {
String userMail = userMailOptional.get();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package com.tallence.formeditor.cae.actions;

import com.tallence.formeditor.cae.elements.FormElement;
import com.tallence.formeditor.elements.FormElement;
import com.tallence.formeditor.cae.model.FormProcessingResult;
import com.tallence.formeditor.contentbeans.FormEditor;
import org.slf4j.Logger;
Expand All @@ -27,7 +27,6 @@

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

import static com.tallence.formeditor.cae.handler.FormErrors.DB_SAVE;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package com.tallence.formeditor.cae.actions;

import com.tallence.formeditor.cae.elements.FormElement;
import com.tallence.formeditor.elements.FormElement;
import com.tallence.formeditor.cae.model.FormProcessingResult;
import com.tallence.formeditor.contentbeans.FormEditor;
import org.springframework.web.multipart.MultipartFile;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package com.tallence.formeditor.cae.actions;

import com.tallence.formeditor.cae.elements.FormElement;
import com.tallence.formeditor.elements.FormElement;
import com.tallence.formeditor.contentbeans.FormEditor;
import org.springframework.web.multipart.MultipartFile;

Expand All @@ -31,7 +31,7 @@ public interface FormEditorMailAdapter {
/**
* Informs the form admin about a new form request.
*
* Field values of type {@link com.tallence.formeditor.cae.elements.FileUpload} can not yet be included in the mail.
* Field values of type {@link com.tallence.formeditor.elements.FileUpload} can not yet be included in the mail.
*
* @param target the ContentBean of the current Form Document
* @param recipient address which will receive the mail.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package com.tallence.formeditor.cae.actions;

import com.tallence.formeditor.cae.elements.FormElement;
import com.tallence.formeditor.elements.FormElement;
import com.tallence.formeditor.contentbeans.FormEditor;
import org.springframework.web.multipart.MultipartFile;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package com.tallence.formeditor.cae.actions;

import com.tallence.formeditor.cae.elements.FormElement;
import com.tallence.formeditor.elements.FormElement;
import com.tallence.formeditor.cae.model.FormProcessingResult;
import com.tallence.formeditor.contentbeans.FormEditor;
import org.slf4j.Logger;
Expand All @@ -27,7 +27,6 @@

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

import static com.tallence.formeditor.cae.handler.FormErrors.ADMIN_MAIL;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.tallence.formeditor.cae.actions;

import com.tallence.formeditor.cae.elements.FormElement;
import com.tallence.formeditor.elements.FormElement;
import com.tallence.formeditor.contentbeans.FormEditor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.tallence.formeditor.cae.actions;

import com.tallence.formeditor.cae.elements.FormElement;
import com.tallence.formeditor.elements.FormElement;
import com.tallence.formeditor.contentbeans.FormEditor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,12 @@
import com.coremedia.objectserver.web.links.Link;
import com.coremedia.objectserver.web.links.LinkFormatter;
import com.tallence.formeditor.cae.FormFreemarkerFacade;
import com.tallence.formeditor.cae.elements.FormElement;
import com.tallence.formeditor.elements.FormElement;
import com.tallence.formeditor.cae.model.FormEditorConfig;
import com.tallence.formeditor.cae.serializer.FormConfigCacheKey;
import com.tallence.formeditor.cae.serializer.FormElementSerializerFactory;
import com.tallence.formeditor.contentbeans.FormEditor;
import com.tallence.formeditor.parser.CurrentFormSupplier;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
Expand Down Expand Up @@ -104,6 +105,8 @@ public String getFormConfig(@PathVariable CMChannel currentContext,
HttpServletRequest request, HttpServletResponse response) throws Exception {

Navigation navigation = currentContext.getRootNavigation();
request.setAttribute(NavigationLinkSupport.ATTR_NAME_CMNAVIGATION, navigation);
CurrentFormSupplier.setCurrentForm(editor.getContent());

List<FormElement<?>> formElements = formFreemarkerFacade.parseFormElements(editor);
if (formElements.isEmpty()) {
Expand All @@ -114,7 +117,6 @@ public String getFormConfig(@PathVariable CMChannel currentContext,
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject(MODEL_ROOT, navigation);
pageResourceBundlesInterceptor.postHandle(request, response, null, modelAndView);
request.setAttribute(NavigationLinkSupport.ATTR_NAME_CMNAVIGATION, navigation);

//prepare form config
FormEditorConfig formEditorConfig = new FormEditorConfig();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,14 @@
import com.tallence.formeditor.cae.FormFreemarkerFacade;
import com.tallence.formeditor.cae.actions.DefaultFormAction;
import com.tallence.formeditor.cae.actions.FormAction;
import com.tallence.formeditor.cae.elements.FileUpload;
import com.tallence.formeditor.cae.elements.FormElement;
import com.tallence.formeditor.elements.FileUpload;
import com.tallence.formeditor.elements.FormElement;
import com.tallence.formeditor.cae.model.FormProcessingResult;
import com.tallence.formeditor.cae.model.FormSuccessResult;
import com.tallence.formeditor.cae.model.FormValidationResult;
import com.tallence.formeditor.cae.serializer.ValidationSerializationHelper;
import com.tallence.formeditor.cae.validator.ValidationFieldError;
import com.tallence.formeditor.parser.CurrentFormSupplier;
import com.tallence.formeditor.validator.ValidationFieldError;
import com.tallence.formeditor.contentbeans.FormEditor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -41,7 +42,6 @@
import org.springframework.stereotype.Controller;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
Expand All @@ -60,6 +60,7 @@
import static com.coremedia.objectserver.web.HandlerHelper.MODEL_ROOT;
import static com.tallence.formeditor.cae.handler.FormErrors.RECAPTCHA;
import static com.tallence.formeditor.cae.handler.FormErrors.SERVER_VALIDATION;
import static java.util.Optional.ofNullable;

/**
* Handler for Form-Requests for {@link FormEditor}s.
Expand Down Expand Up @@ -129,6 +130,7 @@ public FormProcessingResult socialFormAction(@PathVariable(name = "currentContex
modelAndView.addObject(MODEL_ROOT, navigation);
pageResourceBundlesInterceptor.postHandle(request, response, null, modelAndView);
request.setAttribute(NavigationLinkSupport.ATTR_NAME_CMNAVIGATION, navigation);
CurrentFormSupplier.setCurrentForm(target.getContent());

List<FormElement<?>> formElements = formFreemarkerFacade.parseFormElements(target);
if (formElements.isEmpty()) {
Expand Down Expand Up @@ -187,18 +189,12 @@ public FormProcessingResult socialFormAction(@PathVariable(name = "currentContex
}

//Default for an empty actionKey: the DefaultAction
String actionKey = target.getFormAction();
if (!StringUtils.hasText(actionKey)) {
return prepareSubmitResult(defaultFormAction.handleFormSubmit(target, files, formElements, request, response), navigation);
}
String actionKey = ofNullable(target.getFormAction()).orElse("n.A.");

Optional<FormAction> optional = formActions.stream().filter((action) -> action.isResponsible(actionKey)).findFirst();
if (optional.isPresent()) {
return prepareSubmitResult(optional.get().handleFormSubmit(target, files, formElements, request, response), navigation);
} else {
LOG.error("Cannot find a formAction for configured key [{}] for Form [{}]", actionKey, target.getContentId());
throw new IllegalStateException("No action configured for form " + target.getContentId() + " with form type " + target.getFormAction());
}
FormAction action = formActions.stream()
.filter(formAction -> formAction.isResponsible(actionKey))
.findFirst().orElse(defaultFormAction);
return prepareSubmitResult(action.handleFormSubmit(target, files, formElements, request, response), navigation);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package com.tallence.formeditor.cae.model;

import com.tallence.formeditor.cae.elements.FormElement;
import com.tallence.formeditor.elements.FormElement;

import java.util.List;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

import com.coremedia.objectserver.web.links.LinkFormatter;
import com.fasterxml.jackson.core.JsonGenerator;
import com.tallence.formeditor.cae.elements.ConsentFormCheckBox;
import com.tallence.formeditor.elements.ConsentFormCheckBox;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
Expand All @@ -28,7 +28,7 @@
import java.io.IOException;
import java.util.function.BiFunction;

import static com.tallence.formeditor.cae.parser.ConsentFormCheckBoxParser.FORM_LINK_TARGET;
import static com.tallence.formeditor.parser.ConsentFormCheckBoxParser.FORM_LINK_TARGET;

/**
* A factory, creating a {@link ConsentFormCheckBoxSerializer} with access to the instance-field: {@link #linkFormatter}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.tallence.formeditor.cae.elements.AbstractFormElement;
import com.tallence.formeditor.elements.AbstractFormElement;
import com.tallence.formeditor.cae.model.FormEditorConfig;
import com.tallence.formeditor.contentbeans.FormEditor;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import com.tallence.formeditor.cae.elements.AbstractFormElement;
import com.tallence.formeditor.cae.elements.AdvancedSettings;
import com.tallence.formeditor.cae.elements.ComplexValue;
import com.tallence.formeditor.cae.elements.FieldWithOptions;
import com.tallence.formeditor.cae.validator.Validator;
import com.tallence.formeditor.elements.AbstractFormElement;
import com.tallence.formeditor.elements.AdvancedSettings;
import com.tallence.formeditor.elements.ComplexValue;
import com.tallence.formeditor.elements.FieldWithOptions;
import com.tallence.formeditor.validator.Validator;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -36,8 +36,8 @@
import java.util.Map;
import java.util.function.BiFunction;

import static com.tallence.formeditor.cae.FormElementFactory.FORM_DATA_KEY_TYPE;
import static com.tallence.formeditor.cae.parser.AbstractFormElementParser.*;
import static com.tallence.formeditor.FormElementFactory.FORM_DATA_KEY_TYPE;
import static com.tallence.formeditor.parser.AbstractFormElementParser.*;
import static com.tallence.formeditor.cae.serializer.FormElementSerializerConstants.*;

/**
Expand Down Expand Up @@ -84,7 +84,7 @@ public void serializeDefaultFields(T field, JsonGenerator gen) throws IOExceptio
protected void serializeOptionFields(T field, JsonGenerator gen) throws IOException {
if (field instanceof FieldWithOptions) {
gen.writeArrayFieldStart(FORM_SERIALIZER_FIELDS_OPTIONS);
for (ComplexValue option : ((FieldWithOptions) field).getOptions()) {
for (ComplexValue option : ((FieldWithOptions<?>) field).getOptions()) {
gen.writeStartObject();
gen.writeStringField(FORM_SERIALIZER_FIELDS_NAME, option.getDisplayName());
gen.writeStringField(FORM_SERIALIZER_FIELDS_ID, option.getValue());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
package com.tallence.formeditor.cae.serializer;

import com.fasterxml.jackson.core.JsonGenerator;
import com.tallence.formeditor.cae.elements.TextArea;
import com.tallence.formeditor.elements.TextArea;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
Expand Down
Loading

0 comments on commit fe26e51

Please sign in to comment.