r939 - in xwiki/trunk/src: main/java/com/xpn/xwiki main/java/com/xpn/xwiki/store main/java/com/xpn/xwiki/user/impl/xwiki main/java/com/xpn/xwiki/web main/web/WEB-INF main/web/templates test/cactus/com/xpn/xwiki/test test/resources

Phung Hai Nam namphunghai at users.forge.objectweb.org
Mon Feb 27 04:03:14 CET 2006


Author: namphunghai
Date: 2006-02-27 04:03:03 +0100 (Mon, 27 Feb 2006)
New Revision: 939

Added:
   xwiki/trunk/src/main/java/com/xpn/xwiki/web/ViewrevAction.java
Modified:
   xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/XWikiException.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/user/impl/xwiki/XWikiRightServiceImpl.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/web/ViewAction.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/web/XWikiPortlet.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/web/XWikiPortletURLFactory.java
   xwiki/trunk/src/main/web/WEB-INF/struts-config.xml
   xwiki/trunk/src/main/web/templates/history.vm
   xwiki/trunk/src/main/web/templates/viewheader.vm
   xwiki/trunk/src/test/cactus/com/xpn/xwiki/test/ViewEditTest.java
   xwiki/trunk/src/test/resources/VM_global_library.vm
Log:
New view revision action fix for task #XWIKI-18

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java	2006-02-25 10:57:42 UTC (rev 938)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java	2006-02-27 03:03:03 UTC (rev 939)
@@ -662,8 +662,9 @@
         } catch (XWikiException e) {
             if (revision.equals("1.1") || revision.equals("1.0"))
                 newdoc = new XWikiDocument(doc.getWeb(), doc.getName());
-            else
-                throw e;
+            else {
+                throw e;                
+            }
         }
         return newdoc;
     }

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/XWikiException.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/XWikiException.java	2006-02-25 10:57:42 UTC (rev 938)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/XWikiException.java	2006-02-27 03:03:03 UTC (rev 939)
@@ -105,6 +105,7 @@
     public static final int ERROR_XWIKI_STORE_HIBERNATE_CANNOT_DELETE_UNLOADED_DOC = 3204;
     public static final int ERROR_XWIKI_STORE_HIBERNATE_READING_REVISIONS = 3203;
     public static final int ERROR_XWIKI_STORE_HIBERNATE_READING_VERSION = 3204;
+    public static final int ERROR_XWIKI_STORE_HIBERNATE_UNEXISTANT_VERSION = 3205;
     public static final int ERROR_XWIKI_STORE_HIBERNATE_SAVING_OBJECT = 3211;
     public static final int ERROR_XWIKI_STORE_HIBERNATE_LOADING_OBJECT = 3212;
     public static final int ERROR_XWIKI_STORE_HIBERNATE_DELETING_OBJECT = 3213;

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java	2006-02-25 10:57:42 UTC (rev 938)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java	2006-02-27 03:03:03 UTC (rev 939)
@@ -1007,7 +1007,17 @@
                 archive = basedoc.getRCSArchive();
             }
 
