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 [1/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/

Author: clombart
Date: Fri Oct 12 08:08:13 2007
New Revision: 584180

URL: http://svn.apache.org/viewvc?rev=584180&view=rev
Log:
Last step for the OCM unit tests. From now, we have the same setting for both mapper (xml file & annotations)

Added:
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationAtomicQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationIteratorQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationMultiValueQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationScopeQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationSimpleQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterAtomicQueryTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerAtomicQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterIteratorQueryTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerIteratorQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterMultiValueQueryTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerMultiValueQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterScopeQueryTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerScopeQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterSimpleQueryTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerSimpleQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/AnnotationUuidTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/DigesterUuidTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/ObjectContentManagerUuidTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/AnnotationBasicVersionningTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/DigesterBasicVersionningTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/ObjectContentManagerBasicVersionningTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/AnnotationMapperImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/AnnotationQueryManagerTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/DigesterQueryManagerTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/QueryManagerTest.java
Removed:
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerAtomicQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerIteratorQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerMultiValueQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerScopeQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerSimpleQueryTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/ObjectContentManagerUuidTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/ObjectContentManagerBasicVersionningTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/QueryManagerTest.java
Modified:
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/AnnotationTestBase.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AllTests.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/AllTests.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/version/AllTests.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/AllTests.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/mapper/DigesterMapperImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/querymanager/AllTests.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/A.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/Ancestor.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/B.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/B2.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/uuid/Descendant.java

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/AnnotationTestBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/AnnotationTestBase.java?rev=584180&r1=584179&r2=584180&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/AnnotationTestBase.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/AnnotationTestBase.java Fri Oct 12 08:08:13 2007
@@ -148,7 +148,11 @@
 		classes.add(org.apache.jackrabbit.ocm.testmodel.proxy.NTMain.class);
 		classes.add(org.apache.jackrabbit.ocm.testmodel.proxy.NTDetail.class);
 		
-		
+		classes.add(org.apache.jackrabbit.ocm.testmodel.uuid.A.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.uuid.B.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.uuid.B2.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.uuid.Ancestor.class);
+		classes.add(org.apache.jackrabbit.ocm.testmodel.uuid.Descendant.class);
 		Mapper mapper = new AnnotationMapperImpl(classes);
 		ocm = new ObjectContentManagerImpl(session, mapper);
 		

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AllTests.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/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/query/AllTests.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AllTests.java Fri Oct 12 08:08:13 2007
@@ -36,11 +36,16 @@
     public static Test buildSuite() {
         TestSuite suite= new TestSuite("Test for org.apache.jackrabbit.ocm.manager.query");
         //$JUnit-BEGIN$
-        suite.addTestSuite(ObjectContentManagerAtomicQueryTest.class);
-        suite.addTestSuite(ObjectContentManagerIteratorQueryTest.class);
-        suite.addTestSuite(ObjectContentManagerMultiValueQueryTest.class);
-        suite.addTestSuite(ObjectContentManagerScopeQueryTest.class);
-        suite.addTestSuite(ObjectContentManagerSimpleQueryTest.class);
+        suite.addTestSuite(AnnotationAtomicQueryTest.class);
+        suite.addTestSuite(AnnotationIteratorQueryTest.class);
+        suite.addTestSuite(AnnotationMultiValueQueryTest.class);
+        suite.addTestSuite(AnnotationScopeQueryTest.class);
+        suite.addTestSuite(AnnotationSimpleQueryTest.class);
+        suite.addTestSuite(DigesterAtomicQueryTest.class);
+        suite.addTestSuite(DigesterIteratorQueryTest.class);
+        suite.addTestSuite(DigesterMultiValueQueryTest.class);
+        suite.addTestSuite(DigesterScopeQueryTest.class);
+        suite.addTestSuite(DigesterSimpleQueryTest.class);
         
         //$JUnit-END$
 

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationAtomicQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationAtomicQueryTest.java?rev=584180&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationAtomicQueryTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationAtomicQueryTest.java Fri Oct 12 08:08:13 2007
@@ -0,0 +1,243 @@
+/*
+ * 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.manager.query;
+
+import java.io.ByteArrayInputStream;
+import java.sql.Timestamp;
+import java.util.Calendar;
+import java.util.Collection;
+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.query.Filter;
+import org.apache.jackrabbit.ocm.query.Query;
+import org.apache.jackrabbit.ocm.query.QueryManager;
+import org.apache.jackrabbit.ocm.testmodel.Atomic;
+
+/**
+ * Test Query on atomic fields
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
+ */
+public class AnnotationAtomicQueryTest extends AnnotationTestBase
+{
+	private final static Log log = LogFactory.getLog(AnnotationAtomicQueryTest.class);
+	private Date date = new Date();
+	
+	/**
+	 * <p>Defines the test case name for junit.</p>
+	 * @param testName The test case name.
+	 */
+	public AnnotationAtomicQueryTest(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(AnnotationAtomicQueryTest.class));
+	}
+	
+    
+	public void tearDown() throws Exception {
+
+		cleanUpRepisotory();
+		super.tearDown();
+		
+	}	
+	
+
+	public void testQueryAtomicFields()
+	{
+
+		try
+		{
+			
+			this.importData(date);
+			ObjectContentManager ocm = this.getObjectContentManager();
+			
+			// Test Boolean value 
+			QueryManager queryManager = this.getQueryManager();
+			Filter filter = queryManager.createFilter(Atomic.class);
+			filter.addEqualTo("booleanObject", new Boolean(true));
+			Query query = queryManager.createQuery(filter);
+			
+			long start = System.currentTimeMillis();
+			Collection result = ocm.getObjects(query);
+			System.out.println("getObjects  : " + (System.currentTimeMillis() - start));
+			
+			assertTrue("Invalid number of objects - should be = 50", result.size() == 50);
+			
+			filter = queryManager.createFilter(Atomic.class);
+			filter.addEqualTo("booleanPrimitive", new Boolean(false));
+			query = queryManager.createQuery(filter);
+
+			start = System.currentTimeMillis();
+			result = ocm.getObjects(query);
+			System.out.println("getObjects 2 : " + (System.currentTimeMillis() - start));
+			assertTrue("Invalid number of objects - should be = 0", result.size() == 0);
+			
+			
+			// Test int value
+			filter = queryManager.createFilter(Atomic.class);
+			filter.addBetween("integerObject", new Integer(0), new Integer(500));
+			query = queryManager.createQuery(filter);
+			
+			result = ocm.getObjects(query);			
+			assertTrue("Invalid number of objects - should be = 5", result.size() == 5);
+			
+			filter = queryManager.createFilter(Atomic.class);
+			filter.addLessOrEqualThan("intPrimitive", new Integer(236));
+			query = queryManager.createQuery(filter);
+			
+			result = ocm.getObjects(query);			
+			assertTrue("Invalid number of objects - should be = 36", result.size() == 36);
+
+			
+			//Test Date & Calendar
+			filter = queryManager.createFilter(Atomic.class);
+			Calendar calendar = Calendar.getInstance();
+			calendar.set(2012, 12, 01);
+			filter.addLessThan("calendar", calendar);
+			query = queryManager.createQuery(filter);
+			
+			result = ocm.getObjects(query);			
+			assertTrue("Invalid number of objects - should be = 100 ", result.size() == 100);
+
+			filter = queryManager.createFilter(Atomic.class);
+			calendar = Calendar.getInstance();
+			calendar.set(1975, 12, 01);
+			filter.addLessThan("calendar", calendar);
+			query = queryManager.createQuery(filter);
+			
+			result = ocm.getObjects(query);			
+			assertTrue("Invalid number of objects - should be = 0 ", result.size() == 0);
+			
+			filter = queryManager.createFilter(Atomic.class);			
+			filter.addEqualTo("date", date);
+			query = queryManager.createQuery(filter);
+			
+			result = ocm.getObjects(query);			
+			assertTrue("Invalid number of objects - should be = 100 ", result.size() == 100);
+
+			filter = queryManager.createFilter(Atomic.class);			
+			filter.addBetween("date", date, new Date());
+			query = queryManager.createQuery(filter);
+			
+			result = ocm.getObjects(query);			
+			assertTrue("Invalid number of objects - should be = 100 ", result.size() == 100);
+
+			filter = queryManager.createFilter(Atomic.class);			
+			filter.addGreaterThan("date", date);
+			query = queryManager.createQuery(filter);
+			
+			result = ocm.getObjects(query);			
+			assertTrue("Invalid number of objects - should be = 0 ", result.size() == 0);
+
+			// Test contains method
+			filter = queryManager.createFilter(Atomic.class);			
+			filter.addContains(".", "JCR");
+			query = queryManager.createQuery(filter);
+			
+			result = ocm.getObjects(query);			
+			assertTrue("Invalid number of objects - should be = 50 ", result.size() == 50);
+			
+			filter = queryManager.createFilter(Atomic.class);			
+			filter.addContains("string", "JCR");
+			query = queryManager.createQuery(filter);
+			
+			result = ocm.getObjects(query);			
+			assertTrue("Invalid number of objects - should be = 50 ", result.size() == 50);
+			
+			filter = queryManager.createFilter(Atomic.class);			
+			filter.addContains("string", "ocm");
+			query = queryManager.createQuery(filter);
+			
+			result = ocm.getObjects(query);			
+			assertTrue("Invalid number of objects - should be = 0 ", result.size() == 0);
+
+
+			
+		}
+		catch (Exception e)
+		{
+			 e.printStackTrace();
+             fail();
+		}
+
+	}
+
+	private void importData(Date date)
+	{
+		try
+		{
+
+			ObjectContentManager ocm = getObjectContentManager();
+			
+			for (int i = 1; i <= 100; i++)
+			{
+				Atomic a = new Atomic();
+				a.setPath("/test" + i);
+				a.setBooleanObject(new Boolean(i%2==0));
+				a.setBooleanPrimitive(true);
+				a.setIntegerObject(new Integer(100 * i));
+				a.setIntPrimitive(200 + i);				
+				a.setDate(date);
+				Calendar calendar = Calendar.getInstance();
+				calendar.set(1976, 4, 20, 15, 40);
+				a.setCalendar(calendar);
+				a.setDoubleObject(new Double(2.12 + i));
+				a.setDoublePrimitive(1.23 + i);
+				long now = System.currentTimeMillis();
+				a.setTimestamp(new Timestamp(now));
+				if ((i % 2) == 0)
+				{
+					a.setString("Test String JCR " + i);
+				     a.setByteArray("This is small object stored in a JCR repository".getBytes());
+				     a.setInputStream(new ByteArrayInputStream("Test inputstream".getBytes()));
+				}
+				else
+				{
+					 a.setByteArray("This is small object stored in the ocm repository".getBytes());
+					 a.setInputStream(new ByteArrayInputStream("Another Stream".getBytes()));
+					 a.setString("Test String " + i);
+				}
+				ocm.insert(a);
+				
+				
+			}
+			ocm.save();
+
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+			fail("Exception occurs during the unit test : " + e);
+		}
+
+	}
+	
+}
\ No newline at end of file

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationIteratorQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationIteratorQueryTest.java?rev=584180&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationIteratorQueryTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationIteratorQueryTest.java Fri Oct 12 08:08:13 2007
@@ -0,0 +1,216 @@
+/*
+ * 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.manager.query;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+
+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.exception.JcrMappingException;
+import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
+import org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl;
+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.Page;
+import org.apache.jackrabbit.ocm.testmodel.Paragraph;
+
+
+/**
+ * Test Object Iterator
+ *
+ * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
+ */
+public class AnnotationIteratorQueryTest extends AnnotationTestBase
+{
+    private final static Log log = LogFactory.getLog(AnnotationIteratorQueryTest.class);
+
+    /**
+     * <p>Defines the test case name for junit.</p>
+     * @param testName The test case name.
+     */
+    public AnnotationIteratorQueryTest(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(AnnotationIteratorQueryTest.class));
+    }
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+		this.importData();
+        
+    }
+    
+    public void tearDown() throws Exception
+    {
+    	cleanUpRepisotory();
+        super.tearDown();
+    }	
+    
+    /**
+     * Test equalTo
+     *
+     */
+    public void testsetScope()
+    {
+
+    	try
+    	{
+    		
+    		  // No scope    		  
+    	      QueryManager queryManager = this.getQueryManager();
+    	      Filter filter = queryManager.createFilter(Page.class);        	      
+    	      Query query = queryManager.createQuery(filter);    	      
+    	      ObjectContentManager ocm = this.getObjectContentManager();
+    	      
+    	      long  start = System.currentTimeMillis();
+    	      Iterator iterator = ocm.getObjectIterator(query);
+    	      System.out.println("getObject takes : " + (System.currentTimeMillis() - start));
+    	          	      
+    	      start = System.currentTimeMillis();
+    	      Collection result = ocm.getObjects(query);
+    	      System.out.println("getObject takes : " + (System.currentTimeMillis() - start));   
+    	      
+    	      start = System.currentTimeMillis();
+    	      iterator = ocm.getObjectIterator(query);
+    	      System.out.println("getObject takes : " + (System.currentTimeMillis() - start));       	      
+
+    	      
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+
+    
+    private void importData() throws JcrMappingException 
+    {
+        
+    	try
+		{
+    		ObjectContentManager ocm = getObjectContentManager();
+    		
+        	if (ocm.objectExists("/test"))
+            {
+                ocm.remove("/test");
+            }
+        	
+			ObjectContentManagerImpl ocmImpl = (ObjectContentManagerImpl) ocm;
+			
+			Session session = ocmImpl.getSession();
+			Node root = session.getRootNode();
+			root.addNode("test");
+			root.addNode("test/node1");
+			root.addNode("test/node2");
+			
+			root.save();
+			
+			Page page = new Page();
+			page.setPath("/test/node1/page1");
+			page.setTitle("Page 1 Title");
+			
+			ArrayList paragraphs = new ArrayList();
+			
+			paragraphs.add(new Paragraph("Para 1"));
+			paragraphs.add(new Paragraph("Para 2"));
+			paragraphs.add(new Paragraph("Para 3"));
+			paragraphs.add(new Paragraph("Another Para "));
+			page.setParagraphs(paragraphs);
+			
+			ocm.insert(page);
+						
+			
+			page = new Page();
+			page.setPath("/test/node1/page2");
+			page.setTitle("Page 2 Title");
+			
+			paragraphs = new ArrayList();
+			
+			paragraphs.add(new Paragraph("Para 1"));
+			paragraphs.add(new Paragraph("Para 2"));
+			paragraphs.add(new Paragraph("Para 5"));
+			paragraphs.add(new Paragraph("Another Para"));
+			page.setParagraphs(paragraphs);
+			
+			ocm.insert(page);
+			
+			page = new Page();
+			page.setPath("/test/node2/page1");
+			page.setTitle("Page 3 Title");
+			
+			paragraphs = new ArrayList();
+			
+			paragraphs.add(new Paragraph("Para 1"));
+			paragraphs.add(new Paragraph("Para 4"));
+			paragraphs.add(new Paragraph("Para 5"));
+			paragraphs.add(new Paragraph("Another Para"));
+			page.setParagraphs(paragraphs);
+			
+			ocm.insert(page);
+
+			page = new Page();
+			page.setPath("/test/node2/page2");
+			page.setTitle("Page 4 Title");
+			
+			paragraphs = new ArrayList();
+			
+			paragraphs.add(new Paragraph("Para 6"));
+			paragraphs.add(new Paragraph("Para 7"));
+			paragraphs.add(new Paragraph("Para 8"));
+			paragraphs.add(new Paragraph("Another Para"));
+			page.setParagraphs(paragraphs);
+			
+			ocm.insert(page);
+			
+			ocm.save();
+			
+
+			
+		}
+		catch (RepositoryException e)
+		{
+			
+			e.printStackTrace();
+		}            
+                
+
+    }
+}
\ No newline at end of file

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationMultiValueQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationMultiValueQueryTest.java?rev=584180&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationMultiValueQueryTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationMultiValueQueryTest.java Fri Oct 12 08:08:13 2007
@@ -0,0 +1,169 @@
+/*
+ * 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.manager.query;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import javax.jcr.Node;
+import javax.jcr.Session;
+
+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.manager.impl.ObjectContentManagerImpl;
+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.MultiValue;
+
+/**
+ * Test NTCollectionConverterImpl
+ *
+ * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
+ */
+public class AnnotationMultiValueQueryTest extends AnnotationTestBase
+{
+    private final static Log log = LogFactory.getLog(AnnotationMultiValueQueryTest.class);
+
+    /**
+     * <p>Defines the test case name for junit.</p>
+     * @param testName The test case name.
+     */
+    public AnnotationMultiValueQueryTest(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(AnnotationMultiValueQueryTest.class));
+    }
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+		this.importData();
+        
+    }
+    
+    public void tearDown() throws Exception
+    {
+    	cleanUpRepisotory();
+        super.tearDown();
+    }	
+    
+    public void testMultiValueSearch()
+    {
+        try
+        {
+        	
+  	      QueryManager queryManager = this.getQueryManager();
+	      Filter filter = queryManager.createFilter(MultiValue.class);    
+	      filter.addEqualTo("multiValues", "Value1");
+	      Query query = queryManager.createQuery(filter);    	      
+	      ObjectContentManager ocm = this.getObjectContentManager();
+	      Collection result = ocm.getObjects(query);
+	      assertTrue("Invalid number of objects - should be = 3", result.size() == 3);            
+          
+  	      queryManager = this.getQueryManager();
+	      filter = queryManager.createFilter(MultiValue.class);    
+	      filter.addEqualTo("multiValues", "Value9");
+	      query = queryManager.createQuery(filter);    	      
+	      ocm = this.getObjectContentManager();
+	      result = ocm.getObjects(query);
+	      assertTrue("Invalid number of objects - should be = 1", result.size() == 1);
+	      MultiValue multiValue = (MultiValue)result.iterator().next();
+	      assertTrue("Incorrect MultiValue found ", multiValue.getName().equals("m3"));
+	      
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+
+
+    public void importData()
+    {
+        try
+        {
+        	ObjectContentManager ocm = getObjectContentManager();
+
+			ObjectContentManagerImpl ocmImpl = (ObjectContentManagerImpl) ocm;
+			
+			Session session = ocmImpl.getSession();
+			Node root = session.getRootNode();
+			root.addNode("test");
+
+            MultiValue multiValue = new MultiValue();
+            multiValue.setPath("/test/m1");
+            multiValue.setName("m1");
+            ArrayList values = new ArrayList();
+            values.add("Value1");
+            values.add("Value2");
+            values.add("Value3");
+            values.add("Value4");
+            multiValue.setMultiValues(values);
+            ocm.insert(multiValue);
+            
+            multiValue = new MultiValue();
+            multiValue.setPath("/test/m2");
+            multiValue.setName("m2");
+            values = new ArrayList();
+            values.add("Value1");
+            values.add("Value5");
+            values.add("Value6");
+            values.add("Value7");            
+            multiValue.setMultiValues(values);
+            ocm.insert(multiValue);
+            
+            multiValue = new MultiValue();
+            multiValue.setPath("/test/m3");
+            multiValue.setName("m3");
+            values = new ArrayList();
+            values.add("Value1");
+            values.add("Value2");
+            values.add("Value8");
+            values.add("Value9");
+            
+            multiValue.setMultiValues(values);
+            ocm.insert(multiValue);
+                                   
+            ocm.save();
+            
+        }
+        catch(Exception e)
+        {
+        	e.printStackTrace();
+        	fail("Impossible to insert objects");
+        }
+    	
+    }
+}
\ No newline at end of file

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationScopeQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationScopeQueryTest.java?rev=584180&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationScopeQueryTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationScopeQueryTest.java Fri Oct 12 08:08:13 2007
@@ -0,0 +1,249 @@
+/*
+ * 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.manager.query;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+
+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.DigesterTestBase;
+import org.apache.jackrabbit.ocm.exception.JcrMappingException;
+import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
+import org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl;
+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.Page;
+import org.apache.jackrabbit.ocm.testmodel.Paragraph;
+
+
+/**
+ * Test QueryManagerImpl Query methods
+ *
+ * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
+ */
+public class AnnotationScopeQueryTest extends AnnotationTestBase
+{
+    private final static Log log = LogFactory.getLog(AnnotationScopeQueryTest.class);
+
+    /**
+     * <p>Defines the test case name for junit.</p>
+     * @param testName The test case name.
+     */
+    public AnnotationScopeQueryTest(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(AnnotationScopeQueryTest.class));
+    }
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+		this.importData();
+		//this.importDocument("data.xml", "/");
+        
+		
+    }
+    
+    public void tearDown() throws Exception
+    {
+    	cleanUpRepisotory();
+        super.tearDown();
+    }	
+    
+    /**
+     * Test equalTo
+     *
+     */
+    public void testsetScope()
+    {
+
+    	try
+    	{
+    		
+              	      
+    	      ObjectContentManager ocm = this.getObjectContentManager();
+    	      // Search on subtree (test/node1)
+    	      QueryManager queryManager = this.getQueryManager();
+    	      Filter filter = queryManager.createFilter(Paragraph.class);    
+    	      filter.setScope("/test/node1//");
+    	      Query query = queryManager.createQuery(filter);    	      
+    	      ocm = this.getObjectContentManager();
+    	      Collection result = ocm.getObjects(query);
+    	      assertTrue("Invalid number of objects - should be = 8", result.size() == 8);
+    	      
+    	      
+    	      queryManager = this.getQueryManager();
+    	      filter = queryManager.createFilter(Paragraph.class);    
+    	      filter.setScope("/test//");
+    	      query = queryManager.createQuery(filter);    	      
+    	      ocm = this.getObjectContentManager();
+    	      result = ocm.getObjects(query);
+    	      assertTrue("Invalid number of objects - should be = 16", result.size() == 16);
+    	      
+    	      // Test on children 
+    	      queryManager = this.getQueryManager();
+    	      filter = queryManager.createFilter(Paragraph.class);    
+    	      filter.setScope("/test/");
+    	      query = queryManager.createQuery(filter);    	      
+    	      ocm = this.getObjectContentManager();
+    	      result = ocm.getObjects(query);
+    	      assertTrue("Invalid number of objects - should be = 0", result.size() == 0);
+    	      
+              // Search on scope and properties
+    	      queryManager = this.getQueryManager();
+    	      filter = queryManager.createFilter(Paragraph.class);    
+    	      filter.setScope("/test//");
+    	      filter.addEqualTo("text", "Para 1");
+    	      query = queryManager.createQuery(filter);    	      
+    	      ocm = this.getObjectContentManager();
+    	      result = ocm.getObjects(query);
+    	      assertTrue("Invalid number of objects - should be = 3", result.size() == 3);
+
+    	      
+    	      queryManager = this.getQueryManager();
+    	      filter = queryManager.createFilter(Paragraph.class);    
+    	      filter.setScope("/test//");
+    	      filter.addContains("text", "another");
+    	      query = queryManager.createQuery(filter);    	      
+    	      ocm = this.getObjectContentManager();
+    	      result = ocm.getObjects(query);
+    	      assertTrue("Invalid number of objects - should be = 4", result.size() == 4);
+    	      
+    	      queryManager = this.getQueryManager();
+    	      filter = queryManager.createFilter(Page.class);    
+    	      filter.setScope("/test/node1/");    	      
+    	      query = queryManager.createQuery(filter);    	      
+    	      ocm = this.getObjectContentManager();
+    	      result = ocm.getObjects(query);
+    	      assertTrue("Invalid number of objects - should be = 2", result.size() == 2);
+    	      assertTrue ("Invalid object in the collection" , this.contains(result, "/test/node1/page1", Page.class));
+    	      assertTrue ("Invalid object in the collection" , this.contains(result, "/test/node1/page2", Page.class));
+    	      
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+
+    
+    private void importData() throws JcrMappingException 
+    {
+        
+    	try
+		{
+    		ObjectContentManager ocm = getObjectContentManager();
+        	
+			ObjectContentManagerImpl ocmImpl = (ObjectContentManagerImpl) ocm;
+			
+			Session session = ocmImpl.getSession();
+			Node root = session.getRootNode();
+			root.addNode("test");
+			root.addNode("test/node1");
+			root.addNode("test/node2");
+			
+			Page page = new Page();
+			page.setPath("/test/node1/page1");
+			page.setTitle("Page 1 Title");
+			
+			ArrayList paragraphs = new ArrayList();
+			
+			paragraphs.add(new Paragraph("Para 1"));
+			paragraphs.add(new Paragraph("Para 2"));
+			paragraphs.add(new Paragraph("Para 3"));
+			paragraphs.add(new Paragraph("Another Para "));
+			page.setParagraphs(paragraphs);
+			
+			ocm.insert(page);
+						
+			
+			page = new Page();
+			page.setPath("/test/node1/page2");
+			page.setTitle("Page 2 Title");
+			
+			paragraphs = new ArrayList();
+			
+			paragraphs.add(new Paragraph("Para 1"));
+			paragraphs.add(new Paragraph("Para 2"));
+			paragraphs.add(new Paragraph("Para 5"));
+			paragraphs.add(new Paragraph("Another Para"));
+			page.setParagraphs(paragraphs);
+			
+			ocm.insert(page);
+			
+			page = new Page();
+			page.setPath("/test/node2/page1");
+			page.setTitle("Page 3 Title");
+			
+			paragraphs = new ArrayList();
+			
+			paragraphs.add(new Paragraph("Para 1"));
+			paragraphs.add(new Paragraph("Para 4"));
+			paragraphs.add(new Paragraph("Para 5"));
+			paragraphs.add(new Paragraph("Another Para"));
+			page.setParagraphs(paragraphs);
+			
+			ocm.insert( page);
+
+			page = new Page();
+			page.setPath("/test/node2/page2");
+			page.setTitle("Page 4 Title");
+			
+			paragraphs = new ArrayList();
+			
+			paragraphs.add(new Paragraph("Para 6"));
+			paragraphs.add(new Paragraph("Para 7"));
+			paragraphs.add(new Paragraph("Para 8"));
+			paragraphs.add(new Paragraph("Another Para"));
+			page.setParagraphs(paragraphs);
+			
+			ocm.insert(page);
+			ocm.save();
+			
+			
+		}
+		catch (RepositoryException e)
+		{
+			
+			e.printStackTrace();
+		}            
+                
+
+    }
+}
\ No newline at end of file

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationSimpleQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationSimpleQueryTest.java?rev=584180&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationSimpleQueryTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/AnnotationSimpleQueryTest.java Fri Oct 12 08:08:13 2007
@@ -0,0 +1,279 @@
+/*
+ * 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.manager.query;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+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.DigesterTestBase;
+import org.apache.jackrabbit.ocm.exception.JcrMappingException;
+import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
+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.Page;
+import org.apache.jackrabbit.ocm.testmodel.Paragraph;
+
+
+/**
+ * Test QueryManagerImpl Query methods
+ *
+ * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
+ */
+public class AnnotationSimpleQueryTest extends AnnotationTestBase
+{
+    private final static Log log = LogFactory.getLog(AnnotationSimpleQueryTest.class);
+
+    /**
+     * <p>Defines the test case name for junit.</p>
+     * @param testName The test case name.
+     */
+    public AnnotationSimpleQueryTest(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(AnnotationSimpleQueryTest.class));
+    }
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        importData();
+    }
+
+    /**
+     * @see junit.framework.TestCase#tearDown()
+     */
+    public void tearDown() throws Exception
+    {
+    	cleanUpRepisotory();
+        super.tearDown();
+    }
+    
+    /**
+     * Test equalTo
+     *
+     */
+    public void testGetObjectEqualsTo()
+    {
+
+    	try
+    	{
+    		    		      		 
+    		  // Build the Query Object
+    	      QueryManager queryManager = this.getQueryManager();
+    	      Filter filter = queryManager.createFilter(Paragraph.class);
+    	      filter.addEqualTo("text", "Para 1");    	          	     
+    	      
+    	      
+    	      Query query = queryManager.createQuery(filter);
+    	      
+    	      ObjectContentManager ocm = this.getObjectContentManager();
+    	      Paragraph paragraph = (Paragraph) ocm.getObject(query);
+    	      assertNotNull("Object is null", paragraph);    	      
+    	      assertTrue("Invalid paragraph found" , paragraph.getText().equals("Para 1"));
+            
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }    
+    
+    /**
+     * Test equalTo
+     *
+     */
+    public void testGetObjectsEqualsTo()
+    {
+
+    	try
+    	{
+    		    		      		 
+    		  // Build the Query Object
+    	      QueryManager queryManager = this.getQueryManager();
+    	      Filter filter = queryManager.createFilter(Paragraph.class);
+    	      filter.addEqualTo("text", "Para 1");    	          	     
+    	      filter.setScope("/test/");
+    	      
+    	      Query query = queryManager.createQuery(filter);
+    	      
+    	      ObjectContentManager ocm = this.getObjectContentManager();
+    	      Collection result = ocm.getObjects(query);
+    	      assertEquals("Invalid number of objects - should be = 1", 1, result.size());
+    	      Paragraph paragraph = (Paragraph) result.iterator().next();
+    	      assertTrue("Invalid paragraph found" , paragraph.getText().equals("Para 1"));
+            
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+
+    /**
+     * Test the like "like" expression
+     */
+    public void testGetObjectsLike()
+    {
+
+    	try
+    	{
+    		
+    		  // Build the Query Object
+    	      QueryManager queryManager = this.getQueryManager();
+    	      Filter filter = queryManager.createFilter(Paragraph.class);
+    	      filter.addLike("text", "Para%");    	          	     
+    	      filter.setScope("/test/");
+    	      
+    	      Query query = queryManager.createQuery(filter);
+    	      
+    	      ObjectContentManager ocm = this.getObjectContentManager();
+    	      Collection result = ocm.getObjects(query);
+    	      assertEquals("Invalid number of objects - should be = 3", 3, result.size());
+
+    	      Paragraph[] paragraphs = (Paragraph[]) result.toArray(new Paragraph[result.size()]);
+    	      assertTrue("Invalid paragraph found", paragraphs[0].getText().equals("Para 1"));
+    	      assertTrue("Invalid paragraph found", paragraphs[1].getText().equals("Para 2"));
+    	      assertTrue("Invalid paragraph found", paragraphs[2].getText().equals("Para 3"));
+    	      
+
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+    
+    
+    /**
+     * Build an or expression between 2 filters
+     *
+     */
+    public void testGetObjectsOr()
+    {
+
+    	try
+    	{
+    		
+    		  // Build the Query Object
+    	      QueryManager queryManager = this.getQueryManager();
+    	      Filter filter1 = queryManager.createFilter(Paragraph.class);
+    	      filter1.addEqualTo("text", "Para 1");    	     
+    	      filter1.setScope("/test/");
+
+    	      Filter filter2 = queryManager.createFilter(Paragraph.class);
+    	      filter2.addEqualTo("text", "Para 2");    	     
+    	      
+              filter1.addOrFilter(filter2);
+    	      
+    	      Query query = queryManager.createQuery(filter1);
+    	      
+    	      ObjectContentManager ocm = this.getObjectContentManager();
+    	      Collection result = ocm.getObjects(query);
+    	      assertEquals("Invalid number of objects - should be = 2", 2, result.size());
+    	      
+    	      Paragraph[] paragraphs = (Paragraph[]) result.toArray(new Paragraph[result.size()]);
+    	      assertTrue("Invalid paragraph found", paragraphs[0].getText().equals("Para 1"));
+    	      assertTrue("Invalid paragraph found", paragraphs[1].getText().equals("Para 2"));
+            
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+    
+    public void testGetObjectOrderBy()
+    {
+
+    	try
+    	{
+    		
+    		  // Build the Query Object
+    	      QueryManager queryManager = this.getQueryManager();
+    	      Filter filter = queryManager.createFilter(Paragraph.class);
+    	      filter.addLike("text", "Para%");    	          	     
+    	      filter.setScope("/test/");
+    	      
+    	      Query query = queryManager.createQuery(filter);
+    	      query.addOrderByDescending("text");
+    	      
+    	      ObjectContentManager ocm = this.getObjectContentManager();
+    	      Collection result = ocm.getObjects(query);
+    	      assertEquals("Invalid number of objects - should be = 3", 3, result.size());
+
+    	      Paragraph[] paragraphs = (Paragraph[]) result.toArray(new Paragraph[result.size()]);
+    	      assertTrue("Invalid paragraph found", paragraphs[0].getText().equals("Para 3"));
+    	      assertTrue("Invalid paragraph found", paragraphs[1].getText().equals("Para 2"));
+    	      assertTrue("Invalid paragraph found", paragraphs[2].getText().equals("Para 1"));
+    	      
+
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+    
+    private void importData() throws JcrMappingException 
+    {
+    	ObjectContentManager ocm = getObjectContentManager();
+
+        Page page = new Page();
+        page.setPath("/test");
+        page.setTitle("Page Title");
+        
+        ArrayList paragraphs = new ArrayList();
+        
+        paragraphs.add(new Paragraph("Para 1"));
+        paragraphs.add(new Paragraph("Para 2"));
+        paragraphs.add(new Paragraph("Para 3"));
+        paragraphs.add(new Paragraph("Another Para "));
+        page.setParagraphs(paragraphs);
+        
+        ocm.insert(page);  
+        ocm.save();
+                
+
+    }
+}
\ No newline at end of file

Copied: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterAtomicQueryTest.java (from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerAtomicQueryTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterAtomicQueryTest.java?p2=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterAtomicQueryTest.java&p1=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerAtomicQueryTest.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/query/ObjectContentManagerAtomicQueryTest.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterAtomicQueryTest.java Fri Oct 12 08:08:13 2007
@@ -40,16 +40,16 @@
  *
  * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
  */
-public class ObjectContentManagerAtomicQueryTest extends DigesterTestBase
+public class DigesterAtomicQueryTest extends DigesterTestBase
 {
-	private final static Log log = LogFactory.getLog(ObjectContentManagerAtomicQueryTest.class);
+	private final static Log log = LogFactory.getLog(DigesterAtomicQueryTest.class);
 	private Date date = new Date();
 	
 	/**
 	 * <p>Defines the test case name for junit.</p>
 	 * @param testName The test case name.
 	 */
-	public ObjectContentManagerAtomicQueryTest(String testName) throws Exception
+	public DigesterAtomicQueryTest(String testName) throws Exception
 	{
 		super(testName);
 		
@@ -58,7 +58,7 @@
 	public static Test suite()
 	{
 		// All methods starting with "test" will be executed in the test suite.
-		return new RepositoryLifecycleTestSetup(new TestSuite(ObjectContentManagerAtomicQueryTest.class));
+		return new RepositoryLifecycleTestSetup(new TestSuite(DigesterAtomicQueryTest.class));
 	}
 	
     

Copied: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterIteratorQueryTest.java (from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerIteratorQueryTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterIteratorQueryTest.java?p2=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterIteratorQueryTest.java&p1=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerIteratorQueryTest.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/query/ObjectContentManagerIteratorQueryTest.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterIteratorQueryTest.java Fri Oct 12 08:08:13 2007
@@ -46,15 +46,15 @@
  *
  * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
  */
-public class ObjectContentManagerIteratorQueryTest extends DigesterTestBase
+public class DigesterIteratorQueryTest extends DigesterTestBase
 {
-    private final static Log log = LogFactory.getLog(ObjectContentManagerIteratorQueryTest.class);
+    private final static Log log = LogFactory.getLog(DigesterIteratorQueryTest.class);
 
     /**
      * <p>Defines the test case name for junit.</p>
      * @param testName The test case name.
      */
-    public ObjectContentManagerIteratorQueryTest(String testName)  throws Exception
+    public DigesterIteratorQueryTest(String testName)  throws Exception
     {
         super(testName);
     }
@@ -63,7 +63,7 @@
     {
         // All methods starting with "test" will be executed in the test suite.
         return new RepositoryLifecycleTestSetup(
-                new TestSuite(ObjectContentManagerIteratorQueryTest.class));
+                new TestSuite(DigesterIteratorQueryTest.class));
     }
 
     /**
@@ -78,12 +78,7 @@
     
     public void tearDown() throws Exception
     {
-        if (getObjectContentManager().objectExists("/test"))
-        {
-            getObjectContentManager().remove("/test");
-            
-        }    
-        getObjectContentManager().save();
+    	cleanUpRepisotory();
         super.tearDown();
     }	
     

Copied: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterMultiValueQueryTest.java (from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerMultiValueQueryTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterMultiValueQueryTest.java?p2=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterMultiValueQueryTest.java&p1=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerMultiValueQueryTest.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/query/ObjectContentManagerMultiValueQueryTest.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterMultiValueQueryTest.java Fri Oct 12 08:08:13 2007
@@ -41,15 +41,15 @@
  *
  * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
  */
-public class ObjectContentManagerMultiValueQueryTest extends DigesterTestBase
+public class DigesterMultiValueQueryTest extends DigesterTestBase
 {
-    private final static Log log = LogFactory.getLog(ObjectContentManagerMultiValueQueryTest.class);
+    private final static Log log = LogFactory.getLog(DigesterMultiValueQueryTest.class);
 
     /**
      * <p>Defines the test case name for junit.</p>
      * @param testName The test case name.
      */
-    public ObjectContentManagerMultiValueQueryTest(String testName)  throws Exception
+    public DigesterMultiValueQueryTest(String testName)  throws Exception
     {
         super(testName);
     }
@@ -58,7 +58,7 @@
     {
         // All methods starting with "test" will be executed in the test suite.
         return new RepositoryLifecycleTestSetup(
-                new TestSuite(ObjectContentManagerMultiValueQueryTest.class));
+                new TestSuite(DigesterMultiValueQueryTest.class));
     }
 
     /**
@@ -73,12 +73,7 @@
     
     public void tearDown() throws Exception
     {
-        if (getObjectContentManager().objectExists("/test"))
-        {
-            getObjectContentManager().remove("/test");
-            
-        }    
-        getObjectContentManager().save();
+    	cleanUpRepisotory();
         super.tearDown();
     }	
     

Copied: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterScopeQueryTest.java (from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerScopeQueryTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterScopeQueryTest.java?p2=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterScopeQueryTest.java&p1=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerScopeQueryTest.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/query/ObjectContentManagerScopeQueryTest.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterScopeQueryTest.java Fri Oct 12 08:08:13 2007
@@ -45,15 +45,15 @@
  *
  * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
  */
-public class ObjectContentManagerScopeQueryTest extends DigesterTestBase
+public class DigesterScopeQueryTest extends DigesterTestBase
 {
-    private final static Log log = LogFactory.getLog(ObjectContentManagerScopeQueryTest.class);
+    private final static Log log = LogFactory.getLog(DigesterScopeQueryTest.class);
 
     /**
      * <p>Defines the test case name for junit.</p>
      * @param testName The test case name.
      */
-    public ObjectContentManagerScopeQueryTest(String testName)  throws Exception
+    public DigesterScopeQueryTest(String testName)  throws Exception
     {
         super(testName);
     }
@@ -62,7 +62,7 @@
     {
         // All methods starting with "test" will be executed in the test suite.
         return new RepositoryLifecycleTestSetup(
-                new TestSuite(ObjectContentManagerScopeQueryTest.class));
+                new TestSuite(DigesterScopeQueryTest.class));
     }
 
     /**
@@ -79,11 +79,7 @@
     
     public void tearDown() throws Exception
     {
-        if (getObjectContentManager().objectExists("/test"))
-        {
-            getObjectContentManager().remove("/test");            
-        }    
-        getObjectContentManager().save();
+    	cleanUpRepisotory();
         super.tearDown();
     }	
     

Copied: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterSimpleQueryTest.java (from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerSimpleQueryTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterSimpleQueryTest.java?p2=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterSimpleQueryTest.java&p1=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/ObjectContentManagerSimpleQueryTest.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/query/ObjectContentManagerSimpleQueryTest.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/query/DigesterSimpleQueryTest.java Fri Oct 12 08:08:13 2007
@@ -40,15 +40,15 @@
  *
  * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
  */
-public class ObjectContentManagerSimpleQueryTest extends DigesterTestBase
+public class DigesterSimpleQueryTest extends DigesterTestBase
 {
-    private final static Log log = LogFactory.getLog(ObjectContentManagerSimpleQueryTest.class);
+    private final static Log log = LogFactory.getLog(DigesterSimpleQueryTest.class);
 
     /**
      * <p>Defines the test case name for junit.</p>
      * @param testName The test case name.
      */
-    public ObjectContentManagerSimpleQueryTest(String testName)  throws Exception
+    public DigesterSimpleQueryTest(String testName)  throws Exception
     {
         super(testName);
     }
@@ -57,7 +57,7 @@
     {
         // All methods starting with "test" will be executed in the test suite.
         return new RepositoryLifecycleTestSetup(
-                new TestSuite(ObjectContentManagerSimpleQueryTest.class));
+                new TestSuite(DigesterSimpleQueryTest.class));
     }
 
     /**
@@ -74,8 +74,7 @@
      */
     public void tearDown() throws Exception
     {
-    	getObjectContentManager().remove("/test");
-    	getObjectContentManager().save();
+    	cleanUpRepisotory();
     	
         super.tearDown();
     }

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/AllTests.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/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/uuid/AllTests.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/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.jcr.manager.uuid");
         //$JUnit-BEGIN$
-        suite.addTestSuite(ObjectContentManagerUuidTest.class);
+        suite.addTestSuite(AnnotationUuidTest.class);
+        suite.addTestSuite(DigesterUuidTest.class);
         
         //$JUnit-END$
 

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/AnnotationUuidTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/AnnotationUuidTest.java?rev=584180&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/AnnotationUuidTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/AnnotationUuidTest.java Fri Oct 12 08:08:13 2007
@@ -0,0 +1,523 @@
+/*
+ * 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.manager.uuid;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+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.uuid.A;
+import org.apache.jackrabbit.ocm.testmodel.uuid.B;
+import org.apache.jackrabbit.ocm.testmodel.uuid.B2;
+import org.apache.jackrabbit.ocm.testmodel.uuid.Descendant;
+
+
+/**
+ * Test on UUID & references
+ *
+ * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
+ */
+public class AnnotationUuidTest extends AnnotationTestBase
+{
+    private final static Log log = LogFactory.getLog(AnnotationUuidTest.class);
+
+    /**
+     * <p>Defines the test case name for junit.</p>
+     * @param testName The test case name.
+     */
+    public AnnotationUuidTest(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(AnnotationUuidTest.class));
+    }
+
+
+    /**
+     * @see junit.framework.TestCase#tearDown()
+     */
+    public void tearDown() throws Exception
+    {
+    	cleanUpRepisotory();    	
+        super.tearDown();
+    }
+    
+    /**
+     * 
+     *  Map the jcr uuid into a String attribute
+     *  
+     */
+    public void testUuid()
+    {
+        try
+        {
+        	ObjectContentManager ocm = getObjectContentManager();
+
+
+            // --------------------------------------------------------------------------------
+            // Create and store an object A in the repository
+            // --------------------------------------------------------------------------------
+            A a = new A();
+            a.setPath("/test");
+            a.setStringData("testdata");
+            ocm.insert(a);
+            ocm.save();           
+
+            // --------------------------------------------------------------------------------
+            // Get the object
+            // --------------------------------------------------------------------------------           
+            a = (A) ocm.getObject( "/test");
+            assertNotNull("a is null", a);
+            String uuidA = a.getUuid();
+            assertNotNull("uuid is null", uuidA);
+            System.out.println("UUID : " + uuidA);
+            
+            // --------------------------------------------------------------------------------
+            // Update the object
+            // --------------------------------------------------------------------------------
+            a.setStringData("testdata2");
+            ocm.update(a);
+            ocm.save();
+
+            // --------------------------------------------------------------------------------
+            // Get the object
+            // --------------------------------------------------------------------------------           
+            a = (A) ocm.getObject("/test");
+            assertNotNull("a is null", a);
+            assertTrue("The uuid has been modified", uuidA.equals(a.getUuid()));
+            
+            // --------------------------------------------------------------------------------
+            // Get the object with the uuid
+            // --------------------------------------------------------------------------------           
+            a = (A) ocm.getObjectByUuid(uuidA);
+            assertNotNull("a is null", a);
+            assertTrue("Invalid object found with the uuid ", "testdata2".equals(a.getStringData()));
+            
+            // --------------------------------------------------------------------------------
+            // Get the object with an invalid uuid
+            // --------------------------------------------------------------------------------           
+            try 
+            {
+                a = (A) ocm.getObjectByUuid("1234");
+                fail("Exception not throw");
+            }
+            catch(Exception e)
+            {
+            	//Throws an exception due to an invalid uuid
+            	System.out.println(e);
+
+            }
+            
+            
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+    /**
+     * 
+     * Map a Reference into a String attribute. 
+     * Object B has an attribute containing the object A uuid. 
+     *
+     */
+    public void testFieldReference()
+    {
+        try
+        {
+        	ObjectContentManager ocm = getObjectContentManager();
+
+            // --------------------------------------------------------------------------------
+            // Create and store an object A in the repository
+            // --------------------------------------------------------------------------------
+            A a = new A();
+            a.setPath("/test");
+            a.setStringData("testdata");
+            ocm.insert(a);
+            ocm.save();           
+
+            // --------------------------------------------------------------------------------
+            // Get the object
+            // --------------------------------------------------------------------------------           
+            a = (A) ocm.getObject( "/test");
+            assertNotNull("a is null", a);
+            String uuidA = a.getUuid();
+            assertNotNull("uuid is null", uuidA);
+            System.out.println("UUID : " + uuidA);
+                        
+            // --------------------------------------------------------------------------------
+            // Create and store an object B in the repository which has a reference to A
+            // --------------------------------------------------------------------------------
+            B b = new B();
+            b.setReference2A(uuidA);
+            b.setPath("/testB");
+            ocm.insert(b);
+            ocm.save();
+            
+            // --------------------------------------------------------------------------------
+            // Retrieve the object B with an invalid reference 
+            // --------------------------------------------------------------------------------            
+            b = (B) ocm.getObject("/testB");
+            assertNotNull("b is null", b);
+            assertTrue("Invalid uuid property", b.getReference2A().equals(uuidA));
+            
+            // --------------------------------------------------------------------------------
+            // Update the object B with an invalid reference 
+            // --------------------------------------------------------------------------------
+            b.setReference2A("1245");
+            try
+            {
+            	ocm.update(b);            	
+            	fail("Exception not throw");
+            }
+            catch(Exception e)
+            {
+            	//Throws an exception due to an invalid uuid
+            	System.out.println("Invalid uuid : " + e);
+            	
+            }
+            
+            
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+
+    /**
+     * 
+     * Map a Reference into a bean attribute. 
+     * Object B has an attribute containing the object A. 
+     * The jcr node matching to the object B contains a reference (the jcr node matching to the object B).   
+     *
+     */
+    public void testBeanReference()
+    {
+        try
+        {
+        	ObjectContentManager ocm = getObjectContentManager();
+
+            // --------------------------------------------------------------------------------
+            // Create and store an object A in the repository
+            // --------------------------------------------------------------------------------
+            A a = new A();
+            a.setPath("/test");
+            a.setStringData("testdata");
+            ocm.insert(a);
+            ocm.save();           
+
+            // --------------------------------------------------------------------------------
+            // Get the object a
+            // --------------------------------------------------------------------------------           
+            a = (A) ocm.getObject( "/test");
+            assertNotNull("a is null", a);
+            String uuidA = a.getUuid();
+            assertNotNull("uuid is null", uuidA);
+            System.out.println("UUID : " + uuidA);
+            
+            // --------------------------------------------------------------------------------
+            // Create and store an object B in the repository which has a reference to A
+            // --------------------------------------------------------------------------------
+            B2 b = new B2();
+            b.setA(a);
+            b.setPath("/testB2");
+            ocm.insert(b);
+            ocm.save();
+            
+            // --------------------------------------------------------------------------------
+            // Retrieve object B
+            // --------------------------------------------------------------------------------
+            b = (B2) ocm.getObject("/testB2");
+            a = b.getA();
+            assertNotNull("a is null", a);
+            assertTrue("Invalid object a", a.getStringData().equals("testdata"));
+            assertTrue("Invalid uuid property", a.getUuid().equals(uuidA));
+
+            // --------------------------------------------------------------------------------
+            // Update object B with an null value
+            // --------------------------------------------------------------------------------
+            b.setA(null);
+            ocm.update(b);
+            ocm.save();
+            
+            // --------------------------------------------------------------------------------
+            // Retrieve object B
+            // --------------------------------------------------------------------------------
+            b = (B2) ocm.getObject("/testB2");
+            a = b.getA();
+            assertNull("a is not null", a);
+            
+            
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+
+    /**
+     * Map a list of uuid  into a collection of String 
+     * The list is defined in a jcr property (Referece type / multi values) 
+     *
+     */
+    public void testCollectionOfUuid()
+    {
+        try
+        {
+        	ObjectContentManager ocm = getObjectContentManager();
+
+            // --------------------------------------------------------------------------------
+            // Create and store an object A in the repository
+            // --------------------------------------------------------------------------------
+            A a1 = new A();
+            a1.setPath("/a1");
+            a1.setStringData("testdata1");
+            ocm.insert(a1);
+            
+            A a2 = new A();
+            a2.setPath("/a2");
+            a2.setStringData("testdata2");
+            ocm.insert(a2);            
+            ocm.save();           
+
+            // --------------------------------------------------------------------------------
+            // Get the objects
+            // --------------------------------------------------------------------------------           
+            a1 = (A) ocm.getObject( "/a1");
+            assertNotNull("a1 is null", a1);
+            a2 = (A) ocm.getObject( "/a2");
+            assertNotNull("a2 is null", a2);
+            ArrayList references = new ArrayList();
+            references.add(a1.getUuid());
+            references.add(a2.getUuid());
+            
+            // --------------------------------------------------------------------------------
+            // Create and store an object B in the repository which has a collection of A
+            // --------------------------------------------------------------------------------
+            B b = new B();
+            b.setPath("/testB");
+            b.setMultiReferences(references);
+            ocm.insert(b);
+            ocm.save();
+            
+            // --------------------------------------------------------------------------------
+            // Retrieve object B
+            // --------------------------------------------------------------------------------
+            b = (B) ocm.getObject("/testB");
+            Collection allref = b.getMultiReferences();
+            assertNotNull("collection is null", allref);
+            assertTrue("Invalid number of items in the collection", allref.size() == 2);
+
+            // --------------------------------------------------------------------------------
+            // Update object B with invalid uuid
+            // --------------------------------------------------------------------------------
+            allref.add("12345");
+            b.setMultiReferences(allref);
+            try
+            {
+            	ocm.update(b);            	
+            	fail("Exception not throw");
+            }
+            catch(Exception e)
+            {
+            	//Throws an exception due to an invalid uuid
+            	System.out.println("Invalid uuid value in the collection : " + e);
+            	
+            }
+            
+            // --------------------------------------------------------------------------------
+            // Update object B with an null value
+            // --------------------------------------------------------------------------------
+            b.setMultiReferences(null);
+            ocm.update(b);
+            ocm.save();
+            
+            // --------------------------------------------------------------------------------
+            // Retrieve object B
+            // --------------------------------------------------------------------------------
+            b = (B) ocm.getObject("/testB");            
+            assertNull("a is not null", b.getMultiReferences());
+            
+            
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+
+    /**
+     * Map a list of uuid  into a collection
+     * The list is defined in a jcr property (multi values) 
+     *
+     */
+    public void testCollectionOfBeanWithUuid()
+    {
+        try
+        {
+        	ObjectContentManager ocm = getObjectContentManager();
+
+            // --------------------------------------------------------------------------------
+            // Create and store an object A in the repository
+            // --------------------------------------------------------------------------------
+            A a1 = new A();
+            a1.setPath("/a1");
+            a1.setStringData("testdata1");
+            ocm.insert(a1);
+            
+            A a2 = new A();
+            a2.setPath("/a2");
+            a2.setStringData("testdata2");
+            ocm.insert(a2);            
+            ocm.save();           
+
+            // --------------------------------------------------------------------------------
+            // Get the objects
+            // --------------------------------------------------------------------------------           
+            a1 = (A) ocm.getObject( "/a1");
+            assertNotNull("a1 is null", a1);
+            a2 = (A) ocm.getObject( "/a2");
+            assertNotNull("a2 is null", a2);
+            ArrayList references = new ArrayList();
+            references.add(a1);
+            references.add(a2);
+            
+            // --------------------------------------------------------------------------------
+            // Create and store an object B in the repository which has a collection of A
+            // --------------------------------------------------------------------------------
+            B2 b = new B2();
+            b.setPath("/testB2");
+            b.setMultiReferences(references);
+            ocm.insert(b);
+            ocm.save();
+            
+            // --------------------------------------------------------------------------------
+            // Retrieve object B
+            // --------------------------------------------------------------------------------
+            b = (B2) ocm.getObject("/testB2");
+            Collection allref = b.getMultiReferences();
+            assertNotNull("collection is null", allref);
+            assertTrue("Invalid number of items in the collection", allref.size() == 2);
+            this.contains(allref, "/a1" , A.class);
+            this.contains(allref, "/a2" , A.class);
+
+            // --------------------------------------------------------------------------------
+            // Update object B with an null value
+            // --------------------------------------------------------------------------------
+            b.setMultiReferences(null);
+            ocm.update(b);
+            ocm.save();
+            
+            // --------------------------------------------------------------------------------
+            // Retrieve object B
+            // --------------------------------------------------------------------------------
+            b = (B2) ocm.getObject("/testB2");            
+            assertNull("a is not null", b.getMultiReferences());
+            
+            
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+    
+    
+    /**
+     * Test on uuid field defined in an ancestor class
+     *
+     */
+    public void testDescendantAncestor()
+    {
+        try
+        {
+        	ObjectContentManager ocm = getObjectContentManager();
+
+
+            // --------------------------------------------------------------------------------
+            // Create and store an object A in the repository
+            // --------------------------------------------------------------------------------
+            Descendant a = new Descendant();
+            a.setPath("/descendant");
+            a.setStringData("testdata");
+            ocm.insert(a);
+            ocm.save();           
+
+            // --------------------------------------------------------------------------------
+            // Get the object
+            // --------------------------------------------------------------------------------           
+            a = (Descendant) ocm.getObject( "/descendant");
+            assertNotNull("a is null", a);
+            String uuidA = a.getUuid();
+            assertNotNull("uuid is null", uuidA);
+            System.out.println("UUID : " + uuidA);
+            
+            // --------------------------------------------------------------------------------
+            // Update the object
+            // --------------------------------------------------------------------------------
+            a.setStringData("testdata2");
+            ocm.update(a);
+            ocm.save();
+
+            // --------------------------------------------------------------------------------
+            // Get the object
+            // --------------------------------------------------------------------------------           
+            a = (Descendant) ocm.getObject("/descendant");
+            assertNotNull("a is null", a);
+            assertTrue("The uuid has been modified", uuidA.equals(a.getUuid()));
+            
+            // --------------------------------------------------------------------------------
+            // Get the object with the uuid
+            // --------------------------------------------------------------------------------           
+            a = (Descendant) ocm.getObjectByUuid(uuidA);
+            assertNotNull("a is null", a);
+            assertTrue("Invalid object found with the uuid ", "testdata2".equals(a.getStringData()));
+            
+            
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+
+}
\ No newline at end of file