6bf53f68 by Adam Heath

Merge branch 'BFP-1784' of /home/git/repositories/brainfood/java-nginx-upload-processor

2 parents ab099caf 7954523f
...@@ -18,15 +18,17 @@ import org.apache.commons.fileupload.servlet.ServletFileUpload; ...@@ -18,15 +18,17 @@ import org.apache.commons.fileupload.servlet.ServletFileUpload;
18 import org.ofbiz.base.util.HttpClient; 18 import org.ofbiz.base.util.HttpClient;
19 19
20 public class NGINXUploadProcessor extends HttpServlet { 20 public class NGINXUploadProcessor extends HttpServlet {
21 class ProgressRecord { 21 final class ProgressRecord {
22 long bytesRead; 22 final boolean complete;
23 long contentLength; 23 final long bytesRead;
24 int items; 24 final long contentLength;
25 final int items;
25 26
26 public ProgressRecord(long bytesRead, long contentLength, int items) { 27 public ProgressRecord(long bytesRead, long contentLength, int items, boolean complete) {
27 this.bytesRead = bytesRead; 28 this.bytesRead = bytesRead;
28 this.contentLength = contentLength; 29 this.contentLength = contentLength;
29 this.items = items; 30 this.items = items;
31 this.complete = complete;
30 } 32 }
31 } 33 }
32 34
...@@ -65,11 +67,7 @@ public class NGINXUploadProcessor extends HttpServlet { ...@@ -65,11 +67,7 @@ public class NGINXUploadProcessor extends HttpServlet {
65 System.err.println("QUERY PROGRESS: [" + xProgressId + "] - " + progress.get(xProgressId)); 67 System.err.println("QUERY PROGRESS: [" + xProgressId + "] - " + progress.get(xProgressId));
66 if (xProgressId != null && progress.get(xProgressId) != null) { 68 if (xProgressId != null && progress.get(xProgressId) != null) {
67 ProgressRecord record = progress.get(xProgressId); 69 ProgressRecord record = progress.get(xProgressId);
68 String status = "done"; 70 out.println("({ \"state\" : \""+ (record.complete ? "done" : "uploading") +"\", \"received\" : " +
69 if (record.bytesRead < record.contentLength) {
70 status = "uploading";
71 }
72 out.println("({ \"state\" : \""+ status +"\", \"received\" : " +
73 record.bytesRead + ", \"size\" : " + record.contentLength + " });"); 71 record.bytesRead + ", \"size\" : " + record.contentLength + " });");
74 } else { 72 } else {
75 out.println("({ \"error\" : \"Invalid X-Progress-ID\" });"); 73 out.println("({ \"error\" : \"Invalid X-Progress-ID\" });");
...@@ -78,7 +76,7 @@ public class NGINXUploadProcessor extends HttpServlet { ...@@ -78,7 +76,7 @@ public class NGINXUploadProcessor extends HttpServlet {
78 } else { 76 } else {
79 String xProgressId = request.getParameter("X-Progress-ID"); 77 String xProgressId = request.getParameter("X-Progress-ID");
80 System.err.println("STORE: [" + xProgressId + "]"); 78 System.err.println("STORE: [" + xProgressId + "]");
81 progress.put(xProgressId, new ProgressRecord(-1, 0, 1)); 79 progress.put(xProgressId, new ProgressRecord(-1, 0, 1, false));
82 80
83 if (ServletFileUpload.isMultipartContent(request)) { 81 if (ServletFileUpload.isMultipartContent(request)) {
84 // Create a factory for disk-based file items 82 // Create a factory for disk-based file items
...@@ -108,9 +106,9 @@ public class NGINXUploadProcessor extends HttpServlet { ...@@ -108,9 +106,9 @@ public class NGINXUploadProcessor extends HttpServlet {
108 this.progress = progress; 106 this.progress = progress;
109 } 107 }
110 @Override 108 @Override
111 public void update(long sent, long length, int items) { 109 public void update(long bytesRead, long contentLength, int items) {
112 System.err.println("PROGRESS: " + sent + " " + length + " " + items); 110 System.err.println("PROGRESS: " + bytesRead + " " + contentLength + " " + items);
113 progress.put(xProgressId, new ProgressRecord(sent, length, items)); 111 progress.put(xProgressId, new ProgressRecord(bytesRead, contentLength, items, false));
114 } 112 }
115 }; 113 };
116 114
...@@ -132,6 +130,9 @@ public class NGINXUploadProcessor extends HttpServlet { ...@@ -132,6 +130,9 @@ public class NGINXUploadProcessor extends HttpServlet {
132 String pResponse = http.post(); 130 String pResponse = http.post();
133 System.err.println("FINISHED:" + pResponse); 131 System.err.println("FINISHED:" + pResponse);
134 out.print(pResponse); 132 out.print(pResponse);
133
134 ProgressRecord oldRecord = progress.get(xProgressId);
135 progress.put(xProgressId, new ProgressRecord(oldRecord.bytesRead, oldRecord.contentLength, oldRecord.items, true));
135 } catch (Exception ex) { 136 } catch (Exception ex) {
136 ex.printStackTrace(); 137 ex.printStackTrace();
137 } 138 }
......