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 2010/04/17 17:57:33 UTC

svn commit: r935194 - in /roller/trunk: ./ planet-business/ weblogger-business/ weblogger-web/ weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/ weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/xmlrpc/

Author: snoopdave
Date: Sat Apr 17 15:57:32 2010
New Revision: 935194

URL: http://svn.apache.org/viewvc?rev=935194&view=rev
Log:
Fixes ROL-1864 by moving to ROME Propono 0.9.13 which fixes the problem by returning the correct Location and Content-Location headers.

https://issues.apache.org/jira/browse/ROL-1864
"MarsEdit & Windows Live Writer will not work with Roller's AtomPub implementation"

Also, we now use ROME jars from the Sonatype Maven repo instead of the old Java.net repo. 

Modified:
    roller/trunk/planet-business/pom.xml
    roller/trunk/pom.xml
    roller/trunk/weblogger-business/pom.xml
    roller/trunk/weblogger-web/pom.xml
    roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/EntryCollection.java
    roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/MediaCollection.java
    roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java
    roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomService.java
    roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler.java

Modified: roller/trunk/planet-business/pom.xml
URL: http://svn.apache.org/viewvc/roller/trunk/planet-business/pom.xml?rev=935194&r1=935193&r2=935194&view=diff
==============================================================================
--- roller/trunk/planet-business/pom.xml (original)
+++ roller/trunk/planet-business/pom.xml Sat Apr 17 15:57:32 2010
@@ -22,7 +22,7 @@
 
     <properties>
         <testOutputDirectory>${project.build.testOutputDirectory}</testOutputDirectory>
-	<testPlanetCache>${project.build.testOutputDirectory}${file.separator}planetcache</testPlanetCache>
+        <testPlanetCache>${project.build.testOutputDirectory}${file.separator}planetcache</testPlanetCache>
     </properties>
 
     <dependencies>
@@ -73,20 +73,22 @@
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
         </dependency>
-
+        
         <dependency>
             <groupId>com.google.code.guice</groupId>
             <artifactId>guice</artifactId>
         </dependency>
 
         <dependency>
-            <groupId>rome</groupId>
+            <groupId>net.java.dev.rome</groupId>
             <artifactId>rome</artifactId>
+            <scope>compile</scope>
         </dependency>
 
         <dependency>
-            <groupId>rome</groupId>
+            <groupId>net.java.dev.rome</groupId>
             <artifactId>rome-fetcher</artifactId>
+            <scope>compile</scope>
         </dependency>
 
         <dependency>
@@ -151,7 +153,7 @@
                             <resources>
                                 <resource>
                                     <directory>${basedir}/src/main/resources/sql</directory>
-                                    <filtering>false</filtering>                                    
+                                    <filtering>false</filtering>
                                 </resource>
                             </resources>
                         </configuration>

Modified: roller/trunk/pom.xml
URL: http://svn.apache.org/viewvc/roller/trunk/pom.xml?rev=935194&r1=935193&r2=935194&view=diff
==============================================================================
--- roller/trunk/pom.xml (original)
+++ roller/trunk/pom.xml Sat Apr 17 15:57:32 2010
@@ -6,7 +6,7 @@
 
     <groupId>org.apache.roller</groupId>
     <artifactId>roller-project</artifactId>
-    
+
     <version>5.0-BETA2-SNAPSHOT</version>
     <packaging>pom</packaging>
 
@@ -25,9 +25,9 @@
     </scm>
 
     <properties>
-       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-       <!-- avoid CLOB/BLOB error in all later versions of Derby -->
-       <derby.version>10.1.3.1</derby.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <!-- avoid CLOB/BLOB error in all later versions of Derby -->
+        <derby.version>10.1.3.1</derby.version>
     </properties>
 
     <modules>
@@ -80,6 +80,7 @@
     </build>
 
     <repositories>
+
         <repository>
             <id>central</id>
             <name>Maven Repository Switchboard</name>
@@ -89,28 +90,26 @@
                 <enabled>false</enabled>
             </snapshots>
         </repository>
-        <repository>
-            <id>ibiblio</id>
-            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
-        </repository>
+
         <repository>
             <id>oauth</id>
             <url>http://oauth.googlecode.com/svn/code/maven</url>
         </repository>
