You are viewing a plain text version of this content. The canonical link for it is here.
Posted to graffito-commits@incubator.apache.org by cl...@apache.org on 2005/10/12 20:37:58 UTC

svn commit: r315038 - in /incubator/graffito/trunk/jcr-mapping/src: java/org/apache/portals/graffito/jcr/persistence/ java/org/apache/portals/graffito/jcr/persistence/impl/ test/org/apache/portals/graffito/jcr/ test/org/apache/portals/graffito/jcr/pers...

Author: clombart
Date: Wed Oct 12 13:37:47 2005
New Revision: 315038

URL: http://svn.apache.org/viewcvs?rev=315038&view=rev
Log:
* Support for Multi value properties - add unit tests
* add new methods in the persistence manager : getObject(Query) - remove(Query) - add unit tests

Added:
    incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerMultiValueQueryTest.java
    incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerRemoveTest.java
Modified:
    incubator/graffito/trunk/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/PersistenceManager.java
    incubator/graffito/trunk/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerImpl.java
    incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/TestBase.java
    incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerSimpleQueryTest.java
    incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/testmodel/MultiValue.java

Modified: incubator/graffito/trunk/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/PersistenceManager.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/PersistenceManager.java?rev=315038&r1=315037&r2=315038&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/PersistenceManager.java (original)
+++ incubator/graffito/trunk/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/PersistenceManager.java Wed Oct 12 13:37:47 2005
@@ -72,6 +72,22 @@
      */
     public void remove(String path) throws JcrMappingException;
     
