diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Close.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Close.java index 502b505..8b2bdbc 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Close.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Close.java @@ -20,8 +20,9 @@ public class Close extends Operation{ } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); try { tm.close(); } catch (Exception e) { diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Copy.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Copy.java index 76efbc6..453f8ff 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Copy.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Copy.java @@ -38,8 +38,9 @@ public abstract class Copy extends Operation{ } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); String id=null; try { // id=tm.copy(myFile, sourcePath, destinationPath); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/CopyDir.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/CopyDir.java index 6d347aa..8929c7a 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/CopyDir.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/CopyDir.java @@ -41,8 +41,7 @@ public abstract class CopyDir extends Operation{ } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm = getTransport(myFile); List ids=null; try { // ids=tm.copyDir(myFile, sourcePath, destinationPath); @@ -54,6 +53,8 @@ public abstract class CopyDir extends Operation{ } return ids.toString(); } + + @Override diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Download.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Download.java index c90d26e..91e9d2e 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Download.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Download.java @@ -51,8 +51,9 @@ public abstract class Download extends Operation{ id=get(this, myFile, false); } catch (Throwable e) { - TransportManagerFactory tmf=new TransportManagerFactory(getServer(), getUser(), getPassword()); - TransportManager tm=tmf.getTransport(getBackendType(), myFile.getGcubeMemoryType(), getDbNames(), myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf=new TransportManagerFactory(getServer(), getUser(), getPassword()); +// TransportManager tm=tmf.getTransport(getBackendType(), myFile.getGcubeMemoryType(), getDbNames(), myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); tm.close(); logger.error("Problem in download from: "+myFile.getRemotePath()+": "+e.getMessage()); // e.printStackTrace(); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/DownloadAndLock.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/DownloadAndLock.java index 7626800..5810efc 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/DownloadAndLock.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/DownloadAndLock.java @@ -40,8 +40,9 @@ public class DownloadAndLock extends Operation { //TODO add field for file lock get(download,myFile, true); } catch (Exception e) { - TransportManagerFactory tmf=new TransportManagerFactory(getServer(), getUser(), getPassword()); - TransportManager tm=tmf.getTransport(getBackendType(), myFile.getGcubeMemoryType(), getDbNames(), myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf=new TransportManagerFactory(getServer(), getUser(), getPassword()); +// TransportManager tm=tmf.getTransport(getBackendType(), myFile.getGcubeMemoryType(), getDbNames(), myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); tm.close(); throw new RemoteBackendException(" Error in downloadAndLock operation ", e.getCause()); } diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/DuplicateFile.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/DuplicateFile.java index dadf6dc..2f8515d 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/DuplicateFile.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/DuplicateFile.java @@ -31,8 +31,9 @@ public abstract class DuplicateFile extends Operation { } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); String id=null; try { // id = tm.duplicateFile(myFile, bucket); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Exist.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Exist.java index 8f4380b..24ef823 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Exist.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Exist.java @@ -31,8 +31,9 @@ public class Exist extends Operation{ } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); boolean isPresent=false; try { isPresent = tm.exist(bucket); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetFolderCount.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetFolderCount.java index 2eb4d83..12bd6f7 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetFolderCount.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetFolderCount.java @@ -23,8 +23,9 @@ public class GetFolderCount extends Operation { } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); long dim=0; try { dim = tm.getFolderTotalItems(bucket); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetFolderSize.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetFolderSize.java index 4ce2fab..8bc9230 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetFolderSize.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetFolderSize.java @@ -22,8 +22,9 @@ public class GetFolderSize extends Operation { } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); long dim=0; try { dim = tm.getFolderTotalVolume(bucket); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetMetaFile.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetMetaFile.java index 93bfb39..534537f 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetMetaFile.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetMetaFile.java @@ -31,8 +31,9 @@ public class GetMetaFile extends Operation{ * */ public MyFile doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); long dim=0; String id=null; String mime=null; diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetMetaInfo.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetMetaInfo.java index f459029..f6fd044 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetMetaInfo.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetMetaInfo.java @@ -21,8 +21,9 @@ public class GetMetaInfo extends Operation { } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); String value=null; try { value=tm.getFileProperty(bucket, myFile.getGenericPropertyField()); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetRemotePath.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetRemotePath.java index 9e18d4b..7ead65d 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetRemotePath.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetRemotePath.java @@ -21,8 +21,9 @@ public class GetRemotePath extends Operation{ } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); String path=null; try { path = tm.getRemotePath(bucket); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetSize.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetSize.java index 6a56a96..3267c01 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetSize.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetSize.java @@ -28,8 +28,9 @@ public class GetSize extends Operation{ } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); long dim=0; try { dim = tm.getSize(bucket, myFile); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetTTL.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetTTL.java index a29213c..778eae6 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetTTL.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetTTL.java @@ -36,8 +36,9 @@ public class GetTTL extends Operation { TransportManager tm=null; try { //aggiungere field per il lock del file - TransportManagerFactory tmf=new TransportManagerFactory(server, user, password); - tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf=new TransportManagerFactory(server, user, password); +// tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + tm=getTransport(myFile); currentTTL=tm.getTTL(bucket); } catch (Exception e) { tm.close(); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetUserTotalItems.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetUserTotalItems.java index cee8c99..6ca51e5 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetUserTotalItems.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetUserTotalItems.java @@ -20,8 +20,9 @@ public class GetUserTotalItems extends Operation { } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); String dim=null; logger.info("check user total items for user: "+getOwner()+ " user is "+user); try { diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetUserTotalVolume.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetUserTotalVolume.java index f9a2300..1bf91a0 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetUserTotalVolume.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/GetUserTotalVolume.java @@ -20,8 +20,9 @@ public class GetUserTotalVolume extends Operation { } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); String dim=null; logger.info("check user total volume for user: "+getOwner()+ " user is "+user); try { diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Link.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Link.java index b5dc26b..7ce01d4 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Link.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Link.java @@ -37,8 +37,9 @@ public abstract class Link extends Operation{ } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); String id=null; try { id=tm.link(this); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Lock.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Lock.java index 262784f..c0395bd 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Lock.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Lock.java @@ -44,8 +44,9 @@ public abstract class Lock extends Operation { Download download = new DownloadOperator(getServer(), getUser(), getPassword(), getBucket(), getMonitor(), isChunk(), getBackendType(), getDbNames()); unlockKey=get(download, myFile, true); } catch (Exception e) { - TransportManagerFactory tmf=new TransportManagerFactory(getServer(), getUser(), getPassword()); - TransportManager tm=tmf.getTransport(getBackendType(), myFile.getGcubeMemoryType(), getDbNames(), myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf=new TransportManagerFactory(getServer(), getUser(), getPassword()); +// TransportManager tm=tmf.getTransport(getBackendType(), myFile.getGcubeMemoryType(), getDbNames(), myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); tm.close(); throw new RemoteBackendException(" Error in lock operation ", e.getCause()); } diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Move.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Move.java index ddd95ec..ff93223 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Move.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Move.java @@ -40,8 +40,9 @@ public abstract class Move extends Operation{ } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); String id=null; try { // id=tm.move(myFile, sourcePath, destinationPath); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/MoveDir.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/MoveDir.java index a75821f..137b2a7 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/MoveDir.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/MoveDir.java @@ -39,8 +39,9 @@ public abstract class MoveDir extends Operation{ } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); Listids=null; try { ids=tm.moveDir(this); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Operation.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Operation.java index 0146e2d..bdf1d0e 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Operation.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Operation.java @@ -15,6 +15,7 @@ import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.util.Objects; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; @@ -40,6 +41,7 @@ public abstract class Operation { private Monitor monitor; private boolean isChunk; String backendType; + TransportManager transport; public Operation(String[] server, String user, String pwd, String bucket, Monitor monitor, boolean isChunk, String backendType, String[] dbs){ this.server=server; @@ -159,8 +161,9 @@ public abstract class Operation { }else{ if(logger.isDebugEnabled()) logger.debug("NO THREAD POOL USED"); - TransportManagerFactory tmf=new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, resource.getGcubeMemoryType(), dbNames, resource.getWriteConcern(), resource.getReadPreference()); +// TransportManagerFactory tmf=new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, resource.getGcubeMemoryType(), dbNames, resource.getWriteConcern(), resource.getReadPreference()); + TransportManager tm=getTransport(resource); String objectId=tm.uploadManager(upload, resource, bucket, bucket+"_1", replaceOption); return objectId; } @@ -177,12 +180,10 @@ public abstract class Operation { logger.debug("get(String) - start"); } String unlocKey=null; - TransportManagerFactory tmf=null; -// if(server.length >1) - tmf=new TransportManagerFactory(server, user, password); -// else -// tmf=new TransportManagerFactory(server, null, null); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf=null; +// tmf=new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); long start=System.currentTimeMillis(); String path=myFile.getLocalPath(); if(!Costants.CLIENT_TYPE.equalsIgnoreCase("mongo")){ @@ -380,6 +381,13 @@ public abstract class Operation { this.user = user; } + protected TransportManager getTransport(MyFile myFile) { + if(Objects.isNull(transport)) { + TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); + TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + return tm; + } + return transport; + } - -} \ No newline at end of file +} diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Remove.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Remove.java index 4d5f7fe..3f0ac0c 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Remove.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Remove.java @@ -25,8 +25,9 @@ public class Remove extends Operation{ } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); removeBucket(tm, bucket, myFile); if (logger.isDebugEnabled()) { logger.debug(" REMOVE " + bucket); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/RenewTTL.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/RenewTTL.java index ea459c9..6ba9614 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/RenewTTL.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/RenewTTL.java @@ -30,8 +30,9 @@ public class RenewTTL extends Operation { @Override public String doIt(MyFile myFile) throws RemoteBackendException { - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); long ttl=-1; try { myFile.setRemotePath(bucket); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/SetMetaInfo.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/SetMetaInfo.java index f6aad4e..4d93ed0 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/SetMetaInfo.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/SetMetaInfo.java @@ -21,8 +21,9 @@ public class SetMetaInfo extends Operation { } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); try { tm.setFileProperty(bucket, myFile.getGenericPropertyField(), myFile.getGenericPropertyValue()); } catch (Exception e) { diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/SoftCopy.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/SoftCopy.java index 15834e4..537f715 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/SoftCopy.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/SoftCopy.java @@ -60,8 +60,9 @@ public abstract class SoftCopy extends Operation { } public String doIt(MyFile myFile) throws RemoteBackendException{ - TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf= new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); String id=null; try { id=tm.softCopy(this); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Unlock.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Unlock.java index 02777d7..9054950 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Unlock.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Unlock.java @@ -43,8 +43,9 @@ public abstract class Unlock extends Operation { //inserire parametro per il lock objectId=put(upload, myFile, isChunk(), false, false, true); } catch (Exception e) { - TransportManagerFactory tmf=new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf=new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); tm.close(); throw new RemoteBackendException(" Error in unlock operation ", e.getCause()); } diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Upload.java b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Upload.java index 4328e1d..1490071 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Upload.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/service/operation/Upload.java @@ -49,8 +49,9 @@ public abstract class Upload extends Operation { try { objectId=put(this, myFile, isChunk(), false, replaceOption, false); } catch (Throwable e) { - TransportManagerFactory tmf=new TransportManagerFactory(server, user, password); - TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); +// TransportManagerFactory tmf=new TransportManagerFactory(server, user, password); +// TransportManager tm=tmf.getTransport(backendType, myFile.getGcubeMemoryType(), dbNames, myFile.getWriteConcern(), myFile.getReadPreference()); + TransportManager tm=getTransport(myFile); tm.close(); logger.error("Problem in upload from: "+myFile.getLocalPath()+": "+e.getMessage()); throw new RemoteBackendException(" Error in upload operation ", e.getCause()); diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/transport/TransportManagerFactory.java b/src/main/java/org/gcube/contentmanagement/blobstorage/transport/TransportManagerFactory.java index e7bda1b..7cd64b8 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/transport/TransportManagerFactory.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/transport/TransportManagerFactory.java @@ -4,10 +4,12 @@ package org.gcube.contentmanagement.blobstorage.transport; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Objects; import java.util.ServiceLoader; import org.gcube.contentmanagement.blobstorage.resource.MemoryType; import org.gcube.contentmanagement.blobstorage.transport.backend.MongoOperationManager; +import org.gcube.contentmanagement.blobstorage.transport.backend.util.Costants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,6 +30,7 @@ public class TransportManagerFactory { String[] server; String user; String password; + TransportManager transport; public TransportManagerFactory(String server[], String user, String password){ this.server=server; @@ -39,21 +42,25 @@ public class TransportManagerFactory { if (logger.isDebugEnabled()) { logger.debug("getOperation(String) - start"); } - return load(backendType, memoryType, dbNames, writeConcern, readConcern); + if(Objects.isNull(transport)) + return load(backendType, memoryType, dbNames, writeConcern, readConcern); + return transport; } private TransportManager load(String backendType, MemoryType memoryType, String[] dbNames, String writeConcern, String readConcern){ ServiceLoader loader = ServiceLoader.load(TransportManager.class); Iterator iterator = loader.iterator(); List impls = new ArrayList(); + logger.info("Try to load the backend..."); + logger.info("the specified backend passed as input param is "+backendType); while(iterator.hasNext()) impls.add(iterator.next()); int implementationCounted=impls.size(); // System.out.println("size: "+implementationCounted); - if(implementationCounted==0){ + if((implementationCounted==0) || backendType.equals(Costants.DEFAULT_TRANSPORT_MANAGER)){ logger.info(" 0 implementation found. Load default implementation of TransportManager"); return new MongoOperationManager(server, user, password, memoryType, dbNames, writeConcern, readConcern); - }else if(implementationCounted==1){ + }else if((implementationCounted==1) && Objects.isNull(backendType)){ TransportManager tm = impls.get(0); logger.info("1 implementation of TransportManager found. Load it. "+tm.getName()); tm.initBackend(server, user, password, memoryType, dbNames, writeConcern, readConcern); @@ -64,6 +71,7 @@ public class TransportManagerFactory { for(TransportManager tm : impls){ if(tm.getName().equalsIgnoreCase(backendType)){ logger.info("Found implementation "+backendType); + tm.initBackend(server, user, password, memoryType, dbNames, writeConcern, readConcern); return tm; } }