+
         <repository>
             <id>guice</id>
             <url>http://guice-maven.googlecode.com/svn/trunk/</url>
         </repository>
-        <!-- for jstl-1.2 for now.. -->
+
         <repository>
             <id>java.net</id>
-            <url>http://download.java.net/maven/2/</url>
+            <url>http://oss.sonatype.org/content/groups/public</url>
         </repository>
+
+        <!-- for jstl-1.2 for now.. -->
         <repository>
-            <id>snoopdave</id>
-            <name>Temporary archive for ROME Propono 1.0rc1,
-            TODO: replace with official ASAP</name>
-            <url>http://people.apache.org/~snoopdave/repo/</url>
+            <id>java.net</id>
+            <url>http://download.java.net/maven/2/</url>
         </repository>
 
     </repositories>
@@ -171,21 +170,21 @@
             </dependency>
 
             <dependency>
-                <groupId>rome</groupId>
+                <groupId>net.java.dev.rome</groupId>
                 <artifactId>rome</artifactId>
-                <version>1.0</version>
+                <version>1.0.0</version>
             </dependency>
 
             <dependency>
-                <groupId>rome</groupId>
+                <groupId>net.java.dev.rome</groupId>
                 <artifactId>rome-fetcher</artifactId>
-                <version>1.0</version>
+                <version>1.0.0</version>
             </dependency>
 
             <dependency>
-                <groupId>rome</groupId>
+                <groupId>net.java.dev.rome</groupId>
                 <artifactId>rome-propono</artifactId>
-                <version>1.0rc1</version>
+                <version>0.9.13</version>
             </dependency>
 
             <dependency>

Modified: roller/trunk/weblogger-business/pom.xml
URL: http://svn.apache.org/viewvc/roller/trunk/weblogger-business/pom.xml?rev=935194&r1=935193&r2=935194&view=diff
==============================================================================
--- roller/trunk/weblogger-business/pom.xml (original)
+++ roller/trunk/weblogger-business/pom.xml Sat Apr 17 15:57:32 2010
@@ -1,6 +1,6 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
-     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
     <modelVersion>4.0.0</modelVersion>
 
@@ -21,11 +21,11 @@
 
     <properties>
         <testOutputDirectory>${project.build.testOutputDirectory}</testOutputDirectory>
-	<testMediaDir>  ${project.build.testOutputDirectory}${file.separator}mediafiles</testMediaDir>
-	<testUploadsDir>${project.build.testOutputDirectory}${file.separator}uploadsdir</testUploadsDir>
-	<testThemesDir> ${project.build.testOutputDirectory}${file.separator}themes</testThemesDir>
-	<testIndexDir>  ${project.build.testOutputDirectory}${file.separator}index</testIndexDir>
-	<testPlanetCache>${project.build.testOutputDirectory}${file.separator}planetcache</testPlanetCache>
+        <testMediaDir>  ${project.build.testOutputDirectory}${file.separator}mediafiles</testMediaDir>
+        <testUploadsDir>${project.build.testOutputDirectory}${file.separator}uploadsdir</testUploadsDir>
+        <testThemesDir> ${project.build.testOutputDirectory}${file.separator}themes</testThemesDir>
+        <testIndexDir>  ${project.build.testOutputDirectory}${file.separator}index</testIndexDir>
+        <testPlanetCache>${project.build.testOutputDirectory}${file.separator}planetcache</testPlanetCache>
     </properties>
 
     <dependencies>
@@ -100,24 +100,6 @@
         </dependency>
 
         <dependency>
-            <groupId>rome</groupId>
-            <artifactId>rome</artifactId>
-            <scope>compile</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>rome</groupId>
-            <artifactId>rome-fetcher</artifactId>
-            <scope>compile</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>rome</groupId>
-            <artifactId>rome-propono</artifactId>
-            <scope>compile</scope>
-        </dependency>
-
-        <dependency>
             <groupId>org.apache.velocity</groupId>
             <artifactId>velocity</artifactId>
         </dependency>
@@ -199,13 +181,13 @@
                             <resources>
                                 <resource>
                                     <directory>${basedir}/src/main/resources/sql</directory>
-                                    <filtering>false</filtering>                                   
+                                    <filtering>false</filtering>
                                 </resource>
                             </resources>
                         </configuration>
                     </execution>
                 </executions>
