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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Mar 12 12:01:16 EDT 2009


Author: lkrzyzanek
Date: 2009-03-12 12:01:16 -0400 (Thu, 12 Mar 2009)
New Revision: 25621

Added:
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/NavigationAction.java
Modified:
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMapping.java
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/resources/struts.xml
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/web/navigation.ftl
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMappingTest.java
Log:
added navigation of more then one matching documents

Added: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/NavigationAction.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/NavigationAction.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/NavigationAction.java	2009-03-12 16:01:16 UTC (rev 25621)
@@ -0,0 +1,110 @@
+/*
+ * 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 java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.jboss.labs.clearspace.plugin.hfurl.struts.mapping.HFURLMapping;
+
+import com.jivesoftware.community.Community;
+import com.jivesoftware.community.CommunityManager;
+import com.jivesoftware.community.CommunityNotFoundException;
+import com.jivesoftware.community.Document;
+import com.jivesoftware.community.DocumentAlreadyExistsException;
+import com.jivesoftware.community.DocumentManager;
+import com.jivesoftware.community.DocumentObjectNotFoundException;
+import com.jivesoftware.community.action.JiveActionSupport;
+
+/**
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ * 
+ */
+public class NavigationAction extends JiveActionSupport {
+
+  private static final Logger log = LogManager.getLogger(HFURLMapping.class);
+
+  List<String> docIds;
+
+  List<Document> documents = new ArrayList<Document>();
+
+  protected DocumentManager documentManager;
+
+  private CommunityManager communityManager;
+
+  @Override
+  public String execute() {
+    log.debug(docIds);
+
+    for (String docId : docIds) {
+      try {
+        Document doc = documentManager.getDocument(docId);
+
+        String wholeTitle = doc.getSubject();
+
+        Community currentCommunity = communityManager.getCommunity(doc
+            .getContainerID());
+
+        wholeTitle = currentCommunity.getDisplayName() + ">" + wholeTitle;
+
+        documents.add(doc);
+      } catch (DocumentObjectNotFoundException e) {
+        log.error("Document not found for HF URL", e);
+        // TODO Probably we can remove record from HF URL Map
+      } catch (CommunityNotFoundException e) {
+
+      }
+      // TODO Catch and handle UnauthorizedException
+
+    }
+    log.debug(documents);
+
+    return SUCCESS;
+  }
+
+  public List<String> getDocIds() {
+    return docIds;
+  }
+
+  public void setDocIds(List<String> docIds) {
+    this.docIds = docIds;
+  }
+
+  public List<Document> getDocuments() {
+    return documents;
+  }
+
+  public void setDocuments(List<Document> documents) {
+    this.documents = documents;
+  }
+
+  public void setDocumentManager(DocumentManager documentManager) {
+    this.documentManager = documentManager;
+  }
+
+  public void setCommunityManager(CommunityManager communityManager) {
+    this.communityManager = communityManager;
+  }
+
+}


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

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMapping.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMapping.java	2009-03-12 16:00:13 UTC (rev 25620)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMapping.java	2009-03-12 16:01:16 UTC (rev 25621)
@@ -21,7 +21,9 @@
  */
 package org.jboss.labs.clearspace.plugin.hfurl.struts.mapping;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
