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/07 22:54:58 UTC

svn commit: r582680 [1/3] - in /jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src: main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ main/java/org/apache/jackrabbit/ocm/mapper/impl/ main/java/org/apache/jackrabbit/ocm/mapp...

Author: clombart
Date: Sun Oct  7 13:54:52 2007
New Revision: 582680

URL: http://svn.apache.org/viewvc?rev=582680&view=rev
Log:
Add more unit tests for the annotation support. 

Added:
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationAvoidRecursiveLoopTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationCopyMoveTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationRemoveTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationSameNameSiblingTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationSimpleTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterAvoidRecursiveLoopTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerAvoidRecursiveLoopTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterCopyMoveTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerCopyMoveTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterRemoveTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterSameNameSiblingTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerSameNameSiblingTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterSimpleTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/AnnotationBeanDescriptorTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/DigesterBeanDescriptorTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/BeanDescriptorTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationArrayListTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationDefaultCollectionConverterImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationHashMapTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationMultiValueCollectionConverterImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationNTCollectionConverterImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationResidualNodesCollectionConverterImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AnnotationResidualPropertiesCollectionConverterImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterArrayListTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ArrayListTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterDefaultCollectionConverterImplTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DefaultCollectionConverterImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterHashMapTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/HashMapTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterMultiValueCollectionConverterImplTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/MultiValueCollectionConverterImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterNTCollectionConverterImplTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/NTCollectionConverterImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterResidualNodesCollectionConverterImplTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ResidualNodesCollectionConverterImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterResidualPropertiesCollectionConverterImplTest.java
      - copied, changed from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ResidualPropertiesCollectionConverterImplTest.java
Removed:
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerAvoidRecursiveLoopTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerCopyMoveTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerRemoveTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerSameNameSiblingTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/BeanDescriptorTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ArrayListTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DefaultCollectionConverterImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/HashMapTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/MultiValueCollectionConverterImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/NTCollectionConverterImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ResidualNodesCollectionConverterImplTest.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/ResidualPropertiesCollectionConverterImplTest.java
Modified:
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/AbstractMapperImpl.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/AnnotationDescriptorReader.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/Collection.java
    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/basic/AllTests.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/AllTests.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/FakeBeanConverter.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/AllTests.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/A.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/B.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/C.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/D.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/DFull.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/E.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/MultiValue.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/Page.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/Paragraph.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/Residual.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/Element.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/collection/Main.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/crossreference/A.java
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/testmodel/crossreference/B.java

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java?rev=582680&r1=582679&r2=582680&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java Sun Oct  7 13:54:52 2007
@@ -586,7 +586,8 @@
 			throw new JcrMappingException(
 					"Class of type: "
 							+ object.getClass().getName()
-							+ " has no path mapping. Maybe attribute path=\"true\" for a field element of this class in jcrmapping.xml is missing?");
+							+ " has no path mapping. Maybe attribute path=\"true\" for a field element of this class in mapping descriptor is missing " +
+							  " or maybe it is defined in an ancestor class which has no mapping descriptor.");
 		}
 		String pathField = pathFieldDescriptor.getFieldName();
 

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/AbstractMapperImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/AbstractMapperImpl.java?rev=582680&r1=582679&r2=582680&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/AbstractMapperImpl.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/AbstractMapperImpl.java Sun Oct  7 13:54:52 2007
@@ -38,8 +38,10 @@
  *
  * Abstract class for {@link org.apache.jackrabbit.ocm.mapper.Mapper}
  *
- * @author <a href="mailto:christophe.lombart@sword-technologies.com">Lombart Christophe </a>
+ * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe </a>
  * 
