diff --git a/.classpath b/.classpath
index 30095de..a8509f0 100644
--- a/.classpath
+++ b/.classpath
@@ -1,12 +1,12 @@
-
+
-
+
@@ -45,5 +45,5 @@
-
+
diff --git a/distro/changelog.xml b/distro/changelog.xml
index 2f6b64d..598a499 100644
--- a/distro/changelog.xml
+++ b/distro/changelog.xml
@@ -1,4 +1,8 @@
+
+ Fixed download in case of multitab on different scopes
+
Added Context Chart
diff --git a/pom.xml b/pom.xml
index 01ef428..4567623 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
4.0.0
org.gcube.portlets.admin
accounting-manager
- 1.5.0-SNAPSHOT
+ 1.6.0-SNAPSHOT
war
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/AccountingManagerServiceImpl.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/AccountingManagerServiceImpl.java
index 3d23b2a..97c9a1e 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/AccountingManagerServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/AccountingManagerServiceImpl.java
@@ -168,8 +168,8 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet
AccountingStateData accountingStateData = new AccountingStateData(
accountingType, seriesRequest, seriesResponse);
- SessionUtil.setAccountingStateData(session, accountingType,
- accountingStateData);
+ SessionUtil.setAccountingStateData(session, serviceCredentials,
+ accountingType, accountingStateData);
return seriesResponse;
} catch (ServiceException e) {
@@ -283,7 +283,7 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet
logger.debug("SaveDataOnWorkspace(): " + accountingType);
AccountingStateData accountingStateData = SessionUtil
- .getAccountingStateData(session, accountingType);
+ .getAccountingStateData(session, serviceCredentials, accountingType);
if (accountingStateData == null) {
logger.error("No series present in session for thi accounting type: "
+ accountingType);
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/ExportServlet.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/ExportServlet.java
index bf9df94..572f6ca 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/ExportServlet.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/ExportServlet.java
@@ -110,7 +110,7 @@ public class ExportServlet extends HttpServlet {
AccountingStateData accountingStateData = SessionUtil
.getAccountingStateData(session,
- AccountingType.valueOf(accountingType));
+ serviceCredentials, AccountingType.valueOf(accountingType));
if (accountingStateData == null) {
logger.error("No series present in session for this accounting type: "
+ accountingType);
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/SessionUtil.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/SessionUtil.java
index 6c23d82..d315d80 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/SessionUtil.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/SessionUtil.java
@@ -4,6 +4,7 @@
package org.gcube.portlets.admin.accountingmanager.server;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
@@ -202,31 +203,56 @@ public class SessionUtil {
}
public static void setAccountingStateData(HttpSession httpSession,
+ ServiceCredentials serviceCredentials,
AccountingType accountingType,
AccountingStateData accountingStateData) {
- AccountingState accountingState = (AccountingState) httpSession
- .getAttribute(Constants.SESSION_ACCOUNTING_STATE);
+ @SuppressWarnings("unchecked")
+ HashMap accountingStateMap = (HashMap) httpSession
+ .getAttribute(Constants.SESSION_ACCOUNTING_STATE_MAP);
- if (accountingState == null) {
- accountingState = new AccountingState();
+ if (accountingStateMap == null) {
+ AccountingState accountingState = new AccountingState();
accountingState.setState(accountingType, accountingStateData);
- httpSession.setAttribute(Constants.SESSION_ACCOUNTING_STATE,
+ accountingStateMap = new HashMap<>();
+ accountingStateMap.put(serviceCredentials.getScope(),
accountingState);
+ httpSession.setAttribute(Constants.SESSION_ACCOUNTING_STATE_MAP,
+ accountingStateMap);
} else {
- accountingState.setState(accountingType, accountingStateData);
+ AccountingState accountingState = accountingStateMap
+ .get(serviceCredentials.getScope());
+
+ if (accountingState == null) {
+ accountingState = new AccountingState();
+ accountingState.setState(accountingType, accountingStateData);
+ accountingStateMap.put(serviceCredentials.getScope(),
+ accountingState);
+ } else {
+ accountingState.setState(accountingType, accountingStateData);
+ }
}
return;
}
public static AccountingStateData getAccountingStateData(
- HttpSession httpSession, AccountingType accountingType) {
- AccountingState accountingState = (AccountingState) httpSession
- .getAttribute(Constants.SESSION_ACCOUNTING_STATE);
- if (accountingState == null) {
+ HttpSession httpSession, ServiceCredentials serviceCredentials,
+ AccountingType accountingType) {
+ @SuppressWarnings("unchecked")
+ HashMap accountingStateMap = (HashMap) httpSession
+ .getAttribute(Constants.SESSION_ACCOUNTING_STATE_MAP);
+
+ if (accountingStateMap == null) {
return null;
} else {
- return accountingState.getState(accountingType);
+ AccountingState accountingState = accountingStateMap
+ .get(serviceCredentials.getScope());
+
+ if (accountingState == null) {
+ return null;
+ } else {
+ return accountingState.getState(accountingType);
+ }
}
}
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/Constants.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/Constants.java
index 38d2e34..6d3ea91 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/Constants.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/Constants.java
@@ -32,7 +32,7 @@ public class Constants {
public static final String EXPORT_SERVLET_TYPE_PARAMETER = "ExportServletType";
public static final String EXPORT_SERVLET_ACCOUNTING_TYPE_PARAMETER = "AccountingType";
- public static final String SESSION_ACCOUNTING_STATE = "ACCOUNTING_STATE";
+ public static final String SESSION_ACCOUNTING_STATE_MAP = "ACCOUNTING_STATE_MAP";
public static final AccountingType[] DEFAULT_TABS = new AccountingType[] { AccountingType.STORAGE };;