+    /**
+     * Remove all objects matching to a query
+     * @param query The query used to find the objects to delete
+     * @throws org.apache.portals.graffito.jcr.exception.JcrMappingException 
+     */
+    public void remove(Query query) throws JcrMappingException;
+
+    
+    /**
+     * Retrieve an object matching to a query     
+     * @param query The Graffito Query object used to seach the object
+     * @return The object found or null
+     * 
+     */
+    public Object getObject(Query query) throws JcrMappingException;
+
     
     /**
      * Retrieve some pojo objects matching to a query     

Modified: incubator/graffito/trunk/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerImpl.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerImpl.java?rev=315038&r1=315037&r2=315038&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerImpl.java (original)
+++ incubator/graffito/trunk/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerImpl.java Wed Oct 12 13:37:47 2005
@@ -170,6 +170,36 @@
 			throw new JcrMappingException("Impossible to remove the object at " + path);
 		}
 	}
+	
+	
+
+
+	public void remove(Query query) throws JcrMappingException
+	{
+		try
+		{
+
+			String jcrExpression = this.queryManager.buildJCRExpression(query);						
+			javax.jcr.query.Query jcrQuery = session.getWorkspace().getQueryManager().createQuery(jcrExpression, javax.jcr.query.Query.XPATH);
+			QueryResult queryResult = jcrQuery.execute();
+			NodeIterator nodeIterator = queryResult.getNodes();
+
+			
+			while (nodeIterator.hasNext())
+			{
+				Node node = nodeIterator.nextNode();
+				log.debug("Remove node : " + node.getPath());
+				node.remove();
+			}
+
+			
+		}
+		catch (RepositoryException e)
+		{
+			throw new JcrMappingException("Impossible to delte the object collection", e);
+		}
+		
+	}
 
 	/**
 	 * 
@@ -187,13 +217,55 @@
 		}
 	}
 
-	public Collection getObjects(Query query) throws JcrMappingException
+	/**
+	 * 
+	 * @see org.apache.portals.graffito.jcr.persistence.PersistenceManager#getObject(org.apache.portals.graffito.jcr.query.Query)
+	 */
+	public Object getObject(Query query) throws JcrMappingException
 	{
+		
 		try
 		{
 
 			String jcrExpression = this.queryManager.buildJCRExpression(query);
 			log.debug("Get Object with expression : " + jcrExpression);
+						
+			javax.jcr.query.Query jcrQuery = session.getWorkspace().getQueryManager().createQuery(jcrExpression, javax.jcr.query.Query.XPATH);
+			QueryResult queryResult = jcrQuery.execute();
+			NodeIterator nodeIterator = queryResult.getNodes();
+
+            if (nodeIterator.getSize() > 1)
+            {
+            	throw new JcrMappingException("Impossible to get the object - the query returns more than one object");
+            }
+            
+			Object object = null; 
+            if (nodeIterator.hasNext())
+			{
+				Node node = nodeIterator.nextNode();				
+				object = objectConverter.getObject(session, query.getFilter().getFilterClass(), node.getPath());
+			}
+
+			return object;
+		}
+		catch (RepositoryException e)
+		{
+			throw new JcrMappingException("Impossible to get the object collection", e);
+		}
+
+	}
+
+	/**
+	 * 
+	 * @see org.apache.portals.graffito.jcr.persistence.PersistenceManager#getObjects(org.apache.portals.graffito.jcr.query.Query)
+	 */
+	public Collection getObjects(Query query) throws JcrMappingException
+	{
+		try
+		{
+
+			String jcrExpression = this.queryManager.buildJCRExpression(query);
+			log.debug("Get Objects with expression : " + jcrExpression);
 						
 			javax.jcr.query.Query jcrQuery = session.getWorkspace().getQueryManager().createQuery(jcrExpression, javax.jcr.query.Query.XPATH);
 			QueryResult queryResult = jcrQuery.execute();

Modified: incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/TestBase.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/TestBase.java?rev=315038&r1=315037&r2=315038&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/TestBase.java (original)
+++ incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/TestBase.java Wed Oct 12 13:37:47 2005
@@ -60,116 +60,123 @@
  */
 public abstract class TestBase extends TestCase
 {
-    /** 
-     * Jcr session to work with.
-     */
-	protected Session session; 
-	
-	
-    private PersistenceManager persistenceManager;
-    private QueryManager queryManager;
-
-    private static boolean isInit = false;
-
-    /**
-     * <p>Defines the test case name for junit.</p>
-     * @param testName The test case name.
-     */
-    public TestBase(String testName) throws Exception
-    {
-        super(testName);
-        if ( ! isInit)
-        {
-            RepositoryUtil.registerRepository("repositoryTest", "./src/test-config/repository.xml", "./target/repository");
-            isInit = true;
-        }
-    }
-
-    /** Setting up the testcase.
-     * @see junit.framework.TestCase#setUp()
-     */
-    protected void setUp() throws Exception
-    {
-        super.setUp();
-        DigesterMapperImpl mapper = new DigesterMapperImpl("./src/test-config/jcrmapping.xml");
-        Repository repository = RepositoryUtil.getRepository("repositoryTest");
-        
-        session = RepositoryUtil.login(repository, "superuser", "superuser");
-        
-        // TODO : After Spring integration, move the following code into the assembly script
-
-        
-        HashMap atomicTypeConverters = new HashMap();
-        atomicTypeConverters.put(String.class,  new StringTypeConverterImpl(session.getValueFactory()));
-        atomicTypeConverters.put(InputStream.class,  new BinaryTypeConverterImpl(session.getValueFactory()));
-        atomicTypeConverters.put(long.class,  new LongTypeConverterImpl(session.getValueFactory()));
-        atomicTypeConverters.put(Long.class,  new LongTypeConverterImpl(session.getValueFactory()));
-        atomicTypeConverters.put(int.class,  new IntTypeConverterImpl(session.getValueFactory()));
-        atomicTypeConverters.put(Integer.class,  new IntTypeConverterImpl(session.getValueFactory()));
-        atomicTypeConverters.put(double.class,  new DoubleTypeConverterImpl(session.getValueFactory()));
-        atomicTypeConverters.put(Double.class,  new DoubleTypeConverterImpl(session.getValueFactory()));
-        atomicTypeConverters.put(boolean.class,  new BooleanTypeConverterImpl(session.getValueFactory()));
-        atomicTypeConverters.put(Boolean.class,  new BooleanTypeConverterImpl(session.getValueFactory()));        
-        atomicTypeConverters.put(Calendar.class,  new CalendarTypeConverterImpl(session.getValueFactory()));
-        atomicTypeConverters.put(GregorianCalendar.class,  new CalendarTypeConverterImpl(session.getValueFactory()));
-        atomicTypeConverters.put(Date.class,  new UtilDateTypeConverterImpl(session.getValueFactory()));
-        atomicTypeConverters.put(byte[].class,  new ByteArrayTypeConverterImpl(session.getValueFactory()));
-        atomicTypeConverters.put(Timestamp.class,  new TimestampTypeConverterImpl(session.getValueFactory()));
-        queryManager = new QueryManagerImpl(mapper, atomicTypeConverters);                      
-        persistenceManager = new PersistenceManagerImpl(mapper, atomicTypeConverters, queryManager, session);
-        
-        
-        
-        
-    }
-
-    /**
-     * @see junit.framework.TestCase#tearDown()
-     */
-    public void tearDown() throws Exception
-    {
-        getPersistenceManager().logout();    
-        super.tearDown();
-    }
-
-    /** Getter for property persistenceManager.
-     * @return jcrSession
-     */
-    public PersistenceManager getPersistenceManager()
-    {
-        return persistenceManager;
-    }
-
-    /** Setter for property jcrSession.
-     * @param persistenceManager The persistence manager 
-     */
-    public void setPersistenceManager(PersistenceManager persistenceManager)
-    {
-        this.persistenceManager = persistenceManager;
-    }
-    
-    public void exportDocument(String filePath, String nodePath, boolean skipBinary, boolean noRecurse)
-    {
-        try {
-			BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(filePath));        
+	/** 
+	 * Jcr session to work with.
+	 */
+	protected Session session;
+
+	private PersistenceManager persistenceManager;
+
+	private QueryManager queryManager;
+
+	private static boolean isInit = false;
+
+	/**
+	 * <p>Defines the test case name for junit.</p>
+	 * @param testName The test case name.
+	 */
+	public TestBase(String testName) throws Exception
+	{
+		super(testName);
+		if (!isInit)
+		{
+			RepositoryUtil.registerRepository("repositoryTest", "./src/test-config/repository.xml", "./target/repository");
+			isInit = true;
+		}
+	}
+
+	/** Setting up the testcase.
+	 * @see junit.framework.TestCase#setUp()
+	 */
+	protected void setUp() throws Exception
+	{
+		try
+		{
+			super.setUp();
+			String[] files = { "./src/test-config/jcrmapping.xml", "./src/test-config/jcrmapping-atomic.xml" };
+			DigesterMapperImpl mapper = new DigesterMapperImpl(files);
+			Repository repository = RepositoryUtil.getRepository("repositoryTest");
+
+			session = RepositoryUtil.login(repository, "superuser", "superuser");
+
+			// TODO : After Spring integration, move the following code into the assembly script
+
+			HashMap atomicTypeConverters = new HashMap();
+			atomicTypeConverters.put(String.class, new StringTypeConverterImpl(session.getValueFactory()));
+			atomicTypeConverters.put(InputStream.class, new BinaryTypeConverterImpl(session.getValueFactory()));
+			atomicTypeConverters.put(long.class, new LongTypeConverterImpl(session.getValueFactory()));
+			atomicTypeConverters.put(Long.class, new LongTypeConverterImpl(session.getValueFactory()));
+			atomicTypeConverters.put(int.class, new IntTypeConverterImpl(session.getValueFactory()));
+			atomicTypeConverters.put(Integer.class, new IntTypeConverterImpl(session.getValueFactory()));
+			atomicTypeConverters.put(double.class, new DoubleTypeConverterImpl(session.getValueFactory()));
+			atomicTypeConverters.put(Double.class, new DoubleTypeConverterImpl(session.getValueFactory()));
+			atomicTypeConverters.put(boolean.class, new BooleanTypeConverterImpl(session.getValueFactory()));
+			atomicTypeConverters.put(Boolean.class, new BooleanTypeConverterImpl(session.getValueFactory()));
+			atomicTypeConverters.put(Calendar.class, new CalendarTypeConverterImpl(session.getValueFactory()));
+			atomicTypeConverters.put(GregorianCalendar.class, new CalendarTypeConverterImpl(session.getValueFactory()));
+			atomicTypeConverters.put(Date.class, new UtilDateTypeConverterImpl(session.getValueFactory()));
+			atomicTypeConverters.put(byte[].class, new ByteArrayTypeConverterImpl(session.getValueFactory()));
+			atomicTypeConverters.put(Timestamp.class, new TimestampTypeConverterImpl(session.getValueFactory()));
+			queryManager = new QueryManagerImpl(mapper, atomicTypeConverters);
+			persistenceManager = new PersistenceManagerImpl(mapper, atomicTypeConverters, queryManager, session);
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+			fail();
+		}
+
+	}
+
+	/**
+	 * @see junit.framework.TestCase#tearDown()
+	 */
+	public void tearDown() throws Exception
+	{
+		getPersistenceManager().logout();
+		super.tearDown();
+	}
+
+	/** Getter for property persistenceManager.
+	 * @return jcrSession
+	 */
+	public PersistenceManager getPersistenceManager()
+	{
+		return persistenceManager;
+	}
+
+	/** Setter for property jcrSession.
+	 * @param persistenceManager The persistence manager 
+	 */
+	public void setPersistenceManager(PersistenceManager persistenceManager)
+	{
+		this.persistenceManager = persistenceManager;
+	}
+
+	public void exportDocument(String filePath, String nodePath, boolean skipBinary, boolean noRecurse)
+	{
+		try
+		{
+			BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(filePath));
 			ContentHandler handler = new org.apache.xml.serialize.XMLSerializer(os, null).asContentHandler();
-			    session.exportDocumentView(nodePath, handler, skipBinary, noRecurse);
+			session.exportDocumentView(nodePath, handler, skipBinary, noRecurse);
 			os.flush();
-			os.close();    
-		} catch (Exception e) 
+			os.close();
+		}
+		catch (Exception e)
 		{
 			System.out.println("Impossible to export the content from : " + nodePath);
 			e.printStackTrace();
 		}
-    }
-    
-    public void importDocument(String filePath, String nodePath)
-    {
-    	try
+	}
+
+	public void importDocument(String filePath, String nodePath)
+	{
+		try
 		{
 			BufferedInputStream is = new BufferedInputStream(new FileInputStream(filePath));
 			session.importXML(nodePath, is, ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
-			session.save();		
+			session.save();
 			is.close();
 		}
 		catch (Exception e)
@@ -177,17 +184,17 @@
 			System.out.println("Impossible to import the content from : " + nodePath);
 			e.printStackTrace();
 		}
-		
-    }
-    
-    protected Session getSession()
-    {
-    	return this.session;
-    }
-    
-    public QueryManager getQueryManager()
-    {
-    	return this.queryManager;
-    }
-    
+
+	}
+
+	protected Session getSession()
+	{
+		return this.session;
+	}
+
+	public QueryManager getQueryManager()
+	{
+		return this.queryManager;
+	}
+
 }

