[jboss-svn-commits] JBL Code SVN: r26217 - in labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src: main/java/org/jboss/labs/clearspace/plugin/hfurl/struts and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Apr 23 05:38:33 EDT 2009


Author: lkrzyzanek
Date: 2009-04-23 05:38:33 -0400 (Thu, 23 Apr 2009)
New Revision: 26217

Added:
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/RedirectToHFURLAction.java
Modified:
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManager.java
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/HFURLManager.java
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/resources/struts.xml
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManagerTest.java
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMappingTest.java
Log:
added action for redirecting to HF URL.
refactored some methods in HFURLManager

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManager.java	2009-04-23 09:37:44 UTC (rev 26216)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManager.java	2009-04-23 09:38:33 UTC (rev 26217)
@@ -137,6 +137,10 @@
   }
 
   public String getHFURL(String standardURL) {
+    return getHFURL(standardURL, false);
+  }
+
+  public String getHFURL(String standardURL, boolean onlyUniqueHFURL) {
     if (!isHFLinksEnabled()) {
       return standardURL;
     }
@@ -151,6 +155,20 @@
 
         final String documentId = getDocumentId(standardURL);
         final String hfTitle = getHfURLTitle(documentId);
+
+        if (onlyUniqueHFURL) {
+          Iterator<String> hfUrls = hfURLCache.values().iterator();
+          int occurances = 0;
+          while (hfUrls.hasNext()) {
+            if (hfUrls.next().equals(hfTitle)) {
+              occurances++;
+              if (occurances >= 2) {
+                return standardURL;
+              }
+            }
+          }
+        }
+
         hfURL = standardURL.replaceFirst(docIdURLPrefix + "/" + documentId,
             getHfULRPrefix() + "/" + hfTitle);
         if (log.isDebugEnabled()) {

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/HFURLManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/HFURLManager.java	2009-04-23 09:37:44 UTC (rev 26216)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/HFURLManager.java	2009-04-23 09:38:33 UTC (rev 26217)
@@ -72,14 +72,27 @@
   public List<String> getDocumentID(String hfURLTitle);
 
   /**
+   * Shortcut for getHFURL(standardURL, false)
+   * 
+   * @see #getHFURL(String, boolean)
+   */
+  public String getHFURL(String standardURL);
+
+  /**
    * Get human friendly URL from standard CS URL. If human friendly links are
    * note enabled then standardURL is returned.
+   * <p>
+   * For urls that contain "/delete" or "/restore" then standard URL is
+   * returned.
    * 
    * @param standardURL
    *          i.e. /docs/DOC-1234
+   * @param onlyUniqueHFURL
+   *          if true then HF URL is returned only when there is no duplicate HF
+   *          URLs
    * @return i.e. /wiki/humanFriendlyURL
    */
-  public String getHFURL(String standardURL);
+  public String getHFURL(String standardURL, boolean onlyUniqueHFURL);
 
   /**
    * Get HF URL Title for document ID

Added: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/RedirectToHFURLAction.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/RedirectToHFURLAction.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/RedirectToHFURLAction.java	2009-04-23 09:38:33 UTC (rev 26217)
@@ -0,0 +1,83 @@
+/*
+ * JBoss.org http://jboss.org/
+ *
+ * Copyright (c) 2009  Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Libor Krzyzanek
+ */
+package org.jboss.labs.clearspace.plugin.hfurl.struts;
+
+import org.jboss.labs.clearspace.plugin.hfurl.HFURLManager;
+
+import com.jivesoftware.community.action.JiveActionSupport;
+
+/**
+ * Action redirects to HF URL
+ * 
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ * 
+ */
+public class RedirectToHFURLAction extends JiveActionSupport {
+
+  private String url;
+
+  private HFURLManager hfURLManager;
+
+  public static final String URL_NOT_DEFINED = "urlNotDefined";
+
+  @Override
+  public String execute() {
+    if (url == null || url.trim().equals("")) {
+      url = "/";
+      return URL_NOT_DEFINED;
+    }
+
+    String urlToRedirect = hfURLManager.getHFURL(url, true);
+
+    if (url.equals(urlToRedirect)) {
+      url = addParameter(urlToRedirect, "uniqueTitle=false");
+      return INPUT;
+    } else {
+      url = urlToRedirect;
+      return SUCCESS;
+    }
+  }
+
+  protected String addParameter(String url, String parameter) {
+    StringBuilder sb = new StringBuilder(url);
+    if (url.indexOf('?') == -1) {
+      sb.append('?');
+    } else {
+      sb.append('&');
+    }
+    sb.append(parameter);
+    return sb.toString();
+  }
+
+  public void setUrl(String url) {
+    this.url = url;
+  }
+
+  public String getUrl() {
+    return url;
+  }
+
+  public void setHfURLManager(HFURLManager hfURLManager) {
+    this.hfURLManager = hfURLManager;
+  }
+
+}


Property changes on: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/RedirectToHFURLAction.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/resources/struts.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/resources/struts.xml	2009-04-23 09:37:44 UTC (rev 26216)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/main/resources/struts.xml	2009-04-23 09:38:33 UTC (rev 26217)
@@ -21,13 +21,29 @@
       </result>
     </action>
 
+    <action name="redirectToHFURL"
+      class="org.jboss.labs.clearspace.plugin.hfurl.struts.RedirectToHFURLAction">
+      <result name="success" type="httpheader">
+        <param name="status">301</param>
+        <param name="headers.Location">${url}</param>
+        <param name="parse">true</param>
+      </result>
+      <result name="input" type="httpheader">
+        <param name="status">302</param>
+        <param name="headers.Location">${url}</param>
+        <param name="parse">true</param>
+      </result>
+      <result name="urlNotDefined" type="redirect">/</result>
+    </action>
+
   </package>
 
   <package name="hfurl-actions-admin" namespace="/admin"
     extends="community-admin-default">
 
     <action name="human-friendly-urls-view"
-      class="org.jboss.labs.clearspace.plugin.hfurl.struts.AdminHfURLAction" method="input">
+      class="org.jboss.labs.clearspace.plugin.hfurl.struts.AdminHfURLAction"
+      method="input">
       <result name="input" type="freemarker">
         /plugins/human-friendly-urls/admin/human-friendly-urls.ftl
       </result>
@@ -44,7 +60,8 @@
     </action>
 
     <action name="human-friendly-urls-enable"
-      class="org.jboss.labs.clearspace.plugin.hfurl.struts.AdminHfURLAction" method="enable">
+      class="org.jboss.labs.clearspace.plugin.hfurl.struts.AdminHfURLAction"
+      method="enable">
       <result name="input" type="freemarker">
         /plugins/human-friendly-urls/admin/human-friendly-urls.ftl
       </result>
@@ -52,9 +69,10 @@
         /plugins/human-friendly-urls/admin/human-friendly-urls.ftl
       </result>
     </action>
-    
+
     <action name="human-friendly-urls-disable"
-      class="org.jboss.labs.clearspace.plugin.hfurl.struts.AdminHfURLAction" method="disable">
+      class="org.jboss.labs.clearspace.plugin.hfurl.struts.AdminHfURLAction"
+      method="disable">
       <result name="input" type="freemarker">
         /plugins/human-friendly-urls/admin/human-friendly-urls.ftl
       </result>

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManagerTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManagerTest.java	2009-04-23 09:37:44 UTC (rev 26216)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManagerTest.java	2009-04-23 09:38:33 UTC (rev 26217)
@@ -59,7 +59,11 @@
     hfURLCache.put("DOC-1234", "documentwithfriendlyurl");
     hfURLCache.put("DOC-2345", "documentwithfriendlyurl2");
 
+    hfURLCache.put("DOC-3456", "duplicatehfurl");
+    hfURLCache.put("DOC-5678", "duplicatehfurl");
+
     hfURLManager.setHfURLCache(hfURLCache);
+
     hfURLManager.setHfURLDAO(new DummyHFURLDAO());
   }
 
@@ -159,12 +163,15 @@
         .getHFURL("/docs/DOC-1234/edit"));
     assertEquals("/wiki/documentwithfriendlyurl?decorator=print", hfURLManager
         .getHFURL("/docs/DOC-1234?decorator=print"));
-    
+
     assertEquals("/docs/DOC-1234/delete", hfURLManager
         .getHFURL("/docs/DOC-1234/delete"));
     assertEquals("/docs/DOC-1234/restore", hfURLManager
         .getHFURL("/docs/DOC-1234/restore"));
-    
+
+    assertEquals("/docs/DOC-3456", hfURLManager
+        .getHFURL("/docs/DOC-3456", true));
+
   }
 
   @Test

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMappingTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMappingTest.java	2009-04-23 09:37:44 UTC (rev 26216)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/trunk/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMappingTest.java	2009-04-23 09:38:33 UTC (rev 26217)
@@ -54,6 +54,10 @@
         return null;
       }
       
+      public String getHFURL(String standardURL, boolean onlyUniqueHFURL) {
+        return null;
+      }
+      
       public boolean isHFLinksEnabled() {
         return false;
       }




More information about the jboss-svn-commits mailing list