Added fix to handle path into Get Parameter

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/gcube-ckan-datacatalog@129611 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2016-06-29 09:25:46 +00:00
parent 5ba5151323
commit 27ab6ac956
3 changed files with 96 additions and 73 deletions

View File

@ -25,6 +25,11 @@ import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.CreateDatase
import com.github.gwtbootstrap.client.ui.Modal;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
@ -60,12 +65,9 @@ public class CkanEventHandlerManager {
@Override
public void onShowHome(ShowHomeEvent showHomeEvent) {
String request = getCkanRequest(null, null);
panel.instanceCkanFrame(request);
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
String newPath = panel.getPathInfo();
ckan.addPathInfo(newPath);
panel.instanceCkanFrame(ckan.buildURI());
}
});
// bind on insert metadata
@ -118,11 +120,8 @@ public class CkanEventHandlerManager {
@Override
public void onShowDatasets(
ShowUserDatasetsEvent showUserDatasetsEvent) {
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
String newPath = panel.getPathInfo() + "/dashboard/datasets";
ckan.addPathInfo(newPath);
panel.instanceCkanFrame(ckan.buildURI());
String request = getCkanRequest("/dashboard/datasets", null);
panel.instanceCkanFrame(request);
}
});
eventBus.addHandler(
@ -132,11 +131,8 @@ public class CkanEventHandlerManager {
@Override
public void onShowOrganizations(
ShowUserOrganizationsEvent showUserDatasetsEvent) {
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
String newPath = panel.getPathInfo() + "/dashboard/organizations";
ckan.addPathInfo(newPath);
panel.instanceCkanFrame(ckan.buildURI());
String request = getCkanRequest("/dashboard/organizations", null);
panel.instanceCkanFrame(request);
}
});
eventBus.addHandler(
@ -144,12 +140,8 @@ public class CkanEventHandlerManager {
@Override
public void onShowGroups(ShowUserGroupsEvent showUserDatasetsEvent) {
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
String newPath = panel.getPathInfo() + "/dashboard/groups";
ckan.addPathInfo(newPath);
panel.instanceCkanFrame(ckan.buildURI());
String request = getCkanRequest("/dashboard/groups", null);
panel.instanceCkanFrame(request);
}
});
@ -160,11 +152,8 @@ public class CkanEventHandlerManager {
@Override
public void onShowStatistics(
ShowStatisticsEvent showStatisticsEvent) {
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint( panel.getBaseURLCKANConnector());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
String newPath = panel.getPathInfo() + "/stats";
ckan.addPathInfo(newPath);
panel.instanceCkanFrame(ckan.buildURI());
String request = getCkanRequest("/stats", null);
panel.instanceCkanFrame(request);
}
});
@ -172,6 +161,25 @@ public class CkanEventHandlerManager {
@Override
public void onLogout(NotifyLogoutEvent editMetadataEvent) {
RequestBuilder logutRequestBuilder = new RequestBuilder(RequestBuilder.GET, GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE);
logutRequestBuilder.setCallback(new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
}
@Override
public void onError(Request request, Throwable exception) {
}
});
try {
logutRequestBuilder.send();
} catch ( RequestException e ) {
Window.alert("Error on logout");
}
// open("https://ckan-d-d4s.d4science.org:443/ckan-connector/gcube/service/disconnect?gcube-token=4620e6d0-2313-4f48-9d54-eb3efd01a810", "_blank", null);
// String url = GWT.getHostPageBaseURL()+"CkanLogoutCatalog.html?logout=https://ckan-d-d4s.d4science.org:443/ckan-connector/gcube/service/disconnect?gcube-token=4620e6d0-2313-4f48-9d54-eb3efd01a810";
// Window.open(url, "_blank", null);
@ -182,28 +190,6 @@ public class CkanEventHandlerManager {
// com.google.gwt.user.client.Window.open(GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE, "_blank", "");
// com.google.gwt.user.client.Window.open("https://ckan-d-d4s.d4science.org:443/ckan-connector/gcube/service/disconnect?gcube-token=4620e6d0-2313-4f48-9d54-eb3efd01a810", "_blank", "");
/*RequestBuilder logutRequestBuilder = new RequestBuilder(RequestBuilder.GET, GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE);
logutRequestBuilder.setCallback(new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
// Window.alert("Logout: "+response.getHeadersAsString());
}
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
});
try {
logutRequestBuilder.send();
} catch ( RequestException e ) {
Window.alert("Error on logout");
}*/
}
});
@ -217,6 +203,19 @@ public class CkanEventHandlerManager {
});
}
private String getCkanRequest(String pathInfo, String query){
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector());
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
pathInfo = CkanConnectorAccessPoint.checkNullString(pathInfo);
query = CkanConnectorAccessPoint.checkNullString(query);
ckan.addPathInfo(pathInfo);
ckan.addQueryString(query);
return ckan.buildURI();
}
private static native void logutWindow(String uri, boolean timeout)/*-{
var newWindow = window.open(uri, '_blank', 'width=50,height=50');
newWindow.onload = function() {

View File

@ -143,23 +143,19 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
ckanConnectorBaseUrl = ckanConnectorBaseUrl.startsWith(HTTP) && !ckanConnectorBaseUrl.startsWith(HTTPS)?ckanConnectorBaseUrl.replaceFirst(HTTP, HTTPS):ckanConnectorBaseUrl;
ckanConnectorBaseUrl = ckanConnectorBaseUrl.contains(PORT_HTTP)?ckanConnectorBaseUrl.replace(PORT_HTTP, PORT_HTTPS):ckanConnectorBaseUrl;
logger.debug("Base URL is: "+ckanConnectorBaseUrl);
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanConnectorBaseUrl);
//GET CONTEXT
String ckanContext = getServletContext().getInitParameter(CKANCONNECTORCONTEXT);
logger.debug(CKANCONNECTORCONTEXT + " is: "+ckanContext);
ckanContext= ckanContext!=null?ckanContext:"";
if(pathInfoParameter!=null && pathInfoParameter.length()>0){
pathInfoParameter=pathInfoParameter.startsWith("/")?pathInfoParameter:"/"+pathInfoParameter;
}else
pathInfoParameter = "";
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanConnectorBaseUrl+ckanContext);
pathInfoParameter = CkanConnectorAccessPoint.checkURLPathSeparator(pathInfoParameter, true, false);
logger.debug("External Path Info parameter: "+pathInfoParameter);
//ADD PATH INFO
ckan.addPathInfo(ckanContext+pathInfoParameter);
ckan.addPathInfo(pathInfoParameter);
logger.debug("CKanConnector pathInfo: "+ckan.getPathInfoParameter());
ckan.addQueryString(queryStringParameters);

View File

@ -6,6 +6,8 @@ package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared;
import java.io.Serializable;
import java.util.List;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.server.GcubeCkanDataCatalogServiceImpl;
/**
* The Class CkanConnectorAccessPoint.
@ -20,6 +22,8 @@ public class CkanConnectorAccessPoint implements Serializable{
*/
private static final long serialVersionUID = 3771903616375335843L;
public static final String URL_PATH_SEPARATOR = "/";
private static final String LIST_OF_VRES_PARAMETER = "listOfVres";
private static final String GCUBE_TOKEN_PARAMETER = "gcube-token";
private String baseUrl;
@ -64,8 +68,8 @@ public class CkanConnectorAccessPoint implements Serializable{
if(queryString==null || queryString.isEmpty())
return;
if(queryString.startsWith("&")){
queryString = queryString.substring(1, queryString.length()); //removes '&'
if(queryString.startsWith("&") || queryString.startsWith("?")){
queryString = queryString.substring(1, queryString.length()); //removes '&' or '?'
}
queryStringParameters=queryStringParameters==null?queryString:queryStringParameters+"&"+queryString;
@ -120,24 +124,11 @@ public class CkanConnectorAccessPoint implements Serializable{
String path = "";
String query = "";
if(pathInfoParameter!=null && !pathInfoParameter.isEmpty())
path=pathInfoParameter.startsWith("/")?pathInfoParameter:"/"+pathInfoParameter;
else
path="";
if(queryStringParameters==null || queryStringParameters.isEmpty())
query="";
else
query = queryStringParameters;
path = checkURLPathSeparator(pathInfoParameter, true, false);
query = checkNullString(queryStringParameters);
return baseUrl+path+"?"+query;
}
/**
* Gets the base url.
*
@ -192,6 +183,43 @@ public class CkanConnectorAccessPoint implements Serializable{
return listOfVRes;
}
/**
* Check url path separator.
*
* @param url the url
* @param head - checks the {@link GcubeCkanDataCatalogServiceImpl.URL_PATH_SEPARATOR} in head adding if do not exist
* @param tail - checks the {@link GcubeCkanDataCatalogServiceImpl.URL_PATH_SEPARATOR} in tail adding if do not exist
* @return the string - if null return an empty string otherwise a string with {@link GcubeCkanDataCatalogServiceImpl.URL_PATH_SEPARATOR}
*/
public static String checkURLPathSeparator(String url, boolean head, boolean tail){
if(url!=null && url.length()>0){
if(head)
url=url.startsWith(URL_PATH_SEPARATOR)?url:URL_PATH_SEPARATOR+url;
if(tail)
url=url.endsWith(URL_PATH_SEPARATOR)?url:url+URL_PATH_SEPARATOR;
}else
url = "";
return url;
}
/**
* Check null string.
*
* @param value the value
* @return the string if is not null otherwise an empty string
*/
public static String checkNullString(String value){
if(value==null)
return "";
else
return value;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/