You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2007/03/30 18:30:08 UTC

svn commit: r524160 - /lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java

Author: andreas
Date: Fri Mar 30 09:30:07 2007
New Revision: 524160

URL: http://svn.apache.org/viewvc?view=rev&rev=524160
Log:
Added support for uuid2url.extension parameter

Modified:
    lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java

Modified: lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java?view=diff&rev=524160&r1=524159&r2=524160
==============================================================================
--- lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java (original)
+++ lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java Fri Mar 30 09:30:07 2007
@@ -45,6 +45,7 @@
 import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.repository.RepositoryUtil;
 import org.apache.lenya.cms.repository.Session;
+import org.apache.lenya.util.Query;
 import org.apache.lenya.util.ServletHelper;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
@@ -74,12 +75,18 @@
  * <code>&lt;a/&gt;</code> element is removed to disable the link.</li>
  * </ul>
  * 
+ * <p>
+ * You can add the query parameter <code>uuid2url.extension</code> to <code>lenya-document:</code>
+ * URLs to set a specific link extension.
+ * </p>
+ * 
  * $Id: LinkRewritingTransformer.java,v 1.7 2004/03/16 11:12:16 gregor
  */
 public class UuidToUrlTransformer extends AbstractSAXTransformer implements Disposable {
 
     protected static final String BROKEN_ATTRIB = "class";
     protected static final String BROKEN_VALUE = "brokenlink";
+    protected static final String EXTENSION_PARAM = "uuid2url.extension";
 
     private boolean ignoreLinkElement = false;
     private ServiceSelector serviceSelector;
@@ -208,16 +215,20 @@
                             String[] linkUriAndQuery = url.split("\\?");
                             String linkUri = linkUriAndQuery[0];
                             String queryString = null;
+                            String requiredExtension = null;
                             if (linkUriAndQuery.length > 1) {
                                 queryString = linkUriAndQuery[1];
+                                Query query = new Query(queryString);
+                                requiredExtension = query.getValue(EXTENSION_PARAM);
+                                query.removeValue(EXTENSION_PARAM);
+                                queryString = query.toString();
                             }
                             LinkTarget target = this.linkResolver.resolve(doc, linkUri);
                             if (target.exists() && target.getDocument().hasLink()) {
                                 Document targetDocument = target.getDocument();
-                                String extension = targetDocument.getExtension();
-                                if (extension.length() > 0) {
-                                    extension = "." + extension;
-                                }
+                                
+                                String extension = getExtension(targetDocument, requiredExtension);
+                                
                                 rewriteLink(newAttrs, attributeNames[i], targetDocument, anchor,
                                         queryString, extension);
                             } else if (doc.getArea().equals(Publication.AUTHORING_AREA)) {
@@ -268,6 +279,15 @@
         }
     }
 
+    protected String getExtension(Document targetDocument, String requiredExtension) {
+        String docExtension = targetDocument.getExtension();
+        String extension = requiredExtension != null ? requiredExtension : docExtension;
+        if (extension.length() > 0) {
+            extension = "." + extension;
+        }
+        return extension;
+    }
+
     /**
      * Marks a <code>&lt;a/&gt;</code> element as broken and removes href
      * attribute.
@@ -327,7 +347,7 @@
             rewrittenURL += "#" + anchor;
         }
 
-        if (queryString != null) {
+        if (queryString != null && queryString.length() > 0) {
             rewrittenURL += "?" + queryString;
         }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org