From 621ccf3d8ac1cac5b617d9e31161eee75f730713 Mon Sep 17 00:00:00 2001 From: Bruno Sinou Date: Wed, 27 Nov 2013 15:25:10 +0000 Subject: [PATCH] Clean solution to solve RAP specific file download service issue revealed by the upgrade to RAP 2.x APIs. Mark legacy classes as deprecated. This might be merged in commons stable branch See https://www.argeo.org/bugzilla/show_bug.cgi?id=188 git-svn-id: https://svn.argeo.org/commons/trunk@6657 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../ui/specific/DownloadServiceHandler.java | 1 + ...eHandler.java => FileDownloadService.java} | 10 ++---- .../eclipse/ui/specific/FileHandler.java | 1 + .../eclipse/ui/specific/FileProvider.java | 1 + ...enFileHandler.java => SimpleOpenFile.java} | 35 +++++++++---------- 5 files changed, 21 insertions(+), 27 deletions(-) rename base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/{FileDownloadServiceHandler.java => FileDownloadService.java} (85%) rename base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/{AbstractOpenFileHandler.java => SimpleOpenFile.java} (74%) diff --git a/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/DownloadServiceHandler.java b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/DownloadServiceHandler.java index 6c70b215e..b28229695 100644 --- a/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/DownloadServiceHandler.java +++ b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/DownloadServiceHandler.java @@ -24,6 +24,7 @@ import javax.servlet.http.HttpServletResponse; import org.argeo.ArgeoException; import org.eclipse.rap.rwt.service.ServiceHandler; +@Deprecated public class DownloadServiceHandler implements ServiceHandler { private FileProvider provider; diff --git a/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileDownloadServiceHandler.java b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileDownloadService.java similarity index 85% rename from base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileDownloadServiceHandler.java rename to base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileDownloadService.java index f803d20f0..e5eb8fcae 100644 --- a/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileDownloadServiceHandler.java +++ b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileDownloadService.java @@ -27,13 +27,11 @@ import org.argeo.ArgeoException; import org.eclipse.rap.rwt.service.ServiceHandler; /** Provide a basic handler that returns a file from the file system in Rap. */ -public class FileDownloadServiceHandler implements ServiceHandler { - private final String downloadServicehandlerId; +public class FileDownloadService implements ServiceHandler { public final static String PARAM_FILE_NAME = "param.fileName"; public final static String PARAM_FILE_PATH = "param.filePath"; - public FileDownloadServiceHandler(String downloadServicehandlerId) { - this.downloadServicehandlerId = downloadServicehandlerId; + public FileDownloadService() { } public void service(HttpServletRequest request, HttpServletResponse response) @@ -58,8 +56,4 @@ public class FileDownloadServiceHandler implements ServiceHandler { + " to the servlet response", ioe); } } - - public String getDownloadServiceHandlerId(){ - return downloadServicehandlerId; - } } \ No newline at end of file diff --git a/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileHandler.java b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileHandler.java index 1c53d84c3..927747e62 100644 --- a/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileHandler.java +++ b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileHandler.java @@ -32,6 +32,7 @@ import org.eclipse.rap.rwt.service.ServiceHandler; * Manages the process of forwarding the request to the handler at runtime to * open the dialog box encodedURL */ +@Deprecated public class FileHandler { public final static String DOWNLOAD_SERVICE_NAME = "argeo.rap.download.service"; private final static Log log = LogFactory.getLog(FileHandler.class); diff --git a/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileProvider.java b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileProvider.java index 37db4c94f..ae959fb6d 100644 --- a/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileProvider.java +++ b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/FileProvider.java @@ -21,6 +21,7 @@ import java.io.InputStream; * Used for file download : subclasses must implement model specific methods to * get a byte array representing a file given is ID. */ +@Deprecated public interface FileProvider { public byte[] getByteArrayFileFromId(String fileId); diff --git a/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/AbstractOpenFileHandler.java b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/SimpleOpenFile.java similarity index 74% rename from base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/AbstractOpenFileHandler.java rename to base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/SimpleOpenFile.java index 429e537d2..f8ee3b1a3 100644 --- a/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/AbstractOpenFileHandler.java +++ b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/SimpleOpenFile.java @@ -28,31 +28,25 @@ import org.eclipse.rap.rwt.client.service.UrlLauncher; * other tmp files created for exports. * */ -public abstract class AbstractOpenFileHandler extends AbstractHandler { +public class SimpleOpenFile extends AbstractHandler { private final static Log log = LogFactory - .getLog(AbstractOpenFileHandler.class); + .getLog(SimpleOpenFile.class); - // Must be declared by implementing classes - // public final static String ID = "org.argeo.eclipse.ui.specific.openFile"; + private String serviceId; - public final static String PARAM_FILE_NAME = FileDownloadServiceHandler.PARAM_FILE_NAME; - public final static String PARAM_FILE_PATH = FileDownloadServiceHandler.PARAM_FILE_PATH; + public final static String PARAM_FILE_NAME = FileDownloadService.PARAM_FILE_NAME; + public final static String PARAM_FILE_PATH = FileDownloadService.PARAM_FILE_PATH; public Object execute(ExecutionEvent event) throws ExecutionException { - - // Try to register each time we execute the command. - // try { - // ServiceHandler handler = new FileDownloadServiceHandler(); - // RWT.getServiceManager().registerServiceHandler( - // FileDownloadServiceHandler.DOWNLOAD_SERVICE_NAME, handler); - // } catch (IllegalArgumentException iae) { - // log.warn("Handler is already registered, clean this registering process"); - // } - - // The real usefull handler String fileName = event.getParameter(PARAM_FILE_NAME); String filePath = event.getParameter(PARAM_FILE_PATH); + // sanity check + if (serviceId == null || "".equals(serviceId.trim()) + || fileName == null || "".equals(fileName.trim()) + || filePath == null || "".equals(filePath.trim())) + return null; + StringBuilder url = new StringBuilder(); url.append("&").append(PARAM_FILE_NAME).append("="); url.append(fileName); @@ -60,7 +54,7 @@ public abstract class AbstractOpenFileHandler extends AbstractHandler { url.append(filePath); String downloadUrl = RWT.getServiceManager().getServiceHandlerUrl( - getDownloadServiceHandlerId()) + serviceId) + url.toString(); if (log.isTraceEnabled()) log.debug("URL : " + downloadUrl); @@ -78,5 +72,8 @@ public abstract class AbstractOpenFileHandler extends AbstractHandler { return null; } - protected abstract String getDownloadServiceHandlerId(); + /* DEPENDENCY INJECTION */ + public void setDownloadServiceHandlerId(String downloadServiceHandlerId) { + this.serviceId = downloadServiceHandlerId; + } } \ No newline at end of file -- 2.30.2