Index: EditingDefaultWorkflowPlugin.java =================================================================== --- EditingDefaultWorkflowPlugin.java (revision 109235) +++ EditingDefaultWorkflowPlugin.java (working copy) @@ -26,12 +26,16 @@ import org.hippoecm.frontend.service.IEditor.Mode; import org.hippoecm.frontend.service.IEditorFilter; import org.hippoecm.frontend.service.IEditorManager; +import org.hippoecm.frontend.validation.IValidationResult; +import org.hippoecm.frontend.validation.IValidationService; +import org.hippoecm.frontend.validation.ValidationException; import org.hippoecm.repository.api.Workflow; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.jcr.Node; import javax.jcr.RepositoryException; +import java.util.List; public class EditingDefaultWorkflowPlugin extends CompatibilityWorkflowPlugin { @SuppressWarnings("unused") @@ -41,6 +45,8 @@ private static Logger log = LoggerFactory.getLogger(EditingDefaultWorkflowPlugin.class); + private boolean isValid = true; + public EditingDefaultWorkflowPlugin(final IPluginContext context, IPluginConfig config) { super(context, config); @@ -65,6 +71,10 @@ new ResourceReference(EditingDefaultWorkflowPlugin.class, "document-save-16.png")) { @Override protected String execute(Workflow wf) throws Exception { + validate(); + if (!isValid()) { + return null; + } ((WorkflowDescriptorModel) getDefaultModel()).getNode().save(); return null; } @@ -75,6 +85,10 @@ @Override protected String execute(Workflow wf) throws Exception { + validate(); + if (!isValid()) { + return null; + } Node docNode = ((WorkflowDescriptorModel) EditingDefaultWorkflowPlugin.this.getDefaultModel()) .getNode(); IEditorManager editorMgr = getPluginContext().getService( @@ -94,4 +108,21 @@ } }); } + + void validate() throws ValidationException { + isValid = true; + List validators = getPluginContext().getServices( + getPluginConfig().getString(IValidationService.VALIDATE_ID), IValidationService.class); + if (validators != null) { + for (IValidationService validator : validators) { + validator.validate(); + IValidationResult result = validator.getValidationResult(); + isValid = isValid && result.isValid(); + } + } + } + + boolean isValid() { + return isValid; + } }