diff --git a/distro/changelog.xml b/distro/changelog.xml
index 3e84fb7..448d10b 100644
--- a/distro/changelog.xml
+++ b/distro/changelog.xml
@@ -4,6 +4,7 @@
[Feature #2335] Added "Get Folder Link" facility
[Incident #4878] Fixed: Workspace tree not displaying user's
name
+ Added 'gcube-url-shortener' dependency, removed internal classes for shortener
diff --git a/pom.xml b/pom.xml
index a254e04..0ad271c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -123,6 +123,13 @@
provided
+
+ org.gcube.portlets.user
+ gcube-url-shortener
+ [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)
+ compile
+
+
org.gcube.applicationsupportlayer
accesslogger
@@ -137,11 +144,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -174,7 +181,7 @@
-
+
commons-httpclient
commons-httpclient
diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java
index c8ec83c..352b378 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java
@@ -43,6 +43,7 @@ import org.gcube.common.homelibrary.home.workspace.trash.WorkspaceTrashItem;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.datacatalogue.ckanutillibrary.CKanUtils;
import org.gcube.datacatalogue.ckanutillibrary.CkanUtilsFactory;
+import org.gcube.portlets.user.urlshortener.UrlShortener;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
import org.gcube.portlets.user.workspace.client.interfaces.GXTCategoryItemInterface;
import org.gcube.portlets.user.workspace.client.model.FileDetailsModel;
@@ -62,7 +63,6 @@ import org.gcube.portlets.user.workspace.server.notifications.NotificationsUtil;
import org.gcube.portlets.user.workspace.server.reader.ApplicationProfile;
import org.gcube.portlets.user.workspace.server.reader.ApplicationProfileReader;
import org.gcube.portlets.user.workspace.server.resolver.UriResolverReaderParameterForResolverIndex;
-import org.gcube.portlets.user.workspace.server.shortener.UrlShortener;
import org.gcube.portlets.user.workspace.server.util.AclTypeComparator;
import org.gcube.portlets.user.workspace.server.util.DifferenceBetweenInfoContactModel;
import org.gcube.portlets.user.workspace.server.util.UserUtil;
@@ -2326,7 +2326,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
}catch (Exception e) {
workspaceLogger.error("Error get short url for ", e);
- return longUrl;
+ return null;
}
}
@@ -2363,8 +2363,10 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
String shortURL = null;
- if(shortenUrl)
+ if(shortenUrl){
shortURL = getShortUrl(uriRequest);
+ shortURL = shortURL!=null?shortURL:"not available";
+ }
return new PublicLink(uriRequest, shortURL);
@@ -3551,7 +3553,16 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
ApplicationProfileReader apReader = new ApplicationProfileReader("Workspace-Explorer-App", "org.gcube.portlets.user.workspaceexplorerapp.server.WorkspaceExplorerAppServiceImpl");
ApplicationProfile ap = apReader.readProfileFromInfrastrucure();
workspaceLogger.info("Application profile returning url: "+ap.getUrl());
- return new PublicLink(ap.getUrl()+"?folderId="+folderId, "not available");
+ String folderLink = ap.getUrl()+"?folderId="+folderId;
+ String shortURL = null;
+ try{
+ shortURL = getShortUrl(folderLink);
+ shortURL = shortURL!=null?shortURL:"not available";
+ }catch(Exception e){
+ workspaceLogger.warn("Short url error, skipping");
+ shortURL = "not available";
+ }
+ return new PublicLink(folderLink, shortURL);
}else
throw new NoGcubeItemTypeException("The item is not a Gcube Item");
diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/resolver/UriResolverReaderParameterForResolverIndex.java b/src/main/java/org/gcube/portlets/user/workspace/server/resolver/UriResolverReaderParameterForResolverIndex.java
index fae9063..f636ead 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/server/resolver/UriResolverReaderParameterForResolverIndex.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/server/resolver/UriResolverReaderParameterForResolverIndex.java
@@ -17,7 +17,7 @@ import org.apache.log4j.Logger;
import org.gcube.common.resources.gcore.ServiceEndpoint;
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
import org.gcube.common.scope.api.ScopeProvider;
-import org.gcube.portlets.user.workspace.server.shortener.UrlEncoderUtil;
+import org.gcube.portlets.user.workspace.server.util.UrlEncoderUtil;
import org.gcube.portlets.user.workspace.server.util.scope.ScopeUtilFilter;
import org.gcube.resources.discovery.client.api.DiscoveryClient;
import org.gcube.resources.discovery.client.queries.impl.XQuery;
diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/shortener/HttpCallerUtil.java b/src/main/java/org/gcube/portlets/user/workspace/server/shortener/HttpCallerUtil.java
deleted file mode 100644
index d31c32d..0000000
--- a/src/main/java/org/gcube/portlets/user/workspace/server/shortener/HttpCallerUtil.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/**
- *
- */
-package org.gcube.portlets.user.workspace.server.shortener;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.commons.httpclient.Credentials;
-import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpException;
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
-import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.auth.AuthScope;
-import org.apache.commons.httpclient.methods.ByteArrayRequestEntity;
-import org.apache.commons.httpclient.methods.GetMethod;
-import org.apache.commons.httpclient.methods.PostMethod;
-import org.apache.commons.httpclient.params.HttpMethodParams;
-
-/**
- * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- * @Jun 4, 2013
- *
- */
-public class HttpCallerUtil {
-
- public static final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(HttpCallerUtil.class);
-
- public static final int TIME_OUT_REQUESTS = 5000;
-
-
- private String urlService = "";
- private HttpClient httpClient = null;
- private String username = "";
- private String password = "";
-
-
- public HttpCallerUtil(String url, String user, String password) {
- this.urlService = url;
- MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
- connectionManager.getParams().setSoTimeout(TIME_OUT_REQUESTS);
- this.httpClient = new HttpClient(connectionManager);
-
- this.username = user;
- this.password = password;
- Credentials defaultcreds = new UsernamePasswordCredentials(user, password);
- httpClient.getState().setCredentials(AuthScope.ANY, defaultcreds);
-
- }
-
-
- public String callGet(String urlMethod, Map parameters) throws Exception {
-
- // Create an instance of HttpClient.
- HttpClient client = new HttpClient();
-
- String query = UrlEncoderUtil.encodeQueryValues(parameters);
-
- String fullUrl = urlService+"/"+urlMethod+"?"+query;
-
- logger.info("call get .... " + fullUrl);
-
- // Create a method instance.
- GetMethod method = new GetMethod(fullUrl);
-
- // Provide custom retry handler is necessary
- method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false));
-
- try {
- // Execute the method.
- int statusCode = client.executeMethod(method);
-
- if (statusCode != HttpStatus.SC_OK) {
- logger.error("Method failed: " + method.getStatusLine());
- }
-
- // Read the response body.
- byte[] responseBody = method.getResponseBody();
-
- // Deal with the response.
- // Use caution: ensure correct character encoding and is not binary
- // data
- return new String(responseBody);
-
- } catch (HttpException e) {
- logger.error("Fatal protocol violation: " + e.getMessage());
- throw new Exception("Fatal protocol violation: " + e.getMessage());
- } catch (IOException e) {
- logger.error("Fatal transport error: " + e.getMessage());
- throw new Exception("Fatal transport violation: " + e.getMessage());
- } finally {
- // Release the connection.
- method.releaseConnection();
- }
- }
-
-
- public String callPost(String urlMethod, String body, String contentType) throws Exception {
-
- // Create a method instance.
- PostMethod method = new PostMethod(this.urlService + "/" + urlMethod);
-
- method.setRequestHeader("Content-type", contentType);
-
- logger.trace("call post .... " + this.urlService + "/" + urlMethod);
- logger.debug(" call post body.... " + body);
- // System.out.println("post body .... " + body);
-
- method.setRequestEntity(new ByteArrayRequestEntity(body.getBytes()));
-
- // Provide custom retry handler is necessary
- // method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,new DefaultHttpMethodRetryHandler(3, false));
-
- byte[] responseBody = null;
- try {
- // Execute the method.
- int statusCode = httpClient.executeMethod(method);
-
- if (statusCode != HttpStatus.SC_OK && statusCode != HttpStatus.SC_CREATED) {
- logger.error("Method failed: " + method.getStatusLine()+"; Response bpdy: "+method.getResponseBody());
- method.releaseConnection();
- throw new Exception("Method failed: " + method.getStatusLine()+"; Response body: "+new String(method.getResponseBody()));
- }
- // Read the response body.
- responseBody = method.getResponseBody();
-
- // Deal with the response.
- // Use caution: ensure correct character encoding and is not binary data
- // System.out.println(new String(responseBody));
- } catch (HttpException e) {
- logger.error("Fatal protocol violation: ", e);
-// e.printStackTrace();
- method.releaseConnection();
- throw new Exception("Fatal protocol violation: " + e.getMessage());
- } catch (Exception e) {
- logger.error("Fatal transport error: ", e);
-// e.printStackTrace();
- method.releaseConnection();
- throw new Exception("Fatal transport error: " + e.getMessage());
- }
- method.releaseConnection();
- return new String(responseBody);
- }
-
- public String getUrlservice() {
- return urlService;
- }
-
- public void setUrlservice(String urlservice) {
- this.urlService = urlservice;
- }
-
- public HttpClient getClient() {
- return httpClient;
- }
-
- public void setClient(HttpClient client) {
- this.httpClient = client;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
-}
diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/shortener/UrlShortener.java b/src/main/java/org/gcube/portlets/user/workspace/server/shortener/UrlShortener.java
deleted file mode 100644
index 1dc625b..0000000
--- a/src/main/java/org/gcube/portlets/user/workspace/server/shortener/UrlShortener.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/**
- *
- */
-package org.gcube.portlets.user.workspace.server.shortener;
-
-/**
- * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- * @Jun 28, 2013
- *
- */
-import static org.gcube.resources.discovery.icclient.ICFactory.clientFor;
-import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.List;
-
-import org.apache.log4j.Logger;
-import org.gcube.common.resources.gcore.ServiceEndpoint;
-import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
-import org.gcube.common.scope.api.ScopeProvider;
-import org.gcube.portlets.user.workspace.server.util.scope.ScopeUtilFilter;
-import org.gcube.resources.discovery.client.api.DiscoveryClient;
-import org.gcube.resources.discovery.client.queries.impl.XQuery;
-import org.json.JSONObject;
-import org.json.JSONTokener;
-
-
-
-public final class UrlShortener {
-
- /**
- *
- */
- protected static final String NO_HTTP_URL_SHORTENER_AVAILABLE = "No HTTP URL Shortener available";
- protected static final String APPLICATION_JSON = "application/json";
- protected static final String LONG_URL = "longUrl";
-
-// protected static String shortnerServerUrl = "https://www.googleapis.com/urlshortener/v1/url";
-// protected static String urlMethod = "";
-// protected static String authenticationKeyParam = "key";
-// protected static String authenticationKeyValue ="AIzaSyDfMO0VY3o8GjRUqnTfqScjm_EsFEuBa3g";
-
- private static String shortnerServerUrl = "";
- protected static final String KEY = "key";
- private static String paramKeyValue ="";
-
- protected static Logger logger = Logger.getLogger(UrlShortener.class);
- private String uriRequest;
- private boolean isAvailable = false;
-
- /*
- * @throws Exception
- * @throws InvalidResultException
- * @throws DiscoveryException
- * @throws IllegalStateException *
- *
- */
- public UrlShortener(String scope) throws Exception {
-
- try{
- logger.trace("Tentative reading HTTP-URL-Shortener RR");
-
- ScopeUtilFilter scopeUtil = new ScopeUtilFilter(scope,true);
-
- ScopeProvider.instance.set(scopeUtil.getScopeRoot());
-
- XQuery query = queryFor(ServiceEndpoint.class);
-
- query.addCondition("$resource/Profile/Name/text() eq 'HTTP-URL-Shortener'").setResult("$resource/Profile/AccessPoint");
-
- DiscoveryClient client = clientFor(AccessPoint.class);
-
- List endpoints = client.submit(query);
-
- if (endpoints.size() == 0){
- isAvailable = false;
- logger.trace("HTTP-URL-Shortener not found");
- throw new Exception(NO_HTTP_URL_SHORTENER_AVAILABLE);
- }
-
- //Base Address
- // System.out.println(endpoints.get(0).address());
-
- shortnerServerUrl = endpoints.get(0)!=null?endpoints.get(0).address():"";
-
- if(endpoints.get(0)!=null){
-
- paramKeyValue = endpoints.get(0).propertyMap()!=null?endpoints.get(0).propertyMap().get(KEY).value():"";
- }
-
- String getParam = "";
- logger.trace("paramKeyValue: "+paramKeyValue);
-
- //ACTIVE THIS AFTER RELEASE
- if(paramKeyValue!=null && !paramKeyValue.isEmpty()){
- getParam = "?"+KEY +"="+paramKeyValue;
- }
-
- uriRequest = shortnerServerUrl+getParam;
-
- logger.trace("HTTP-URL-Shortener found, uriRequest: "+uriRequest);
-
- //DEBUG
-// System.out.println("HTTP-URL-Shortener found, uriRequest: "+uriRequest);
-
- isAvailable = true;
-
- }catch (Exception e) {
- isAvailable = false;
- logger.error("an error occurred in reading RR: ", e);
- throw new Exception(NO_HTTP_URL_SHORTENER_AVAILABLE);
- }finally{
- ScopeProvider.instance.reset();
- }
- }
-
- public boolean isAvailable() {
- return isAvailable;
- }
-
- /**
- *
- * @param longUrl
- * @return a shorten url
- */
- public String shorten(String longUrl) throws Exception{
-
- if (longUrl == null) {
- return longUrl;
- }
-
- try {
-
- logger.trace("shorten longUrl: "+longUrl);
-
- URL url = new URL(uriRequest);
-
- HttpURLConnection connection = (HttpURLConnection) url.openConnection();
- connection.setDoOutput(true);
- connection.setRequestMethod("POST");
- connection.setRequestProperty("Content-Type", APPLICATION_JSON);
-
- JSONObject jsonObj = new JSONObject();
- jsonObj.put(LONG_URL, longUrl);
-
-// //ACTIVE THIS AFTER RELEASE
-// if(paramKeyValue!=null && !paramKeyValue.isEmpty()){
-// jsonObj.put(KEY, paramKeyValue);
-// }
-
- logger.trace("request json : "+jsonObj.toString());
-
- OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
- wr.write(jsonObj.toString());
- wr.flush();
-
- BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
-
- JSONTokener tokener = new JSONTokener(rd);
- JSONObject jsonObject = new JSONObject(tokener);
-// JSONParser parser = new JSONParser();
-// JSONObject jsonObject = (JSONObject) parser.parse(rd);
- logger.trace("response received json : "+jsonObject.toString());
-
- wr.close();
- rd.close();
- return (String) jsonObject.get("id"); //is shorted url
-
- } catch (MalformedURLException e) {
-
- logger.error("MalformedURLException error in UrlShortener", e);
- return longUrl;
-
- } catch (IOException e) {
- e.printStackTrace();
- logger.error("IOException error in UrlShortener", e);
- return longUrl;
- }
- }
-
- public static String getShortnerServerUrl() {
- return shortnerServerUrl;
- }
-
- public static String getKey() {
- return KEY;
- }
-
- public static String getParamKeyValue() {
- return paramKeyValue;
- }
-
- public String getUriRequest() {
- return uriRequest;
- }
-
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder();
- builder.append("UrlShortener [uriRequest=");
- builder.append(uriRequest);
- builder.append(", isAvailable=");
- builder.append(isAvailable);
- builder.append("]");
- return builder.toString();
- }
-
-
-
- public static void main(String[] args) {
- String shorten;
-
- try {
-
- UrlShortener urlSh = new UrlShortener("/d4science.research-infrastructures.eu");
- System.out.println("UrlShortener: "+urlSh);
-
- shorten = urlSh.shorten("https://dev.d4science.org/group/data-e-infrastructure-gateway/workspace?itemid=056648-c7ce-4de3-a4c7-e1411816cc12&operation=gotofolder");
-
- System.out.println("Shorted: "+shorten);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/shortener/UrlEncoderUtil.java b/src/main/java/org/gcube/portlets/user/workspace/server/util/UrlEncoderUtil.java
similarity index 79%
rename from src/main/java/org/gcube/portlets/user/workspace/server/shortener/UrlEncoderUtil.java
rename to src/main/java/org/gcube/portlets/user/workspace/server/util/UrlEncoderUtil.java
index 4a241bf..ee40ec1 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/server/shortener/UrlEncoderUtil.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/server/util/UrlEncoderUtil.java
@@ -1,7 +1,7 @@
/**
- *
+ *
*/
-package org.gcube.portlets.user.workspace.server.shortener;
+package org.gcube.portlets.user.workspace.server.util;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
@@ -9,19 +9,17 @@ import java.util.Map;
import org.apache.log4j.Logger;
-
-
/**
* The Class UrlEncoderUtil.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- * Jan 13, 2016
+ * Sep 14, 2016
*/
public class UrlEncoderUtil {
-
+
public static String charset = "UTF-8";
public static Logger logger = Logger.getLogger(UrlEncoderUtil.class);
-
+
/**
* Encode query.
*
@@ -29,7 +27,7 @@ public class UrlEncoderUtil {
* @return the string
*/
public static String encodeQuery(String... parameters){
-
+
String query = "";
for (String string : parameters) {
try {
@@ -41,7 +39,7 @@ public class UrlEncoderUtil {
}
return removeLastChar(query);
}
-
+
/**
* Encode query value.
@@ -50,10 +48,10 @@ public class UrlEncoderUtil {
* @return the string
*/
public static String encodeQueryValue(String value){
-
+
if(value==null || value.isEmpty())
return value;
-
+
try {
return URLEncoder.encode(value, charset);
}
@@ -71,12 +69,12 @@ public class UrlEncoderUtil {
* @return the string
*/
public static String encodeQueryValues(Map parameters){
-
+
String query = "";
-
+
if(parameters==null)
return query;
-
+
for (String key : parameters.keySet()) {
try {
query+=String.format(key+"=%s", URLEncoder.encode(parameters.get(key), charset))+"&";
@@ -87,7 +85,7 @@ public class UrlEncoderUtil {
}
return removeLastChar(query);
}
-
+
/**
* Removes the last char.
*
@@ -95,43 +93,33 @@ public class UrlEncoderUtil {
* @return the string
*/
public static String removeLastChar(String string){
-
+
if(string == null)
return null;
-
+
if(string.length()>0)
return string.substring(0, string.length()-1);
-
+
return string;
}
-
+
/**
* Gets the charset.
*
* @return the charset
*/
public static String getCharset() {
-
+
return charset;
}
-
+
/**
* Sets the charset.
*
* @param charset the charset to set
*/
public static void setCharset(String charset) {
-
+
UrlEncoderUtil.charset = charset;
}
-
- /*
- public static void main(String[] args) {
- // System.out.println(UrlEncoderUtil.encodeQuery("request=GetStyles", "layers=test Name", "service=WMS", "version=1.1.1"));
- HashMap parameters = new HashMap();
- parameters.put("request", "GetStyles");
- parameters.put("layers", "test Name");
- parameters.put("version", "1.1.1");
- System.out.println(UrlEncoderUtil.encodeQuery(parameters));
- }*/
}
diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/util/WsUtil.java b/src/main/java/org/gcube/portlets/user/workspace/server/util/WsUtil.java
index 89d92ed..2800d30 100644
--- a/src/main/java/org/gcube/portlets/user/workspace/server/util/WsUtil.java
+++ b/src/main/java/org/gcube/portlets/user/workspace/server/util/WsUtil.java
@@ -21,12 +21,12 @@ import org.gcube.common.homelibrary.home.workspace.Workspace;
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
+import org.gcube.portlets.user.urlshortener.UrlShortener;
import org.gcube.portlets.user.workspace.client.model.InfoContactModel;
import org.gcube.portlets.user.workspace.server.GWTWorkspaceBuilder;
import org.gcube.portlets.user.workspace.server.notifications.NotificationsProducer;
import org.gcube.portlets.user.workspace.server.resolver.UriResolverReaderParameterForResolverIndex;
import org.gcube.portlets.user.workspace.server.resolver.UriResolverReaderParameterForResolverIndex.RESOLVER_TYPE;
-import org.gcube.portlets.user.workspace.server.shortener.UrlShortener;
import org.gcube.portlets.user.workspace.server.util.resource.PropertySpecialFolderReader;
import org.gcube.portlets.user.workspace.server.util.scope.ScopeUtilFilter;
diff --git a/src/test/java/org/gcube/portlets/user/workspace/UriResolverReaderRR.java b/src/test/java/org/gcube/portlets/user/workspace/UriResolverReaderRR.java
index d447074..de37351 100644
--- a/src/test/java/org/gcube/portlets/user/workspace/UriResolverReaderRR.java
+++ b/src/test/java/org/gcube/portlets/user/workspace/UriResolverReaderRR.java
@@ -1,5 +1,5 @@
/**
- *
+ *
*/
package org.gcube.portlets.user.workspace;
@@ -26,7 +26,6 @@ import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.portlets.user.workspace.server.GWTWorkspaceBuilder;
import org.gcube.portlets.user.workspace.server.resolver.UriResolverReaderParameterForResolverIndex;
import org.gcube.portlets.user.workspace.server.resolver.UriResolverReaderParameterForResolverIndex.RESOLVER_TYPE;
-import org.gcube.portlets.user.workspace.server.shortener.UrlShortener;
import org.gcube.resources.discovery.client.api.DiscoveryClient;
import org.gcube.resources.discovery.client.queries.impl.XQuery;
@@ -36,7 +35,7 @@ import org.gcube.resources.discovery.client.queries.impl.XQuery;
*
*/
public class UriResolverReaderRR {
-
+
//Base Address
String uri = "";
//Query URL parameter
@@ -44,58 +43,58 @@ public class UriResolverReaderRR {
private String uriRequest = "";
public static String DEFAULT_SCOPE = "/d4science.research-infrastructures.eu/gCubeApps"; //PRODUCTION
// public static String DEFAULT_SCOPE = "/gcube/devsec"; //PRODUCTION
-
+
public static Logger log = Logger.getLogger(UriResolverReaderRR.class);
-
-
- /**
- * @throws Exception
- *
- */
- public UriResolverReaderRR(String scope) throws Exception {
-
- ScopeProvider.instance.set(scope);
-
- XQuery query = queryFor(ServiceEndpoint.class);
-
- query.addCondition("$resource/Profile/Name/text() eq 'HTTP-URI-Resolver'").setResult("$resource/Profile/AccessPoint");
-
- DiscoveryClient client = clientFor(AccessPoint.class);
-
- List endpoints = client.submit(query);
-
- if (endpoints.size() == 0)
- throw new Exception("No Resolver available");
-
- //Base Address
-// System.out.println(endpoints.get(0).address());
-
- uri = endpoints.get(0)!=null?endpoints.get(0).address():"";
-
- if(endpoints.get(0)!=null){
-
- parameter = endpoints.get(0).propertyMap()!=null?endpoints.get(0).propertyMap().get("parameter").value():"";
- }
-
- uriRequest = uri+"?"+parameter;
-
-
- //Query URL parameter
-// System.out.println(endpoints.get(0).propertyMap().get("parameter").value());
-
- }
-
- public InputStream resolve(String smp) throws IOException{
- String query = uriRequest + "="+smp;
-
- URL url = new URL(query);
-
- return url.openStream();
- }
-
+
/**
- *
+ * @throws Exception
+ *
+ */
+ public UriResolverReaderRR(String scope) throws Exception {
+
+ ScopeProvider.instance.set(scope);
+
+ XQuery query = queryFor(ServiceEndpoint.class);
+
+ query.addCondition("$resource/Profile/Name/text() eq 'HTTP-URI-Resolver'").setResult("$resource/Profile/AccessPoint");
+
+ DiscoveryClient client = clientFor(AccessPoint.class);
+
+ List endpoints = client.submit(query);
+
+ if (endpoints.size() == 0)
+ throw new Exception("No Resolver available");
+
+ //Base Address
+// System.out.println(endpoints.get(0).address());
+
+ uri = endpoints.get(0)!=null?endpoints.get(0).address():"";
+
+ if(endpoints.get(0)!=null){
+
+ parameter = endpoints.get(0).propertyMap()!=null?endpoints.get(0).propertyMap().get("parameter").value():"";
+ }
+
+ uriRequest = uri+"?"+parameter;
+
+
+ //Query URL parameter
+// System.out.println(endpoints.get(0).propertyMap().get("parameter").value());
+
+ }
+
+ public InputStream resolve(String smp) throws IOException{
+ String query = uriRequest + "="+smp;
+
+ URL url = new URL(query);
+
+ return url.openStream();
+ }
+
+
+ /**
+ *
* @return Base Address of Uri Resolver
*/
public String getUri() {
@@ -104,13 +103,13 @@ public class UriResolverReaderRR {
/**
- *
+ *
* @return Query URL parameter of Uri Resolver
*/
public String getParameter() {
return parameter;
}
-
+
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
@@ -121,66 +120,66 @@ public class UriResolverReaderRR {
builder.append("]");
return builder.toString();
}
-
-
+
+
public static void main(String[] args) throws Exception {
-
-
+
+
// log.trace(new UriResolverReaderRR());
-//
+//
// UriResolverReaderRR uriResolver = new UriResolverReaderRR();
// InputStream is = uriResolver.resolve("smp://Wikipedia_logo_silver.png?5ezvFfBOLqaqBlwCEtAvz4ch5BUu1ag3yftpCvV+gayz9bAtSsnO1/sX6pemTKbDe0qbchLexXeWgGcJlskYE8td9QSDXSZj5VSl9kdN9SN0/LRYaWUZuP4Q1J7lEiwkU4GKPsiD6PDRVcT4QAqTEy5hSIbr6o4Y");
-//
+//
// File file = new File("test.png");
-//
+//
// FileOutputStream out = new FileOutputStream(file);
-//
-//
+//
+//
// IOUtils.copy(is, out);
// is.close();
-//
+//
// out.close();
// 066086bc-5db1-48fc-b365-2ee821db2fb7
// 370dc1cc-2e5e-4321-bc6f-ad860414db97
-
+
// id: f70f01f9-5a06-4123-b6ec-bd121c1af82f, name: testResponse.html, ### Public link: smp://Home/francesco.mangiacrapa/Workspace41e79e40-ec82-416b-ba83-29b54bb43426?5ezvFfBOLqb3YESyI/kesN4T+ZD0mtmc/4sZ0vGMrl0lgx7k85j8o2Q1vF0ezJi/xIGDhncO9jOkV1T8u6Db7GZ/4ePgMws8Jxu8ierJajHBd20bUotElPG3BVG0ODMHf1ztm6rKJIAeb9R/0FEIDQ==
// id: 35a0298e-da69-464f-9170-3dc764da564d, name: wiki ws backup, ### Public link: smp://Home/francesco.mangiacrapa/Workspaceb7c9bf85-b0e0-47ac-87e5-eba34048f7ab?5ezvFfBOLqb3YESyI/kesN4T+ZD0mtmc/4sZ0vGMrl0lgx7k85j8o2Q1vF0ezJi/xIGDhncO9jOkV1T8u6Db7GZ/4ePgMws8Jxu8ierJajHBd20bUotElPG3BVG0ODMHf1ztm6rKJIAeb9R/0FEIDQ==
-
-
+
+
// id: 370dc1cc-2e5e-4321-bc6f-ad860414db97, name: testupload.txt, ### Public link: smp://Home/francesco.mangiacrapa/Workspace284ee688-e6fb-4080-bbcb-cc7c8cc5c381?5ezvFfBOLqb3YESyI/kesN4T+ZD0mtmc/4sZ0vGMrl0lgx7k85j8o2Q1vF0ezJi/xIGDhncO9jOkV1T8u6Db7GZ/4ePgMws8Jxu8ierJajHBd20bUotElPG3BVG0ODMHf1ztm6rKJIAeb9R/0FEIDQ==
-
+
String itemId = "0e875263-f6bc-4945-9435-bfb8774027ca";
// itemId = "f70f01f9-5a06-4123-b6ec-bd121c1af82f";
System.out.println("uri is: "+getPublicLinkForFolderItemId(itemId));
-
-
-
-//
-
-
-
+
+
+
+//
+
+
+
}
-
+
public static String getPublicLinkForFolderItemId(String itemId){
try{
ScopeProvider.instance.set(DEFAULT_SCOPE);
-
+
Workspace workspace = HomeLibrary
.getHomeManagerFactory()
.getHomeManager()
.getHome("leonardo.candela")
.getWorkspace();
-
+
GWTWorkspaceBuilder builder = new GWTWorkspaceBuilder();
System.out.println("get item...");
WorkspaceItem wsItem = workspace.getItem(itemId);
-
+
if(wsItem.getType().equals(WorkspaceItemType.FOLDER_ITEM)){
-
+
FolderItem folderItem = (FolderItem) wsItem;
System.out.println("get public link...");
String smpUri = builder.getPublicLinkForFolderItem(folderItem);
@@ -188,60 +187,60 @@ public class UriResolverReaderRR {
System.out.println("get uriResolver...");
UriResolverReaderParameterForResolverIndex uriResolver = new UriResolverReaderParameterForResolverIndex(DEFAULT_SCOPE, RESOLVER_TYPE.SMP_ID);
-
+
// String url = uriResolver.resolveAsUriRequest(smpUri, "testResponse!@#$$%^^&&.html", folderItem.getMimeType(), true);
String url = uriResolver.resolveAsUriRequest(smpUri, folderItem.getName(), folderItem.getMimeType(), true);
System.out.println("url econded: "+url);
-//
+//
// url = uriResolver.resolveAsUriRequest(smpUri, folderItem.getName(), folderItem.getMimeType(), false);
// System.out.println("url doesn't econded: "+url);
-
-
+
+
// uriResolver.getHashParemeters(smpUri, folderItem.getName(), folderItem.getMimeType());
-
-
+
+
// HttpCallerUtil callerUtil = new HttpCallerUtil(uriResolver.getBaseUri(), "", "");
// String query = uriResolver.getQuery();
// callerUtil.callPost("", query, "application/x-www-form-urlencoded");
-
-
+
+
// String smpUri = "smp://Home/test.user/Workspace/bla8200ceb0-c525-40e6-bad1-a63f83811d3d?5ezvFfBOLqb3YESyI/kesN4T+ZD0mtmc/4sZ0vGMrl0lgx7k85j8o2Q1vF0ezJi/xIGDhncO9jOkV1T8u6Db7GZ/4ePgMws8Jxu8ierJajHBd20bUotElPG3BVG0ODMHf1ztm6rKJIAeb9R/0FEIDQ==";
-
+
UrlShortener urlShortner = new UrlShortener(DEFAULT_SCOPE);
-
+
String shortUrl = urlShortner.shorten(url);
System.out.println("url shortUrl: "+shortUrl);
-
-
-
+
+
+
InputStream is = uriResolver.resolveAsInputStream(smpUri, folderItem.getName(), folderItem.getMimeType());
-
+
File file = new File(folderItem.getName());
-
+
FileOutputStream out = new FileOutputStream(file);
-
-
+
+
IOUtils.copy(is, out);
is.close();
-
+
out.close();
-
+
if(uriResolver!=null && uriResolver.isAvailable()){
return uriResolver.resolveAsUriRequest(smpUri, folderItem.getName(), folderItem.getMimeType(), true);
}
-
+
}
-
-
+
+
return "";
-
+
}catch (Exception e) {
System.out.println("Error getPublicLinkForFolderItemId url for");
e.printStackTrace();
return "";
}
-
+
}