r1327 - in xwiki/trunk/src/main: java/com/xpn/xwiki/api java/com/xpn/xwiki/doc java/com/xpn/xwiki/plugin/query java/com/xpn/xwiki/store/jcr xwiki/jcrdb/Blog xwiki/jcrdb/Main xwiki/jcrdb/XWiki

Artem Melentev amelentev at users.forge.objectweb.org
Tue Sep 19 00:38:40 CEST 2006


Author: amelentev
Date: 2006-09-19 00:38:38 +0200 (Tue, 19 Sep 2006)
New Revision: 1327

Modified:
   xwiki/trunk/src/main/java/com/xpn/xwiki/api/XWiki.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/QueryPlugin.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/store/jcr/JackRabbitJCRProvider.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/store/jcr/XWikiJcrStore.java
   xwiki/trunk/src/main/xwiki/jcrdb/Blog/Macros
   xwiki/trunk/src/main/xwiki/jcrdb/Main/WhatIsAWiki
   xwiki/trunk/src/main/xwiki/jcrdb/XWiki/ArticleClass
   xwiki/trunk/src/main/xwiki/jcrdb/XWiki/PresentationClassS5Sheet
   xwiki/trunk/src/main/xwiki/jcrdb/XWiki/PresentationClassTemplate
   xwiki/trunk/src/main/xwiki/jcrdb/XWiki/SlideClass
Log:
Fixed bug http://jira.xwiki.org/jira/browse/XWIKI-334 (method #3) :
Added preffix 'xp:' (Xwiki Property) to node names of xwiki:property
was: /web/doc/obj/web/name/prop/@value
now: /web/doc/obj/web/name/xp:prop/@value
Fixed jcr database (jcrdb). Presentations is working now.


Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/api/XWiki.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/api/XWiki.java	2006-09-18 08:52:27 UTC (rev 1326)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/api/XWiki.java	2006-09-18 22:38:38 UTC (rev 1327)
@@ -1345,6 +1345,9 @@
     public Map getHashMap() {
         return new HashMap();
     }
