You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by ms...@apache.org on 2018/02/08 08:35:22 UTC
portals-pluto git commit: Changed the temp directory used by the demo
portlet.
Repository: portals-pluto
Updated Branches:
refs/heads/master 13a67911e -> 89f6a59a7
Changed the temp directory used by the demo portlet.
Project: http://git-wip-us.apache.org/repos/asf/portals-pluto/repo
Commit: http://git-wip-us.apache.org/repos/asf/portals-pluto/commit/89f6a59a
Tree: http://git-wip-us.apache.org/repos/asf/portals-pluto/tree/89f6a59a
Diff: http://git-wip-us.apache.org/repos/asf/portals-pluto/diff/89f6a59a
Branch: refs/heads/master
Commit: 89f6a59a740d0a8318640ca6015e9a381c5c6b50
Parents: 13a6791
Author: Scott Nicklous <ms...@apache.org>
Authored: Thu Feb 8 09:32:29 2018 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Thu Feb 8 09:32:29 2018 +0100
----------------------------------------------------------------------
.../portals/samples/MultipartPortlet.java | 76 ++++++++++++++------
1 file changed, 56 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/89f6a59a/PortletV3AnnotatedDemo/src/main/java/org/apache/portals/samples/MultipartPortlet.java
----------------------------------------------------------------------
diff --git a/PortletV3AnnotatedDemo/src/main/java/org/apache/portals/samples/MultipartPortlet.java b/PortletV3AnnotatedDemo/src/main/java/org/apache/portals/samples/MultipartPortlet.java
index 8b1b01c..b0a1042 100644
--- a/PortletV3AnnotatedDemo/src/main/java/org/apache/portals/samples/MultipartPortlet.java
+++ b/PortletV3AnnotatedDemo/src/main/java/org/apache/portals/samples/MultipartPortlet.java
@@ -26,6 +26,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
@@ -60,7 +62,7 @@ public class MultipartPortlet {
private static final Logger LOGGER = Logger.getLogger(MultipartPortlet.class.getName());
private static final String JSP = "/WEB-INF/jsp/multipartDialog.jsp";
- private static final String TMP = "/temp/";
+ private static final String TMP = "/MultipartPortlet/temp/";
@ActionMethod(portletName = "MultipartPortlet")
public void handleDialog(ActionRequest req, ActionResponse resp) throws IOException, PortletException {
@@ -107,19 +109,10 @@ public class MultipartPortlet {
// quick solution that doesn't require additional Tomcat configuration.
try {
- String path = req.getPortletContext().getRealPath(TMP);
- File dir = new File(path);
- lines.add("Temp path: " + dir.getCanonicalPath());
- if (!dir.exists()) {
- lines.add("Creating directory. Path: " + dir.getCanonicalPath());
- Files.createDirectories(dir.toPath());
- }
- String fn = TMP + part.getSubmittedFileName();
- lines.add("Temp file: " + fn);
- path = req.getPortletContext().getRealPath(fn);
- File img = new File(path);
+ String fn = part.getSubmittedFileName();
+ File img = getFile(fn);
if (img.exists()) {
- lines.add("deleting existing temp file.");
+ lines.add("deleting existing temp file: " + img.getCanonicalPath());
img.delete();
}
InputStream is = part.getInputStream();
@@ -130,6 +123,15 @@ public class MultipartPortlet {
} catch (Exception e) {
lines.add("Exception doing I/O: " + e.toString());
+
+ txt.setLength(0);
+ txt.append("Problem getting temp file: " + e.getMessage() + "\n");
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ e.printStackTrace(pw);
+ pw.flush();
+ txt.append(sw.toString());
+ LOGGER.warning(txt.toString());
}
} else {
lines.add("file part was null");
@@ -172,8 +174,7 @@ public class MultipartPortlet {
FileInputStream fis = null;
BufferedReader rdr = null;
try {
- String path = req.getPortletContext().getRealPath(fn);
- File file = new File(path);
+ File file = getFile(fn);
fis = new FileInputStream(file);
if (ct.equals("text/plain")) {
@@ -232,10 +233,45 @@ public class MultipartPortlet {
resp.setContentType(ct);
- String path = req.getPortletContext().getRealPath(fn);
- File file = new File(path);
- OutputStream os = resp.getPortletOutputStream();
- Files.copy(file.toPath(), os);
- os.flush();
+ try {
+ File file = getFile(fn);
+ OutputStream os = resp.getPortletOutputStream();
+ Files.copy(file.toPath(), os);
+ os.flush();
+ } catch (Exception e) {
+ StringBuilder txt = new StringBuilder(128);
+ txt.append("Problem retrieving temp file: " + e.getMessage() + "\n");
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ e.printStackTrace(pw);
+ pw.flush();
+ txt.append(sw.toString());
+ LOGGER.warning(txt.toString());
+ }
+
+ }
+
+ /**
+ * Returns a File object representing the uploaded temporary file location. Note that the file may or may not exist.
+ * The temp directories are created as necessary.
+ *
+ * @param fn
+ * the file name
+ * @return the File object
+ * @throws IOException
+ */
+ private File getFile(String fn) throws IOException {
+ File tmp = null;
+
+ String path = System.getProperty("java.io.tmpdir") + TMP;
+ File dir = new File(path);
+ if (!dir.exists()) {
+ LOGGER.fine("Creating directory. Path: " + dir.getCanonicalPath());
+ Files.createDirectories(dir.toPath());
+ }
+ tmp = new File(dir, fn);
+ LOGGER.fine("Temp file: " + tmp.getCanonicalPath());
+
+ return tmp;
}
}