Added: incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerMultiValueQueryTest.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerMultiValueQueryTest.java?rev=315038&view=auto
==============================================================================
--- incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerMultiValueQueryTest.java (added)
+++ incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerMultiValueQueryTest.java Wed Oct 12 13:37:47 2005
@@ -0,0 +1,155 @@
+/* ========================================================================
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.portals.graffito.jcr.persistence.impl;
+
+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.portals.graffito.jcr.TestBase;
+import org.apache.portals.graffito.jcr.persistence.PersistenceManager;
+import org.apache.portals.graffito.jcr.query.Filter;
+import org.apache.portals.graffito.jcr.query.Query;
+import org.apache.portals.graffito.jcr.query.QueryManager;
+import org.apache.portals.graffito.jcr.testmodel.MultiValue;
+
+/**
+ * Test NTCollectionConverterImpl
+ *
+ * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
+ */
+public class PersistenceManagerMultiValueQueryTest extends TestBase
+{
+    private final static Log log = LogFactory.getLog(PersistenceManagerMultiValueQueryTest.class);
+
+    /**
+     * <p>Defines the test case name for junit.</p>
+     * @param testName The test case name.
+     */
+    public PersistenceManagerMultiValueQueryTest(String testName)  throws Exception
+    {
+        super(testName);
+    }
+
+    public static Test suite()
+    {
+        // All methods starting with "test" will be executed in the test suite.
+        return new TestSuite(PersistenceManagerMultiValueQueryTest.class);
+    }
+
+    public void testMultiValueSearch()
+    {
+        try
+        {
+        	
+          importData();
+          
+  	      QueryManager queryManager = this.getQueryManager();
+	      Filter filter = queryManager.createFilter(MultiValue.class);    
+	      filter.addEqualTo("multiValues", "Value1");
+	      Query query = queryManager.createQuery(filter);    	      
+	      PersistenceManager persistenceManager = this.getPersistenceManager();
+	      Collection result = persistenceManager.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);    	      
+	      persistenceManager = this.getPersistenceManager();
+	      result = persistenceManager.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
+        {
+        	PersistenceManager persistenceManager = getPersistenceManager();
+
+            if (persistenceManager.itemExists("/test"))
+            {
+                persistenceManager.remove("/test");
+                persistenceManager.save();
+            }
+
+			PersistenceManagerImpl persistenceManagerImpl = (PersistenceManagerImpl) persistenceManager;
+			
+			Session session = persistenceManagerImpl.getSession();
+			Node root = session.getRootNode();
+			root.addNode("test");
+
+            MultiValue multiValue = new MultiValue();
+            multiValue.setName("m1");
+            ArrayList values = new ArrayList();
+            values.add("Value1");
+            values.add("Value2");
+            values.add("Value3");
+            values.add("Value4");
+            multiValue.setMultiValues(values);
+            persistenceManager.insert("/test/m1", multiValue);
+            
+            multiValue = new MultiValue();
+            multiValue.setName("m2");
+            values = new ArrayList();
+            values.add("Value1");
+            values.add("Value5");
+            values.add("Value6");
+            values.add("Value7");            
+            multiValue.setMultiValues(values);
+            persistenceManager.insert("/test/m2", multiValue);
+            
+            multiValue = new MultiValue();
+            multiValue.setName("m3");
+            values = new ArrayList();
+            values.add("Value1");
+            values.add("Value2");
+            values.add("Value8");
+            values.add("Value9");
+            
+            multiValue.setMultiValues(values);
+            persistenceManager.insert("/test/m3", multiValue);
+                                   
+            persistenceManager.save();
+            
+        }
+        catch(Exception e)
+        {
+        	e.printStackTrace();
+        	fail("Impossible to insert objects");
+        }
+    	
+    }
+}
\ No newline at end of file

