When switching among tabs the ckan-connector is no longer invoked since it is useless.

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/gcube-ckan-datacatalog@142586 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Costantino Perciante 2017-02-15 17:49:48 +00:00
parent c4014dfcf2
commit 613228b4af
10 changed files with 124 additions and 102 deletions

View File

@ -4,9 +4,6 @@
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/> <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<dependent-module archiveName="ckan-metadata-publisher-widget-1.2.2-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/ckan-metadata-publisher-widget/ckan-metadata-publisher-widget">
<dependency-type>uses</dependency-type>
</dependent-module>
<property name="context-root" value="gcube-ckan-datacatalog"/> <property name="context-root" value="gcube-ckan-datacatalog"/>
<property name="java-output-path" value="/gcube-ckan-datacatalog/target/gcube-ckan-datacatalog-1.0.0-SNAPSHOT/WEB-INF/classes"/> <property name="java-output-path" value="/gcube-ckan-datacatalog/target/gcube-ckan-datacatalog-1.0.0-SNAPSHOT/WEB-INF/classes"/>
</wb-module> </wb-module>

View File

@ -13,7 +13,7 @@
<groupId>org.gcube.portlets.gcubeckan</groupId> <groupId>org.gcube.portlets.gcubeckan</groupId>
<artifactId>gcube-ckan-datacatalog</artifactId> <artifactId>gcube-ckan-datacatalog</artifactId>
<packaging>war</packaging> <packaging>war</packaging>
<version>1.2.2-SNAPSHOT</version> <version>1.2.1-SNAPSHOT</version>
<name>gCube CKAN Data Catalog</name> <name>gCube CKAN Data Catalog</name>
<description>The gCube CKAN Data Catalog portlet</description> <description>The gCube CKAN Data Catalog portlet</description>

View File