-            Version v = archive.getRevisionVersion(version);
+            Version v = null;
+            try {
+              v = archive.getRevisionVersion(version);
+            } catch (Exception e) {}
+
+            if (v==null) {
+                Object[] args = { doc.getFullName(), version.toString() };
+                throw new XWikiException( XWikiException.MODULE_XWIKI_STORE, XWikiException.ERROR_XWIKI_STORE_HIBERNATE_UNEXISTANT_VERSION,
+                        "Version {1} does not exist while reading document {0}", null,args);                
+            }
+
             if (!version.equals(v.toString())) {
                 doc.setVersion(version);
                 return doc;
@@ -1037,6 +1047,8 @@
             // as the new document (in case there was a name change
             doc.setName(basedoc.getName());
             doc.setWeb(basedoc.getWeb());
+        } catch (XWikiException e) {
+            throw e;
         } catch (Exception e) {
             Object[] args = { doc.getFullName(), version.toString() };
             throw new XWikiException( XWikiException.MODULE_XWIKI_STORE, XWikiException.ERROR_XWIKI_STORE_HIBERNATE_READING_VERSION,

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/user/impl/xwiki/XWikiRightServiceImpl.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/user/impl/xwiki/XWikiRightServiceImpl.java	2006-02-25 10:57:42 UTC (rev 938)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/user/impl/xwiki/XWikiRightServiceImpl.java	2006-02-27 03:03:03 UTC (rev 939)
@@ -70,6 +70,7 @@
             actionMap.put("logout", "login");
             actionMap.put("loginerror", "login");
             actionMap.put("view", "view");
+            actionMap.put("viewrev", "view");
             actionMap.put("plain", "view");
             actionMap.put("raw", "view");
             actionMap.put("attach", "view");

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/web/ViewAction.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/web/ViewAction.java	2006-02-25 10:57:42 UTC (rev 938)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/web/ViewAction.java	2006-02-27 03:03:03 UTC (rev 939)
@@ -4,15 +4,25 @@
 import com.xpn.xwiki.XWikiException;
 import com.xpn.xwiki.doc.XWikiDocument;
 
+import java.io.IOException;
+
 public class ViewAction extends XWikiAction {
-	public String render(XWikiContext context) throws XWikiException {
-        handleRevision(context);
-        XWikiDocument doc = (XWikiDocument) context.get("doc");
-        String defaultTemplate = doc.getDefaultTemplate();
-        if ((defaultTemplate !=null) && (!defaultTemplate.equals(""))) {
-        	return defaultTemplate;
+    public boolean action(XWikiContext context) throws XWikiException {
+        XWikiRequest request = context.getRequest();
+        String rev = request.getParameter("rev");
+        if (rev!=null) {
+            String url = context.getDoc().getURL("viewrev", request.getQueryString(), context);
+            try {
+                context.getResponse().sendRedirect(url);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            return false;
         }
-        else
-        	return "view";
-	}
+        return true;
+    }
+
+    public String render(XWikiContext context) throws XWikiException {
+        return "view";
+    }
 }

Added: xwiki/trunk/src/main/java/com/xpn/xwiki/web/ViewrevAction.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/web/ViewrevAction.java	2006-02-25 10:57:42 UTC (rev 938)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/web/ViewrevAction.java	2006-02-27 03:03:03 UTC (rev 939)
@@ -0,0 +1,18 @@
+package com.xpn.xwiki.web;
+
+import com.xpn.xwiki.XWikiContext;
+import com.xpn.xwiki.XWikiException;
+
+public class ViewrevAction extends XWikiAction {
+	public String render(XWikiContext context) throws XWikiException {
+        try {
+        handleRevision(context);
+        } catch (XWikiException e) {
+           if (e.getCode()==XWikiException.ERROR_XWIKI_STORE_HIBERNATE_UNEXISTANT_VERSION)
+              return "notexist";
+           else
+             throw e;
+        }
+        return "view";
+    }
+}

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/web/XWikiPortlet.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/web/XWikiPortlet.java	2006-02-25 10:57:42 UTC (rev 938)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/web/XWikiPortlet.java	2006-02-27 03:03:03 UTC (rev 939)
@@ -266,6 +266,9 @@
             if (action.equals("view")) {
                 renderResult = (new ViewAction()).render(context);
             }
+            else if ( action.equals("viewrev")) {
+                renderResult = (new ViewrevAction()).render(context);
+            }
             else if ( action.equals("inline")) {
                 renderResult = (new InlineAction()).render(context);
             }

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/web/XWikiPortletURLFactory.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/web/XWikiPortletURLFactory.java	2006-02-25 10:57:42 UTC (rev 938)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/web/XWikiPortletURLFactory.java	2006-02-27 03:03:03 UTC (rev 939)
@@ -57,7 +57,7 @@
             XWikiResponse response = context.getResponse();
             PortletURL purl;
 
-            if (action.equals("view")||action.equals("download")||action.equals("skin")||action.equals("dot"))
+            if (action.equals("view")||action.equals("viewrev")||action.equals("download")||action.equals("skin")||action.equals("dot"))
                 purl = response.createRenderURL();
 
             if (action.equals("save")||action.equals("cancel")||action.equals("delete")||action.equals("propupdate")

Modified: xwiki/trunk/src/main/web/WEB-INF/struts-config.xml
===================================================================
--- xwiki/trunk/src/main/web/WEB-INF/struts-config.xml	2006-02-25 10:57:42 UTC (rev 938)
+++ xwiki/trunk/src/main/web/WEB-INF/struts-config.xml	2006-02-27 03:03:03 UTC (rev 939)
@@ -78,8 +78,18 @@
             name="view"
             scope="request">
         <forward name="view" path="/templates/view.vm"/>
+        <forward name="notexist" path="/templates/notexist.vm"/>
         <forward name="plain" path="/templates/plain.vm"/>
     </action>
+    <!---Add by me-->
+    <action path="/viewrev/"
+            type ="com.xpn.xwiki.web.ViewrevAction"
+            name="viewrev"
+            scope="request">
+        <forward name="notexist" path="/templates/notexist.vm"></forward>
+        <forward name="view" path="/templates/view.vm"></forward>
+    </action>
+
     <action path="/pdf/"
             type="com.xpn.xwiki.web.PDFAction"
             name="pdf"

Modified: xwiki/trunk/src/main/web/templates/history.vm
===================================================================
--- xwiki/trunk/src/main/web/templates/history.vm	2006-02-25 10:57:42 UTC (rev 938)
+++ xwiki/trunk/src/main/web/templates/history.vm	2006-02-27 03:03:03 UTC (rev 939)
@@ -21,7 +21,7 @@
 #set($nextversion = $version)
 #set($newdoc = $xwiki.getDocument($tdoc, $nextversion))
 <li>
-$msg.get("version") <a href="" onclick="location='$tdoc.getURL("view","rev=$nextversion")'; return false;">$nextversion</a> (<a href="" onclick="if (confirm('$msg.get("readytorollback") $nextversion')) location='$tdoc.getURL("rollback","rev=$nextversion$lang")'; return false;">$msg.get("rollback")</a>)
+$msg.get("version") <a href="" onclick="location='$tdoc.getURL("viewrev","rev=$nextversion")'; return false;">$nextversion</a> (<a href="" onclick="if (confirm('$msg.get("readytorollback") $nextversion')) location='$tdoc.getURL("rollback","rev=$nextversion$lang")'; return false;">$msg.get("rollback")</a>)
 <input type="radio" name="rev2" value="$nextversion" />
 <input type="radio" name="rev1" value="$nextversion" />
 #if($newdoc=="")

Modified: xwiki/trunk/src/main/web/templates/viewheader.vm
===================================================================
--- xwiki/trunk/src/main/web/templates/viewheader.vm	2006-02-25 10:57:42 UTC (rev 938)
+++ xwiki/trunk/src/main/web/templates/viewheader.vm	2006-02-27 03:03:03 UTC (rev 939)
@@ -80,7 +80,11 @@
       <div id="xwikimoreactionsitems">
 ## View section
         <div class="xwikimenutitle">$msg.get("view")</div>
-        #xwikiitem($doc.getURL("view","xpage=code&$!{revparams}") "raw")
+        #if($context.action=="viewrev")
+          #xwikiitem($doc.getURL("view","xpage=code&$!{revparams}") "raw")
+        #else
+          #xwikiitem($doc.getURL("viewrev","xpage=code&$!{revparams}") "raw")
+        #end
         #xwikiitem($doc.getExternalURL("view","xpage=xml&$!{revparams}") "xml")
 ## Edit section
         #if($hasedit)

Modified: xwiki/trunk/src/test/cactus/com/xpn/xwiki/test/ViewEditTest.java
===================================================================
--- xwiki/trunk/src/test/cactus/com/xpn/xwiki/test/ViewEditTest.java	2006-02-25 10:57:42 UTC (rev 938)
+++ xwiki/trunk/src/test/cactus/com/xpn/xwiki/test/ViewEditTest.java	2006-02-27 03:03:03 UTC (rev 939)
@@ -1959,5 +1959,82 @@
         XWikiBatcher.getSQLStats().printSQLList(System.out);
     }
 
+
+
+    public void beginViewRevNotOk(WebRequest webRequest) throws HibernateException, XWikiException {
+        XWikiHibernateStore hibstore = new XWikiHibernateStore(getHibpath());
+        StoreHibernateTest.cleanUp(hibstore, context);
+        clientSetUp(hibstore);
+        String content = Utils.content1;
+        Utils.content1 = "Hello $doc.name\n----\n";
+        Utils.createDoc(xwiki.getStore(), "Main", "ViewRevNotOkTest", context);
+        Utils.content1 = content;
+        XWikiDocument doc2 = xwiki.getDocument("Main.ViewRevNotOkTest", context);
+        xwiki.saveDocument(doc2, context);
+        xwiki.flushCache();
+        doc2.setContent("zzzzzzzzzzzzzzzzzzzzzzzz");
+        xwiki.saveDocument(doc2, context);
+        setUrl(webRequest, "view", "ViewRevNotOkTest", "");
+        webRequest.addParameter("rev", "1.4");
+    }
+
+
+
+    public void endViewRevNotOk(WebResponse webResponse) throws XWikiException, HibernateException {
+
+        try {
+            String result = webResponse.getText();
+
+            assertTrue("Could not find This document does not exist in Content: " + result, result.indexOf("This document does not exist")!=-1);
+            // verify
+          //  WebRequest request =  webResponse.getWebRequest();
+            //setUrl(request,"view","ViewRevOKTest");
+           // request.addParameter("rev","1.423");
+        }catch(Exception e){
+            System.out.println("This document ");
+        }
+        finally {
+            clientTearDown();
+        }
+    }
+
+    public void testViewRevNotOk() throws Throwable {
+        launchTest();
+
+    }
+
+
+    public void beginNewViewRevOk(WebRequest webRequest) throws HibernateException, XWikiException {
+        XWikiHibernateStore hibstore = new XWikiHibernateStore(getHibpath());
+        StoreHibernateTest.cleanUp(hibstore, context);
+        clientSetUp(hibstore);
+        String content = Utils.content1;
+        Utils.content1 = "Hello $doc.name\n----\n";
+        Utils.createDoc(xwiki.getStore(), "Main", "NewViewRevOkTest", context);
+        Utils.content1 = content;
+        XWikiDocument doc2 = xwiki.getDocument("Main.NewViewRevOkTest", context);
+        xwiki.saveDocument(doc2, context);
+        doc2.setContent("zzzzzzzzzzzzzzzzzzzzzzzz");
+        xwiki.saveDocument(doc2, context);
+        setUrl(webRequest, "viewrev", "NewViewRevOkTest", "");
+        webRequest.addParameter("rev", "1.4");
+    }
+
+
+
+    public void endNewViewRevOk(WebResponse webResponse) throws XWikiException, HibernateException {
+        try {
+            String result = webResponse.getText();
+            assertTrue("Could not find This document does not exist in Content: " + result, result.indexOf("This document does not exist")!=-1);
+              } finally {
+           // clientTearDown();
+        }
+    }
+
+    public void testNewViewRevOk() throws Throwable {
+        launchTest();
+    }
+
+
 }
 

Modified: xwiki/trunk/src/test/resources/VM_global_library.vm
===================================================================
--- xwiki/trunk/src/test/resources/VM_global_library.vm	2006-02-25 10:57:42 UTC (rev 938)
+++ xwiki/trunk/src/test/resources/VM_global_library.vm	2006-02-27 03:03:03 UTC (rev 939)
@@ -22,7 +22,7 @@
 
 #macro( versions )
 #foreach( $rev in $tdoc.getRecentRevisions(4) )
-<a href="$doc.getURL("view", "rev=$rev")">$rev</a><span class="xwikisep"> | </span>
+<a href="$doc.getURL("viewrev", "rev=$rev")">$rev</a><span class="xwikisep"> | </span>
 #end
 #if ($tdoc.realLanguage!="")
 <a href="$doc.getURL("view", "xpage=diff&language=${tdoc.realLanguage}")">$msg.get("diff")</a><span class="xwikisep"> | </span>





More information about the Xwiki-notifications mailing list