package org.gcube.application.cms.plugins.requests; import lombok.*; import org.bson.Document; import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException; 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; @Getter @Setter @ToString(callSuper = true) @RequiredArgsConstructor public class BaseRequest { @NonNull UseCaseDescriptor useCaseDescriptor; @NonNull User caller; @NonNull Context context; Document callParameters; public final String getMandatory(String param) throws InvalidPluginRequestException { return getMandatory(param,callParameters); } 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); } public void validate() throws InvalidPluginRequestException { if(useCaseDescriptor ==null)throw new InvalidPluginRequestException("UseCaseDescriptor cannot be null "); } }