Added i-frame to perform a ckan disconnet during browser closing

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/gcube-ckan-datacatalog@129773 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2016-07-01 14:51:51 +00:00
parent 30231815de
commit 5ab9489dc3
10 changed files with 92 additions and 79 deletions

View File

@ -33,22 +33,5 @@
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="/home/costantino/Downloads/gwt-2.7.0/gwt-user.jar">
<attributes>
<attribute name="javadoc_location" value="file:/home/costantino/Downloads/gwt-2.7.0/doc/javadoc/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="/home/costantino/Downloads/gwt-2.7.0/gwt-codeserver.jar">
<attributes>
<attribute name="javadoc_location" value="file:/home/costantino/Downloads/gwt-2.7.0/doc/javadoc/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="/home/costantino/Downloads/gwt-2.7.0/gwt-dev.jar">
<attributes>
<attribute name="javadoc_location" value="file:/home/costantino/Downloads/gwt-2.7.0/doc/javadoc/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="/home/costantino/Downloads/gwt-2.7.0/validation-api-1.0.0.GA-sources.jar"/>
<classpathentry kind="lib" path="/home/costantino/Downloads/gwt-2.7.0/validation-api-1.0.0.GA.jar" sourcepath="/home/costantino/Downloads/gwt-2.7.0/validation-api-1.0.0.GA-sources.jar"/>
<classpathentry kind="output" path="target/gcube-ckan-datacatalog-1.0.0-SNAPSHOT/WEB-INF/classes"/>
</classpath>

View File

