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:
parent
5ba5151323
commit
27ab6ac956
|
@ -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() {
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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()
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue