diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/implementations/SimpleLifeCycleManager.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/implementations/SimpleLifeCycleManager.java index 28de1fc..f869e88 100644 --- a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/implementations/SimpleLifeCycleManager.java +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/implementations/SimpleLifeCycleManager.java @@ -136,8 +136,10 @@ public class SimpleLifeCycleManager extends AbstractLifeCycleManager implements @Override protected EventExecutionReport onDeleteDocument(EventExecutionReport report) throws ConfigurationException, InvalidPluginRequestException, MaterializationException, EventException { + // Block non draft only if not force + if(!Boolean.parseBoolean(report.getTheRequest().getWithDefault("force","false"))) + blockNonDraft(report); // dematerialize all - blockNonDraft(report); JSONPathWrapper wrapper = new JSONPathWrapper(report.getTheRequest().getDocument().getTheDocument().toJson()); for (String s : wrapper.getMatchingPaths("$..[?(@." + RegisteredFileSet.PAYLOADS + ")]")){ log.info("Requesting dematerialization for {} ",s); diff --git a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/requests/BaseRequest.java b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/requests/BaseRequest.java index c12d2ae..587d349 100644 --- a/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/requests/BaseRequest.java +++ b/cms-plugin-framework/src/main/java/org/gcube/application/cms/plugins/requests/BaseRequest.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ser.Serializers; import lombok.*; import org.bson.Document; import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException; +import org.gcube.application.geoportal.common.faults.InvalidRequestException; import org.gcube.application.geoportal.common.model.document.accounting.Context; import org.gcube.application.geoportal.common.model.document.accounting.User; import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor; @@ -28,6 +29,14 @@ public class BaseRequest { return getMandatory(param,callParameters); } + public final String getWithDefault(String param,String defaultValue) { + try{ + return getMandatory(param,callParameters); + }catch (InvalidPluginRequestException e){ + return defaultValue; + } + } + public static final String getMandatory(String param,Document params) throws InvalidPluginRequestException { if(!params.containsKey(param)) throw new InvalidPluginRequestException("Missing mandatory parameter "+param); return params.getString(param);