-	    </plugin>
+            </plugin>
 
             <plugin>
                 <artifactId>maven-surefire-plugin</artifactId>
@@ -226,7 +208,7 @@
                     </systemProperties>
                     <excludes>
                         <exclude>**/TestUtils.java</exclude>
-			<exclude>**/TestTask.java</exclude>
+                        <exclude>**/TestTask.java</exclude>
                     </excludes>
                 </configuration>
             </plugin>
@@ -323,7 +305,7 @@
                                         port="3219"
                                         databaseScriptsDir="${project.build.directory}/dbscripts"
                                         skip="${maven.test.skip}" ></stopdb>
-				<delete dir="${project.build.directory}/derby-system" verbose="true" failonerror="false" /> 
+                                <delete dir="${project.build.directory}/derby-system" verbose="true" failonerror="false" />
                             </tasks>
                         </configuration>
                     </execution>
@@ -359,8 +341,8 @@
                 </includes>
             </testResource>
             <testResource>
-		<directory>${project.basedir}/src/test/resources</directory>
-		<filtering>true</filtering>
+                <directory>${project.basedir}/src/test/resources</directory>
+                <filtering>true</filtering>
                 <includes>
                     <include>**/**</include>
                 </includes>

Modified: roller/trunk/weblogger-web/pom.xml
URL: http://svn.apache.org/viewvc/roller/trunk/weblogger-web/pom.xml?rev=935194&r1=935193&r2=935194&view=diff
==============================================================================
--- roller/trunk/weblogger-web/pom.xml (original)
+++ roller/trunk/weblogger-web/pom.xml Sat Apr 17 15:57:32 2010
@@ -112,6 +112,12 @@
             <artifactId>string</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>net.java.dev.rome</groupId>
+            <artifactId>rome-propono</artifactId>
+            <scope>compile</scope>
+        </dependency>
+
         <!-- Spring Security deps -->
 
         <dependency>

Modified: roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/EntryCollection.java
URL: http://svn.apache.org/viewvc/roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/EntryCollection.java?rev=935194&r1=935193&r2=935194&view=diff
==============================================================================
--- roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/EntryCollection.java (original)
+++ roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/EntryCollection.java Sat Apr 17 15:57:32 2010
@@ -78,7 +78,7 @@ public class EntryCollection {
     }
     
     
-    public String postEntry(AtomRequest areq, Entry entry) throws AtomException {
+    public Entry postEntry(AtomRequest areq, Entry entry) throws AtomException {
         log.debug("Entering");
         String[] pathInfo = StringUtils.split(areq.getPathInfo(),"/");
         try {
@@ -109,13 +109,14 @@ public class EntryCollection {
             if (rollerEntry.isPublished()) {
                 roller.getIndexManager().addEntryReIndexOperation(rollerEntry);
             }
-            
+
+            rollerEntry = mgr.getWeblogEntry(rollerEntry.getId());
             Entry newEntry = createAtomEntry(rollerEntry);
             for (Iterator it = newEntry.getOtherLinks().iterator(); it.hasNext();) {
                 Link link = (Link)it.next();
                 if ("edit".equals(link.getRel())) {
                     log.debug("Exiting");
-                    return link.getHrefResolved();
+                    return createAtomEntry(rollerEntry);
                 }
             }
             log.error("ERROR: no edit link found in saved media entry");
@@ -311,7 +312,7 @@ public class EntryCollection {
         Entry atomEntry = new Entry();
         
         String absUrl = WebloggerRuntimeConfig.getAbsoluteContextURL();
-        atomEntry.setId(        absUrl + entry.getPermaLink());
+        atomEntry.setId(        entry.getPermalink());
         atomEntry.setTitle(     entry.getTitle());
         atomEntry.setPublished( entry.getPubTime());
         atomEntry.setUpdated(   entry.getUpdateTime());
@@ -355,7 +356,7 @@ public class EntryCollection {
         
         Link altlink = new Link();
         altlink.setRel("alternate");
-        altlink.setHref(absUrl + entry.getPermaLink());
+        altlink.setHref(entry.getPermalink());
         List altlinks = new ArrayList();
         altlinks.add(altlink);
         atomEntry.setAlternateLinks(altlinks);
@@ -379,62 +380,6 @@ public class EntryCollection {
         return atomEntry;
     }
     
-    private Entry createAtomResourceEntry(Weblog website, ThemeResource file) {
-        String absUrl = WebloggerRuntimeConfig.getAbsoluteContextURL();
-        String filePath = 
-            file.getPath().startsWith("/") ? file.getPath().substring(1) : file.getPath();
-        String editURI = 
-                atomURL+"/"+website.getHandle()
-                + "/resource/" + filePath + ".media-link";
-        String editMediaURI = 
-                atomURL+"/"+ website.getHandle()
-                + "/resource/" + filePath;
-        URLStrategy urlStrategy = WebloggerFactory.getWeblogger().getUrlStrategy();
-        String viewURI = urlStrategy.getWeblogResourceURL(website, filePath, true);
-        
-        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.getName());
-        
-        Entry entry = new Entry();
-        entry.setId(editMediaURI);
-        entry.setTitle(file.getName());
-        entry.setUpdated(new Date(file.getLastModified()));
-        
-        List otherlinks = new ArrayList();        
-        entry.setOtherLinks(otherlinks);
-        Link editlink = new Link();
-            editlink.setRel("edit");
-            editlink.setHref(editURI);        
-            otherlinks.add(editlink);            
-        Link editMedialink = new Link();
-            editMedialink.setRel("edit-media");
-            editMedialink.setHref(editMediaURI);        
-            otherlinks.add(editMedialink);
-        
-        Content content = new Content();
-        content.setSrc(viewURI);
-        content.setType(contentType);
-        List contents = new ArrayList();
-        contents.add(content);
-        entry.setContents(contents);
-        
-        List modules = new ArrayList();
-        AppModule app = new AppModuleImpl();
-        app.setDraft(false);
-        app.setEdited(entry.getUpdated());
-        modules.add(app);
-        entry.setModules(modules);
-        
-        return entry;
-    }
-    
-    
     /**
      * Copy fields from ROME entry to Weblogger entry.
      */