@@ -48,7 +50,12 @@
   private HFURLManager hfURLManager;
 
   public void process(String uri, ActionMapping mapping) {
-    uri = convertHFURL2StandardURL(uri);
+    Map<String, String> params = mapping.getParams();
+    if (null == params) {
+      params = new HashMap<String, String>();
+    }
+    uri = convertHFURL2StandardURL(uri, params);
+    mapping.setParams(params);
     if (DOC_NOT_FOUND.equals(uri)) {
       mapping.setName("wikiNotFound");
       mapping.setNamespace("/hfurl");
@@ -64,10 +71,13 @@
    * Converts HF URL to standard CS URL
    * 
    * @param uri
+   * @param params
+   *          action params
    * @return /docs/DOC-XXXX or value of {@link #DOC_NOT_FOUND} or
    *         {@link #DOC_MORE_THAN_ONE}
    */
-  protected String convertHFURL2StandardURL(String uri) {
+  protected String convertHFURL2StandardURL(String uri,
+      Map<String, String> params) {
     String[] uriElements = uri.split("/");
     if (uriElements.length > 2) {
       // in this case try to switch from HF URL to standard CS URL
@@ -97,7 +107,11 @@
         } else {
           if (log.isDebugEnabled()) {
             log.debug("More than one page is founded for title: " + hfURLTitle);
+            log.debug("docIds: " + documentIDs);
           }
+          for (int i = 0; i < documentIDs.size(); i++) {
+            params.put("docIds[" + i + "]", documentIDs.get(i));
+          }
           uri = DOC_MORE_THAN_ONE;
         }
       }

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/resources/struts.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/resources/struts.xml	2009-03-12 16:00:13 UTC (rev 25620)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/resources/struts.xml	2009-03-12 16:01:16 UTC (rev 25621)
@@ -8,7 +8,7 @@
       to HF URL then show this page
     -->
     <action name="wikiNavigation"
-      class="com.jivesoftware.community.action.JiveActionSupport">
+      class="org.jboss.labs.clearspace.plugin.hfurl.struts.NavigationAction">
       <result name="success">/plugins/human-friendly-urls/navigation.ftl
       </result>
     </action>

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/web/navigation.ftl
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/web/navigation.ftl	2009-03-12 16:00:13 UTC (rev 25620)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/web/navigation.ftl	2009-03-12 16:01:16 UTC (rev 25621)
@@ -8,5 +8,12 @@
 <body>
     <h1>${title}</h1>
     <p><@s.text name="plugin.hfurl.navigation.description" /></p>
+    <ul>
+    <#list documents as doc>
+      <li>
+        <a href="<@s.url value='/docs/${doc.documentID}' includeParams='none'/>">${doc.jiveContainer.name} - ${doc.subject}</a>
+      </li>
+    </#list>
+    </ul>
 </body>
 </html>
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMappingTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMappingTest.java	2009-03-12 16:00:13 UTC (rev 25620)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMappingTest.java	2009-03-12 16:01:16 UTC (rev 25621)
@@ -21,10 +21,13 @@
  */
 package org.jboss.labs.clearspace.plugin.hfurl.struts.mapping;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
 
-import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
 
 import org.jboss.labs.clearspace.plugin.hfurl.HFURLManager;
 import org.junit.Before;
@@ -40,6 +43,9 @@
 
   private HFURLMapping actionMapping;
 
+  private final String DOC1 = "DOC-1234";
+  private final String DOC2 = "DOC-2345";
+
   @Before
   public void setupHFURLMapping() {
     actionMapping = new HFURLMapping();
@@ -50,13 +56,13 @@
       }
 
       public List<String> getDocumentID(String hfURLTitle) {
-        List<String> docIds = new ArrayList<String>();
+        List<String> docIds = new LinkedList<String>();
         if (hfURLTitle.equals("nonExisting")) {
         } else if (hfURLTitle.equals("duplicate")) {
-          docIds.add("DOC-1234");
-          docIds.add("DOC-2345");
+          docIds.add(DOC1);
+          docIds.add(DOC2);
         } else {
-          docIds.add("DOC-1234");
+          docIds.add(DOC1);
         }
         return docIds;
       }
@@ -71,39 +77,44 @@
    */
   @Test
   public void testConvertHFURL2StandardURL() {
-    assertEquals("/docs/DOC-1234", actionMapping
-        .convertHFURL2StandardURL("/doc/JDKs"));
-    assertEquals("/docs/DOC-1234.pdf", actionMapping
-        .convertHFURL2StandardURL("/doc/JDKs.pdf"));
+    Map<String, String> params = new HashMap<String, String>();
 
+    assertEquals("/docs/DOC-1234", actionMapping.convertHFURL2StandardURL(
+        "/doc/JDKs", params));
+    assertEquals("/docs/DOC-1234.pdf", actionMapping.convertHFURL2StandardURL(
+        "/doc/JDKs.pdf", params));
+
     assertEquals("/docs/DOC-1234/collaborate", actionMapping
-        .convertHFURL2StandardURL("/doc/JDKs/collaborate"));
-    assertEquals("/docs/DOC-1234/edit", actionMapping
-        .convertHFURL2StandardURL("/doc/JDKs/edit"));
+        .convertHFURL2StandardURL("/doc/JDKs/collaborate", params));
+    assertEquals("/docs/DOC-1234/edit", actionMapping.convertHFURL2StandardURL(
+        "/doc/JDKs/edit", params));
     assertEquals("/docs/DOC-1234/upload", actionMapping
-        .convertHFURL2StandardURL("/doc/JDKs/upload"));
-    assertEquals("/docs/DOC-1234/diff", actionMapping
-        .convertHFURL2StandardURL("/doc/JDKs/diff"));
+        .convertHFURL2StandardURL("/doc/JDKs/upload", params));
+    assertEquals("/docs/DOC-1234/diff", actionMapping.convertHFURL2StandardURL(
+        "/doc/JDKs/diff", params));
     assertEquals("/docs/DOC-1234/restore", actionMapping
-        .convertHFURL2StandardURL("/doc/JDKs/restore"));
+        .convertHFURL2StandardURL("/doc/JDKs/restore", params));
     assertEquals("/docs/DOC-1234/deleteVersion", actionMapping
-        .convertHFURL2StandardURL("/doc/JDKs/deleteVersion"));
+        .convertHFURL2StandardURL("/doc/JDKs/deleteVersion", params));
     assertEquals("/docs/DOC-1234/authors", actionMapping
-        .convertHFURL2StandardURL("/doc/JDKs/authors"));
+        .convertHFURL2StandardURL("/doc/JDKs/authors", params));
     assertEquals("/docs/DOC-1234/version", actionMapping
-        .convertHFURL2StandardURL("/doc/JDKs/version"));
+        .convertHFURL2StandardURL("/doc/JDKs/version", params));
     assertEquals("/docs/DOC-1234/version/5", actionMapping
-        .convertHFURL2StandardURL("/doc/JDKs/version/5"));
+        .convertHFURL2StandardURL("/doc/JDKs/version/5", params));
     assertEquals("/docs/DOC-1234/diff/", actionMapping
-        .convertHFURL2StandardURL("/doc/JDKs/diff/"));
+        .convertHFURL2StandardURL("/doc/JDKs/diff/", params));
     assertEquals("/docs/DOC-1234/delete", actionMapping
-        .convertHFURL2StandardURL("/doc/JDKs/delete"));
+        .convertHFURL2StandardURL("/doc/JDKs/delete", params));
 
     assertEquals(HFURLMapping.DOC_NOT_FOUND, actionMapping
-        .convertHFURL2StandardURL("/doc/nonExisting"));
+        .convertHFURL2StandardURL("/doc/nonExisting", params));
+
+    Map<String, String> duplicateParams = new HashMap<String, String>();
     assertEquals(HFURLMapping.DOC_MORE_THAN_ONE, actionMapping
-        .convertHFURL2StandardURL("/doc/duplicate"));
-
+        .convertHFURL2StandardURL("/doc/duplicate", duplicateParams));
+    assertEquals(DOC1, duplicateParams.get("docIds[0]"));
+    assertEquals(DOC2, duplicateParams.get("docIds[1]"));
   }
 
 }




More information about the jboss-svn-commits mailing list