+ * TODO : Add more reference tests. For exemple, the mapper has to check if the class used for the elements
+ *        of a collectiondescriptor exists. For performance reasone, we can defined some optional validations.
  */
 public abstract class AbstractMapperImpl implements Mapper {
     protected static final Log log = LogFactory.getLog(AbstractMapperImpl.class);

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/AnnotationDescriptorReader.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/AnnotationDescriptorReader.java?rev=582680&r1=582679&r2=582680&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/AnnotationDescriptorReader.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/AnnotationDescriptorReader.java Sun Oct  7 13:54:52 2007
@@ -32,7 +32,6 @@
 import org.apache.jackrabbit.ocm.mapper.model.FieldDescriptor;
 import org.apache.jackrabbit.ocm.mapper.model.ImplementDescriptor;
 import org.apache.jackrabbit.ocm.mapper.model.MappingDescriptor;
-import org.apache.jackrabbit.ocm.reflection.ReflectionUtils;
 
 /**
  * Helper class that reads the xml mapping file and load all class descriptors into memory (object graph)
@@ -77,7 +76,7 @@
 		}
 		else
 		{
-			throw  new InitMapperException("The persistent class " + clazz.getName() + " has not @Node annotation");
+			throw  new InitMapperException("The annotation @Node is not defined for the persistent class " + clazz.getName());
 		}
 	
 		
@@ -199,15 +198,7 @@
 			                             String fieldName, String collectionClassName, Collection collectionAnnotation) {
 		
 		Class targetClass = collectionAnnotation.elementClassName();
-		CollectionDescriptor collectionDescriptor = new CollectionDescriptor();
-		ClassDescriptor classDescriptor = mappingDescriptor.getClassDescriptorByName(targetClass.getName());
-
-		//TODO : This check can be done later by AbstractMapperImpl
-		if (classDescriptor == null)
-			throw new InitMapperException(
-					"Unable to reference class "
-							+ targetClass.getName()
-							+ " as a child node since it has not been registered, ordering perhaps?");
+		CollectionDescriptor collectionDescriptor = new CollectionDescriptor();	
 		
 		collectionDescriptor.setFieldName(fieldName);
 		
@@ -235,10 +226,17 @@
 		{
 		    collectionDescriptor.setElementClassName(targetClass.getName());
 		}
+
+		if (! collectionAnnotation.collectionClassName().equals(Object.class))
+		{
+			collectionDescriptor.setCollectionClassName(collectionAnnotation.collectionClassName().getName());
+		}
 		
 		collectionDescriptor.setCollectionConverter(collectionAnnotation.collectionConverter().getName());
-		
-		collectionDescriptor.setJcrType(annotationNode.jcrType());
+		if (annotationNode != null)
+		{
+		    collectionDescriptor.setJcrType(annotationNode.jcrType());
+		}
 		collectionDescriptor.setJcrSameNameSiblings(collectionAnnotation.jcrSameNameSiblings());
 		collectionDescriptor.setJcrAutoCreated(collectionAnnotation.jcrAutoCreated());
 		collectionDescriptor.setJcrProtected(collectionAnnotation.jcrProtected());

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/Collection.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/Collection.java?rev=582680&r1=582679&r2=582680&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/Collection.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/main/java/org/apache/jackrabbit/ocm/mapper/impl/annotation/Collection.java Sun Oct  7 13:54:52 2007
@@ -49,6 +49,10 @@
     
 	Class collectionConverter() default DefaultCollectionConverterImpl.class;
 
+	// Use Object.class as default value 
+    // because it is not possible to have a default null value in annotation field	
+	Class collectionClassName() default Object.class; 
+
     String jcrType() default "";
     
     boolean jcrAutoCreated() default false; 

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=582680&r1=582679&r2=582680&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 Sun Oct  7 13:54:52 2007
@@ -26,8 +26,20 @@
 import org.apache.jackrabbit.ocm.mapper.Mapper;
 import org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationMapperImpl;
 import org.apache.jackrabbit.ocm.repository.RepositoryUtil;
+import org.apache.jackrabbit.ocm.testmodel.A;
 import org.apache.jackrabbit.ocm.testmodel.Atomic;
+import org.apache.jackrabbit.ocm.testmodel.B;
+import org.apache.jackrabbit.ocm.testmodel.C;
+import org.apache.jackrabbit.ocm.testmodel.D;
+import org.apache.jackrabbit.ocm.testmodel.DFull;
 import org.apache.jackrabbit.ocm.testmodel.Default;
+import org.apache.jackrabbit.ocm.testmodel.E;
+import org.apache.jackrabbit.ocm.testmodel.MultiValue;
+import org.apache.jackrabbit.ocm.testmodel.Page;
+import org.apache.jackrabbit.ocm.testmodel.Paragraph;
+import org.apache.jackrabbit.ocm.testmodel.Residual;
+import org.apache.jackrabbit.ocm.testmodel.Residual.ResidualNodes;
+import org.apache.jackrabbit.ocm.testmodel.Residual.ResidualProperties;
 import org.apache.jackrabbit.ocm.testmodel.auto.CmsObject;
 import org.apache.jackrabbit.ocm.testmodel.auto.Content;
 import org.apache.jackrabbit.ocm.testmodel.auto.Document;
@@ -36,6 +48,8 @@
 import org.apache.jackrabbit.ocm.testmodel.auto.impl.ContentImpl;
 import org.apache.jackrabbit.ocm.testmodel.auto.impl.DocumentImpl;
 import org.apache.jackrabbit.ocm.testmodel.auto.impl.FolderImpl;
+import org.apache.jackrabbit.ocm.testmodel.collection.Element;
+import org.apache.jackrabbit.ocm.testmodel.collection.Main;
 
 /**
  * Base class for testcases. Provides priviledged access to the jcr test
@@ -68,9 +82,26 @@
 		Repository repository = RepositoryUtil.getRepository("repositoryTest");	
 		session = RepositoryUtil.login(repository, "superuser", "superuser");
 		List<Class> classes = new ArrayList<Class>();
+		
+		// Register content classes used by the unit tests
 		classes.add(Atomic.class);
 		classes.add(Default.class);
+		classes.add(A.class);
+		classes.add(B.class);
+		classes.add(C.class);
+		classes.add(D.class);
+		classes.add(DFull.class);
+		classes.add(E.class);
+		classes.add(Page.class);
+		classes.add(Paragraph.class);
+		classes.add(Main.class);
+		classes.add(Element.class);
+		classes.add(MultiValue.class);
 		
+
+		classes.add(Residual.class); 
+		classes.add(ResidualProperties.class);
+		classes.add(ResidualNodes.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/basic/AllTests.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AllTests.java?rev=582680&r1=582679&r2=582680&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AllTests.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AllTests.java Sun Oct  7 13:54:52 2007
@@ -36,11 +36,18 @@
     public static Test buildSuite() {
         TestSuite suite= new TestSuite("Test for org.apache.jackrabbit.ocm.manager.basic");
         //$JUnit-BEGIN$
-        suite.addTestSuite(ObjectContentManagerAvoidRecursiveLoopTest.class);
-        suite.addTestSuite(ObjectContentManagerCopyMoveTest.class);
-        suite.addTestSuite(ObjectContentManagerRemoveTest.class);
-        suite.addTestSuite(ObjectContentManagerSameNameSiblingTest.class);
-        suite.addTestSuite(ObjectContentManagerTest.class);        
+        suite.addTestSuite(DigesterAvoidRecursiveLoopTest.class);
+        suite.addTestSuite(DigesterCopyMoveTest.class);
+        suite.addTestSuite(DigesterRemoveTest.class);
+        suite.addTestSuite(DigesterSameNameSiblingTest.class);
+        suite.addTestSuite(DigesterSimpleTest.class);
+        
+        suite.addTestSuite(AnnotationAvoidRecursiveLoopTest.class);
+        suite.addTestSuite(AnnotationCopyMoveTest.class);
+        suite.addTestSuite(AnnotationRemoveTest.class);
+        suite.addTestSuite(AnnotationSameNameSiblingTest.class);
+        suite.addTestSuite(AnnotationSimpleTest.class);        
+
         //$JUnit-END$
 
         return suite;

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationAvoidRecursiveLoopTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationAvoidRecursiveLoopTest.java?rev=582680&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationAvoidRecursiveLoopTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationAvoidRecursiveLoopTest.java Sun Oct  7 13:54:52 2007
@@ -0,0 +1,176 @@
+/*
+ * 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.basic;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import javax.jcr.Repository;
+import javax.jcr.UnsupportedRepositoryOperationException;
+
+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.DigesterTestBase;
+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.mapper.Mapper;
+import org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationMapperImpl;
+import org.apache.jackrabbit.ocm.repository.RepositoryUtil;
+import org.apache.jackrabbit.ocm.testmodel.auto.CmsObject;
+import org.apache.jackrabbit.ocm.testmodel.auto.Content;
+import org.apache.jackrabbit.ocm.testmodel.auto.Document;
+import org.apache.jackrabbit.ocm.testmodel.auto.Folder;
+import org.apache.jackrabbit.ocm.testmodel.auto.impl.CmsObjectImpl;
+import org.apache.jackrabbit.ocm.testmodel.auto.impl.ContentImpl;
+import org.apache.jackrabbit.ocm.testmodel.auto.impl.DocumentImpl;
+import org.apache.jackrabbit.ocm.testmodel.auto.impl.FolderImpl;
+import org.apache.jackrabbit.ocm.testmodel.crossreference.A;
+import org.apache.jackrabbit.ocm.testmodel.crossreference.B;
+
+
+/**
+ * Basic test for ObjectContentManager
+ * Test when objects are cross referenced 
+ * eg. object 'a' contains a reference to an object 'b' and object 'b' contains a reference to 'a'.
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com>Christophe Lombart</a>
+ */
+public class AnnotationAvoidRecursiveLoopTest extends AnnotationTestBase
+{
+    private final static Log log = LogFactory.getLog(AnnotationAvoidRecursiveLoopTest.class);
+
+    /**
+     * <p>Defines the test case name for junit.</p>
+     * @param testName The test case name.
+     */
+    public AnnotationAvoidRecursiveLoopTest(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(AnnotationAvoidRecursiveLoopTest.class));
+    }
+
+
+    /**
+     * @see junit.framework.TestCase#tearDown()
+     */
+    public void tearDown() throws Exception
+    {
+    	if (getObjectContentManager().objectExists("/test"))
+    	{
+    	   getObjectContentManager().remove("/test");
+    	   getObjectContentManager().save();
+    	}
+        super.tearDown();
+    }
+    
+    public void testCrossReferences()
+    {
+        try
+        {
+        	ObjectContentManager ocm = getObjectContentManager();
+            // --------------------------------------------------------------------------------
+            // Create and store an object graph in the repository
+            // --------------------------------------------------------------------------------
+            A a = new A();
+            a.setPath("/test");
+            a.setA1("a1");
+            a.setA2("a2");
+            
+            ocm.insert(a);
+            ocm.save();
+
+            // --------------------------------------------------------------------------------
+            // Get the object
+            // --------------------------------------------------------------------------------           
+            a = (A) ocm.getObject( "/test");
+            assertNotNull("a is null", a);
+            
+            B b = new B();
+            b.setB1("b1");
+            b.setB2("b2");
+            // Add crossreference between b and a 
+            a.setB(b);
+            b.setA(a); 
+
+            B b1 = new B();
+            b1.setB1("b1.1");
+            b1.setB2("b1.2");            
+            b1.setA(a);
+            a.addB(b1);
+
+            B b2 = new B();
+            b2.setB1("b2.1");
+            b2.setB2("b2.2");            
+            b2.setA(a);
+            a.addB(b2);
+
+            ocm.update(a);
+            ocm.save();
+            
+
+            // --------------------------------------------------------------------------------
+            // Get the object
+            // --------------------------------------------------------------------------------           
+            a = (A) ocm.getObject( "/test");
+            assertNotNull("a is null", a);
+            assertTrue("Duplicate instance a", a == a.getB().getA());
+            
+            Collection collection = a.getCollection();
+            assertTrue("Invalid number of items in the collection", collection.size() == 2);
+            B[] bs = (B[]) collection.toArray(new B[2]);
+            assertTrue("Duplicate instance a", a == bs[0].getA());
+            assertTrue("Duplicate instance a", a == bs[1].getA());
+            
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+
+	
+	protected void initObjectContentManager() throws UnsupportedRepositoryOperationException, javax.jcr.RepositoryException
+	{
+		Repository repository = RepositoryUtil.getRepository("repositoryTest");	
+		session = RepositoryUtil.login(repository, "superuser", "superuser");
+		List<Class> classes = new ArrayList<Class>();
+		
+		classes.add(B.class);
+		classes.add(A.class);		
+		Mapper mapper = new AnnotationMapperImpl(classes);
+		ocm = new ObjectContentManagerImpl(session, mapper);
+
+		
+	}	
+
+    
+
+}
\ No newline at end of file

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationCopyMoveTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationCopyMoveTest.java?rev=582680&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationCopyMoveTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationCopyMoveTest.java Sun Oct  7 13:54:52 2007
@@ -0,0 +1,295 @@
+/*
+ * 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.basic;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import javax.jcr.Node;
+
+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.RepositoryLifecycleTestSetup;
+import org.apache.jackrabbit.ocm.DigesterTestBase;
+import org.apache.jackrabbit.ocm.exception.ObjectContentManagerException;
+import org.apache.jackrabbit.ocm.testmodel.A;
+import org.apache.jackrabbit.ocm.testmodel.Atomic;
+import org.apache.jackrabbit.ocm.testmodel.B;
+import org.apache.jackrabbit.ocm.testmodel.C;
+
+
+/**
+ * Test Copy & move objects
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
+ */
+public class AnnotationCopyMoveTest extends DigesterTestBase
+{
+	private final static Log log = LogFactory.getLog(AnnotationCopyMoveTest.class);
+	
+	/**
+	 * <p>Defines the test case name for junit.</p>
+	 * @param testName The test case name.
+	 */
+	public AnnotationCopyMoveTest(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(AnnotationCopyMoveTest.class));
+	}
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+
+        
+    }
+	
+	public void tearDown() throws Exception {
+
+		cleanUpRepisotory();
+		super.tearDown();
+		
+	}
+
+	public void testCopy()
+	{
+
+        // --------------------------------------------------------------------------------
+        // Create and store an object graph in the repository
+        // --------------------------------------------------------------------------------
+        A a = new A();
+        a.setPath("/test");
+        a.setA1("a1");
+        a.setA2("a2");
+        B b = new B();
+        b.setB1("b1");
+        b.setB2("b2");
+        a.setB(b);
+        
+        C c1 = new C();
+        c1.setId("first");
+        c1.setName("First Element");
+        C c2 = new C();
+        c2.setId("second");
+        c2.setName("Second Element");
+        
+        C c3 = new C();
+        c3.setId("third");
+        c3.setName("Third Element");
+        
+        
+        Collection collection = new ArrayList();
+        collection.add(c1);
+        collection.add(c2);
+        collection.add(c3);
+        
+        a.setCollection(collection);
+        
+        ocm.insert(a);
+        ocm.save();
+		
+        // --------------------------------------------------------------------------------
+        // Copy the object 
+        // --------------------------------------------------------------------------------
+        ocm.copy("/test", "/test2");      
+        
+        // --------------------------------------------------------------------------------
+        // Get the object 
+        // --------------------------------------------------------------------------------
+        a = (A) ocm.getObject("/test2");
+        assertNotNull("a is null", a);
+        assertTrue("Invalid field a1", a.getA1().equals("a1"));
+        assertTrue("Invalid field b.b1", a.getB().getB1().equals("b1"));
+        assertTrue("Invalid number of items in field collection", a.getCollection().size() == 3);
+
+        
+        // --------------------------------------------------------------------------------
+        // Check exceptions 
+        // --------------------------------------------------------------------------------
+       
+        try 
+        {
+			ocm.copy("/incorrectpath", "/test2");			
+			fail("the copy method accepts an incorrect source path");
+		} catch (ObjectContentManagerException e) 
+		{
+			// Nothing to do  - Expected behaviour
+		}       
+
+        try 
+        {
+			ocm.copy("/test", "incorrectpath");			
+			fail("the copy method accepts an incorrect destination path");
+		} catch (ObjectContentManagerException e) 
+		{
+			// Nothing to do  - Expected behaviour
+		}
+		
+        // --------------------------------------------------------------------------------
+        // Remove objects 
+        // --------------------------------------------------------------------------------
+        ocm.remove("/test");
+        ocm.remove("/test2");
+        ocm.save();
+        
+	}
+
+	public void testSimpleMove()
+	{
+
+        try {
+			// --------------------------------------------------------------------------------
+			// Create and store an object graph in the repository
+			// --------------------------------------------------------------------------------
+
+        	Atomic atomic =  new Atomic();
+        	atomic.setPath("/source");
+        	atomic.setString("test atomic");
+        	ocm.insert(atomic);
+        	ocm.save();
+			
+			// --------------------------------------------------------------------------------
+			// Copy the object 
+			// --------------------------------------------------------------------------------
+        	ocm.move("/source", "/result");
+
+			// --------------------------------------------------------------------------------
+			// Get the object 
+			// --------------------------------------------------------------------------------
+			atomic = (Atomic) ocm.getObject("/result");
+			assertNotNull("atomic is null", atomic);
+			assertTrue("Invalid field a1", atomic.getString().equals("test atomic"));			        
+
+			assertFalse("Object with path /source still exists", ocm.objectExists("/source"));
+
+			// --------------------------------------------------------------------------------
+			// Check exceptions 
+			// --------------------------------------------------------------------------------      
+			try 
+			{
+				ocm.move("/incorrectpath", "/test2");			
+				fail("the copy method accepts an incorrect source path");
+			} catch (ObjectContentManagerException e) 
+			{
+				// Nothing to do  - Expected behaviour
+			}       
+
+			try 
+			{
+				ocm.move("/test", "incorrectpath");			
+				fail("the copy method accepts an incorrect destination path");
+			} catch (ObjectContentManagerException e) 
+			{
+				// Nothing to do  - Expected behaviour
+			}
+			
+			// --------------------------------------------------------------------------------
+			// Remove objects 
+			// --------------------------------------------------------------------------------
+			ocm.remove("/result");
+			ocm.save();
+		} 
+        catch (Exception e) 
+		{
+        	e.printStackTrace();
+        	fail();
+		}
+		
+        
+	}
+	
+	public void testObjectGraphMove()
+	{
+
+        try {
+			// --------------------------------------------------------------------------------
+			// Create and store an object graph in the repository
+			// --------------------------------------------------------------------------------
+			A a = new A();
+			a.setPath("/source");
+			a.setA1("a1");
+			a.setA2("a2");
+			B b = new B();
+			b.setB1("b1");
+			b.setB2("b2");
+			a.setB(b);
+			
+			C c1 = new C();
+			c1.setId("first");
+			c1.setName("First Element");
+			C c2 = new C();
+			c2.setId("second");
+			c2.setName("Second Element");
+			
+			C c3 = new C();
+			c3.setId("third");
+			c3.setName("Third Element");
+			
+			
+			Collection collection = new ArrayList();
+			collection.add(c1);
+			collection.add(c2);
+			collection.add(c3);
+			
+			a.setCollection(collection);
+			
+			ocm.insert(a);
+        	ocm.save();
+			
+			// --------------------------------------------------------------------------------
+			// Copy the object 
+			// --------------------------------------------------------------------------------			
+        	ocm.move("/source", "/result");            
+        	// --------------------------------------------------------------------------------
+			// Get the object 
+			// --------------------------------------------------------------------------------
+			a = (A) ocm.getObject("/result");
+			assertNotNull("a is null", a);
+			assertTrue("Invalid field a1", a.getA1().equals("a1"));
+			assertTrue("Invalid field b.b1", a.getB().getB1().equals("b1"));
+			assertTrue("Invalid number of items in field collection", a.getCollection().size() == 3);
+			        
+			assertFalse("Object with path /source still exists", ocm.objectExists("/source"));
+			
+			// --------------------------------------------------------------------------------
+			// Remove objects 
+			// --------------------------------------------------------------------------------
+			ocm.remove("/result");
+			ocm.save();
+		} 
+        catch (Exception e) 
+		{
+        	e.printStackTrace();
+        	fail();
+		}
+	}
+	
+	
+}
\ No newline at end of file

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationRemoveTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationRemoveTest.java?rev=582680&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationRemoveTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationRemoveTest.java Sun Oct  7 13:54:52 2007
@@ -0,0 +1,164 @@
+/*
+ * 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.basic;
+
+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.RepositoryLifecycleTestSetup;
+import org.apache.jackrabbit.ocm.DigesterTestBase;
+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@sword-technologies.com">Christophe Lombart</a>
+ */
+public class AnnotationRemoveTest extends DigesterTestBase
+{
+	private final static Log log = LogFactory.getLog(AnnotationRemoveTest.class);
+	private Date date = new Date();
+	/**
+	 * <p>Defines the test case name for junit.</p>
+	 * @param testName The test case name.
+	 */
+	public AnnotationRemoveTest(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(AnnotationRemoveTest.class));
+	}
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+		this.importData(date);
+        
+    }
+	
+	public void tearDown() throws Exception {
+
+		cleanUpRepisotory();
+		super.tearDown();
+		
+	}
+
+	public void testRemove()
+	{
+
+		try
+		{
+			
+			ObjectContentManager ocm = this.getObjectContentManager();
+			ocm.remove("/test5");
+			ocm.save();
+
+			assertFalse("Test5 has not been removed", ocm.objectExists("/test5"));
+
+			QueryManager queryManager = this.getQueryManager();
+			Filter filter = queryManager.createFilter(Atomic.class);
+			filter.addEqualTo("booleanObject" , new Boolean(false));
+			Query query = queryManager.createQuery(filter);
+			ocm.remove(query);
+			ocm.save();
+
+			filter = queryManager.createFilter(Atomic.class);
+			filter.setScope("//");
+			query = queryManager.createQuery(filter);			
+			Collection result = ocm.getObjects(query);
+			assertEquals("Invalid number of objects", 5, result.size());
+
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+			fail();
+		}
+
+	}
+
+	private void importData(Date date)
+	{
+		try
+		{
+
+			ObjectContentManager ocm = getObjectContentManager();
+
+			for (int i = 1; i <= 10; 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.setString("Test String " + 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.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 repository".getBytes());
+					a.setInputStream(new ByteArrayInputStream("Another Stream".getBytes()));
+				}
+				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/basic/AnnotationSameNameSiblingTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationSameNameSiblingTest.java?rev=582680&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationSameNameSiblingTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationSameNameSiblingTest.java Sun Oct  7 13:54:52 2007
@@ -0,0 +1,231 @@
+/*
+ * 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.basic;
+
+import java.io.ByteArrayInputStream;
+import java.sql.Timestamp;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.Date;
+
+import javax.jcr.Repository;
+import javax.jcr.UnsupportedRepositoryOperationException;
+
+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.RepositoryLifecycleTestSetup;
+import org.apache.jackrabbit.ocm.DigesterTestBase;
+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.repository.RepositoryUtil;
+import org.apache.jackrabbit.ocm.testmodel.Atomic;
+import org.apache.jackrabbit.ocm.testmodel.Page;
+import org.apache.jackrabbit.ocm.testmodel.Paragraph;
+
+/**
+ * Test Query on atomic fields
+ *
+ * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
+ */
+public class AnnotationSameNameSiblingTest extends DigesterTestBase
+{
+	private final static Log log = LogFactory.getLog(AnnotationSameNameSiblingTest.class);
+	private Date date = new Date();
+	
+	/**
+	 * <p>Defines the test case name for junit.</p>
+	 * @param testName The test case name.
+	 */
+	public AnnotationSameNameSiblingTest(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(AnnotationSameNameSiblingTest.class));
+	}
+
+	public void tearDown() throws Exception 
+	{
+
+		cleanUpRepisotory();
+		super.tearDown();
+		
+	}
+	public void testSameNameSiblings()
+	{
+
+		try
+		{
+			this.importData(date);
+			ObjectContentManager ocm = this.getObjectContentManager();
+				
+			// Query all objects 
+			QueryManager queryManager = this.getQueryManager();
+			Filter filter = queryManager.createFilter(Atomic.class);	
+			filter.setScope("/");
+			Query query = queryManager.createQuery(filter);
+			Collection result = ocm.getObjects(query);
+            assertEquals("Incorrect number of objects found", 10, result.size());
+                         
+            // Get objects
+            Atomic atomic = (Atomic) ocm.getObject( "/test[2]");
+            assertNotNull("Object /test[2] not found", atomic);
+            
+            atomic = (Atomic) ocm.getObject( "/test[10]");
+            assertNotNull("Object /test[2] not found", atomic);            
+            
+            // Update the object 
+            atomic.setString("Modified Test String 10");
+            ocm.update(atomic);
+            ocm.save();
+
+            // Query on the attribute "string"
+            queryManager = this.getQueryManager();
+			filter = queryManager.createFilter(Atomic.class);	
+			filter.addLike("string", "Modified%");			
+			query = queryManager.createQuery(filter);
+			result = ocm.getObjects(query);
+			assertTrue("Incorrect number of objects found", result.size() == 1);
+            
+			atomic = (Atomic) ocm.getObject(query);
+			assertNotNull("Object not found", atomic);
+			assertTrue("Incorrect Object", atomic.getString().equals("Modified Test String 10"));   
+			
+            // Delete all objects
+            queryManager = this.getQueryManager();
+			filter = queryManager.createFilter(Atomic.class);	
+			filter.setScope("/");
+			query = queryManager.createQuery(filter) ;           
+            ocm.remove(query);
+            ocm.save();
+
+			result = ocm.getObjects(query);
+            assertTrue("Incorrect number of objects found", result.size() == 0);
+            
+            
+		}
+		catch (Exception e)
+		{
+			 e.printStackTrace();
+             fail();
+		}
+
+	}
+
+	public void testUnsupportedSameNameSiblings()
+	{
+		     ObjectContentManager ocm = getObjectContentManager();
+             try
+             {
+            	 
+            	 Page page = new Page();
+            	 page.setPath("/page");
+            	 page.setTitle("Page Title");            	 
+            	 ocm.insert(page);
+            	 ocm.save();
+            	 
+            	 Paragraph p1 = new Paragraph("para1");
+            	 p1.setPath("/page/paragraph");
+            	 ocm.insert(p1);
+            	 
+            	 Paragraph p2 = new Paragraph("para1");
+            	 p2.setPath("/page/paragraph");
+            	 ocm.insert(p2);
+             fail();            	 
+            	 
+             }
+             catch(Exception e)
+             {
+    		            	 ocm.remove("/page");
+            	        ocm.save();
+             }
+	}
+	
+	
+	private void importData(Date date)
+	{
+		try
+		{
+
+			ObjectContentManager ocm = getObjectContentManager();
+			
+			
+			for (int i = 1; i <= 10; i++)
+			{
+				Atomic a = new Atomic();
+				a.setPath("/test");
+				a.setBooleanObject(new Boolean(i%2==0));
+				a.setBooleanPrimitive(true);
+				a.setIntegerObject(new Integer(100 * i));
+				a.setIntPrimitive(200 + i);
+				a.setString("Test String " + 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.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 repository".getBytes());
+					 a.setInputStream(new ByteArrayInputStream("Another Stream".getBytes()));
+				}
+				ocm.insert(a);
+				
+				
+			}
+			ocm.save();
+
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+			fail("Exception occurs during the unit test : " + e);
+		}
+
+	}
+	
+	protected void initObjectContentManager() throws UnsupportedRepositoryOperationException, javax.jcr.RepositoryException
+	{
+		Repository repository = RepositoryUtil.getRepository("repositoryTest");
+		String[] files = { "./src/test/test-config/jcrmapping-sibling.xml" };
+		session = RepositoryUtil.login(repository, "superuser", "superuser");
+
+		
+		ocm = new ObjectContentManagerImpl(session, files);
+		
+	}	
+	
+}
\ No newline at end of file

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationSimpleTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationSimpleTest.java?rev=582680&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationSimpleTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationSimpleTest.java Sun Oct  7 13:54:52 2007
@@ -0,0 +1,221 @@
+/*
+ * 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.basic;
+
+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.RepositoryLifecycleTestSetup;
+import org.apache.jackrabbit.ocm.DigesterTestBase;
+import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
+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.Discriminator;
+
+/**
+ * Test JcrSession
+ *
+ * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
+ */
+public class AnnotationSimpleTest extends DigesterTestBase
+{
+    private final static Log log = LogFactory.getLog(AnnotationSimpleTest.class);
+
+    /**
+     * <p>Defines the test case name for junit.</p>
+     * @param testName The test case name.
+     */
+    public AnnotationSimpleTest(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(AnnotationSimpleTest.class));
+    }
+
+
+    /**
+     * @see junit.framework.TestCase#tearDown()
+     */
+    public void tearDown() throws Exception
+    {
+    	if (getObjectContentManager().objectExists("/test"))
+    	{
+    	   getObjectContentManager().remove("/test");
+    	   getObjectContentManager().save();
+    	}
+        super.tearDown();
+    }
+    
+    public void testClassA()
+    {
+        try
+        {
+        	ObjectContentManager ocm = getObjectContentManager();
+
+
+            // --------------------------------------------------------------------------------
+            // Create and store an object graph in the repository
+            // --------------------------------------------------------------------------------
+            A a = new A();
+            a.setPath("/test");
+            a.setA1("a1");
+            a.setA2("a2");
+            B b = new B();
+            b.setB1("b1");
+            b.setB2("b2");
+            a.setB(b);
+            
+            C c1 = new C();
+            c1.setId("first");
+            c1.setName("First Element");
+            C c2 = new C();
+            c2.setId("second");
+            c2.setName("Second Element");
+            
+            C c3 = new C();
+            c3.setId("third");
+            c3.setName("Third Element");
+            
+            
+            Collection collection = new ArrayList();
+            collection.add(c1);
+            collection.add(c2);
+            collection.add(c3);
+            
+            a.setCollection(collection);
+            
+            ocm.insert(a);
+            ocm.save();
+            
+
+            // --------------------------------------------------------------------------------
+            // Get the object
+            // --------------------------------------------------------------------------------           
+            a = (A) ocm.getObject( "/test");
+            assertNotNull("a is null", a);
+            assertTrue("Incorrect a1", a.getA1().equals("a1"));
+            assertNotNull("a.b is null", a.getB());
+            assertTrue("Incorrect a.b.b1", a.getB().getB1().equals("b1"));
+            assertNotNull("a.collection is null", a.getCollection());
+            assertTrue("Incorrect a.collection", ((C) a.getCollection().iterator().next()).getId().equals("first"));
+            
+            // --------------------------------------------------------------------------------
+            // Update the object
+            // --------------------------------------------------------------------------------
+            a.setA1("new value");
+            B newB = new B();
+            newB.setB1("new B1");
+            newB.setB2("new B2");
+            a.setB(newB);
+            
+            
+            ocm.update(a);
+            ocm.save();
+
+            // --------------------------------------------------------------------------------
+            // Get the object
+            // --------------------------------------------------------------------------------           
+            a = (A) ocm.getObject("/test");
+            assertNotNull("a is null", a);
+            assertTrue("Incorrect a1", a.getA1().equals("new value"));
+            assertNotNull("a.b is null", a.getB());
+            assertTrue("Incorrect a.b.b1", a.getB().getB1().equals("new B1"));
+            
+
+            
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            fail("Exception occurs during the unit test : " + e);
+        }
+        
+    }
+    
+    /**
+     * Test an persistent object mapped with a discriminator and with a nodetype
+     *
+     */
+    public void testDiscriminatorAndNodeType()
+    {
+    	 try
+         {
+         	ObjectContentManager ocm = getObjectContentManager();
+
+
+             // --------------------------------------------------------------------------------         	
+             // Create and store the object in the repository
+            // --------------------------------------------------------------------------------
+         	Discriminator discriminatorObject = new Discriminator();
+         	discriminatorObject.setPath("/test");
+         	discriminatorObject.setContent("This is my content");
+             ocm.insert(discriminatorObject);             
+             ocm.save();
+             
+
+             // --------------------------------------------------------------------------------
+             // Get the object
+             // --------------------------------------------------------------------------------           
+             discriminatorObject = (Discriminator) ocm.getObject( "/test");
+             assertNotNull("discriminator object  is null", discriminatorObject );
+             assertTrue("Incorrect content", discriminatorObject.getContent().equals("This is my content"));
+             
+             // --------------------------------------------------------------------------------
+             // Update the object
+             // --------------------------------------------------------------------------------
+             discriminatorObject.setContent("new content");             
+             
+             ocm.update(discriminatorObject);
+             ocm.save();
+
+             // --------------------------------------------------------------------------------
+             // Get the object
+             // --------------------------------------------------------------------------------           
+             discriminatorObject = (Discriminator) ocm.getObject( "/test");
+             assertNotNull("discriminator object  is null", discriminatorObject );
+             assertTrue("Incorrect content", discriminatorObject.getContent().equals("new content"));
+             
+
+             
+         }
+         catch (Exception e)
+         {
+             e.printStackTrace();
+             fail("Exception occurs during the unit test : " + e);
+         }	
+    }
+    
+    public void testIsPersistent()
+    {    
+    	ObjectContentManager ocm = getObjectContentManager();
+    	assertTrue("Class A is not persistent ", ocm.isPersistent(A.class));
+    	assertFalse("Class String is  persistent - hum ? ", ocm.isPersistent(String.class));
+    }
+    
+
+}
\ No newline at end of file

Copied: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterAvoidRecursiveLoopTest.java (from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerAvoidRecursiveLoopTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterAvoidRecursiveLoopTest.java?p2=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterAvoidRecursiveLoopTest.java&p1=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerAvoidRecursiveLoopTest.java&r1=580157&r2=582680&rev=582680&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerAvoidRecursiveLoopTest.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterAvoidRecursiveLoopTest.java Sun Oct  7 13:54:52 2007
@@ -26,8 +26,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.manager.impl.ObjectContentManagerImpl;
 import org.apache.jackrabbit.ocm.repository.RepositoryUtil;
@@ -42,15 +42,15 @@
  *
  * @author <a href="mailto:christophe.lombart@gmail.com>Christophe Lombart</a>
  */
-public class ObjectContentManagerAvoidRecursiveLoopTest extends DigesterTestBase
+public class DigesterAvoidRecursiveLoopTest extends DigesterTestBase
 {
-    private final static Log log = LogFactory.getLog(ObjectContentManagerAvoidRecursiveLoopTest.class);
+    private final static Log log = LogFactory.getLog(DigesterAvoidRecursiveLoopTest.class);
 
     /**
      * <p>Defines the test case name for junit.</p>
      * @param testName The test case name.
      */
-    public ObjectContentManagerAvoidRecursiveLoopTest(String testName)  throws Exception
+    public DigesterAvoidRecursiveLoopTest(String testName)  throws Exception
     {
         super(testName);
     }
@@ -59,7 +59,7 @@
     {
         // All methods starting with "test" will be executed in the test suite.
         return new RepositoryLifecycleTestSetup(
-                new TestSuite(ObjectContentManagerAvoidRecursiveLoopTest.class));
+                new TestSuite(DigesterAvoidRecursiveLoopTest.class));
     }
 
 

Copied: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterCopyMoveTest.java (from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerCopyMoveTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterCopyMoveTest.java?p2=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterCopyMoveTest.java&p1=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerCopyMoveTest.java&r1=580157&r2=582680&rev=582680&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerCopyMoveTest.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterCopyMoveTest.java Sun Oct  7 13:54:52 2007
@@ -40,15 +40,15 @@
  *
  * @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
  */
-public class ObjectContentManagerCopyMoveTest extends DigesterTestBase
+public class DigesterCopyMoveTest extends DigesterTestBase
 {
-	private final static Log log = LogFactory.getLog(ObjectContentManagerCopyMoveTest.class);
+	private final static Log log = LogFactory.getLog(DigesterCopyMoveTest.class);
 	
 	/**
 	 * <p>Defines the test case name for junit.</p>
 	 * @param testName The test case name.
 	 */
-	public ObjectContentManagerCopyMoveTest(String testName) throws Exception
+	public DigesterCopyMoveTest(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(ObjectContentManagerCopyMoveTest.class));
+                new TestSuite(DigesterCopyMoveTest.class));
 	}
 
     /**

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterRemoveTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterRemoveTest.java?rev=582680&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterRemoveTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterRemoveTest.java Sun Oct  7 13:54:52 2007
@@ -0,0 +1,164 @@
+/*
+ * 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.basic;
+
+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.RepositoryLifecycleTestSetup;
+import org.apache.jackrabbit.ocm.DigesterTestBase;
+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@sword-technologies.com">Christophe Lombart</a>
+ */
+public class DigesterRemoveTest extends DigesterTestBase
+{
+	private final static Log log = LogFactory.getLog(DigesterRemoveTest.class);
+	private Date date = new Date();
+	/**
+	 * <p>Defines the test case name for junit.</p>
+	 * @param testName The test case name.
+	 */
+	public DigesterRemoveTest(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(DigesterRemoveTest.class));
+	}
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+		this.importData(date);
+        
+    }
+	
+	public void tearDown() throws Exception {
+
+		cleanUpRepisotory();
+		super.tearDown();
+		
+	}
+
+	public void testRemove()
+	{
+
+		try
+		{
+			
+			ObjectContentManager ocm = this.getObjectContentManager();
+			ocm.remove("/test5");
+			ocm.save();
+
+			assertFalse("Test5 has not been removed", ocm.objectExists("/test5"));
+
+			QueryManager queryManager = this.getQueryManager();
+			Filter filter = queryManager.createFilter(Atomic.class);
+			filter.addEqualTo("booleanObject" , new Boolean(false));
+			Query query = queryManager.createQuery(filter);
+			ocm.remove(query);
+			ocm.save();
+
+			filter = queryManager.createFilter(Atomic.class);
+			filter.setScope("//");
+			query = queryManager.createQuery(filter);			
+			Collection result = ocm.getObjects(query);
+			assertEquals("Invalid number of objects", 5, result.size());
+
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+			fail();
+		}
+
+	}
+
+	private void importData(Date date)
+	{
+		try
+		{
+
+			ObjectContentManager ocm = getObjectContentManager();
+
+			for (int i = 1; i <= 10; 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.setString("Test String " + 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.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 repository".getBytes());
+					a.setInputStream(new ByteArrayInputStream("Another Stream".getBytes()));
+				}
+				ocm.insert(a);
+
+			}
+			ocm.save();
+
+		}
+		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/manager/basic/DigesterSameNameSiblingTest.java (from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerSameNameSiblingTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterSameNameSiblingTest.java?p2=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterSameNameSiblingTest.java&p1=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerSameNameSiblingTest.java&r1=580157&r2=582680&rev=582680&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerSameNameSiblingTest.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterSameNameSiblingTest.java Sun Oct  7 13:54:52 2007
@@ -47,16 +47,16 @@
  *
  * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
  */
-public class ObjectContentManagerSameNameSiblingTest extends DigesterTestBase
+public class DigesterSameNameSiblingTest extends DigesterTestBase
 {
-	private final static Log log = LogFactory.getLog(ObjectContentManagerSameNameSiblingTest.class);
+	private final static Log log = LogFactory.getLog(DigesterSameNameSiblingTest.class);
 	private Date date = new Date();
 	
 	/**
 	 * <p>Defines the test case name for junit.</p>
 	 * @param testName The test case name.
 	 */
-	public ObjectContentManagerSameNameSiblingTest(String testName) throws Exception
+	public DigesterSameNameSiblingTest(String testName) throws Exception
 	{
 		super(testName);
 		
@@ -66,7 +66,7 @@
 	{
 		// All methods starting with "test" will be executed in the test suite.
 		return new RepositoryLifecycleTestSetup(
-                new TestSuite(ObjectContentManagerSameNameSiblingTest.class));
+                new TestSuite(DigesterSameNameSiblingTest.class));
 	}
 
 	public void tearDown() throws Exception 

Copied: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterSimpleTest.java (from r580157, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterSimpleTest.java?p2=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterSimpleTest.java&p1=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerTest.java&r1=580157&r2=582680&rev=582680&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/ObjectContentManagerTest.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterSimpleTest.java Sun Oct  7 13:54:52 2007
@@ -37,15 +37,15 @@
  *
  * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
  */
-public class ObjectContentManagerTest extends DigesterTestBase
+public class DigesterSimpleTest extends DigesterTestBase
 {
-    private final static Log log = LogFactory.getLog(ObjectContentManagerTest.class);
+    private final static Log log = LogFactory.getLog(DigesterSimpleTest.class);
 
     /**
      * <p>Defines the test case name for junit.</p>
      * @param testName The test case name.
      */
-    public ObjectContentManagerTest(String testName)  throws Exception
+    public DigesterSimpleTest(String testName)  throws Exception
     {
         super(testName);
     }
@@ -54,7 +54,7 @@
     {
         // All methods starting with "test" will be executed in the test suite.
         return new RepositoryLifecycleTestSetup(
-                new TestSuite(ObjectContentManagerTest.class));
+                new TestSuite(DigesterSimpleTest.class));
     }
 
 

Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/AllTests.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/AllTests.java?rev=582680&r1=582679&r2=582680&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/AllTests.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/jcr-mapping/src/test/java/org/apache/jackrabbit/ocm/manager/beanconverter/AllTests.java Sun Oct  7 13:54:52 2007
@@ -36,7 +36,8 @@
     public static Test buildSuite() {
         TestSuite suite= new TestSuite("Test for org.apache.jackrabbit.ocm.manager.beanconverter");
         //$JUnit-BEGIN$
-        suite.addTestSuite(BeanDescriptorTest.class);
+        suite.addTestSuite(DigesterBeanDescriptorTest.class);        
+        suite.addTestSuite(AnnotationBeanDescriptorTest.class);
         //$JUnit-END$
 
         return suite;