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