Incident #18083 New StorageHub URLs not accessed by the widget
This commit is contained in:
parent
556d813e22
commit
785d855ee9
2
pom.xml
2
pom.xml
|
@ -12,7 +12,7 @@
|
||||||
<artifactId>workspace-widget-portlet</artifactId>
|
<artifactId>workspace-widget-portlet</artifactId>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
<name>workspace-widget-portlet Portlet</name>
|
<name>workspace-widget-portlet Portlet</name>
|
||||||
<version>1.3.1-SNAPSHOT</version>
|
<version>1.3.2-SNAPSHOT</version>
|
||||||
<description>
|
<description>
|
||||||
Workspace Widget
|
Workspace Widget
|
||||||
</description>
|
</description>
|
||||||
|
|
|
@ -8,6 +8,7 @@ import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.gcube.common.storagehub.model.items.AbstractFileItem;
|
import org.gcube.common.storagehub.model.items.AbstractFileItem;
|
||||||
|
import org.gcube.common.storagehub.model.items.ExternalLink;
|
||||||
import org.gcube.common.storagehub.model.items.ExternalURL;
|
import org.gcube.common.storagehub.model.items.ExternalURL;
|
||||||
import org.gcube.common.storagehub.model.items.FolderItem;
|
import org.gcube.common.storagehub.model.items.FolderItem;
|
||||||
import org.gcube.common.storagehub.model.items.Item;
|
import org.gcube.common.storagehub.model.items.Item;
|
||||||
|
@ -70,7 +71,7 @@ public class ItemBuilder {
|
||||||
}
|
}
|
||||||
else { //is a file, a Link or an XML
|
else { //is a file, a Link or an XML
|
||||||
MDIcon mdIcon = IconsManager.getDefault();
|
MDIcon mdIcon = IconsManager.getDefault();
|
||||||
if (workspaceItem instanceof ExternalURL) {
|
if (workspaceItem instanceof ExternalLink || workspaceItem instanceof ExternalURL) {
|
||||||
mdIcon = IconsManager.getIconTypeLink();
|
mdIcon = IconsManager.getIconTypeLink();
|
||||||
} else {
|
} else {
|
||||||
AbstractFileItem aItem = (AbstractFileItem) workspaceItem;
|
AbstractFileItem aItem = (AbstractFileItem) workspaceItem;
|
||||||
|
|
|
@ -15,10 +15,13 @@ import javax.servlet.http.HttpServletResponse;
|
||||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||||
import org.gcube.common.storagehub.client.StreamDescriptor;
|
import org.gcube.common.storagehub.client.StreamDescriptor;
|
||||||
import org.gcube.common.storagehub.client.dsl.FileContainer;
|
import org.gcube.common.storagehub.client.dsl.FileContainer;
|
||||||
|
import org.gcube.common.storagehub.client.dsl.ItemContainer;
|
||||||
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
|
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
|
||||||
import org.gcube.common.storagehub.client.plugins.AbstractPlugin;
|
import org.gcube.common.storagehub.client.plugins.AbstractPlugin;
|
||||||
import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
|
import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
|
||||||
import org.gcube.common.storagehub.model.exceptions.StorageHubException;
|
import org.gcube.common.storagehub.model.exceptions.StorageHubException;
|
||||||
|
import org.gcube.common.storagehub.model.items.ExternalLink;
|
||||||
|
import org.gcube.common.storagehub.model.items.ExternalURL;
|
||||||
import org.gcube.common.storagehub.model.items.Item;
|
import org.gcube.common.storagehub.model.items.Item;
|
||||||
import org.gcube.portlets.user.wswidget.shared.AuthorizedUser;
|
import org.gcube.portlets.user.wswidget.shared.AuthorizedUser;
|
||||||
import org.gcube.portlets.user.wswidget.shared.Breadcrumb;
|
import org.gcube.portlets.user.wswidget.shared.Breadcrumb;
|
||||||
|
@ -59,21 +62,30 @@ public class WorkspaceWidget extends MVCPortlet {
|
||||||
StorageHubClient client = new StorageHubClient();
|
StorageHubClient client = new StorageHubClient();
|
||||||
FileContainer fileContainer = null;
|
FileContainer fileContainer = null;
|
||||||
StreamDescriptor streamDescr = null;
|
StreamDescriptor streamDescr = null;
|
||||||
|
Item item = null;
|
||||||
|
HttpServletResponse httpRes = PortalUtil.getHttpServletResponse(resourceResponse);
|
||||||
try {
|
try {
|
||||||
fileContainer = client.open(selectedItemId).asFile();
|
ItemContainer<Item> itemContainer = client.open(selectedItemId).asItem();
|
||||||
streamDescr = fileContainer.download(selectedItemId);
|
item = itemContainer.get();
|
||||||
|
if (item instanceof ExternalLink) { //if is a type URL we open directly the link (StorageHub Created it)
|
||||||
|
ExternalLink extLink = (ExternalLink) item;
|
||||||
|
httpRes.sendRedirect(extLink.getValue().toString());
|
||||||
|
} else {
|
||||||
|
fileContainer = client.open(selectedItemId).asFile();
|
||||||
|
streamDescr = fileContainer.download(selectedItemId);
|
||||||
|
}
|
||||||
|
if (item instanceof ExternalURL) { //if is a type URL we open directly the link (HL Created it)
|
||||||
|
Scanner sc = new Scanner( streamDescr.getStream());
|
||||||
|
String text = sc.useDelimiter("\\A").next();
|
||||||
|
sc.close();
|
||||||
|
streamDescr.getStream().close();
|
||||||
|
httpRes.sendRedirect(text);
|
||||||
|
|
||||||
|
}
|
||||||
} catch (StorageHubException e) {
|
} catch (StorageHubException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
HttpServletResponse httpRes = PortalUtil.getHttpServletResponse(resourceResponse);
|
if (! (item instanceof ExternalURL || item instanceof ExternalLink)) {
|
||||||
if (ITEM_URL_TYPE.compareTo(fileContainer.get().getPrimaryType()) == 0) { //if is a type URL we open drectly the link
|
|
||||||
Scanner sc = new Scanner( streamDescr.getStream());
|
|
||||||
String text = sc.useDelimiter("\\A").next();
|
|
||||||
sc.close();
|
|
||||||
streamDescr.getStream().close();
|
|
||||||
httpRes.sendRedirect(text);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(resourceRequest);
|
HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(resourceRequest);
|
||||||
ServletResponseUtil.sendFile(httpReq,httpRes, streamDescr.getFileName(), streamDescr.getStream(), "application/download");
|
ServletResponseUtil.sendFile(httpReq,httpRes, streamDescr.getFileName(), streamDescr.getStream(), "application/download");
|
||||||
streamDescr.getStream().close();
|
streamDescr.getStream().close();
|
||||||
|
|
Loading…
Reference in New Issue