bugfixing

This commit is contained in:
Fabio Sinibaldi 2021-05-12 16:51:24 +02:00
parent 05274985da
commit 379486b830
6 changed files with 33 additions and 22 deletions

View File

@ -182,14 +182,18 @@ public class SynchEngineImpl implements SyncEngine{
@Override
public void setSynchronizedFolder(SynchFolderConfiguration config,String folderId) throws WorkspaceInteractionException, InternalException {
// Check config
if(config==null) throw new InternalException("Passed config is null : "+config);
String remotePath=config.getRemotePath();
if(remotePath==null||remotePath.isEmpty()||remotePath.startsWith("/"))
throw new InternalException("Invalid remote path "+remotePath+".");
User operator=Security.getCurrent();
if(!operator.getContext().equals(config.getTargetContext()))
throw new SecurityException("Invalid operation. Configuration pointed to "+config.getTargetContext()+" while operator is in "+operator.getContext());
new WorkspaceFolderManager(folderId).configure(config);
}
@Override

View File

@ -15,7 +15,6 @@ import org.gcube.common.storagehub.model.exceptions.StorageHubException;
import org.gcube.data.transfer.model.RemoteFileDescriptor;
import org.gcube.data.transfer.model.plugins.thredds.ThreddsCatalog;
import org.gcube.usecases.ws.thredds.Constants;
import org.gcube.usecases.ws.thredds.engine.impl.security.Security;
import org.gcube.usecases.ws.thredds.engine.impl.threads.ProcessIdProvider;
import org.gcube.usecases.ws.thredds.faults.InternalException;
import org.gcube.usecases.ws.thredds.faults.LockNotOwnedException;
@ -122,7 +121,14 @@ public class WorkspaceFolderManager {
SynchFolderConfiguration config=getSynchConfiguration();
try{
checkFolder(theFolder,recursively,config,null,theFolder.getId(),WorkspaceUtils.safelyGetLastUpdate(theFolder.get()));
return new SyncFolderDescriptor(this.folderId,this.theFolder.get().getPath(),config);
SynchronizationStatus resultingStatus=SynchronizationStatus.valueOf(theFolder.get().getMetadata().getMap().get(Constants.WorkspaceProperties.LAST_UPDATE_STATUS)+"");
log.info("Resulting status for {} IS {} ",folderId,resultingStatus);
return new SyncFolderDescriptor(
this.folderId,
this.theFolder.get().getPath(),
config,new SynchronizedElementInfo(resultingStatus));
}catch(StorageHubException e) {
throw new WorkspaceInteractionException(e);
}

View File

@ -391,7 +391,7 @@ public class WorkspaceUtils {
}
}
config.setTargetContext(ctx+"");
config.setToCreateCatalogName(""+map.get(Constants.WorkspaceProperties.RELATED_CATALOG));
config.setValidateMetadata(Boolean.parseBoolean(""+map.get(Constants.WorkspaceProperties.VALIDATE_METADATA)));

View File

@ -16,12 +16,13 @@ public class SyncFolderDescriptor {
private String folderPath;
@NonNull
private SynchFolderConfiguration configuration;
@NonNull
private boolean isLocked=false;
private Boolean isLocked=false;
private ProcessDescriptor localProcessDescriptor=null;
private SynchronizedElementInfo info=null;
@NonNull
private SynchronizedElementInfo info;
}

View File

@ -1,10 +1,18 @@
package org.gcube.usecases.ws.thredds.model;
import lombok.Data;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@Data
public class SynchronizedElementInfo {
public static enum SynchronizationStatus{
UP_TO_DATE,OUTDATED_WS,OUTDATED_REMOTE
}
@NonNull
private SynchronizationStatus status;
}

View File

@ -8,7 +8,7 @@ import org.gcube.common.storagehub.client.dsl.ItemContainer;
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
import org.gcube.usecases.ws.thredds.engine.impl.ThreddsController;
import org.gcube.usecases.ws.thredds.engine.impl.WorkspaceUtils;
import org.gcube.usecases.ws.thredds.faults.InternalException;
import org.gcube.usecases.ws.thredds.engine.impl.security.Security;
import org.gcube.usecases.ws.thredds.model.SynchFolderConfiguration;
import lombok.AllArgsConstructor;
@ -37,24 +37,16 @@ public class TestCommons {
private static Map<String,TestSet> configs=new HashMap<>();
private static String toUseConfig="simple";
private static String toUseConfig="root";
static {
// configs.put("GP", new TestSet("GPTests","/d4science.research-infrastructures.eu","a8cd78d3-69e8-4d02-ac90-681b2d16d84d","","",""));
// folderName="WS-Tests";
configs.put("simple", new TestSet("Simple label ","/gcube/devsec/devVRE", "Test1","public/netcdf/simpleFolder","3aa85bbf-d5f3-4df4-ad03-4f8f788eba3d-98187548","simple"));
// configs.put("cmems", new TestSet("CMEMS","/gcube", "CMEMS","public/netcdf/CMEMS","***REMOVED***","cmems"));
//
// configs.put("default", new TestSet("Default Tests","/gcube","Thredds Catalog","public/netcdf","***REMOVED***","main"));
//
// configs.put("default", new TestSet("Default Tests","/gcube","WS-Tests","simpleCatalog","***REMOVED***","main"));
//
//
// configs.put("pre", new TestSet("Default Tests","/pred4s/preprod/preVRE","Thredds Synch","Fabio WS","91a8433b-9491-42c1-95e2-420245ef1943-980114272","SynchTestCatalog"));
configs.put("root", new TestSet("Simple label ","/gcube", "Test2","public/netcdf/wrong","3aa85bbf-d5f3-4df4-ad03-4f8f788eba3d-98187548","Wrong"));
}
@ -120,6 +112,6 @@ public class TestCommons {
public static SynchFolderConfiguration getSynchConfig() throws Exception {
TestSet set=configs.get(toUseConfig);
return new SynchFolderConfiguration(set.getRemotePath(), "*.nc,*.ncml,*.asc", set.getTargetToken(),set.getToCreateCatalogName(),set.getFolderId());
return new SynchFolderConfiguration(set.getRemotePath(), "*.nc,*.ncml,*.asc", Security.getCurrent().getContext(),set.getToCreateCatalogName(),set.getFolderId());
}
}