[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