Modified: roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/MediaCollection.java
URL: http://svn.apache.org/viewvc/roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/MediaCollection.java?rev=935194&r1=935193&r2=935194&view=diff
==============================================================================
--- roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/MediaCollection.java (original)
+++ roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/MediaCollection.java Sat Apr 17 15:57:32 2010
@@ -85,7 +85,7 @@ public class MediaCollection {
     }  
     
     
-    public String postMedia(AtomRequest areq, Entry entry) throws AtomException {
+    public Entry postMedia(AtomRequest areq, Entry entry) throws AtomException {
         log.debug("Entering");
         String[] pathInfo = StringUtils.split(areq.getPathInfo(),"/");
 
@@ -118,8 +118,12 @@ public class MediaCollection {
                                         
                     // Parse pathinfo to determine file path
                     String path = filePathFromPathInfo(pathInfo);
-                    String justPath = path.substring(path.lastIndexOf("/"));
-                    String justName = path.substring(0, path.lastIndexOf("/"));
+                    String justPath = path;
+                    int lastSlash = path.lastIndexOf("/");
+                    if (lastSlash > -1) {
+                        justPath = path.substring(lastSlash);
+                    }
+
                     MediaFileDirectory mdir =
                         fileMgr.getMediaFileDirectoryByPath(website, justPath);
 
@@ -155,7 +159,7 @@ public class MediaCollection {
                         Link link = (Link)it.next();
                         if ("edit".equals(link.getRel())) {
                             log.debug("Exiting");
-                            return link.getHrefResolved();
+                            return mediaEntry;
                         }
                     }
                     log.error("ERROR: no edit link found in saved media entry");
@@ -466,9 +470,9 @@ public class MediaCollection {
     }
     
     private Entry createAtomResourceEntry(Weblog website, MediaFile file) {
-        String absUrl = WebloggerRuntimeConfig.getAbsoluteContextURL();
-        String filePath = 
-            file.getPath().startsWith("/") ? file.getPath().substring(1) : file.getPath();
+        String filePath = file.getPath().endsWith("/")
+                ? file.getPath() + file.getName()
+                : file.getPath() + "/" + file.getName();
         String editURI = 
                 atomURL+"/"+website.getHandle()
                 + "/resource/" + filePath + ".media-link";
@@ -476,7 +480,6 @@ public class MediaCollection {
                 atomURL+"/"+ website.getHandle()
                 + "/resource/" + filePath;
         URLStrategy urlStrategy = WebloggerFactory.getWeblogger().getUrlStrategy();
-        String viewURI = urlStrategy.getWeblogResourceURL(website, filePath, true);
         
         String contentType = Utilities.getContentTypeFromFileName(file.getName());
         
@@ -485,7 +488,14 @@ public class MediaCollection {
         entry.setTitle(file.getName());
         entry.setUpdated(new Date(file.getLastModified()));
         
-        List otherlinks = new ArrayList();        
+        Link altlink = new Link();
+        altlink.setRel("alternate");
+        altlink.setHref(file.getPermalink());
+        List altlinks = new ArrayList();
+        altlinks.add(altlink);
+        entry.setAlternateLinks(altlinks);
+
+        List otherlinks = new ArrayList();
         entry.setOtherLinks(otherlinks);
         Link editlink = new Link();
             editlink.setRel("edit");
@@ -497,7 +507,7 @@ public class MediaCollection {
             otherlinks.add(editMedialink);
         
         Content content = new Content();
-        content.setSrc(viewURI);
+        content.setSrc(file.getPermalink());
         content.setType(contentType);
         List contents = new ArrayList();
         contents.add(content);

Modified: roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java
URL: http://svn.apache.org/viewvc/roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java?rev=935194&r1=935193&r2=935194&view=diff
==============================================================================
--- roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java (original)
+++ roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java Sat Apr 17 15:57:32 2010
@@ -168,7 +168,7 @@ public class RollerAtomHandler implement
     /**
      * Create entry in the entry collection (a Weblogger blog has only one).
      */
-    public String postEntry(AtomRequest areq, Entry entry) throws AtomException {
+    public Entry postEntry(AtomRequest areq, Entry entry) throws AtomException {
         EntryCollection ecol = new EntryCollection(user, atomURL);
         return ecol.postEntry(areq, entry);
     }
@@ -180,7 +180,7 @@ public class RollerAtomHandler implement
      * TODO: do we need to handle mutli-part MIME uploads?
      * TODO: use Jakarta Commons File-upload?
      */
-    public String postMedia(AtomRequest areq, Entry entry)
+    public Entry postMedia(AtomRequest areq, Entry entry)
             throws AtomException {
         MediaCollection mcol = new MediaCollection(user, atomURL);
         return mcol.postMedia(areq, entry);

Modified: roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomService.java
URL: http://svn.apache.org/viewvc/roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomService.java?rev=935194&r1=935193&r2=935194&view=diff
==============================================================================
--- roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomService.java (original)
+++ roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomService.java Sat Apr 17 15:57:32 2010
@@ -113,12 +113,7 @@ public class RollerAtomService extends A
                     throw new AtomException("Creating weblog entry collection for service doc", e);
                 }
 
-                // Add media collection for upload dir
-                Collection uploadCol = new Collection("Media Files", "text", atomURL + "/" + weblog.getHandle() + "/resources/");
-                uploadCol.setAccepts(uploadAccepts); 
-                workspace.addCollection(uploadCol);
-
-                // And add one media collection for each of weblog's upload sub-directories
+                // And add one media collection for each of weblog's upload directories
                 try {
                     MediaFileManager mgr = roller.getMediaFileManager();
                     List<MediaFileDirectory> dirs = mgr.getMediaFileDirectories(weblog);

Modified: roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler.java
URL: http://svn.apache.org/viewvc/roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler.java?rev=935194&r1=935193&r2=935194&view=diff
==============================================================================
--- roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler.java (original)
+++ roller/trunk/weblogger-web/src/main/java/org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler.java Sat Apr 17 15:57:32 2010
@@ -377,8 +377,7 @@ public class MetaWeblogAPIHandler extend
             mf.setInputStream(new ByteArrayInputStream(bits));
             mf.setLength(bits.length);
             
-            String fileLink = WebloggerFactory.getWeblogger().getUrlStrategy()
-                    .getWeblogResourceURL(website, name, true);
+            String fileLink = mf.getPermalink();
             
             Hashtable returnStruct = new Hashtable(1);
             returnStruct.put("url", fileLink);