Added: incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerRemoveTest.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerRemoveTest.java?rev=315038&view=auto
==============================================================================
--- incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerRemoveTest.java (added)
+++ incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerRemoveTest.java Wed Oct 12 13:37:47 2005
@@ -0,0 +1,165 @@
+/* ========================================================================
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.portals.graffito.jcr.persistence.impl;
+
+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.portals.graffito.jcr.TestBase;
+import org.apache.portals.graffito.jcr.persistence.PersistenceManager;
+import org.apache.portals.graffito.jcr.query.Filter;
+import org.apache.portals.graffito.jcr.query.Query;
+import org.apache.portals.graffito.jcr.query.QueryManager;
+import org.apache.portals.graffito.jcr.testmodel.Atomic;
+import org.apache.portals.graffito.jcr.testmodel.MultiValue;
+
+/**
+ * Test Query on atomic fields
+ *
+ * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
+ */
+public class PersistenceManagerRemoveTest extends TestBase
+{
+	private final static Log log = LogFactory.getLog(PersistenceManagerRemoveTest.class);
+
+	/**
+	 * <p>Defines the test case name for junit.</p>
+	 * @param testName The test case name.
+	 */
+	public PersistenceManagerRemoveTest(String testName) throws Exception
+	{
+		super(testName);
+
+	}
+
+	public static Test suite()
+	{
+		// All methods starting with "test" will be executed in the test suite.
+		return new TestSuite(PersistenceManagerRemoveTest.class);
+	}
+
+	public void tearDown() throws Exception
+	{
+
+		for (int i = 1; i <= 100; i++)
+		{
+			if (getPersistenceManager().itemExists("/test" + i))
+			{
+				getPersistenceManager().remove("/test" + i);
+			}
+
+		}
+
+		super.tearDown();
+	}
+
+	public void testRemove()
+	{
+
+		try
+		{
+			Date date = new Date();
+			this.importData(date);
+
+			PersistenceManager persistenceManager = this.getPersistenceManager();
+			persistenceManager.remove("/test5");
+			persistenceManager.save();
+
+			assertFalse("Test5 has not been removed", persistenceManager.itemExists("/test5"));
+
+			QueryManager queryManager = this.getQueryManager();
+			Filter filter = queryManager.createFilter(Atomic.class);
+			filter.addEqualTo("booleanObject" , new Boolean(false));
+			Query query = queryManager.createQuery(filter);
+			persistenceManager.remove(query);
+
+			filter = queryManager.createFilter(Atomic.class);
+			filter.setScope("//");
+			query = queryManager.createQuery(filter);			
+			Collection result = persistenceManager.getObjects(query);
+			assertTrue("Invalid number of objects", result.size() == 5);
+
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+			fail();
+		}
+
+	}
+
+	private void importData(Date date)
+	{
+		try
+		{
+
+			PersistenceManager persistenceManager = getPersistenceManager();
+
+			if (persistenceManager.itemExists("/test"))
+			{
+				persistenceManager.remove("/test");
+			}
+
+			for (int i = 1; i <= 10; i++)
+			{
+				Atomic a = new Atomic();
+				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 a Graffito repository".getBytes());
+					a.setInputStream(new ByteArrayInputStream("Another Stream".getBytes()));
+				}
+				persistenceManager.insert("/test" + i, a);
+
+			}
+			persistenceManager.save();
+
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+			fail("Exception occurs during the unit test : " + e);
+		}
+
+	}
+
+}
\ No newline at end of file