@ -152,7 +152,6 @@ public class CkanEventHandlerManager {
@Override @Override
public void onShowGroups(ShowGroupsEvent showGroupsEvent) { public void onShowGroups(ShowGroupsEvent showGroupsEvent) {
//String request = getCkanRequest("/dashboard/groups", null);
//panel.instanceCkanFrame(request); //panel.instanceCkanFrame(request);
if(showGroupsEvent.isOwnOnly()) if(showGroupsEvent.isOwnOnly())
panel.showGroups(); panel.showGroups();
@ -213,9 +212,9 @@ public class CkanEventHandlerManager {
* @return the ckan request * @return the ckan request
*/ */
private String getCkanRequest(String pathInfo, String query){ private String getCkanRequest(String pathInfo, String query){
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector(),""); CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getCatalogueUrl(),"");
if(panel.getGcubeTokenValueToCKANConnector() != null) /*if(panel.getGcubeTokenValueToCKANConnector() != null)
ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector()); ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector());*/
pathInfo = CkanConnectorAccessPoint.checkNullString(pathInfo); pathInfo = CkanConnectorAccessPoint.checkNullString(pathInfo);
query = CkanConnectorAccessPoint.checkNullString(query); query = CkanConnectorAccessPoint.checkNullString(query);
ckan.addPathInfo(pathInfo); ckan.addPathInfo(pathInfo);

View File

@ -60,12 +60,12 @@ public interface GcubeCkanDataCatalogService extends RemoteService {
*/ */
String logoutFromCkanURL(); String logoutFromCkanURL();
/** // /**
* Remove auth cookie for ckan of this user. // * Remove auth cookie for ckan of this user.
* // *
* @return the string // * @return the string
*/ // */
String logoutURIFromCkan(); // String logoutURIFromCkan();
/** /**
* Check if the there is a user logged in. * Check if the there is a user logged in.

View File

@ -38,8 +38,8 @@ public interface GcubeCkanDataCatalogServiceAsync {
* @return the c kan connector * @return the c kan connector
*/ */
void getCKanConnector( void getCKanConnector(
String pathInfoParameters, String queryStringParameters, String pathInfoParameters, String queryStringParameters,
AsyncCallback<CkanConnectorAccessPoint> callback); AsyncCallback<CkanConnectorAccessPoint> callback);
/** /**
* Logout from ckan url. * Logout from ckan url.
@ -48,12 +48,12 @@ public interface GcubeCkanDataCatalogServiceAsync {
*/ */
void logoutFromCkanURL(AsyncCallback<String> callback); void logoutFromCkanURL(AsyncCallback<String> callback);
/** // /**
* Logout uri from ckan. // * Logout uri from ckan.
* // *
* @param callback the callback // * @param callback the callback
*/ // */
void logoutURIFromCkan(AsyncCallback<String> callback); // void logoutURIFromCkan(AsyncCallback<String> callback);
/** /**
* Gets the ckan organizations names and urls for user. * Gets the ckan organizations names and urls for user.
@ -63,7 +63,7 @@ public interface GcubeCkanDataCatalogServiceAsync {
*/ */
void getCkanOrganizationsNamesAndUrlsForUser( void getCkanOrganizationsNamesAndUrlsForUser(
AsyncCallback<List<BeanUserInOrgGroupRole>> callback); AsyncCallback<List<BeanUserInOrgGroupRole>> callback);
/** /**
* Retrieve the list of groups to whom the user belongs and their urls. * Retrieve the list of groups to whom the user belongs and their urls.
* *

View File

@ -121,8 +121,8 @@ public class CkanGroupsPanel extends VerticalPanel{
* @return * @return
*/ */
private String getCkanRequest(String pathInfo, String query){ private String getCkanRequest(String pathInfo, String query){
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(father.getBaseURLCKANConnector(), ""); CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(father.getCatalogueUrl(), "");
ckan.addGubeToken(father.getGcubeTokenValueToCKANConnector()); //ckan.addGubeToken(father.getGcubeTokenValueToCKANConnector());
pathInfo = CkanConnectorAccessPoint.checkNullString(pathInfo); pathInfo = CkanConnectorAccessPoint.checkNullString(pathInfo);
query = CkanConnectorAccessPoint.checkNullString(query); query = CkanConnectorAccessPoint.checkNullString(query);
ckan.addPathInfo(pathInfo); ckan.addPathInfo(pathInfo);

View File

@ -121,8 +121,8 @@ public class CkanOrganizationsPanel extends VerticalPanel{
* @return * @return
*/ */
private String getCkanRequest(String pathInfo, String query){ private String getCkanRequest(String pathInfo, String query){
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(father.getBaseURLCKANConnector(), ""); CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(father.getCatalogueUrl(), "");
ckan.addGubeToken(father.getGcubeTokenValueToCKANConnector()); //ckan.addGubeToken(father.getGcubeTokenValueToCKANConnector());
pathInfo = CkanConnectorAccessPoint.checkNullString(pathInfo); pathInfo = CkanConnectorAccessPoint.checkNullString(pathInfo);
query = CkanConnectorAccessPoint.checkNullString(query); query = CkanConnectorAccessPoint.checkNullString(query);
ckan.addPathInfo(pathInfo); ckan.addPathInfo(pathInfo);

View File

@ -112,7 +112,6 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
if(!ckan.isOutsideFromPortal()){ if(!ckan.isOutsideFromPortal()){
// MANAGE CKAN MANAGEMENT PANEL ACCORDING TO MY ROLE // MANAGE CKAN MANAGEMENT PANEL ACCORDING TO MY ROLE
GCubeCkanDataCatalog.service.getMyRole(new AsyncCallback<RolesCkanGroupOrOrg>() { GCubeCkanDataCatalog.service.getMyRole(new AsyncCallback<RolesCkanGroupOrOrg>() {
@ -326,6 +325,14 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
protected native void postMessage(String msg) /*-{ protected native void postMessage(String msg) /*-{
$wnd.postMessage(msg, "*"); $wnd.postMessage(msg, "*");
}-*/; }-*/;
/**
* Print a message
* @param string
*/
protected native void printString(String string) /*-{
console.log(string);
}-*/;
/** /**
* Listen for post message. * Listen for post message.
@ -426,6 +433,16 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate {
return ckanAccessPoint.getBaseUrlWithContext(); return ckanAccessPoint.getBaseUrlWithContext();
} }
/**
* Return the catalogue url (e.g. http://ckan-d-d4s.d4science.org:443/)
* @return
*/
public String getCatalogueUrl(){
printString("Base url for iframe is " + ckanAccessPoint.getCatalogueBaseUrl());
return ckanAccessPoint.getCatalogueBaseUrl();
}
/** /**
* Gets the gcube token value to ckan connector. * Gets the gcube token value to ckan connector.

View File

@ -53,7 +53,6 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
public static String CKANCONNECTORCONTEXT = "CkanConnectorContext"; public static String CKANCONNECTORCONTEXT = "CkanConnectorContext";
public static String CKANCONNECTORLOGOUT = "CkanConnectorLogout"; public static String CKANCONNECTORLOGOUT = "CkanConnectorLogout";
private static final String GRSF_ADMIN_ROLE = "GRSF-Admin"; private static final String GRSF_ADMIN_ROLE = "GRSF-Admin";
//private static Logger logger = LoggerFactory.getLogger(GcubeCkanDataCatalogServiceImpl.class);
private static final Log logger = LogFactoryUtil.getLog(GcubeCkanDataCatalogServiceImpl.class); private static final Log logger = LogFactoryUtil.getLog(GcubeCkanDataCatalogServiceImpl.class);
/** /**
@ -293,23 +292,23 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
return toReturn; return toReturn;
} }
@Override // @Override
public String logoutURIFromCkan() { // public String logoutURIFromCkan() {
String username = SessionUtil.getCurrentUser(getThreadLocalRequest()).getUsername(); // String username = SessionUtil.getCurrentUser(getThreadLocalRequest()).getUsername();
//
// get the scope from session // // get the scope from session
String scopePerCurrentUrl = SessionUtil.getScopeFromClientUrl(getThreadLocalRequest()); // String scopePerCurrentUrl = SessionUtil.getScopeFromClientUrl(getThreadLocalRequest());
//
CkanConnectorAccessPoint ckanAP = SessionUtil.getCkanAccessPoint(this.getThreadLocalRequest().getSession(), scopePerCurrentUrl); // CkanConnectorAccessPoint ckanAP = SessionUtil.getCkanAccessPoint(this.getThreadLocalRequest().getSession(), scopePerCurrentUrl);
logger.info("Logout from CKAN for: "+username +" by token: "+ckanAP.getGcubeTokenValue()); // logger.info("Logout from CKAN for: "+username +" by token: "+ckanAP.getGcubeTokenValue());
//
String ckanConnectorLogut = getServletContext().getInitParameter(CKANCONNECTORLOGOUT); // String ckanConnectorLogut = getServletContext().getInitParameter(CKANCONNECTORLOGOUT);
logger.debug(CKANCONNECTORLOGOUT + " is: "+ckanConnectorLogut); // logger.debug(CKANCONNECTORLOGOUT + " is: "+ckanConnectorLogut);
//
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanAP.getBaseUrl(), ckanConnectorLogut); // CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanAP.getBaseUrl(), ckanConnectorLogut);
ckan.addGubeToken(ckanAP.getGcubeTokenValue()); // ckan.addGubeToken(ckanAP.getGcubeTokenValue());
return ckan.buildURI(); // return ckan.buildURI();
} // }
/* (non-Javadoc) /* (non-Javadoc)
@ -317,7 +316,7 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
*/ */
@Override @Override
public String logoutFromCkanURL() { public String logoutFromCkanURL() {
// check if the portlet is accessed from outside the portal // check if the portlet is accessed from outside the portal
if(outsidePortal()) if(outsidePortal())
return null; return null;
@ -350,63 +349,63 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
/*HttpSession httpSession = this.getThreadLocalRequest().getSession(); /*HttpSession httpSession = this.getThreadLocalRequest().getSession();
ASLSession session = getASLSession(httpSession); ASLSession session = getASLSession(httpSession);
String username = session.getUsername(); String username = session.getUsername();
// get the scope from session // get the scope from session
String scopePerCurrentUrl = (String)this.getThreadLocalRequest().getSession().getAttribute(SessionCatalogueAttributes.SCOPE_CLIENT_PORTLET_URL); String scopePerCurrentUrl = (String)this.getThreadLocalRequest().getSession().getAttribute(SessionCatalogueAttributes.SCOPE_CLIENT_PORTLET_URL);
CkanConnectorAccessPoint ckanAP = SessionUtil.getCkanAccessPoint(this.getThreadLocalRequest().getSession(), scopePerCurrentUrl); CkanConnectorAccessPoint ckanAP = SessionUtil.getCkanAccessPoint(this.getThreadLocalRequest().getSession(), scopePerCurrentUrl);
// String token = getGcubeSecurityToken(); // String token = getGcubeSecurityToken();
logger.info("Logout from CKAN for: "+username +" by token: "+ckanAP.getGcubeTokenValue()); logger.info("Logout from CKAN for: "+username +" by token: "+ckanAP.getGcubeTokenValue());
String ckanConnectorLogut = getServletContext().getInitParameter(CKANCONNECTORLOGOUT); String ckanConnectorLogut = getServletContext().getInitParameter(CKANCONNECTORLOGOUT);
logger.debug(CKANCONNECTORLOGOUT + " is: "+ckanConnectorLogut); logger.debug(CKANCONNECTORLOGOUT + " is: "+ckanConnectorLogut);
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanAP.getBaseUrl(), ckanConnectorLogut); CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanAP.getBaseUrl(), ckanConnectorLogut);
ckan.addPathInfo(ckanConnectorLogut); ckan.addPathInfo(ckanConnectorLogut);
ckan.addGubeToken(ckanAP.getGcubeTokenValue()); ckan.addGubeToken(ckanAP.getGcubeTokenValue());
URL url; URL url;
try { try {
String deleteURI = ckan.buildURI(); String deleteURI = ckan.buildURI();
logger.debug("Perfoming HTTP delete to URI: "+deleteURI); logger.debug("Perfoming HTTP delete to URI: "+deleteURI);
url = new URL(deleteURI); url = new URL(deleteURI);
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection(); HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true); httpCon.setDoOutput(true);
httpCon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded" ); httpCon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded" );
httpCon.setRequestMethod("DELETE"); httpCon.setRequestMethod("DELETE");
httpCon.connect(); httpCon.connect();
HttpServletResponse response = this.getThreadLocalResponse(); HttpServletResponse response = this.getThreadLocalResponse();
if(httpCon.getResponseCode()==HttpStatus.SC_OK){ if(httpCon.getResponseCode()==HttpStatus.SC_OK){
response.setContentLength(httpCon.getContentLength()); response.setContentLength(httpCon.getContentLength());
Map<String, List<String>> map = httpCon.getHeaderFields(); Map<String, List<String>> map = httpCon.getHeaderFields();
for (String key : map.keySet()) { for (String key : map.keySet()) {
String hf = httpCon.getHeaderField(key); String hf = httpCon.getHeaderField(key);
logger.trace("key: "+key +", value: "+hf); logger.trace("key: "+key +", value: "+hf);
if(key==null){ if(key==null){
logger.trace("skyp key: "+key +", value: "+hf); logger.trace("skyp key: "+key +", value: "+hf);
}else }else
response.setHeader(key,hf); response.setHeader(key,hf);
}
response.setContentLength(httpCon.getContentLength());
String encoding = httpCon.getContentEncoding();
encoding = encoding == null ? UTF_8 : encoding;
response.setCharacterEncoding(encoding);
response.setStatus(HttpStatus.SC_OK);
InputStream in = httpCon.getInputStream();
ServletOutputStream out = response.getOutputStream();
IOUtils.copy(in, out);
logger.info("Logout Completed, response code: "+HttpStatus.SC_OK);
}else{
logger.warn("An error occurred during perfoming CKAN logout, Response status is: "+httpCon.getResponseCode());
} }
response.setContentLength(httpCon.getContentLength());
String encoding = httpCon.getContentEncoding();
encoding = encoding == null ? UTF_8 : encoding;
response.setCharacterEncoding(encoding);
response.setStatus(HttpStatus.SC_OK);
InputStream in = httpCon.getInputStream();
ServletOutputStream out = response.getOutputStream();
IOUtils.copy(in, out);
logger.info("Logout Completed, response code: "+HttpStatus.SC_OK);
}else{
logger.warn("An error occurred during perfoming CKAN logout, Response status is: "+httpCon.getResponseCode());
} }
} catch (IOException e) {
catch (IOException e) { logger.error("An error occured during performing Logout from CKAN for: "+username +" by token: "+ckanAP.getGcubeTokenValue(), e);
logger.error("An error occured during performing Logout from CKAN for: "+username +" by token: "+ckanAP.getGcubeTokenValue(), e); }*/
}*/
} }
@Override @Override

View File

@ -35,6 +35,7 @@ public class CkanConnectorAccessPoint implements Serializable{
private Map<String, String> mapVresRoles; private Map<String, String> mapVresRoles;
private String serverviceContext; private String serverviceContext;
private boolean outsideFromPortal = false; private boolean outsideFromPortal = false;
private String catalogueBaseUrl = null;
/** /**
* Instantiates a new ckan connector access point. * Instantiates a new ckan connector access point.
@ -51,6 +52,7 @@ public class CkanConnectorAccessPoint implements Serializable{
*/ */
public CkanConnectorAccessPoint(String baseUrl, String servericeContext){ public CkanConnectorAccessPoint(String baseUrl, String servericeContext){
this.baseUrl = baseUrl; this.baseUrl = baseUrl;
this.catalogueBaseUrl = baseUrl.split("ckan-connector")[0];
this.serverviceContext = servericeContext; this.serverviceContext = servericeContext;
} }
@ -261,13 +263,17 @@ public class CkanConnectorAccessPoint implements Serializable{
this.outsideFromPortal = outsideFromPortal; this.outsideFromPortal = outsideFromPortal;
} }
/**
/* (non-Javadoc) *
* @see java.lang.Object#toString() * @return the catalogue url
*/ */
public String getCatalogueBaseUrl() {
return catalogueBaseUrl;
}
@Override @Override
public String toString() { public String toString() {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.append("CkanConnectorAccessPoint [baseUrl="); builder.append("CkanConnectorAccessPoint [baseUrl=");
builder.append(baseUrl); builder.append(baseUrl);
@ -275,12 +281,16 @@ public class CkanConnectorAccessPoint implements Serializable{
builder.append(pathInfoParameter); builder.append(pathInfoParameter);
builder.append(", queryStringParameters="); builder.append(", queryStringParameters=");
builder.append(queryStringParameters); builder.append(queryStringParameters);
builder.append(", gcubeTokenValue=");
builder.append(gcubeTokenValue);
builder.append(", mapVresRoles="); builder.append(", mapVresRoles=");
builder.append(mapVresRoles); builder.append(mapVresRoles);
builder.append(", serverviceContext="); builder.append(", serverviceContext=");
builder.append(serverviceContext); builder.append(serverviceContext);
builder.append(", outsideFromPortal="); builder.append(", outsideFromPortal=");
builder.append(outsideFromPortal); builder.append(outsideFromPortal);
builder.append(", catalogueBaseUrl=");
builder.append(catalogueBaseUrl);
builder.append("]"); builder.append("]");
return builder.toString(); return builder.toString();
} }