diff --git a/src/main/java/org/gcube/data/transfer/library/transferers/Transferer.java b/src/main/java/org/gcube/data/transfer/library/transferers/Transferer.java index 988d2a2..4ab1cbf 100644 --- a/src/main/java/org/gcube/data/transfer/library/transferers/Transferer.java +++ b/src/main/java/org/gcube/data/transfer/library/transferers/Transferer.java @@ -13,6 +13,7 @@ import org.gcube.data.transfer.library.faults.InvalidDestinationException; import org.gcube.data.transfer.library.faults.InvalidSourceException; import org.gcube.data.transfer.library.faults.RemoteServiceException; import org.gcube.data.transfer.library.faults.SourceNotSetException; +import org.gcube.data.transfer.library.faults.UnreachableNodeException; import org.gcube.data.transfer.library.model.LocalSource; import org.gcube.data.transfer.library.model.Source; import org.gcube.data.transfer.library.model.StorageSource; @@ -121,9 +122,13 @@ public abstract class Transferer { } } - protected void checkDestination() throws InvalidDestinationException,DestinationNotSetException{ + protected void checkDestination() throws InvalidDestinationException,DestinationNotSetException, UnreachableNodeException{ if(destination==null) throw new DestinationNotSetException(); - // perform checks + if(!destination.getPersistenceId().equals(Destination.DEFAULT_PERSISTENCE_ID)){ + Set availablePersistenceIds=getDestinationCapabilities().getAvailablePersistenceIds(); + if(!availablePersistenceIds.contains(destination.getPersistenceId())) + throw new InvalidDestinationException("Declared persistence id "+destination.getPersistenceId()+" not found. Available are "+availablePersistenceIds); + } } protected void checkSource() throws SourceNotSetException, InvalidSourceException{ @@ -145,11 +150,11 @@ public abstract class Transferer { } - public TransferCapabilities getDestinationCapabilities() throws InitializationException { + public TransferCapabilities getDestinationCapabilities() throws UnreachableNodeException { try{ return client.getCapabilties(); }catch(Exception e){ - throw new InitializationException(e); + throw new UnreachableNodeException(e); } }