diff --git a/.classpath b/.classpath
index 306919b..fb72d8d 100644
--- a/.classpath
+++ b/.classpath
@@ -1,6 +1,6 @@
-
+
@@ -26,7 +26,7 @@
-
+
@@ -36,5 +36,5 @@
-
+
diff --git a/.settings/com.gwtplugins.gdt.eclipse.core.prefs b/.settings/com.gwtplugins.gdt.eclipse.core.prefs
index 1a85add..6cdc4d8 100644
--- a/.settings/com.gwtplugins.gdt.eclipse.core.prefs
+++ b/.settings/com.gwtplugins.gdt.eclipse.core.prefs
@@ -1,5 +1,5 @@
eclipse.preferences.version=1
jarsExcludedFromWebInfLib=
-lastWarOutDir=/home/francesco/git/gcube-ckan-datacatalog/target/gcube-ckan-datacatalog-1.8.0-SNAPSHOT
+lastWarOutDir=/home/francesco/git/gcube-ckan-datacatalog/target/gcube-ckan-datacatalog-1.9.0-SNAPSHOT
warSrcDir=src/main/webapp
warSrcDirIsOutput=false
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 857ddea..5b04c71 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -1,5 +1,5 @@
-
+
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c2eaefe..51e75c4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,7 +4,11 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## [v1.8.1] [r4.24.0] - 2020-06-18
+## [v1.9.0] [r4.24.0] - 2020-07-03
+
+** Enhancements **
+
+[#19559] Check and try to avoid the view per VRE configuration for Public and Gateway Catalogue
Just to include the dependencies [#18700] and [#19479]
diff --git a/pom.xml b/pom.xml
index 937289e..a2d4ee2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
org.gcube.portlets.gcubeckan
gcube-ckan-datacatalog
war
- 1.8.1
+ 1.9.0
gCube CKAN Data Catalog
The gCube CKAN Data Catalog portlet
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogService.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogService.java
index 1b4a5fb..1f3ba95 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogService.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogService.java
@@ -23,13 +23,14 @@ public interface GcubeCkanDataCatalogService extends RemoteService {
/**
* Get the ckan connector access point.
*
+ * @param browserLocationURL the browser location URL
* @param pathInfoParameters the path info parameters
* @param queryStringParameters the query string parameters
* @return the c kan connector
* @throws Exception the exception
*/
CkanConnectorAccessPoint getCKanConnector(
- String pathInfoParameters, String queryStringParameters) throws Exception;
+ String browserLocationURL, String pathInfoParameters, String queryStringParameters) throws Exception;
/**
* Get the current role in CKAN for this user.
@@ -75,9 +76,11 @@ public interface GcubeCkanDataCatalogService extends RemoteService {
boolean isManageProductEnabled();
/**
- * Check if the management panels but publish/share link must be removed
+ * Check if the view per VRE is enabled, so the management panels but publish/share link must be removed.
+ * @param browserLocationURL the browser location URL
+ * @return the string
*/
- String isViewPerVREEnabled();
+ String isViewPerVREEnabled(String browserLocationURL);
/**
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogServiceAsync.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogServiceAsync.java
index eeedcb7..92796bc 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogServiceAsync.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GcubeCkanDataCatalogServiceAsync.java
@@ -30,15 +30,16 @@ public interface GcubeCkanDataCatalogServiceAsync {
void getMyRole(AsyncCallback callback);
/**
- * Gets the c kan connector.
+ * Gets the CKAN connector.
*
+ * @param browserLocationURL the browser location URL that performs the call
* @param pathInfoParameters the path info parameters
* @param queryStringParameters the query string parameters
* @param callback the callback
* @return the c kan connector
*/
void getCKanConnector(
- String pathInfoParameters, String queryStringParameters,
+ String browserLocationURL, String pathInfoParameters, String queryStringParameters,
AsyncCallback callback);
/**
@@ -73,12 +74,14 @@ public interface GcubeCkanDataCatalogServiceAsync {
*/
void isManageProductEnabled(AsyncCallback callback);
+
/**
- * check if the view per vre is enabled.
+ * Checks if is view per VRE enabled.
*
+ * @param browserLocationURL the browser location URL
* @param callback the callback
*/
- void isViewPerVREEnabled(AsyncCallback callback);
+ void isViewPerVREEnabled(String browserLocationURL, AsyncCallback callback);
/**
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java
index 794e2b8..6b34968 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java
@@ -99,7 +99,9 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
String pathParameter = paramsMap.get(GCubeCkanDataCatalog.GET_PATH_PARAMETER); //Window.Location.getParameter(GCubeCkanDataCatalog.GET_PATH_PARAMETER);
String queryParameter = paramsMap.get(GCubeCkanDataCatalog.GET_QUERY_PARAMETER);// Window.Location.getParameter(GCubeCkanDataCatalog.GET_QUERY_PARAMETER);
- GCubeCkanDataCatalog.service.getCKanConnector(
+ String browserLocationURL = getBrowserLocationURL();
+
+ GCubeCkanDataCatalog.service.getCKanConnector(browserLocationURL,
pathParameter, queryParameter,
new AsyncCallback() {
@@ -122,10 +124,11 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
instanceCkanFrame(ckan.buildURI());
GCubeCkanDataCatalogPanel.this.rootPanel.remove(loading);
+ String browserLocationURL = getBrowserLocationURL();
// check if view per organisation is enabled
//and performing some actions in this case (e.g. removed the management buttons, etc.)
- GCubeCkanDataCatalog.service.isViewPerVREEnabled(new AsyncCallback() {
+ GCubeCkanDataCatalog.service.isViewPerVREEnabled(browserLocationURL, new AsyncCallback() {
@Override
public void onSuccess(String result) {
@@ -267,6 +270,26 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
listenForPostMessage();
}
+
+
+ /**
+ * Gets the browser location URL.
+ *
+ * @return the browser location URL
+ */
+ public String getBrowserLocationURL() {
+
+ String browserLocationURL = null;
+
+ try {
+ browserLocationURL = Window.Location.getHref();
+ }catch (Exception e) {
+ // silent
+ }
+
+ GWT.log("Returning browserLocationURL: "+browserLocationURL);
+ return browserLocationURL;
+ }
public static String getLatestSelectedProductIdentifier(){
return latestSelectedProductIdentifier;
diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/server/GcubeCkanDataCatalogServiceImpl.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/server/GcubeCkanDataCatalogServiceImpl.java
index 233e050..516fb60 100644
--- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/server/GcubeCkanDataCatalogServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/server/GcubeCkanDataCatalogServiceImpl.java
@@ -81,7 +81,8 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
* @see org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.GcubeCkanDataCatalogService#getCKanConnector(java.lang.String, java.lang.String)
*/
@Override
- public CkanConnectorAccessPoint getCKanConnector(String pathInfoParameter, String queryStringParameters) throws Exception {
+ public CkanConnectorAccessPoint getCKanConnector(String browserLocationURL, String pathInfoParameter, String queryStringParameters) throws Exception {
+ logger.info("getCKanConnector [browserLocationURL: "+browserLocationURL+ " ]");
logger.info("getCKanConnector [pathInfo: "+pathInfoParameter + ", query: "+queryStringParameters+"]");
try{
@@ -106,10 +107,11 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
}
if(pathInfoParameter == null || pathInfoParameter.isEmpty()){
- pathInfoParameter = isViewPerVREEnabled();
+ //pathInfoParameter is null or empty, in this case we are pointing to the Catalogue Home
+ pathInfoParameter = isViewPerVREEnabled(browserLocationURL);
}
- CkanConnectorAccessPoint ckAP = getCkanConnectorAccessPoint(pathInfoParameter, queryStringParameters, scopePerCurrentUrl);
+ CkanConnectorAccessPoint ckAP = getCkanConnectorAccessPoint(browserLocationURL, pathInfoParameter, queryStringParameters, scopePerCurrentUrl);
SessionUtil.saveCkanAccessPoint(this.getThreadLocalRequest().getSession(), scopePerCurrentUrl, ckAP);
logger.info("Built the URI to CKAN (connector in case of user logged): "+ckAP.buildURI());
logger.debug("returning ckanConnectorUri: "+ckAP);
@@ -125,13 +127,14 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
/**
* Gets the ckan connector access point.
*
+ * @param browserLocationURL the browser location URL
* @param pathInfoParameter the path info parameter
* @param queryStringParameters the query string parameters
* @param scopePerCurrentUrl the scope per current url
* @return the ckan connector access point
* @throws Exception the exception
*/
- private CkanConnectorAccessPoint getCkanConnectorAccessPoint(String pathInfoParameter, String queryStringParameters, String scopePerCurrentUrl) throws Exception {
+ private CkanConnectorAccessPoint getCkanConnectorAccessPoint(String browserLocationURL, String pathInfoParameter, String queryStringParameters, String scopePerCurrentUrl) throws Exception {
if(outsideLoginPortal()){
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(getCatalogue(scopePerCurrentUrl).getCatalogueUrl(),"");
@@ -186,7 +189,7 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
getThreadLocalRequest()).getEmail(),
scopePerCurrentUrl,
getCatalogue(scopePerCurrentUrl),
- isViewPerVREEnabled() != null,
+ isViewPerVREEnabled(browserLocationURL) != null,
getThreadLocalRequest().getSession());
ckan.addListOfVREs(roleForVre);
@@ -529,10 +532,11 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
/**
* Ask to liferay.
*
+ * @param browserLocationURL the browser location URL
* @return the string
*/
@Override
- public String isViewPerVREEnabled(){
+ public String isViewPerVREEnabled(String browserLocationURL){
String toReturn = null;
String scopePerCurrentUrl = SessionUtil.getScopeFromClientUrl(getThreadLocalRequest());// the view per vre can be managed independently for each context SessionUtil.getScopeFromClientUrl(getThreadLocalRequest());
@@ -552,11 +556,22 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
GroupManager gm = new LiferayGroupManager();
enabled = (boolean) gm.readCustomAttr(gm.getGroupIdFromInfrastructureScope(scopePerCurrentUrl), VIEW_PER_ORGANIZATION_LIFERAY_CUSTOM_FIELD);
+
if(enabled){
String groupName = gm.getGroup(gm.getGroupIdFromInfrastructureScope(scopePerCurrentUrl)).getGroupName().toLowerCase();
- toReturn = "/organization_vre/" + groupName;
+ logger.info("VRE name (toLowerCase) read by LF GroupManager is: "+groupName);
+ String secureVREName = "/"+groupName+"/";
+ if(browserLocationURL.toLowerCase().contains(secureVREName)){
+ //this should mean the caller (the location URL) is from VRE environment
+ logger.info("The browserLocationURL: "+browserLocationURL+ " contains the string /VRE name/ '"+secureVREName+"'. The Catalogue Portlet should be at VRE level, reading configuration isViewPerVREEnabled");
+ toReturn = "/organization_vre/" + groupName;
+ }else {
+ //this should mean the caller is out from VRE environment,so should be a public or gateway catalogue
+ logger.info("The browserLocationURL: "+browserLocationURL+ " DOES NOT contain the string /VRE name/ '"+secureVREName+"'. The Catalogue Portlet should NOT be at VRE level. Ignoring configuration isViewPerVREEnabled");
+ }
}
logger.debug("Read value for " + VIEW_PER_ORGANIZATION_LIFERAY_CUSTOM_FIELD + " is " + enabled + " and path is " + toReturn);
+
}catch(Exception e){
logger.error("Failed to parse custom field value", e);
}
diff --git a/src/test/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GwtTestGCubeCkanDataCatalog.java b/src/test/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GwtTestGCubeCkanDataCatalog.java
index bb8f905..66a2f1e 100644
--- a/src/test/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GwtTestGCubeCkanDataCatalog.java
+++ b/src/test/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GwtTestGCubeCkanDataCatalog.java
@@ -1,26 +1,30 @@
-//package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client;
-//
-//import com.google.gwt.junit.client.GWTTestCase;
-//
-///**
-// * GWT JUnit integration tests must extend GWTTestCase.
-// * Using "GwtTest*"
naming pattern exclude them from running with
-// * surefire during the test phase.
-// *
-// * If you run the tests using the Maven command line, you will have to
-// * navigate with your browser to a specific url given by Maven.
-// * See https://gwt-maven-plugin.github.io/gwt-maven-plugin/user-guide/testing.html
-// * for details.
-// */
-//public class GwtTestGCubeCkanDataCatalog extends GWTTestCase {
-//
-// /**
-// * Must refer to a valid module that sources this class.
-// */
-// public String getModuleName() {
-// return "org.gcube.portlets.gcubeckan.gcubeckandatacatalog.GCubeCkanDataCatalogJUnit";
-// }
-//
-//
-//
-//}
+package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client;
+
+
+public class GwtTestGCubeCkanDataCatalog {
+
+ private static String groupName = "sobigdatalab";
+ private static String browserLocationURL = "https://sobigdata.d4science.org/group/sobigdata-gateway/data-catalogue";
+ /*
+ public static void main(String[] args) {
+
+ String toReturn = null;
+
+ String secureVREName = "/" + groupName + "/";
+ if (browserLocationURL.toLowerCase().contains(secureVREName)) {
+ System.out.println("The browserLocationURL: " + browserLocationURL + " contains the VRE name '"
+ + secureVREName
+ + "' read by LF GroupManager. The Catalogue Portlet should be at VRE level, reading configuration isViewPerVREEnabled");
+ toReturn = "/organization_vre/" + groupName;
+ } else {
+ // this should mean the caller is out from VRE environment,so should be a public
+ // or gateway catalogue
+ System.out.println("The browserLocationURL: " + browserLocationURL + " DOES NOT contain the VRE name '"
+ + secureVREName
+ + "' read by LF GroupManager. The Catalogue Portlet should NOT be at VRE level. Ignoring configuration isViewPerVREEnabled");
+ }
+
+ System.out.println("To return is: "+toReturn);
+ }*/
+
+}