Author: wesw
Date: Thu Jun  4 14:24:28 2009
New Revision: 781750

URL: http://svn.apache.org/viewvc?rev=781750&view=rev
Log:
minor refactoring, improved UploadStatus & UploadStatusHolder after realizing 
that I should also be keying off of the item # passed in on the 
update(long,long,int) method of ProgressListener

Added:
    
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadFile.java
   (with props)
Modified:
    
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/BasicProgressListener.java
    
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadStatus.java
    
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadStatusHolder.java
    
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/resources/struts-plugin.xml
    
struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/BasicProgressListenerTest.java
    
struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/UploadStatusHolderTest.java
    
struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/UploadStatusTest.java

Modified: 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/BasicProgressListener.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/BasicProgressListener.java?rev=781750&r1=781749&r2=781750&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/BasicProgressListener.java
 (original)
+++ 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/BasicProgressListener.java
 Thu Jun  4 14:24:28 2009
@@ -73,7 +73,7 @@
             UploadStatus status = new UploadStatus();
             status.setBytesRead(bytesRead);
             status.setContentLength(contentLength);
-            status.setItem(item);
+            status.setItemId(item);
             holder.addUploadStatus(sessionId, status);
         }
     }

Added: 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadFile.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadFile.java?rev=781750&view=auto
==============================================================================
--- 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadFile.java
 (added)
+++ 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadFile.java
 Thu Jun  4 14:24:28 2009
@@ -0,0 +1,114 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.struts2.fileupload;
+
+/**
+ * This class just holds the identifying fields for a file
+ * that is in the process of being uploaded.
+ *
+ * @author $Author$
+ * <p/>
+ */
+public class UploadFile {
+
+    private String sessionId;
+    private int fileItemId;
+
+    /**
+     *
+     * @param sessionId
+     * @param fileItemId
+     */
+    public UploadFile(String sessionId, int fileItemId) {
+        this.sessionId = sessionId;
+        this.fileItemId = fileItemId;
+    }
+
+    /**
+     *
+     * @return
+     */
+    public String getSessionId() {
+        return sessionId;
+    }
+
+    /**
+     *
+     * @param sessionId
+     */
+    public void setSessionId(String sessionId) {
+        this.sessionId = sessionId;
+    }
+
+    /**
+     * 
+     * @return
+     */
+    public int getFileItemId() {
+        return fileItemId;
+    }
+
+    /**
+     *
+     * @param fileItemId
+     */
+    public void setFileItemId(int fileItemId) {
+        this.fileItemId = fileItemId;
+    }
+
+    /**
+     *
+     * @param o
+     * @return
+     */
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof UploadFile)) return false;
+
+        UploadFile that = (UploadFile) o;
+
+        if (fileItemId != that.fileItemId) return false;
+        if (!sessionId.equals(that.sessionId)) return false;
+
+        return true;
+    }
+
+    /**
+     *
+     * @return
+     */
+    @Override
+    public int hashCode() {
+        int result = sessionId.hashCode();
+        result = 31 * result + fileItemId;
+        return result;
+    }
+
+    /**
+     * 
+     * @return
+     */
+    @Override
+    public String toString() {
+        return "sessionId - " + sessionId + ", fileItemId - " + fileItemId;
+    }
+}

Propchange: 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadFile.java
------------------------------------------------------------------------------
    svn:keywords = Id Rev Author Date URL

Modified: 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadStatus.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadStatus.java?rev=781750&r1=781749&r2=781750&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadStatus.java
 (original)
+++ 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadStatus.java
 Thu Jun  4 14:24:28 2009
@@ -33,7 +33,7 @@
     private long lastAccess ;
     private long bytesRead ;
     private long contentLength ;
-    private long item ;
+    private int itemId;
 
     /**
      *
@@ -42,7 +42,7 @@
         updateLastAccess() ;
         bytesRead = 0;
         contentLength = 0;
-        item = 0;
+        itemId = 0;
     }
 
     /**
@@ -87,17 +87,17 @@
     /**
      *
      */
