You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2006/07/23 20:39:06 UTC

svn commit: r424776 - /incubator/roller/branches/roller_2.4_appd9/src/org/apache/roller/webservices/atomprotocol/RollerAtomHandler.java

Author: snoopdave
Date: Sun Jul 23 11:39:06 2006
New Revision: 424776

URL: http://svn.apache.org/viewvc?rev=424776&view=rev
Log:
Oops, put .media-link on wrong URI and forgot to strip it off in requested filenames

Modified:
    incubator/roller/branches/roller_2.4_appd9/src/org/apache/roller/webservices/atomprotocol/RollerAtomHandler.java

Modified: incubator/roller/branches/roller_2.4_appd9/src/org/apache/roller/webservices/atomprotocol/RollerAtomHandler.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_2.4_appd9/src/org/apache/roller/webservices/atomprotocol/RollerAtomHandler.java?rev=424776&r1=424775&r2=424776&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.4_appd9/src/org/apache/roller/webservices/atomprotocol/RollerAtomHandler.java (original)
+++ incubator/roller/branches/roller_2.4_appd9/src/org/apache/roller/webservices/atomprotocol/RollerAtomHandler.java Sun Jul 23 11:39:06 2006
@@ -27,6 +27,7 @@
 import java.util.List;
 import java.util.StringTokenizer;
 import java.util.Collections;
+import javax.activation.MimetypesFileTypeMap;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -53,7 +54,11 @@
 import com.sun.syndication.feed.atom.Link;
 import com.sun.syndication.feed.atom.Person;
 import java.io.IOException;
+import java.util.Arrays;
+import java.util.Comparator;
 import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeSet;
 import javax.activation.FileTypeMap;
 import org.apache.commons.lang.StringUtils;
 import org.apache.roller.RollerException;
@@ -326,21 +331,38 @@
             }
             FileManager fmgr = mRoller.getFileManager();
             File[] files = fmgr.getFiles(website.getHandle());
+                        
             if (canView(website)) {
                 Feed feed = new Feed();
                 feed.setId(absUrl + "/app/" +website.getHandle() + "/entries/" + start);
+                SortedSet sortedSet = new TreeSet(new Comparator() {
+                    public int compare(Object o1, Object o2) {
+                        File f1 = (File)o1;
+                        File f2 = (File)o2;
+                        if (f1.lastModified() < f2.lastModified()) return 1;
+                        else if (f1.lastModified() == f2.lastModified()) return 0;
+                        else return -1;
+                    }
+                    public boolean equals(Object obj) {
+                        return false;
+                    }               
+                });
                 List atomEntries = new ArrayList();
-                int count = 0;
                 if (files != null && start < files.length) {
-                    for (int i=start; i<(start + max) && i<(files.length); i++) {
-                        Entry entry = createAtomResourceEntry(website, files[i]);
-                        atomEntries.add(entry);
-                        if (count == 0) {
-                            // first entry is most recent
-                            feed.setUpdated(entry.getUpdated());
-                        }
-                        count++;
+                    for (int i=0; i<files.length; i++) {
+                        sortedSet.add(files[i]);
+                    }
+                }
+                int count = 0;
+                File[] sortedArray = (File[])sortedSet.toArray(new File[sortedSet.size()]);
+                for (int i=start; i<(start + max) && i<(sortedArray.length); i++) {
+                    Entry entry = createAtomResourceEntry(website, sortedArray[i]);
+                    atomEntries.add(entry);
+                    if (count == 0) {
+                        // first entry is most recent
+                        feed.setUpdated(entry.getUpdated());
                     }
+                    count++;
                 }
                 if (start + count < files.length) { // add next link
                     int nextOffset = start + max;
@@ -436,13 +458,15 @@
                         return createAtomEntry(entry);
                     }
                 } else if (pathInfo[1].equals("resource") && pathInfo[2].endsWith(".media-link")) {
+                    String fileName = 
+                        pathInfo[2].substring(0, pathInfo[2].length() - ".media-link".length());
                     String handle = pathInfo[0];
                     WebsiteData website = 
                         mRoller.getUserManager().getWebsiteByHandle(handle);
                     String uploadPath = 
                         RollerFactory.getRoller().getFileManager().getUploadUrl();
                     File resource = 
-                        new File(uploadPath + File.separator + pathInfo[2]);
+                        new File(uploadPath + File.separator + fileName);
                     return createAtomResourceEntry(website, resource);
                 }
             }
@@ -523,8 +547,10 @@
                     }
                     if (canEdit(website) && pathInfo.length > 1) {
                         try {
+                            String fileName = 
+                                pathInfo[2].substring(0, pathInfo[2].length() - ".media-link".length());
                             FileManager fmgr = mRoller.getFileManager();
-                            fmgr.deleteFile(website.getHandle(), pathInfo[2]);
+                            fmgr.deleteFile(website.getHandle(), fileName);
                         } catch (Exception e) {
                             String msg = "ERROR in atom.deleteResource";
                             mLogger.error(msg,e);
@@ -855,18 +881,25 @@
         String absUrl = mRollerContext.getAbsoluteContextUrl(mRequest);
         String editURI = absUrl
                 + "/app/" + website.getHandle()
-                + "/resource/" + file.getName();
+                + "/resource/" + file.getName() + ".media-link";
         String editMediaURI = absUrl
                 + "/app/" + website.getHandle()
-                + "/resource/" + file.getName() + ".media-link";
+                + "/resource/" + file.getName();
         String viewURI = absUrl
                 + "/resources/" + website.getHandle()
                 + "/" + file.getName();
+        
         FileTypeMap map = FileTypeMap.getDefaultFileTypeMap();
+        // TODO: figure out why PNG is missing from Java MIME types
+        if (map instanceof MimetypesFileTypeMap) {
+            try {
+                ((MimetypesFileTypeMap)map).addMimeTypes("image/png png PNG");
+            } catch (Exception ignored) {}
+        }
         String contentType = map.getContentType(file);
         
         Entry entry = new Entry();
-        entry.setId(viewURI);
+        entry.setId(editMediaURI);
         entry.setTitle(file.getName());
         entry.setUpdated(new Date(file.lastModified()));