@ -19,23 +19,14 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserGr
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserGroupsEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserOrganizationsEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserOrganizationsEventHandler;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.CKanLeaveFrame;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDataCatalogPanel;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.CreateDatasetForm;
import com.github.gwtbootstrap.client.ui.Modal;
import com.google.gwt.core.client.GWT;
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.DOM;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.RootPanel;
/**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
@ -135,9 +126,9 @@ public class CkanEventHandlerManager {
@Override
public void onShowOrganizations(
ShowUserOrganizationsEvent showUserDatasetsEvent) {
panel.showOrganizations();
}
});
eventBus.addHandler(
@ -166,10 +157,9 @@ public class CkanEventHandlerManager {
@Override
public void onLogout(NotifyLogoutEvent editMetadataEvent) {
CKanLeaveFrame frame = new CKanLeaveFrame(GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE);
DOM.appendChild(RootPanel.getBodyElement(), frame.getElement());
// CKanLeaveFrame frame = new CKanLeaveFrame(GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE);
// DOM.appendChild(RootPanel.getBodyElement(), frame.getElement());
}
});
@ -184,7 +174,7 @@ public class CkanEventHandlerManager {
}
private String getCkanRequest(String pathInfo, String query){
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector());
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector(),"");
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());
pathInfo = CkanConnectorAccessPoint.checkNullString(pathInfo);
query = CkanConnectorAccessPoint.checkNullString(query);

View File

@ -1,7 +1,6 @@
package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.NotifyLogoutEvent;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.CKanLeaveFrame;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDataCatalogPanel;
@ -27,6 +26,7 @@ public class GCubeCkanDataCatalog implements EntryPoint {
private final String DIV_PORTLET_ID = "gCubeCkanDataCatalog";
private CkanEventHandlerManager eventManager = new CkanEventHandlerManager();
private CKanLeaveFrame frame;
public static final String GET_PATH_PARAMETER = "path";
public static final String GET_QUERY_PARAMETER = "query";
@ -40,13 +40,53 @@ public class GCubeCkanDataCatalog implements EntryPoint {
@Override
public void onWindowClosing(ClosingEvent closingEvent) {
// eventManager.getEventBus().fireEvent(new NotifyLogoutEvent());
GCubeCkanDataCatalogPanel.print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
CKanLeaveFrame frame = new CKanLeaveFrame(GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE);
DOM.appendChild(RootPanel.getBodyElement(), frame.getElement());
frame.setUrl(GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE);
/*RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, CKAN_LOGUT_SERVICE);
RequestCallback call = new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
// TODO Auto-generated method stub
}
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
};
builder.setCallback(call );
try {
builder.send();
}
catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
}
});
// Window.addCloseHandler(new CloseHandler<Window>() {
//
// @Override
// public void onClose(CloseEvent<Window> event) {
//
// GCubeCkanDataCatalogPanel.print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
// CKanLeaveFrame frame = new CKanLeaveFrame(GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE);
// DOM.appendChild(RootPanel.getBodyElement(), frame.getElement());
// }
// });
GCubeCkanDataCatalogPanel panel = new GCubeCkanDataCatalogPanel(RootPanel.get(DIV_PORTLET_ID), eventManager.getEventBus());
eventManager.setPanel(panel);
frame = new CKanLeaveFrame();
DOM.appendChild(RootPanel.getBodyElement(), frame.getElement());
}
}

View File

@ -2,26 +2,23 @@ package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.user.client.ui.Frame;
import com.google.gwt.user.client.ui.SimplePanel;
/**
* This iframe handles the onLeave page event in order to call the logout servlet
* @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it)
*/
public class CKanLeaveFrame extends SimplePanel{
public class CKanLeaveFrame extends Frame{
private Frame frame;
public CKanLeaveFrame(String url){
public CKanLeaveFrame(){
try{
GCubeCkanDataCatalogPanel.print("Instancing new IFRAME with uri: "+ url);
frame = new Frame(url);
// GCubeCkanDataCatalogPanel.print("Instancing new IFRAME with uri: "+ url);
getElement().setId("i-frame-logout");
// make it smaller
frame.getElement().getStyle().setWidth(0, Unit.PX);
frame.getElement().getStyle().setHeight(1, Unit.PX);
getElement().getStyle().setWidth(1, Unit.PX);
getElement().getStyle().setHeight(1, Unit.PX);
}catch(Exception e){
GCubeCkanDataCatalogPanel.print("exception " + e);

View File

@ -43,7 +43,7 @@ public class CkanOrganizationsPanel extends VerticalPanel{
hPanel.add(vPanel);
add(hPanel);
this.organizations = result;
this.organizations = result;
//generate the list of organizations
if(result == null || result.isEmpty()){
@ -59,7 +59,7 @@ public class CkanOrganizationsPanel extends VerticalPanel{
Iterator<Entry<String, String>> iterator = organizations.entrySet().iterator();
while (iterator.hasNext()) {
final Map.Entry<String, String> entry = (Map.Entry<String, String>) iterator
final Map.Entry<String, String> entry = iterator
.next();
Button b = new Button();
@ -94,7 +94,7 @@ public class CkanOrganizationsPanel extends VerticalPanel{
* @return
*/
private String getCkanRequest(String pathInfo, String query){
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(father.getBaseURLCKANConnector());
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(father.getBaseURLCKANConnector(), "");
ckan.addGubeToken(father.getGcubeTokenValueToCKANConnector());
pathInfo = CkanConnectorAccessPoint.checkNullString(pathInfo);
query = CkanConnectorAccessPoint.checkNullString(query);

View File

@ -15,8 +15,6 @@ import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.Window.ClosingEvent;
import com.google.gwt.user.client.Window.ClosingHandler;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Frame;
import com.google.gwt.user.client.ui.Image;
@ -258,7 +256,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{
* @return the base urlckan connector
*/
public String getBaseURLCKANConnector() {
return ckanAccessPoint.getBaseUrl();
return ckanAccessPoint.getBaseUrlWithContext();
}

View File

@ -4,30 +4,19 @@
package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.server;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.application.framework.core.session.SessionManager;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import eu.trentorise.opendata.jackan.internal.org.apache.http.HttpStatus;
import eu.trentorise.opendata.traceprov.internal.org.apache.commons.io.IOUtils;
/**
* The Class CkanLogout.
@ -60,12 +49,14 @@ public class CkanLogout extends HttpServlet {
String ckanConnectorLogut = getServletContext().getInitParameter(GcubeCkanDataCatalogServiceImpl.CKANCONNECTORLOGOUT);
logger.debug(GcubeCkanDataCatalogServiceImpl.CKANCONNECTORLOGOUT + " is: "+ckanConnectorLogut);
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanAP.getBaseUrl());
ckan.addPathInfo(ckanConnectorLogut);
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanAP.getBaseUrl(), ckanConnectorLogut);
ckan.addGubeToken(ckanAP.getGcubeTokenValue());
String deleteURI = ckan.buildURI();
// resp.sendRedirect(deleteURI);
logger.debug(GcubeCkanDataCatalogServiceImpl.CKANCONNECTORLOGOUT + " calling: "+deleteURI);
resp.sendRedirect(deleteURI);
/*logger.debug(GcubeCkanDataCatalogServiceImpl.CKANCONNECTORLOGOUT + " is: "+ckanConnectorLogut);
CloseableHttpResponse httpResponse = null;
try {
@ -125,7 +116,7 @@ public class CkanLogout extends HttpServlet {
}finally {
if(httpResponse!=null)
httpResponse.close();
}
}*/
/*try {

View File

@ -132,7 +132,7 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
if(outsidePortal()){
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(getCkanUtilsObj().getCatalogueUrl());
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(getCkanUtilsObj().getCatalogueUrl(),"");
return ckan;
}
@ -151,7 +151,7 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
logger.debug(CKANCONNECTORCONTEXT + " is: "+ckanContext);
ckanContext= ckanContext!=null?ckanContext:"";
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanConnectorBaseUrl+ckanContext);
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanConnectorBaseUrl, ckanContext);
pathInfoParameter = CkanConnectorAccessPoint.checkURLPathSeparator(pathInfoParameter, true, false);
logger.debug("External Path Info parameter: "+pathInfoParameter);
@ -375,8 +375,7 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
String ckanConnectorLogut = getServletContext().getInitParameter(CKANCONNECTORLOGOUT);
logger.debug(CKANCONNECTORLOGOUT + " is: "+ckanConnectorLogut);
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanAP.getBaseUrl());
ckan.addPathInfo(ckanConnectorLogut);
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanAP.getBaseUrl(), ckanConnectorLogut);
ckan.addGubeToken(ckanAP.getGcubeTokenValue());
return ckan.buildURI();
}
@ -397,7 +396,7 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
String ckanConnectorLogut = getServletContext().getInitParameter(CKANCONNECTORLOGOUT);
logger.debug(CKANCONNECTORLOGOUT + " is: "+ckanConnectorLogut);
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanAP.getBaseUrl());
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanAP.getBaseUrl(), ckanConnectorLogut);
ckan.addPathInfo(ckanConnectorLogut);
ckan.addGubeToken(ckanAP.getGcubeTokenValue());

View File

@ -5,7 +5,6 @@ package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.server;
import javax.servlet.http.HttpSession;
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -31,6 +31,7 @@ public class CkanConnectorAccessPoint implements Serializable{
private String queryStringParameters;
private String gcubeTokenValue;
private List<String> listOfVRes;
private String serverviceContext;
/**
* Instantiates a new ckan connector access point.
@ -38,13 +39,16 @@ public class CkanConnectorAccessPoint implements Serializable{
public CkanConnectorAccessPoint() {
}
/**
* Instantiates a new ckan connector access point.
*
* @param baseUrl the base url
* @param serverContext the server context
*/
public CkanConnectorAccessPoint(String baseUrl){
public CkanConnectorAccessPoint(String baseUrl, String servericeContext){
this.baseUrl = baseUrl;
this.serverviceContext = servericeContext;
}
/**
@ -126,17 +130,17 @@ public class CkanConnectorAccessPoint implements Serializable{
String query = "";
path = checkURLPathSeparator(pathInfoParameter, true, false);
query = checkNullString(queryStringParameters);
return baseUrl+path+"?"+query;
return getBaseUrlWithContext()+path+"?"+query;
}
/**
* Gets the base url.
* Gets the base url with context.
*
* @return the baseUrl
* @return the base url with context
*/
public String getBaseUrl() {
public String getBaseUrlWithContext() {
return baseUrl;
return baseUrl+serverviceContext;
}
@ -205,6 +209,16 @@ public class CkanConnectorAccessPoint implements Serializable{
}
/**
* Gets the base url.
*
* @return the baseUrl
*/
public String getBaseUrl() {
return baseUrl;
}
/**
* Check null string.
@ -237,6 +251,8 @@ public class CkanConnectorAccessPoint implements Serializable{
builder.append(gcubeTokenValue);
builder.append(", listOfVRes=");
builder.append(listOfVRes);
builder.append(", context=");
builder.append(serverviceContext);
builder.append("]");
return builder.toString();
}