-    public long getItem() {
+    public int getItemId() {
         updateLastAccess();
-        return item;
+        return itemId;
     }
 
     /**
      *
      */
-    public void setItem(long item) {
+    public void setItemId(int itemId) {
         updateLastAccess();
-        this.item = item;
+        this.itemId = itemId;
     }
 
     /**

Modified: 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadStatusHolder.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadStatusHolder.java?rev=781750&r1=781749&r2=781750&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadStatusHolder.java
 (original)
+++ 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/java/org/apache/struts2/fileupload/UploadStatusHolder.java
 Thu Jun  4 14:24:28 2009
@@ -38,7 +38,7 @@
 public class UploadStatusHolder {
 
     private int secondsToKeep = 600 ; //default to ten minutes
-    public static Map<String,UploadStatus> statuses = new 
HashMap<String,UploadStatus>();
+    public static Map<UploadFile,UploadStatus> statuses = new 
HashMap<UploadFile,UploadStatus>();
 
     private long lastRun = 0; // keep track so we aren't cleaning up all the 
time
 
@@ -63,7 +63,7 @@
      * @param status
      */
     public void addUploadStatus(String key, UploadStatus status ) {
-        statuses.put(key,status);
+        statuses.put(new UploadFile(key, status.getItemId()),status);
     }
 
     /**
@@ -71,21 +71,40 @@
      * @param key
      * @return
      */
-    public UploadStatus getUploadStatus(String key) {
+    public UploadStatus getUploadStatus(String key, int fileItemId) {
+        cleanUp();
+        UploadFile mapKey = new UploadFile(key, fileItemId);
+        return statuses.get(mapKey);
+    }
+
+    /**
+     *
+     * @param sessionId
+     * @return
+     */
+    public List<UploadStatus> getAllStatusesInSession(String sessionId) {
+        List<UploadStatus> statusesInSession = new ArrayList<UploadStatus>();
+        for (UploadFile candidate : statuses.keySet()) {
+            if (candidate.getSessionId() != null && 
candidate.getSessionId().equals(sessionId)) {
+                statusesInSession.add(statuses.get(candidate));
+            }
+        }
+        return statusesInSession;
+    }
+
+    private void cleanUp() {
         long now = Calendar.getInstance().getTimeInMillis() / 1000 ;
         if ( now - lastRun > secondsToKeep) {
             // time to clean up
-            List<String> keys2del = new ArrayList<String>();
-            for (String cleanUpKey : statuses.keySet()) {
+            List<UploadFile> keys2del = new ArrayList<UploadFile>();
+            for (UploadFile cleanUpKey : statuses.keySet()) {
                 if ( now - statuses.get(cleanUpKey).getLastAccess() > 
secondsToKeep ) {
                     keys2del.add(cleanUpKey);
                 }
             }
-            for (String key2del : keys2del) {
+            for (UploadFile key2del : keys2del) {
                 statuses.remove(key2del);
             }
         }
-
-        return statuses.get(key);
     }
 }

Modified: 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/resources/struts-plugin.xml
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-fileupload-plugin/src/main/resources/struts-plugin.xml?rev=781750&r1=781749&r2=781750&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/resources/struts-plugin.xml
 (original)
+++ 
struts/sandbox/trunk/struts2-fileupload-plugin/src/main/resources/struts-plugin.xml
 Thu Jun  4 14:24:28 2009
@@ -44,4 +44,5 @@
     <constant name="struts.fileuploadplugin.listenerupdatefrequency" 
value="2048" />
     <constant name="struts.fileuploadplugin.isportletupload" value="false"/>
     <constant name="struts.fileuploadplugin.timetokeepstatus" value="600" />
+    
 </struts>
\ No newline at end of file

Modified: 
struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/BasicProgressListenerTest.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/BasicProgressListenerTest.java?rev=781750&r1=781749&r2=781750&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/BasicProgressListenerTest.java
 (original)
+++ 
struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/BasicProgressListenerTest.java
 Thu Jun  4 14:24:28 2009
@@ -27,12 +27,10 @@
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.StrutsStatics;
 import org.springframework.mock.web.MockServletContext;
-import org.springframework.mock.web.MockHttpSession;
 import org.springframework.mock.web.MockHttpServletRequest;
 import org.springframework.mock.web.MockHttpServletResponse;
 import com.opensymphony.xwork2.ActionContext;
 
-import javax.servlet.http.HttpSession;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.Map;
@@ -85,11 +83,11 @@
         String key = request.getSession().getId();
         System.err.println("key - " + key);
 
-        UploadStatus status = holder.getUploadStatus(key );
+        UploadStatus status = holder.getUploadStatus(key , 1);
 
         assertTrue(status.getBytesRead() == 10L);
         assertTrue(status.getContentLength() == 10L);
-        assertTrue(status.getItem() == 1);
+        assertTrue(status.getItemId() == 1);
     }
 
     /**
@@ -107,11 +105,11 @@
         String key = request.getSession().getId();
         System.err.println("key - " + key);
 
-        UploadStatus status = holder.getUploadStatus(key );
+        UploadStatus status = holder.getUploadStatus(key, 1 );
 
         assertTrue(status.getBytesRead() == 10L);
         assertTrue(status.getContentLength() == 10L);
-        assertTrue(status.getItem() == 1);
+        assertTrue(status.getItemId() == 1);
 
     }
 }
\ No newline at end of file

Modified: 
struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/UploadStatusHolderTest.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/UploadStatusHolderTest.java?rev=781750&r1=781749&r2=781750&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/UploadStatusHolderTest.java
 (original)
+++ 
struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/UploadStatusHolderTest.java
 Thu Jun  4 14:24:28 2009
@@ -39,15 +39,15 @@
         UploadStatus status1 = new UploadStatus();
         status1.setBytesRead(1L);
         status1.setContentLength(1L);
-        status1.setItem(1L);
+        status1.setItemId(1);
         holder1.addUploadStatus("status1",status1);
 
         UploadStatusHolder holder2 = new UploadStatusHolder();
-        UploadStatus status2 = holder2.getUploadStatus("status1");
+        UploadStatus status2 = holder2.getUploadStatus("status1", 1);
 
         assertTrue(status1.getBytesRead() == status2.getBytesRead());
         assertTrue(status1.getContentLength() == status2.getContentLength());
-        assertTrue(status1.getItem() == status2.getItem());
+        assertTrue(status1.getItemId() == status2.getItemId());
     }
 
     /**
@@ -61,10 +61,10 @@
         UploadStatus status1 = new UploadStatus();
         status1.setBytesRead(1L);
         status1.setContentLength(1L);
-        status1.setItem(1L);
+        status1.setItemId(1);
         holder1.addUploadStatus("status1",status1);
         Thread.sleep(5000L);
-        UploadStatus status2 = holder1.getUploadStatus("status1");
+        UploadStatus status2 = holder1.getUploadStatus("status1", 1);
         assertTrue(status2 == null);
     }
 }

Modified: 
struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/UploadStatusTest.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/UploadStatusTest.java?rev=781750&r1=781749&r2=781750&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/UploadStatusTest.java
 (original)
+++ 
struts/sandbox/trunk/struts2-fileupload-plugin/src/test/java/org/apache/struts2/fileupload/UploadStatusTest.java
 Thu Jun  4 14:24:28 2009
@@ -40,11 +40,11 @@
         long firstAccess = stat.getLastAccess();
         stat.setBytesRead(1L);
         stat.setContentLength(1L);
-        stat.setItem(1L);
+        stat.setItemId(1);
         Thread.sleep(5000L);
         assertTrue(1 == stat.getBytesRead());
         assertTrue(1 == stat.getContentLength());
-        assertTrue(1 == stat.getItem());
+        assertTrue(1 == stat.getItemId());
         assertTrue(firstAccess < stat.getLastAccess());
     }
 }


Reply via email to