+    public Map getTreeMap() {
+    	return new TreeMap();
+    }
 
     /**
      * API to sort a list over standard comparator.
@@ -1357,6 +1360,13 @@
         Collections.sort(list);
         return list;
     }
+    public Number toNumber(Object o) {
+    	try {
+    		return new Long(o.toString());
+    	} catch (Exception e) {
+    		return null;
+    	}
+    }
 
     /**
      * API to Outpout an BufferedImage object into the response outputstream

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java	2006-09-18 08:52:27 UTC (rev 1326)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java	2006-09-18 22:38:38 UTC (rev 1327)
@@ -1624,6 +1624,7 @@
         setParent(getElement(docel, "parent"));
         setCreator(getElement(docel, "creator"));
         setAuthor(getElement(docel, "author"));
+        setContentAuthor(getElement(docel, "contentAuthor"));
         setVersion(getElement(docel, "version"));
         setContent(getElement(docel, "content"));
         setLanguage(getElement(docel, "language"));

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/QueryPlugin.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/QueryPlugin.java	2006-09-18 08:52:27 UTC (rev 1326)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/plugin/query/QueryPlugin.java	2006-09-18 22:38:38 UTC (rev 1327)
@@ -185,8 +185,7 @@
             boolean descending = (c == '-');
             if (c=='-' || c=='+')
                 prop = prop.substring(1);
-            c = prop.charAt(0);
-            if (c!='@')
+            if (prop.indexOf("@")<0)
                 res.append("@");
             res.append(prop);
             if (descending)
@@ -209,7 +208,7 @@
         for (int i=0; i<props.length; i++) {
             final String p = props[i];
             sb.append(comma);
-            if (p.charAt(0)!='@')
+            if (p.indexOf("@")<0)
                 sb.append("@");
             sb.append(p);
             comma = ",";

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/store/jcr/JackRabbitJCRProvider.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/store/jcr/JackRabbitJCRProvider.java	2006-09-18 08:52:27 UTC (rev 1326)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/store/jcr/JackRabbitJCRProvider.java	2006-09-18 22:38:38 UTC (rev 1327)
@@ -44,6 +44,7 @@
 import org.apache.portals.graffito.jcr.query.impl.QueryManagerImpl;
 
 import javax.jcr.*;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -112,22 +113,15 @@
 		//TODO: namespace and nodetypes in one compact node def.
 		XWikiJcrSession s = getSession(workspace);
 		try {
-			try { 
-				s.getWorkspace().getNamespaceRegistry().registerNamespace("xwiki", "http://www.xwiki.org");
-				log.info("namespace 'xwiki' registered!");
-			} catch (NamespaceException e) {}; 
-			try { 
-				s.getWorkspace().getNamespaceRegistry().registerNamespace("graffito", "http://incubator.apache.org/graffito");
-				log.info("namespace 'graffito' registered!");
-			} catch (NamespaceException e) {};
+			registerNamespace(s.getWorkspace(), "xwiki", "http://www.xwiki.org");
+			registerNamespace(s.getWorkspace(), "xp", "http://www.xwiki.org/property");
+			registerNamespace(s.getWorkspace(), "graffito", "http://incubator.apache.org/graffito");
 			registerNodeTypes(s.getWorkspace(), getRealConfigPath("xwiki.store.jcr.jackrabbit.nodetypes.config", "jackrabbit/nodetypes.cnd"));
 			s.save();
-		}
-		catch (RepositoryException e) {
+		} catch (RepositoryException e) {
 			log.info("Node types not registered", e);
 			return false;
-		}
-		finally {
+		} finally {
 			s.logout();
 		}
 		return true;
@@ -144,6 +138,15 @@
 		});
 		ntm.registerNodeTypes(fis, NodeTypeManagerImpl.TEXT_X_JCR_CND);
 	}
+	private boolean registerNamespace(Workspace w, String preffix, String uri) throws UnsupportedRepositoryOperationException, AccessDeniedException, RepositoryException {
+		try {
+			w.getNamespaceRegistry().registerNamespace(preffix, uri);
+			log.info("namespace '"+preffix+"' registered!");
+		} catch (NamespaceException e) {
+			return false;
+		};
+		return true;
+	}
 
 	public void shutdown() {
 		// not needed becouse TransientRepository 

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/store/jcr/XWikiJcrStore.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/store/jcr/XWikiJcrStore.java	2006-09-18 08:52:27 UTC (rev 1326)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/store/jcr/XWikiJcrStore.java	2006-09-18 22:38:38 UTC (rev 1327)
@@ -266,12 +266,16 @@
 	}
 	
 	private void saveXWikiProperty(XWikiJcrSession ses, Node objnode, BaseProperty prop) throws ItemExistsException, PathNotFoundException, VersionException, ConstraintViolationException, LockException, RepositoryException {
-		Node propNode = ses.insertObject(objnode, prop.getName(), prop);
+		Node propNode = ses.insertObject(objnode, "xp:"+prop.getName(), prop);
 		propNode.setProperty("obj", objnode);
 	}
 	private BaseProperty loadXWikiProperty(XWikiJcrSession ses, Node nprop) throws RepositoryException {
 		BaseProperty prop = (BaseProperty) ses.loadObject(nprop.getPath());
-		prop.setName( decode( nprop.getName() ) );
+		final String sname = nprop.getName();
+		int ip = sname.indexOf(":");
+		if (ip<0)
+			return null;
+		prop.setName( decode( sname.substring(ip+1) ) );
 		return prop;
 	}
 	
@@ -662,7 +666,7 @@
 			executeRead(context, new JcrCallBack(){
 				public Object doInJcr(XWikiJcrSession session) throws Exception {
 					// XXX: if username contains "'" ?
-					String xpath = "store/*/*/obj/XWiki/XWikiGroups/member[@value='"+username+"' or @value='"+shortname+"']";
+					String xpath = "store/*/*/obj/XWiki/XWikiGroups/xp:member[@value='"+username+"' or @value='"+shortname+"']";
 					Query query = session.getQueryManager().createQuery(xpath, Query.XPATH);
 					NodeIterator ni = query.execute().getNodes();
 					while (ni.hasNext()) {

Modified: xwiki/trunk/src/main/xwiki/jcrdb/Blog/Macros
===================================================================
--- xwiki/trunk/src/main/xwiki/jcrdb/Blog/Macros	2006-09-18 08:52:27 UTC (rev 1326)
+++ xwiki/trunk/src/main/xwiki/jcrdb/Blog/Macros	2006-09-18 22:38:38 UTC (rev 1327)
@@ -20,7 +20,7 @@
 #if($category=='')
 #set ($xpath = "*/*[@fullName!='XWiki.ArticleClassTemplate']/obj/XWiki/ArticleClass/jcr:deref(@doc, '*')")
 #else
-#set ($xpath = "*/*[@fullName!='XWiki.ArticleClassTemplate']/obj/XWiki/ArticleClass/category[@value='${category}']/jcr:deref(@obj, '*')/jcr:deref(@doc, '*')")
+#set ($xpath = "*/*[@fullName!='XWiki.ArticleClassTemplate']/obj/XWiki/ArticleClass/xp:category[@value='${category}']/jcr:deref(@obj, '*')/jcr:deref(@doc, '*')")
 #end
 #set($cdate = "")
 #set($inbitems = $xwiki.parseInt($nbitems))

Modified: xwiki/trunk/src/main/xwiki/jcrdb/Main/WhatIsAWiki
===================================================================
--- xwiki/trunk/src/main/xwiki/jcrdb/Main/WhatIsAWiki	2006-09-18 08:52:27 UTC (rev 1326)
+++ xwiki/trunk/src/main/xwiki/jcrdb/Main/WhatIsAWiki	2006-09-18 22:38:38 UTC (rev 1327)
@@ -84,15 +84,15 @@
 <number>1</number>
 <classType>com.xpn.xwiki.objects.classes.StringClass</classType>
 </title>
-<snumber>
-<name>snumber</name>
+<number>
+<name>number</name>
 <prettyName>number</prettyName>
 <unmodifiable>0</unmodifiable>
 <size>30</size>
 <numberType>integer</numberType>
 <number>2</number>
 <classType>com.xpn.xwiki.objects.classes.NumberClass</classType>
-</snumber>
+</number>
 <content>
 <name>content</name>
 <prettyName>content</prettyName>
@@ -146,15 +146,15 @@
 <number>1</number>
 <classType>com.xpn.xwiki.objects.classes.StringClass</classType>
 </title>
-<snumber>
-<name>snumber</name>
+<number>
+<name>number</name>
 <prettyName>number</prettyName>
 <unmodifiable>0</unmodifiable>
 <size>30</size>
 <numberType>integer</numberType>
 <number>2</number>
 <classType>com.xpn.xwiki.objects.classes.NumberClass</classType>
-</snumber>
+</number>
 <content>
 <name>content</name>
 <prettyName>content</prettyName>
@@ -217,15 +217,15 @@
 <number>1</number>
 <classType>com.xpn.xwiki.objects.classes.StringClass</classType>
 </title>
-<snumber>
-<name>snumber</name>
+<number>
+<name>number</name>
 <prettyName>number</prettyName>
 <unmodifiable>0</unmodifiable>
 <size>30</size>
 <numberType>integer</numberType>
 <number>2</number>
 <classType>com.xpn.xwiki.objects.classes.NumberClass</classType>
-</snumber>
+</number>
 <content>
 <name>content</name>
 <prettyName>content</prettyName>
@@ -283,15 +283,15 @@
 <number>1</number>
 <classType>com.xpn.xwiki.objects.classes.StringClass</classType>
 </title>
-<snumber>
-<name>snumber</name>
+<number>
+<name>number</name>
 <prettyName>number</prettyName>
 <unmodifiable>0</unmodifiable>
 <size>30</size>
 <numberType>integer</numberType>
 <number>2</number>
 <classType>com.xpn.xwiki.objects.classes.NumberClass</classType>
-</snumber>
+</number>
 <content>
 <name>content</name>
 <prettyName>content</prettyName>
@@ -352,15 +352,15 @@
 <number>1</number>
 <classType>com.xpn.xwiki.objects.classes.StringClass</classType>
 </title>
-<snumber>
-<name>snumber</name>
+<number>
+<name>number</name>
 <prettyName>number</prettyName>
 <unmodifiable>0</unmodifiable>
 <size>30</size>
 <numberType>integer</numberType>
 <number>2</number>
 <classType>com.xpn.xwiki.objects.classes.NumberClass</classType>
-</snumber>
+</number>
 <content>
 <name>content</name>
 <prettyName>content</prettyName>
@@ -419,15 +419,15 @@
 <number>1</number>
 <classType>com.xpn.xwiki.objects.classes.StringClass</classType>
 </title>
-<snumber>
-<name>snumber</name>
+<number>
+<name>number</name>
 <prettyName>number</prettyName>
 <unmodifiable>0</unmodifiable>
 <size>30</size>
 <numberType>integer</numberType>
 <number>2</number>
 <classType>com.xpn.xwiki.objects.classes.NumberClass</classType>
-</snumber>
+</number>
 <content>
 <name>content</name>
 <prettyName>content</prettyName>

Modified: xwiki/trunk/src/main/xwiki/jcrdb/XWiki/ArticleClass
===================================================================
--- xwiki/trunk/src/main/xwiki/jcrdb/XWiki/ArticleClass	2006-09-18 08:52:27 UTC (rev 1326)
+++ xwiki/trunk/src/main/xwiki/jcrdb/XWiki/ArticleClass	2006-09-18 22:38:38 UTC (rev 1327)
@@ -49,7 +49,7 @@
 <size>5</size>
 <relationalStorage>1</relationalStorage>
 <name>category</name>
-<sql>/*/*/obj/Blog/Categories/name/@value</sql>
+<sql>/*/*/obj/Blog/Categories/xp:name/@value</sql>
 <number>2</number>
 <classType>com.xpn.xwiki.objects.classes.DBListClass</classType>
 </category>

Modified: xwiki/trunk/src/main/xwiki/jcrdb/XWiki/PresentationClassS5Sheet
===================================================================
--- xwiki/trunk/src/main/xwiki/jcrdb/XWiki/PresentationClassS5Sheet	2006-09-18 08:52:27 UTC (rev 1326)
+++ xwiki/trunk/src/main/xwiki/jcrdb/XWiki/PresentationClassS5Sheet	2006-09-18 22:38:38 UTC (rev 1327)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
+<?xml version="1.0" encoding="UTF-8"?>
 
 <xwikidoc>
 <web>XWiki</web>
@@ -10,43 +10,45 @@
 <creator>XWiki.Admin</creator>
 <author>XWiki.Admin</author>
 <contentAuthor></contentAuthor>
-<creationDate>1107690421000</creationDate>
-<date>1107690421000</date>
-<contentUpdateDate>1147857674000</contentUpdateDate>
+<creationDate>1107708421000</creationDate>
+<date>1107708421000</date>
+<contentUpdateDate>1155849666000</contentUpdateDate>
 <version>1.2</version>
 <title></title>
 <template></template>
-<content>#set($presobj = $doc.getObject("XWiki.PresentationClass"))
-&lt;div class="layout"&gt;
-&lt;div id="currentSlide"&gt;&lt;/div&gt;
-&lt;div id="header"&gt;$!doc.display("header", "rendered", $presobj)&lt;/div&gt;
-&lt;div id="logo"&gt;$!doc.display("logo", "rendered", $presobj)&lt;/div&gt;
-&lt;div id="footer"&gt;
-$!doc.display("footer", "rendered", $presobj)
-&lt;a href="$doc.getURL("inline")"&gt;
-&lt;img src="$xwiki.getSkinFile("editPage.gif")" border="0" alt="Edit Presentation" /&gt;
-&lt;/a&gt;
-&lt;div id="controls"&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class="presentation"&gt;
-#macro(slide $slideobj)
-&lt;div class="slide"&gt; 
-&lt;h1&gt;$doc.display("title", $slideobj)&lt;/h1&gt;
-$doc.display("content", "rendered", $slideobj)
-&lt;/div&gt;
-#end
-#set($objdone = $xwiki.hashMap)
-#set ($thesql = "select obj.number from BaseObject as obj, IntegerProperty as prop where obj.id=prop.id.id and prop.id.name='number' and obj.className='XWiki.SlideClass' and obj.name='${doc.fullName}' order by prop.value asc")
-#foreach($slideobjnb in $xwiki.search($thesql))
-#set($slideobj = $doc.getObject("XWiki.SlideClass", $slideobjnb))
-#set($ok = $objdone.put($slideobj.getNumber(),1))
-#slide($slideobj)
-#end
-#foreach($slideobj in $doc.getObjects("XWiki.SlideClass"))
-#if($objdone.get($slideobj.getNumber())!=1)
-#slide($slideobj)
-#end
-#end
+<content>#set($presobj = $doc.getObject("XWiki.PresentationClass"))
+&lt;div class="layout"&gt;
+&lt;div id="currentSlide"&gt;&lt;/div&gt;
+&lt;div id="header"&gt;$!doc.display("header", "rendered", $presobj)&lt;/div&gt;
+&lt;div id="logo"&gt;$!doc.display("logo", "rendered", $presobj)&lt;/div&gt;
+&lt;div id="footer"&gt;
+$!doc.display("footer", "rendered", $presobj)
+&lt;a href="$doc.getURL("inline")"&gt;
+&lt;img src="$xwiki.getSkinFile("editPage.gif")" border="0" alt="Edit Presentation" /&gt;
+&lt;/a&gt;
+&lt;div id="controls"&gt;&lt;/div&gt;
+&lt;/div&gt;
+&lt;/div&gt;
+&lt;div class="presentation"&gt;
+#macro(slide $slideobj)
+&lt;div class="slide"&gt; 
+&lt;h1&gt;$doc.display("title", $slideobj)&lt;/h1&gt;
+$doc.display("content", "rendered", $slideobj)
+&lt;/div&gt;
+#end
+
+#set ($objtree = $xwiki.treeMap)
+#foreach ($o in $doc.getObjects("XWiki.SlideClass"))
+ #set ($n = $xwiki.toNumber($o.get("number")))
+ #if (!$n)
+  #set ($n = "")
+ #end
+ #set ($ok = $objtree.put($n, $o))
+#end
+
+#foreach ($o in $objtree.values())
+ #slide($o)
+#end
+
 &lt;/div&gt;</content>
 </xwikidoc>

Modified: xwiki/trunk/src/main/xwiki/jcrdb/XWiki/PresentationClassTemplate
===================================================================
--- xwiki/trunk/src/main/xwiki/jcrdb/XWiki/PresentationClassTemplate	2006-09-18 08:52:27 UTC (rev 1326)
+++ xwiki/trunk/src/main/xwiki/jcrdb/XWiki/PresentationClassTemplate	2006-09-18 22:38:38 UTC (rev 1327)
@@ -85,15 +85,15 @@
 <number>1</number>
 <classType>com.xpn.xwiki.objects.classes.StringClass</classType>
 </title>
-<snumber>
-<name>snumber</name>
+<number>
+<name>number</name>
 <prettyName>number</prettyName>
 <unmodifiable>0</unmodifiable>
 <size>30</size>
 <numberType>integer</numberType>
 <number>2</number>
 <classType>com.xpn.xwiki.objects.classes.NumberClass</classType>
-</snumber>
+</number>
 <content>
 <name>content</name>
 <prettyName>content</prettyName>

Modified: xwiki/trunk/src/main/xwiki/jcrdb/XWiki/SlideClass
===================================================================
--- xwiki/trunk/src/main/xwiki/jcrdb/XWiki/SlideClass	2006-09-18 08:52:27 UTC (rev 1326)
+++ xwiki/trunk/src/main/xwiki/jcrdb/XWiki/SlideClass	2006-09-18 22:38:38 UTC (rev 1327)
@@ -50,15 +50,15 @@
 <number>4</number>
 <classType>com.xpn.xwiki.objects.classes.TextAreaClass</classType>
 </comment>
-<snumber>
+<number>
 <numberType>integer</numberType>
 <prettyName>number</prettyName>
 <unmodifiable>0</unmodifiable>
 <size>30</size>
-<name>snumber</name>
+<name>number</name>
 <number>2</number>
 <classType>com.xpn.xwiki.objects.classes.NumberClass</classType>
-</snumber>
+</number>
 </class>
 <content>#set($defaultparent = "XWiki.SlideClass")
 #set($defaultweb = "Main")





More information about the Xwiki-notifications mailing list