--- a/dlight.management/src/org/netbeans/modules/dlight/management/api/impl/DataStorageManager.java +++ a/dlight.management/src/org/netbeans/modules/dlight/management/api/impl/DataStorageManager.java @@ -43,6 +43,7 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -141,10 +142,25 @@ * for requested schema (if it can be found within all available DataStorages) */ public synchronized Map getDataStoragesFor(DLightSession session, DataCollector collector) { + if (session == null || collector == null) { + return Collections.emptyMap(); + } + Map result = new HashMap(); + for (DataStorageType type : collector.getRequiredDataStorageTypes()) { - result.put(type, getDataStorageFor(session, type, collector.getDataTablesMetadata())); + final DataStorage dataStorage = getDataStorageFor(session, type, collector.getDataTablesMetadata()); + + if (dataStorage != null) { + result.put(type, dataStorage); + } else { + DLightLogger.getLogger(DataStorageManager.class).log(Level.INFO, + "DataStorageManager.getDataStoragesFor(DLightSession, DataCollector):" // NOI18N + + " NULL storage returned for type={0} [session={1}, collector={2}]", // NOI18N + new Object[] {type, session.getDisplayName(), collector.getName()}); + } } + return result; } @@ -484,9 +500,16 @@ DataStorage newStorage = storage.createStorage(); if (newStorage instanceof ProxyDataStorage) { ProxyDataStorage proxyStorage = (ProxyDataStorage) newStorage; - DataStorage backendStorage = getDataStorageFor(session, proxyStorage.getBackendDataStorageType(), proxyStorage.getBackendTablesMetadata()); + DataStorageType requiredStorageType = proxyStorage.getBackendDataStorageType(); + List requiredTables = proxyStorage.getBackendTablesMetadata(); + DataStorage backendStorage = getDataStorageFor(session, requiredStorageType, requiredTables); + if (backendStorage == null) { + // Means that required (for this proxy) storage cannot be found ... + continue; + } proxyStorage.attachTo(backendStorage); } + if (newStorage != null) { newStorage.createTables(tableMetadatas); if (activeSessionStorages == null) { @@ -507,9 +530,15 @@ if (newStorage != null) { if (newStorage instanceof ProxyDataStorage) { ProxyDataStorage proxyStorage = (ProxyDataStorage) newStorage; - DataStorage backendStorage = getDataStorageFor(session, proxyStorage.getBackendDataStorageType(), proxyStorage.getBackendTablesMetadata()); + DataStorageType requiredStorageType = proxyStorage.getBackendDataStorageType(); + List requiredTables = proxyStorage.getBackendTablesMetadata(); + DataStorage backendStorage = getDataStorageFor(session, requiredStorageType, requiredTables); + if (backendStorage == null) { + continue; + } proxyStorage.attachTo(backendStorage); } + newStorage.createTables(tableMetadatas); return newStorage;