You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by cl...@apache.org on 2007/10/12 17:09:20 UTC

svn commit: r584180 [2/2] - in /jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm: ./ manager/query/ manager/uuid/ manager/version/ mapper/ querymanager/ testmodel/uuid/

Copied: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/DigesterUuidTest.java (from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/ObjectContentManagerUuidTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/DigesterUuidTest.java?p2=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/DigesterUuidTest.java&p1=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/ObjectContentManagerUuidTest.java&r1=580157&r2=584180&rev=584180&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/ObjectContentManagerUuidTest.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/DigesterUuidTest.java Fri Oct 12 08:08:13 2007
@@ -38,15 +38,15 @@
  *
  * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
  */
-public class ObjectContentManagerUuidTest extends DigesterTestBase
+public class DigesterUuidTest extends DigesterTestBase
 {
-    private final static Log log = LogFactory.getLog(ObjectContentManagerUuidTest.class);
+    private final static Log log = LogFactory.getLog(DigesterUuidTest.class);
 
     /**
      * <p>Defines the test case name for junit.</p>
      * @param testName The test case name.
      */
-    public ObjectContentManagerUuidTest(String testName)  throws Exception
+    public DigesterUuidTest(String testName)  throws Exception
     {
         super(testName);
     }
@@ -55,7 +55,7 @@
     {
         // All methods starting with "test" will be executed in the test suite.
         return new RepositoryLifecycleTestSetup(
-                new TestSuite(ObjectContentManagerUuidTest.class));
+                new TestSuite(DigesterUuidTest.class));
     }
 
 
@@ -64,30 +64,7 @@
      */
     public void tearDown() throws Exception
     {
-    	if (getObjectContentManager().objectExists("/testB"))
-    	{
-    	   getObjectContentManager().remove("/testB");
-    	   getObjectContentManager().save();
-    	}
-    	
-    	if (getObjectContentManager().objectExists("/testB2"))
-    	{
-    	   getObjectContentManager().remove("/testB2");
-    	   getObjectContentManager().save();
-    	}
-    	
-    	if (getObjectContentManager().objectExists("/test"))
-    	{
-    	   getObjectContentManager().remove("/test");
-    	   getObjectContentManager().save();
-    	}
-    	
-    	if (getObjectContentManager().objectExists("/descendant"))
-    	{
-    	   getObjectContentManager().remove("/descendant");
-    	   getObjectContentManager().save();
-    	}
-    	
+    	cleanUpRepisotory();
         super.tearDown();
     }
     

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/AllTests.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/AllTests.java?rev=584180&r1=584179&r2=584180&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/AllTests.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/AllTests.java Fri Oct 12 08:08:13 2007
@@ -36,8 +36,8 @@
     public static Test buildSuite() {
         TestSuite suite= new TestSuite("Test for org.apache.jackrabbit.ocm.manager.version");
         //$JUnit-BEGIN$
-        suite.addTestSuite(ObjectContentManagerBasicVersionningTest.class);
-       
+        suite.addTestSuite(AnnotationBasicVersionningTest.class);
+        suite.addTestSuite(DigesterBasicVersionningTest.class);
         
         //$JUnit-END$
 

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/AnnotationBasicVersionningTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/AnnotationBasicVersionningTest.java?rev=584180&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/AnnotationBasicVersionningTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/AnnotationBasicVersionningTest.java Fri Oct 12 08:08:13 2007
@@ -0,0 +1,161 @@
+package org.apache.jackrabbit.ocm.manager.version;
+
+
+import java.util.Date;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jackrabbit.ocm.AnnotationTestBase;
+import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
+import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
+import org.apache.jackrabbit.ocm.testmodel.Page;
+import org.apache.jackrabbit.ocm.testmodel.Paragraph;
+import org.apache.jackrabbit.ocm.version.Version;
+import org.apache.jackrabbit.ocm.version.VersionIterator;
+
+/**
+ * Test Query on atomic fields
+ *
+ * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
+ */
+public class AnnotationBasicVersionningTest extends AnnotationTestBase
+{
+	private final static Log log = LogFactory.getLog(AnnotationBasicVersionningTest.class);
+		
+	/**
+	 * <p>Defines the test case name for junit.</p>
+	 * @param testName The test case name.
+	 */
+	public AnnotationBasicVersionningTest(String testName) throws Exception
+	{
+		super(testName);
+		
+	}
+
+	public static Test suite()
+	{
+		// All methods starting with "test" will be executed in the test suite.
+		return new RepositoryLifecycleTestSetup(
+                new TestSuite(AnnotationBasicVersionningTest.class));
+	}
+
+    public void tearDown() throws Exception
+    {
+        cleanUpRepisotory();       
+        super.tearDown();
+    }	
+
+	public void testSimpleVersion()
+	{
+		     ObjectContentManager ocm = getObjectContentManager();
+             try
+             {
+            	 
+            	 Page page = new Page();
+            	 page.setPath("/page");
+            	 page.setTitle("Page Title");            	 
+            	 page.addParagraph(new Paragraph("para1"));
+            	 page.addParagraph(new Paragraph("para2"));
+            	 ocm.insert(page);
+            	 ocm.save();
+            	 
+                 
+            	 page.addParagraph(new Paragraph("para3"));
+            	 ocm.checkout("/page");
+            	 ocm.update(page);
+            	 ocm.save();
+            	 ocm.checkin("/page");
+            	 
+            	 page.addParagraph(new Paragraph("para4"));
+            	 ocm.checkout("/page");
+            	 ocm.update(page);
+            	 ocm.save();
+            	 ocm.checkin("/page");            	 
+
+            	 VersionIterator versionIterator = ocm.getAllVersions("/page");
+            	 assertNotNull("VersionIterator is null", versionIterator);
+            	 assertTrue("Invalid number of versions found", versionIterator.getSize() == 3);
+            	 
+            	 while (versionIterator.hasNext())
+            	 {
+            		 Version version = (Version) versionIterator.next();
+            		 log.info("version found : "+ version.getName() + " - " + version.getPath() + " - " +  version.getCreated().getTime());
+            		 
+            	 }
+            	 
+            	 Version baseVersion = ocm.getBaseVersion("/page");
+            	 System.out.println("Base version : " + baseVersion.getName());
+
+            	 Version rootVersion = ocm.getRootVersion("/page");
+            	 System.out.println("Root version : " + rootVersion.getName());
+            	 //this.exportDocument("/home/christophe/export.xml", "/jcr:system/jcr:versionStorage", true, false);
+            	             	
+                 //Get the latest version 
+            	 page = (Page) ocm.getObject( "/page");
+            	 assertNotNull("Last version is nulll", page);
+            	 assertTrue("Invalid number of paragraph found in the last  version", page.getParagraphs().size() == 4);
+
+            	 
+            	 //Get the object matching to the first version 
+                 Page  page1 = (Page) ocm.getObject( "/page", "1.0");
+            	 assertNotNull("version 1.0 object is null", page1);
+            	 assertTrue("Invalid number of paragraph found in the root version", page1.getParagraphs().size() == 3);
+
+             }
+             catch(Exception e)
+             {
+            	 e.printStackTrace();
+            	 fail(e.getMessage());
+            	 
+             }
+	}
+
+	
+	public void testVersionLabels()
+	{
+		     ObjectContentManager ocm = getObjectContentManager();
+             try
+             {
+            	 
+            	 Page page = new Page();
+            	 page.setPath("/page");
+            	 page.setTitle("Page Title");            	 
+            	 page.addParagraph(new Paragraph("para1"));
+            	 page.addParagraph(new Paragraph("para2"));
+            	 ocm.insert(page);
+            	 ocm.save();
+            	 
+                 
+            	 page.addParagraph(new Paragraph("para3"));
+            	 ocm.checkout("/page");
+            	 ocm.update(page);
+            	 ocm.save();
+            	 ocm.checkin("/page", new String[] {"A", "B"});
+            	 
+            	 page.addParagraph(new Paragraph("para4"));
+            	 ocm.checkout("/page");
+            	 ocm.update(page);
+            	 ocm.save();
+            	 ocm.checkin("/page", new String[] {"C", "D"});         	 
+
+            	 String[] allLabels = ocm.getAllVersionLabels("/page");
+            	 assertTrue("Incorrect number of labels", allLabels.length == 4);
+
+            	 String[] versionLabels = ocm.getVersionLabels("/page", "1.1");
+            	 assertTrue("Incorrect number of labels", versionLabels.length == 2);
+            	 assertTrue("Incorrect label", versionLabels[0].equals("C") || versionLabels[0].equals("D"));
+            	 assertTrue("Incorrect label", versionLabels[1].equals("C") || versionLabels[0].equals("D"));
+            	
+
+             }
+             catch(Exception e)
+             {
+            	 e.printStackTrace();
+            	 fail(); 
+             }
+	}
+	
+}
\ No newline at end of file

Copied: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/DigesterBasicVersionningTest.java (from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/ObjectContentManagerBasicVersionningTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/DigesterBasicVersionningTest.java?p2=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/DigesterBasicVersionningTest.java&p1=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/ObjectContentManagerBasicVersionningTest.java&r1=580157&r2=584180&rev=584180&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/ObjectContentManagerBasicVersionningTest.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/DigesterBasicVersionningTest.java Fri Oct 12 08:08:13 2007
@@ -8,8 +8,8 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
 import org.apache.jackrabbit.ocm.DigesterTestBase;
+import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
 import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
 import org.apache.jackrabbit.ocm.testmodel.Page;
 import org.apache.jackrabbit.ocm.testmodel.Paragraph;
@@ -21,16 +21,16 @@
  *
  * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
  */
-public class ObjectContentManagerBasicVersionningTest extends DigesterTestBase
+public class DigesterBasicVersionningTest extends DigesterTestBase
 {
-	private final static Log log = LogFactory.getLog(ObjectContentManagerBasicVersionningTest.class);
-	private Date date = new Date();
+	private final static Log log = LogFactory.getLog(DigesterBasicVersionningTest.class);
+	
 	
 	/**
 	 * <p>Defines the test case name for junit.</p>
 	 * @param testName The test case name.
 	 */
-	public ObjectContentManagerBasicVersionningTest(String testName) throws Exception
+	public DigesterBasicVersionningTest(String testName) throws Exception
 	{
 		super(testName);
 		
@@ -40,13 +40,12 @@
 	{
 		// All methods starting with "test" will be executed in the test suite.
 		return new RepositoryLifecycleTestSetup(
-                new TestSuite(ObjectContentManagerBasicVersionningTest.class));
+                new TestSuite(DigesterBasicVersionningTest.class));
 	}
 
     public void tearDown() throws Exception
     {
-    	ObjectContentManager ocm = getObjectContentManager();
-	    ocm.remove("/page");
+    	cleanUpRepisotory();
     	ocm.save();
        
         super.tearDown();

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/AllTests.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/AllTests.java?rev=584180&r1=584179&r2=584180&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/AllTests.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/AllTests.java Fri Oct 12 08:08:13 2007
@@ -36,8 +36,8 @@
     public static Test buildSuite() {
         TestSuite suite= new TestSuite("Test for org.apache.jackrabbit.ocm.mapper");
         //$JUnit-BEGIN$
+        suite.addTestSuite(AnnotationMapperImplTest.class);
         suite.addTestSuite(DigesterMapperImplTest.class);
-        
         //$JUnit-END$
 
         return suite;

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/AnnotationMapperImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/AnnotationMapperImplTest.java?rev=584180&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/AnnotationMapperImplTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/AnnotationMapperImplTest.java Fri Oct 12 08:08:13 2007
@@ -0,0 +1,509 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.ocm.mapper;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.jackrabbit.ocm.exception.JcrMappingException;
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationMapperImpl;
+import org.apache.jackrabbit.ocm.mapper.model.BeanDescriptor;
+import org.apache.jackrabbit.ocm.mapper.model.ClassDescriptor;
+import org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor;
+import org.apache.jackrabbit.ocm.mapper.model.FieldDescriptor;
+import org.apache.jackrabbit.ocm.testmodel.A;
+import org.apache.jackrabbit.ocm.testmodel.B;
+import org.apache.jackrabbit.ocm.testmodel.C;
+import org.apache.jackrabbit.ocm.testmodel.PropertyTest;
+import org.apache.jackrabbit.ocm.testmodel.inheritance.Ancestor;
+import org.apache.jackrabbit.ocm.testmodel.inheritance.AnotherDescendant;
+import org.apache.jackrabbit.ocm.testmodel.inheritance.Descendant;
+import org.apache.jackrabbit.ocm.testmodel.inheritance.SubDescendant;
+import org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl;
+import org.apache.jackrabbit.ocm.testmodel.inheritance.impl.DocumentImpl;
+import org.apache.jackrabbit.ocm.testmodel.interfaces.CmsObject;
+import org.apache.jackrabbit.ocm.testmodel.interfaces.Document;
+import org.apache.jackrabbit.ocm.testmodel.interfaces.Interface;
+import org.apache.jackrabbit.ocm.testmodel.proxy.Main;
+
+/**
+ * Test Annotation Mapper
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
+ */
+public class AnnotationMapperImplTest extends TestCase {
+	/**
+	 * <p>Defines the test case name for junit.</p>
+	 * @param testName The test case name.
+	 */
+	public AnnotationMapperImplTest(String testName) {
+		super(testName);
+	}
+
+	public static Test suite() {
+		// All methods starting with "test" will be executed in the test suite.
+		return new TestSuite(DigesterMapperImplTest.class);
+	}
+
+	/**
+	 * Simple test mapper
+	 *
+	 */
+	public void testMapper() {
+		try {
+
+			Mapper mapper = getMapper();
+					
+			assertNotNull("Mapper is null", mapper);
+
+			ClassDescriptor classDescriptor = mapper.getClassDescriptorByClass(A.class);
+			assertNotNull("ClassDescriptor is null", classDescriptor);
+			assertTrue("Invalid classname", classDescriptor.getClassName().equals(A.class.getName()));
+			assertTrue("Invalid path field", classDescriptor.getPathFieldDescriptor().getFieldName().equals("path"));
+			assertEquals("Invalid mixins", "mix:lockable", classDescriptor.getJcrMixinTypes()[0]);
+
+			FieldDescriptor fieldDescriptor = classDescriptor	.getFieldDescriptor("a1");
+			assertNotNull("FieldDescriptor is null", fieldDescriptor);
+			assertTrue("Invalid jcrName for field a1", fieldDescriptor.getJcrName().equals("a1"));
+
+			BeanDescriptor beanDescriptor = classDescriptor.getBeanDescriptor("b");
+			assertNotNull("BeanDescriptor is null", beanDescriptor);
+			assertTrue("Invalid jcrName for field b", beanDescriptor	.getJcrName().equals("b"));			
+			assertNotNull("Invalid bean default converter", beanDescriptor.getConverter());
+			
+
+			CollectionDescriptor collectionDescriptor = classDescriptor.getCollectionDescriptor("collection");
+			assertNotNull("CollectionDescriptor is null", collectionDescriptor);
+			assertTrue("Invalid jcrName for field collection",collectionDescriptor.getJcrName().equals("collection"));
+		} catch (JcrMappingException e) {
+			e.printStackTrace();
+			fail("Impossible to retrieve the converter " + e);
+		}
+	}
+
+
+	/**
+	 * Simple test mapper
+	 *
+	 */
+	public void testUuid() {
+		try {
+
+			Mapper mapper = getMapper();
+					
+			assertNotNull("Mapper is null", mapper);
+
+			ClassDescriptor classDescriptor = mapper.getClassDescriptorByClass(org.apache.jackrabbit.ocm.testmodel.uuid.A.class);
+			assertNotNull("ClassDescriptor is null", classDescriptor);
+			assertTrue("Invalid uuid field", classDescriptor.getUuidFieldDescriptor().getFieldName().equals("uuid"));
+
+		} catch (JcrMappingException e) {
+			e.printStackTrace();
+			fail("Impossible to retrieve the converter " + e);
+		}
+	}
+
+	/**
+	 * Simple test mapper
+	 *
+	 */
+	public void testDiscriminatorSetting() {
+		try {
+
+			Mapper mapper = getMapper();
+
+			assertNotNull("Mapper is null", mapper);
+
+			ClassDescriptor classDescriptor = mapper.getClassDescriptorByNodeType("ocm:C");
+			//ClassDescriptor classDescriptor = mapper.getClassDescriptorByClass(C.class);
+			assertNotNull("ClassDescriptor is null", classDescriptor);
+			assertTrue("Invalid classname", classDescriptor.getClassName().equals(C.class.getName()));			
+		} catch (JcrMappingException e) {
+			e.printStackTrace();
+			fail("Impossible to retrieve the converter " + e);
+		}
+	}
+
+	/**
+	 * Test optional mapping properties
+	 *
+	 */
+	public void testMapperOptionalProperties() {
+		try {
+
+			Mapper mapper = getMapper();			
+			
+			assertNotNull("Mapper is null", mapper);
+
+			ClassDescriptor classDescriptor = mapper.getClassDescriptorByClass(B.class);
+			assertNotNull("ClassDescriptor is null", classDescriptor);
+			assertTrue("Invalid classname", classDescriptor.getClassName()
+					.equals(B.class.getName()));
+			assertEquals(classDescriptor.getJcrSuperTypes(), "nt:base");
+
+			FieldDescriptor b1Field = classDescriptor.getFieldDescriptor("b1");
+			assertNotNull("FieldDescriptor is null", b1Field);
+			assertEquals(b1Field.getFieldName(), "b1");
+			assertEquals(b1Field.getJcrType(), "String");
+			assertFalse(b1Field.isJcrAutoCreated());
+			assertFalse(b1Field.isJcrMandatory());
+			assertFalse(b1Field.isJcrProtected());
+			assertFalse(b1Field.isJcrMultiple());
+			assertEquals(b1Field.getJcrOnParentVersion(), "IGNORE");
+
+			FieldDescriptor b2Field = classDescriptor.getFieldDescriptor("b2");
+			assertNotNull("FieldDescriptor is null", b2Field);
+			assertEquals(b2Field.getFieldName(), "b2");
+			assertEquals(b2Field.getJcrType(), "String");
+			assertFalse(b2Field.isJcrAutoCreated());
+			assertFalse(b2Field.isJcrMandatory());
+			assertFalse(b2Field.isJcrProtected());
+			assertFalse(b2Field.isJcrMultiple());
+			assertEquals(b2Field.getJcrOnParentVersion(), "IGNORE");
+
+			ClassDescriptor classDescriptor2 = mapper
+					.getClassDescriptorByClass(A.class);
+			assertNotNull("ClassDescriptor is null", classDescriptor2);
+			assertTrue("Invalid classname", classDescriptor2.getClassName()
+					.equals(A.class.getName()));
+
+			BeanDescriptor beanDescriptor = classDescriptor2
+					.getBeanDescriptor("b");
+			assertNotNull(beanDescriptor);
+			assertEquals(beanDescriptor.getFieldName(), "b");
+			assertEquals(beanDescriptor.getJcrType(), "nt:unstructured");
+			assertFalse(beanDescriptor.isJcrAutoCreated());
+			assertFalse(beanDescriptor.isJcrMandatory());
+			assertFalse(beanDescriptor.isJcrProtected());
+			assertFalse(beanDescriptor.isJcrSameNameSiblings());
+			assertEquals(beanDescriptor.getJcrOnParentVersion(), "IGNORE");
+
+			CollectionDescriptor collectionDescriptor = classDescriptor2
+					.getCollectionDescriptor("collection");
+			assertNotNull(collectionDescriptor);
+			assertEquals(collectionDescriptor.getJcrType(), "ocm:C");
+			assertFalse(collectionDescriptor.isJcrAutoCreated());
+			assertFalse(collectionDescriptor.isJcrMandatory());
+			assertFalse(collectionDescriptor.isJcrProtected());
+			assertFalse(collectionDescriptor.isJcrSameNameSiblings());
+			assertEquals(collectionDescriptor.getJcrOnParentVersion(), "IGNORE");
+			
+			classDescriptor = mapper.getClassDescriptorByClass(PropertyTest.class);
+			assertNotNull(classDescriptor);
+			FieldDescriptor fieldDescriptor = classDescriptor.getFieldDescriptor("requiredWithConstraintsProp");
+			assertNotNull(fieldDescriptor.getJcrValueConstraints());
+			assertTrue("Invalid constaint", fieldDescriptor.getJcrValueConstraints()[0].equals("abc") );
+			assertTrue("Invalid constaint", fieldDescriptor.getJcrValueConstraints()[1].equals("def") );
+			assertTrue("Invalid constaint", fieldDescriptor.getJcrValueConstraints()[2].equals("ghi") );
+			
+			fieldDescriptor = classDescriptor.getFieldDescriptor("autoCreatedProp");
+			assertNotNull(fieldDescriptor.getJcrDefaultValue());
+			assertTrue("Invalid default value", fieldDescriptor.getJcrDefaultValue().equals("aaa") );
+			
+		} catch (JcrMappingException e) {
+			e.printStackTrace();
+			fail("Impossible to retrieve the converter " + e);
+		}
+	}
+
+	/**
+	 *
+	 * Test Node Type per hierarchy setting
+	 */
+	public void testMapperNtHierarchy() {
+		try {
+			Mapper mapper = getMapper();
+			
+			assertNotNull("Mapper is null", mapper);
+
+			ClassDescriptor classDescriptor = mapper
+					.getClassDescriptorByClass(Ancestor.class);
+			assertNotNull("Classdescriptor is null", classDescriptor);
+			assertEquals("Incorrect path field", classDescriptor
+					.getPathFieldDescriptor().getFieldName(), "path");
+			assertTrue("The ancestor class has no discriminator",
+					classDescriptor.hasDiscriminator());
+			assertTrue("The ancestor class is not abstract", classDescriptor
+					.isAbstract());
+			assertNull("The ancestor class has an ancestor", classDescriptor
+					.getSuperClassDescriptor());
+			assertTrue(
+					"Ancestor class doesn't have a node type per hierarchy strategy",
+					classDescriptor.usesNodeTypePerHierarchyStrategy());
+			assertFalse(
+					"Ancestor class  have a node type per hierarchy strategy",
+					classDescriptor.usesNodeTypePerConcreteClassStrategy());
+
+			Collection descendandDescriptors = classDescriptor
+					.getDescendantClassDescriptors();
+			assertEquals("Invalid number of descendants", descendandDescriptors
+					.size(), 2);
+
+			classDescriptor = mapper.getClassDescriptorByClass(Descendant.class);
+			assertNotNull("Classdescriptor is null", classDescriptor);
+			assertEquals("Incorrect path field", classDescriptor
+					.getPathFieldDescriptor().getFieldName(), "path");
+			assertTrue("The descendant  class has no discriminator",
+					classDescriptor.hasDiscriminator());
+			assertNotNull("ancerstorField is null in the descendant class",
+					classDescriptor.getFieldDescriptor("ancestorField"));
+			assertFalse("The descendant class is abstract", classDescriptor
+					.isAbstract());
+			assertNotNull("The descendant class has not an ancestor",
+					classDescriptor.getSuperClassDescriptor());
+			assertEquals("Invalid ancestor class for the descendant class",
+					classDescriptor.getSuperClassDescriptor().getClassName(),
+					"org.apache.jackrabbit.ocm.testmodel.inheritance.Ancestor");
+			descendandDescriptors = classDescriptor
+					.getDescendantClassDescriptors();
+			assertEquals("Invalid number of descendants", descendandDescriptors
+					.size(), 1);
+			assertTrue(
+					"Descendant  class doesn't have a node type per hierarchy strategy",
+					classDescriptor.usesNodeTypePerHierarchyStrategy());
+			assertFalse(
+					"Descendant class  have a node type per hierarchy strategy",
+					classDescriptor.usesNodeTypePerConcreteClassStrategy());
+
+			classDescriptor = mapper.getClassDescriptorByClass(SubDescendant.class);
+			assertNotNull("Classdescriptor is null", classDescriptor);
+			assertEquals("Incorrect path field", classDescriptor
+					.getPathFieldDescriptor().getFieldName(), "path");
+			assertTrue("The subdescendant  class has no discriminator",
+					classDescriptor.hasDiscriminator());
+			assertNotNull("ancestorField is null in the descendant class",
+					classDescriptor.getFieldDescriptor("ancestorField"));
+			assertFalse("The subdescendant class is abstract", classDescriptor
+					.isAbstract());
+			assertNotNull("The subdescendant class has not an ancestor",
+					classDescriptor.getSuperClassDescriptor());
+			assertEquals("Invalid ancestor class for the descendant class",
+					classDescriptor.getSuperClassDescriptor().getClassName(),
+					"org.apache.jackrabbit.ocm.testmodel.inheritance.Descendant");
+			descendandDescriptors = classDescriptor
+					.getDescendantClassDescriptors();
+			assertEquals("Invalid number of descendants", descendandDescriptors
+					.size(), 0);
+			assertTrue(
+					"SubDescendant  class doesn't have a node type per hierarchy strategy",
+					classDescriptor.usesNodeTypePerHierarchyStrategy());
+			assertFalse(
+					"SubDescendant class  have a node type per hierarchy strategy",
+					classDescriptor.usesNodeTypePerConcreteClassStrategy());
+
+		} catch (JcrMappingException e) {
+			e.printStackTrace();
+			fail("Impossible to retrieve the converter " + e);
+		}
+	}
+
+	/**
+	 *
+	 * Test Node Type per concrete class  setting
+	 */	
+	public void testMapperNtConcreteClass() {
+		try {
+			Mapper mapper = getMapper();
+			
+			assertNotNull("Mapper is null", mapper);
+
+			ClassDescriptor classDescriptor = mapper.getClassDescriptorByClass(CmsObjectImpl.class);
+			assertNotNull("Classdescriptor is null", classDescriptor);
+			assertEquals("Incorrect path field", classDescriptor
+					.getPathFieldDescriptor().getFieldName(), "path");
+			assertFalse("The cms object class  has discriminator",
+					classDescriptor.hasDiscriminator());
+			assertTrue("The cmsobject class is not abstract", classDescriptor
+					.isAbstract());
+			assertNull("The cmsobject class has an ancestor", classDescriptor
+					.getSuperClassDescriptor());
+			assertFalse(
+					"The cmsobject class  have a node type per hierarchy strategy",
+					classDescriptor.usesNodeTypePerHierarchyStrategy());
+			assertTrue(
+					"The cmsobject class  have not a node type per hierarchy strategy",
+					classDescriptor.usesNodeTypePerConcreteClassStrategy());
+			assertTrue("The cmsobject class has no descendant ",
+					classDescriptor.hasDescendants());
+			assertEquals("Invalid number of descendants", classDescriptor
+					.getDescendantClassDescriptors().size(), 2);
+
+			classDescriptor = mapper.getClassDescriptorByClass(DocumentImpl.class);
+			assertNotNull("Classdescriptor is null", classDescriptor);
+			assertEquals("Incorrect path field", classDescriptor
+					.getPathFieldDescriptor().getFieldName(), "path");
+			assertFalse("The document class  has discriminator",
+					classDescriptor.hasDiscriminator());
+			assertFalse("The document class is abstract", classDescriptor
+					.isAbstract());
+			assertNotNull("The document class has not  an ancestor",
+					classDescriptor.getSuperClassDescriptor());
+			assertEquals("The document class has an invalid ancestor ancestor",
+					classDescriptor.getSuperClassDescriptor().getClassName(),
+					"org.apache.jackrabbit.ocm.testmodel.inheritance.impl.ContentImpl");
+			assertFalse(
+					"The document class  have a node type per hierarchy strategy",
+					classDescriptor.usesNodeTypePerHierarchyStrategy());
+			assertTrue(
+					"The document class  have not a node type per hierarchy strategy",
+					classDescriptor.usesNodeTypePerConcreteClassStrategy());
+			assertFalse("The document class has no descendant ",
+					classDescriptor.hasDescendants());
+			assertEquals("Invalid number of descendants", classDescriptor
+					.getDescendantClassDescriptors().size(), 0);
+
+		} catch (JcrMappingException e) {
+			e.printStackTrace();
+			fail("Impossible to retrieve the converter " + e);
+		}
+	}
+
+	/**
+	 * Test interface setting
+	 */
+	public void testInterfaceWithDiscriminator() {
+		try {
+			Mapper mapper = getMapper();
+			assertNotNull("Mapper is null", mapper);
+			ClassDescriptor classDescriptor = mapper.getClassDescriptorByClass(Interface.class);
+			assertNotNull("Classdescriptor is null", classDescriptor);
+			assertTrue("Interface is not an interface", classDescriptor.isInterface());
+			assertTrue("Interface  has not a discriminator", classDescriptor.hasDiscriminator());
+			String[] mixinTypes = classDescriptor.getJcrMixinTypes();
+			assertEquals("Invalid mixin type for the interface",mixinTypes.length , 0);
+			assertNull("The interface has an ancestor", classDescriptor.getSuperClassDescriptor());
+			assertTrue("The interface has not implementation/descendant", classDescriptor.hasDescendants());
+			Collection descendants = classDescriptor.getDescendantClassDescriptors();
+			assertEquals("Invalid number of implementation/descendants", descendants.size(), 1);
+			assertEquals("Invalid interface implementation",( (ClassDescriptor) descendants.iterator().next()).getClassName(), "org.apache.jackrabbit.ocm.testmodel.inheritance.AnotherDescendant");
+			assertTrue("Invalid extend strategy", classDescriptor.usesNodeTypePerHierarchyStrategy());
+			assertFalse("Incalid extend strategy", classDescriptor.usesNodeTypePerConcreteClassStrategy());
+			
+			classDescriptor = mapper.getClassDescriptorByClass(AnotherDescendant.class);
+			assertNotNull("Classdescriptor is null", classDescriptor);
+			assertFalse("Interface is  an interface", classDescriptor.isInterface());
+			assertTrue("AnotherDescendant  has not a discriminator", classDescriptor.hasDiscriminator());
+			assertEquals("Invalid number of implemented interface", classDescriptor.getImplements().size(), 1);
+			assertEquals("Invalid  interface name", classDescriptor.getImplements().iterator().next(), "org.apache.jackrabbit.ocm.testmodel.interfaces.Interface");
+			assertTrue("Invalid extend strategy", classDescriptor.usesNodeTypePerHierarchyStrategy());
+			assertFalse("Invalid extend strategy", classDescriptor.usesNodeTypePerConcreteClassStrategy());
+			
+
+		} catch (JcrMappingException e) {
+			e.printStackTrace();
+			fail("Impossible to retrieve the converter " + e);
+		}
+	}
+	
+	/**
+	 * Test interface setting
+	 */
+	public void testInterfaceWithoutDiscriminator() 
+	{
+		try {
+			Mapper mapper = getMapper();
+			assertNotNull("Mapper is null", mapper);
+			ClassDescriptor classDescriptor = mapper.getClassDescriptorByClass(CmsObject.class);
+			assertNotNull("Classdescriptor is null", classDescriptor);
+			assertTrue("CmsObject is not an interface", classDescriptor.isInterface());
+			assertFalse("Interface  has a discriminator", classDescriptor.hasDiscriminator());
+			String[] mixinTypes = classDescriptor.getJcrMixinTypes();
+			assertEquals("Invalid mixin type for the interface",mixinTypes.length , 0);
+			assertNull("The interface has an ancestor", classDescriptor.getSuperClassDescriptor());
+			assertTrue("The interface has not implementation/descendant", classDescriptor.hasDescendants());
+			Collection descendants = classDescriptor.getDescendantClassDescriptors();
+			assertEquals("Invalid number of implementation/descendants", descendants.size(),3);			
+			assertFalse("Invalid extend strategy", classDescriptor.usesNodeTypePerHierarchyStrategy());
+			assertTrue("Invalid extend strategy", classDescriptor.usesNodeTypePerConcreteClassStrategy());
+			
+			
+			classDescriptor = mapper.getClassDescriptorByClass(Document.class);
+			assertNotNull("Classdescriptor is null", classDescriptor);
+			assertTrue("Document is not  an interface", classDescriptor.isInterface());
+			assertFalse("Document  has a discriminator", classDescriptor.hasDiscriminator());
+			assertEquals("Invalid number of implemented interface", classDescriptor.getImplements().size(), 0);			
+			assertFalse("Invalid extend strategy", classDescriptor.usesNodeTypePerHierarchyStrategy());
+			assertTrue("Invalid extend strategy", classDescriptor.usesNodeTypePerConcreteClassStrategy());
+			descendants = classDescriptor.getDescendantClassDescriptors();			
+			assertEquals("Invalid number of implementation/descendants", descendants.size(),1);
+		
+
+			classDescriptor = mapper.getClassDescriptorByClass(DocumentImpl.class);
+			assertNotNull("Classdescriptor is null", classDescriptor);
+			assertFalse("DocumentImpl is  an interface", classDescriptor.isInterface());
+			assertFalse("DocumentImpl  has a discriminator", classDescriptor.hasDiscriminator());
+			assertTrue("DocumentImpl has not interface", classDescriptor.hasInterfaces());	
+			assertEquals("Invalid number of implemented interface", classDescriptor.getImplements().size(), 1);				
+			assertFalse("Invalid extend strategy", classDescriptor.usesNodeTypePerHierarchyStrategy());
+			assertTrue("Invalid extend strategy", classDescriptor.usesNodeTypePerConcreteClassStrategy());
+      
+			
+		} catch (JcrMappingException e) {
+			e.printStackTrace();
+			fail("Impossible to retrieve the converter " + e);
+		}
+	}
+
+	/**
+	 * 
+	 * Test Node Type per concrete class setting
+	 */
+	public void testProxy() {
+		try {
+			Mapper mapper = getMapper();
+			assertNotNull("Mapper is null", mapper);
+
+			ClassDescriptor classDescriptor = mapper.getClassDescriptorByClass(Main.class);
+			assertNotNull("ClassDescriptor is null", classDescriptor);
+			assertTrue("Invalid proxy setting for bean field proxyDetail ", classDescriptor.getBeanDescriptor("proxyDetail").isProxy());
+			assertFalse("Invalid proxy setting for bean field detail  ", classDescriptor.getBeanDescriptor("detail").isProxy());
+			assertTrue("Invalid proxy setting for collection field proxyDetail ", classDescriptor.getCollectionDescriptor("proxyCollection").isProxy());
+			
+		} catch (JcrMappingException e) {
+			e.printStackTrace();
+			fail("Impossible to retrieve the converter " + e);
+		}
+	}
+	
+	private Mapper getMapper() 
+	{
+		List<Class> classes = new ArrayList<Class>();
+		classes.add( org.apache.jackrabbit.ocm.testmodel.A.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.B.class);
+		classes.add( org.apache.jackrabbit.ocm.testmodel.C.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.PropertyTest.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.inheritance.Ancestor.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.inheritance.AnotherDescendant.class);
+		classes.add( org.apache.jackrabbit.ocm.testmodel.inheritance.Descendant.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.inheritance.SubDescendant.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.inheritance.impl.DocumentImpl.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.interfaces.CmsObject.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.interfaces.Document.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.interfaces.Interface.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.proxy.Main.class);
+		
+		Mapper mapper = new AnnotationMapperImpl(classes);
+		return mapper;
+	}
+	
+}
\ No newline at end of file

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/DigesterMapperImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/DigesterMapperImplTest.java?rev=584180&r1=584179&r2=584180&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/DigesterMapperImplTest.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/DigesterMapperImplTest.java Fri Oct 12 08:08:13 2007
@@ -44,7 +44,7 @@
 import org.apache.jackrabbit.ocm.testmodel.proxy.Main;
 
 /**
- * Test Mapper
+ * Test Digester Mapper
  *
  * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
  */

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/AllTests.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/AllTests.java?rev=584180&r1=584179&r2=584180&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/AllTests.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/AllTests.java Fri Oct 12 08:08:13 2007
@@ -36,7 +36,8 @@
     public static Test buildSuite() {
         TestSuite suite= new TestSuite("Test for org.apache.jackrabbit.ocm.querymanager");
         //$JUnit-BEGIN$
-        suite.addTestSuite(QueryManagerTest.class);
+        suite.addTestSuite(AnnotationQueryManagerTest.class);
+        suite.addTestSuite(DigesterQueryManagerTest.class);
        
         
         //$JUnit-END$

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/AnnotationQueryManagerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/AnnotationQueryManagerTest.java?rev=584180&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/AnnotationQueryManagerTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/AnnotationQueryManagerTest.java Fri Oct 12 08:08:13 2007
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.ocm.querymanager;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jackrabbit.ocm.AnnotationTestBase;
+import org.apache.jackrabbit.ocm.RepositoryLifecycleTestSetup;
+import org.apache.jackrabbit.ocm.query.Filter;
+import org.apache.jackrabbit.ocm.query.Query;
+import org.apache.jackrabbit.ocm.query.QueryManager;
+import org.apache.jackrabbit.ocm.testmodel.C;
+
+
+/**
+ * Test QueryManagerImpl methods
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
+ */
+public class AnnotationQueryManagerTest extends AnnotationTestBase
+{
+    private final static Log log = LogFactory.getLog(AnnotationQueryManagerTest.class);
+
+    /**
+     * <p>Defines the test case name for junit.</p>
+     * @param testName The test case name.
+     */
+    public AnnotationQueryManagerTest(String testName)  throws Exception
+    {
+        super(testName);
+    }
+
+    public static Test suite()
+    {
+        // All methods starting with "test" will be executed in the test suite.
+        return new RepositoryLifecycleTestSetup(
+                new TestSuite(AnnotationQueryManagerTest.class));
+    }
+
+    public void testBuildExpression1()
+    {
+    	try
+    	{
+    	      QueryManager queryManager = this.getQueryManager();
+    	      Filter filter = queryManager.createFilter(C.class);
+    	      filter.addEqualTo("name", "a test value")
+                    .addEqualTo("id", new Integer(1));
+    	      filter.setScope("/test//");
+    	      
+    	      Query query = queryManager.createQuery(filter);
+    	      String jcrExpression = queryManager.buildJCRExpression(query);
+    	      assertNotNull("jcrExpression is null", jcrExpression);
+    	      assertTrue("Invalid JcrExpression", jcrExpression.equals("/jcr:root/test//element(*, ocm:C) [@ocm:name = 'a test value' and @ocm:id = 1]"));
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+
+    public void testBuildExpression2()
+    {
+
+    	try
+    	{
+    	      QueryManager queryManager = this.getQueryManager();
+    	      Filter filter = queryManager.createFilter(C.class);
+    	      filter.addEqualTo("name", "a test value")
+    	            .addEqualTo("id", new Integer(1));
+    	      
+    	      Query query = queryManager.createQuery(filter);
+    	      String jcrExpression = queryManager.buildJCRExpression(query);
+    	      assertNotNull("jcrExpression is null", jcrExpression);
+    	      assertTrue("Invalid JcrExpression", jcrExpression.equals("//element(*, ocm:C) [@ocm:name = 'a test value' and @ocm:id = 1]"));
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+    
+
+}
\ No newline at end of file

Copied: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/DigesterQueryManagerTest.java (from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/QueryManagerTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/DigesterQueryManagerTest.java?p2=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/DigesterQueryManagerTest.java&p1=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/QueryManagerTest.java&r1=580157&r2=584180&rev=584180&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/QueryManagerTest.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/DigesterQueryManagerTest.java Fri Oct 12 08:08:13 2007
@@ -32,17 +32,17 @@
 /**
  * Test QueryManagerImpl methods
  *
- * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
+ * @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
  */
-public class QueryManagerTest extends DigesterTestBase
+public class DigesterQueryManagerTest extends DigesterTestBase
 {
-    private final static Log log = LogFactory.getLog(QueryManagerTest.class);
+    private final static Log log = LogFactory.getLog(DigesterQueryManagerTest.class);
 
     /**
      * <p>Defines the test case name for junit.</p>
      * @param testName The test case name.
      */
-    public QueryManagerTest(String testName)  throws Exception
+    public DigesterQueryManagerTest(String testName)  throws Exception
     {
         super(testName);
     }
@@ -51,7 +51,7 @@
     {
         // All methods starting with "test" will be executed in the test suite.
         return new RepositoryLifecycleTestSetup(
-                new TestSuite(QueryManagerTest.class));
+                new TestSuite(DigesterQueryManagerTest.class));
     }
 
     public void testBuildExpression1()

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/A.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/A.java?rev=584180&r1=584179&r2=584180&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/A.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/A.java Fri Oct 12 08:08:13 2007
@@ -16,17 +16,21 @@
  */
 package org.apache.jackrabbit.ocm.testmodel.uuid;
 
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.Field;
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.Node;
+
 
 /**
  *
  * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe </a>
  * @version $Id: Exp $
  */
+@Node(jcrMixinTypes="mix:referenceable")
 public class A
 {
-	private String path; 
-	private String uuid;
-    private String stringData;
+	@Field(path=true) private String path; 
+	@Field(uuid=true) private String uuid;
+    @Field private String stringData;
 
     
     public String getPath() 

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/Ancestor.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/Ancestor.java?rev=584180&r1=584179&r2=584180&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/Ancestor.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/Ancestor.java Fri Oct 12 08:08:13 2007
@@ -16,16 +16,20 @@
  */
 package org.apache.jackrabbit.ocm.testmodel.uuid;
 
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.Field;
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.Node;
+
 
 /**
  *
  * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe </a>
  * @version $Id: Exp $
  */
+@Node(isAbstract=true, jcrMixinTypes="mix:referenceable")
 public class Ancestor
 {
-	private String path; 
-	private String uuid;
+	@Field(path=true) private String path; 
+	@Field(uuid=true) private String uuid;
     
     
     public String getPath() 

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/B.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/B.java?rev=584180&r1=584179&r2=584180&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/B.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/B.java Fri Oct 12 08:08:13 2007
@@ -16,7 +16,13 @@
  */
 package org.apache.jackrabbit.ocm.testmodel.uuid;
 
-import java.util.Collection;
+
+
+import org.apache.jackrabbit.ocm.manager.atomictypeconverter.impl.ReferenceTypeConverterImpl;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.ReferenceCollectionConverterImpl;
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.Collection;
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.Field;
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.Node;
 
 
 /**
@@ -24,11 +30,12 @@
  * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe </a>
  * @version $Id: Exp $
  */
+@Node
 public class B
 {
-	private String path; 
-    private String reference2A; // This String attribute is mapped to a reference/uuid jcr property
-    private Collection multiReferences; // a collection of references (uuid)
+	@Field(path=true) private String path; 
+    @Field(converter=ReferenceTypeConverterImpl.class) private String reference2A; // This String attribute is mapped to a reference/uuid jcr property
+    @Collection(collectionConverter=ReferenceCollectionConverterImpl.class ) private java.util.Collection multiReferences; // a collection of references (uuid)
     
     public String getPath() 
     {
@@ -50,11 +57,11 @@
 		this.reference2A = reference2A;
 	}
 
-	public Collection getMultiReferences() {
+	public java.util.Collection getMultiReferences() {
 		return multiReferences;
 	}
 
-	public void setMultiReferences(Collection multiReferences) {
+	public void setMultiReferences(java.util.Collection multiReferences) {
 		this.multiReferences = multiReferences;
 	}
 

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/B2.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/B2.java?rev=584180&r1=584179&r2=584180&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/B2.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/B2.java Fri Oct 12 08:08:13 2007
@@ -16,7 +16,12 @@
  */
 package org.apache.jackrabbit.ocm.testmodel.uuid;
 
-import java.util.Collection;
+import org.apache.jackrabbit.ocm.manager.beanconverter.impl.ReferenceBeanConverterImpl;
+import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.BeanReferenceCollectionConverterImpl;
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.Bean;
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.Collection;
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.Field;
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.Node;
 
 
 /**
@@ -24,11 +29,17 @@
  * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe </a>
  * @version $Id: Exp $
  */
+@Node
 public class B2
 {
-	private String path; 
-    private A a; // This attribute is mapped to a reference jcr property
-    private Collection multiReferences; // a collection of bean (with an uuid) mapped into a list of jcr properties (reference type)
+	@Field(path=true) private String path; 
+    
+    // This attribute is mapped to a reference jcr property
+	@Bean(converter=ReferenceBeanConverterImpl.class) private A a; 
+    
+    //  a collection of bean mapped into a list of jcr properties (reference type)
+    @Collection (collectionConverter=BeanReferenceCollectionConverterImpl.class)
+    private java.util.Collection multiReferences; 
     
     public String getPath() 
     {
@@ -47,11 +58,11 @@
 	public void setA(A a) {
 		this.a = a;
 	}
-	public Collection getMultiReferences() {
+	public java.util.Collection getMultiReferences() {
 		return multiReferences;
 	}
 
-	public void setMultiReferences(Collection multiReferences) {
+	public void setMultiReferences(java.util.Collection multiReferences) {
 		this.multiReferences = multiReferences;
 	}
     

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/Descendant.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/Descendant.java?rev=584180&r1=584179&r2=584180&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/Descendant.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/Descendant.java Fri Oct 12 08:08:13 2007
@@ -16,16 +16,20 @@
  */
 package org.apache.jackrabbit.ocm.testmodel.uuid;
 
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.Field;
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.Node;
+
 
 /**
  *
  * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe </a>
  * @version $Id: Exp $
  */
+@Node(extend=Ancestor.class, jcrMixinTypes="mix:referenceable") 	                  
 public class Descendant extends Ancestor
 {
 
-    private String stringData;
+    @Field private String stringData;
 
     
 	public String getStringData() {