diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/plugins/FolderPluginHandler.java b/src/main/java/org/gcube/data/access/storagehub/handlers/plugins/FolderPluginHandler.java index fc517f0..e739600 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/plugins/FolderPluginHandler.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/plugins/FolderPluginHandler.java @@ -2,9 +2,7 @@ package org.gcube.data.access.storagehub.handlers.plugins; import java.util.Collections; import java.util.Map; -import java.util.stream.Collectors; -import javax.enterprise.inject.Default; import javax.enterprise.inject.Instance; import javax.inject.Inject; import javax.inject.Singleton; @@ -20,6 +18,7 @@ import org.gcube.common.storagehub.model.items.ExternalFolder; import org.gcube.common.storagehub.model.items.Item; import org.gcube.common.storagehub.model.plugins.FolderManager; import org.gcube.common.storagehub.model.plugins.FolderManagerConnector; +import org.gcube.common.storagehub.model.storages.StorageBackend; import org.gcube.data.access.storagehub.handlers.items.Node2ItemConverter; import org.gcube.data.access.storagehub.storage.backend.impl.GcubeFolderManager; import org.slf4j.Logger; @@ -27,37 +26,44 @@ import org.slf4j.LoggerFactory; @Singleton public class FolderPluginHandler { - + private static Logger log = LoggerFactory.getLogger(FolderPluginHandler.class); - + @Inject Node2ItemConverter node2Item; - + private GcubeFolderManager defaultManager = new GcubeFolderManager(); - + public FolderManager getDefault() { return defaultManager; } - + @Inject Instance connectors; - + private Map connectorsMap; - + + private Map storagesMap; + FolderPluginHandler(){ - if (connectors !=null) - connectorsMap = connectors.stream().collect(Collectors.toMap(FolderManagerConnector::getName, e -> e )); + if (connectors !=null) + for (FolderManagerConnector connector : connectors) { + if (connectorsMap.containsKey(connector.getName())) + throw new RuntimeException("multiple connectors with the same name found"); + connectorsMap.put(connector.getName(), connector); + + } else { log.info("connectors are null"); connectorsMap = Collections.emptyMap(); } } - + public FolderManagerConnector getConnector(String name) throws PluginNotFoundException { if (!connectorsMap.containsKey(name)) throw new PluginNotFoundException("plugin "+name+" not found"); return connectorsMap.get(name); } - + public FolderManager getFolderManager(Item item) throws PluginInitializationException, PluginNotFoundException, RepositoryException, BackendGenericError{ if (!item.isExternalManaged()) return defaultManager; @@ -67,7 +73,7 @@ public class FolderPluginHandler { String parentId = item.getParentId(); Node node = session.getNodeByIdentifier(parentId); parent = node2Item.getItem(node, Excludes.ALL); - + if (parent !=null && parent instanceof ExternalFolder) { ExternalFolder extParent = (ExternalFolder) parent; String plugin = extParent.getManagedBy();