Modified: incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerSimpleQueryTest.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerSimpleQueryTest.java?rev=315038&r1=315037&r2=315038&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerSimpleQueryTest.java (original)
+++ incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/persistence/impl/PersistenceManagerSimpleQueryTest.java Wed Oct 12 13:37:47 2005
@@ -30,7 +30,6 @@
 import org.apache.portals.graffito.jcr.query.Filter;
 import org.apache.portals.graffito.jcr.query.Query;
 import org.apache.portals.graffito.jcr.query.QueryManager;
-import org.apache.portals.graffito.jcr.testmodel.C;
 import org.apache.portals.graffito.jcr.testmodel.Page;
 import org.apache.portals.graffito.jcr.testmodel.Paragraph;
 
@@ -59,6 +58,55 @@
         return new TestSuite(PersistenceManagerSimpleQueryTest.class);
     }
 
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        importData();
+    }
+
+    /**
+     * @see junit.framework.TestCase#tearDown()
+     */
+    public void tearDown() throws Exception
+    {
+    	getPersistenceManager().remove("/test");
+        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);
+    	      
+    	      PersistenceManager persistenceManager = this.getPersistenceManager();
+    	      Paragraph paragraph = (Paragraph) persistenceManager.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
@@ -69,9 +117,7 @@
 
     	try
     	{
-    		
-    		  importData();
-    		  
+    		    		      		 
     		  // Build the Query Object
     	      QueryManager queryManager = this.getQueryManager();
     	      Filter filter = queryManager.createFilter(Paragraph.class);
@@ -104,8 +150,6 @@
     	try
     	{
     		
-    		  importData();
-    		  
     		  // Build the Query Object
     	      QueryManager queryManager = this.getQueryManager();
     	      Filter filter = queryManager.createFilter(Paragraph.class);
@@ -144,8 +188,6 @@
     	try
     	{
     		
-    		  importData();
-    		  
     		  // Build the Query Object
     	      QueryManager queryManager = this.getQueryManager();
     	      Filter filter1 = queryManager.createFilter(Paragraph.class);
@@ -182,8 +224,6 @@
     	try
     	{
     		
-    		  importData();
-    		  
     		  // Build the Query Object
     	      QueryManager queryManager = this.getQueryManager();
     	      Filter filter = queryManager.createFilter(Paragraph.class);

Modified: incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/testmodel/MultiValue.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/testmodel/MultiValue.java?rev=315038&r1=315037&r2=315038&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/testmodel/MultiValue.java (original)
+++ incubator/graffito/trunk/jcr-mapping/src/test/org/apache/portals/graffito/jcr/testmodel/MultiValue.java Wed Oct 12 13:37:47 2005
@@ -27,9 +27,29 @@
  */
 public class MultiValue
 {
+	private String name;
+	
 	private Collection multiValues;
 
 	private Collection nullMultiValues;
+
+	
+	
+	/**
+	 * @return Returns the name.
+	 */
+	public String getName()
+	{
+		return name;
+	}
+
+	/**
+	 * @param name The name to set.
+	 */
+	public void setName(String name)
+	{
+		this.name = name;
+	}
 
 	/**
 	 * @return Returns the multiValues.