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 2008/03/11 22:47:04 UTC

svn commit: r636118 - in /jackrabbit/trunk/jackrabbit-ocm/src: main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ test/java/org/apache/jackrabbit/ocm/manager/basic/ test/java/org/apache/jackrabbit/ocm/manager/uuid/

Author: clombart
Date: Tue Mar 11 14:47:02 2008
New Revision: 636118

URL: http://svn.apache.org/viewvc?rev=636118&view=rev
Log:
Patch for issues JCR-1381 and JCR-1385 : refresh path and uuid field. 
Path has to be refreshed in the case of the SNS is used.

Modified:
    jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java
    jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/SimpleFieldsHelper.java
    jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationSameNameSiblingTest.java
    jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterSameNameSiblingTest.java
    jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/AnnotationUuidTest.java
    jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/DigesterUuidTest.java

Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java?rev=636118&r1=636117&r2=636118&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java Tue Mar 11 14:47:02 2008
@@ -219,6 +219,7 @@
 		simpleFieldsHelp.storeSimpleFields(session, object, classDescriptor, objectNode);
 		insertBeanFields(session, object, classDescriptor, objectNode);
 		insertCollectionFields(session, object, classDescriptor, objectNode);
+		simpleFieldsHelp.refreshUuidPath(session, classDescriptor, objectNode, object);
 	}
 
 	/**
@@ -257,6 +258,7 @@
 			simpleFieldsHelp.storeSimpleFields(session, object, classDescriptor, objectNode);
 			updateBeanFields(session, object, classDescriptor, objectNode);
 			updateCollectionFields(session, object, classDescriptor, objectNode);
+			simpleFieldsHelp.refreshUuidPath(session, classDescriptor, objectNode, object);
 		} catch (PathNotFoundException pnfe) {
 			throw new ObjectContentManagerException("Impossible to update the object: " + nodeName + " at node : " + parentNode, pnfe);
 		} catch (RepositoryException re) {
@@ -396,8 +398,8 @@
 
             simpleFieldsHelp.retrieveSimpleFields(session, classDescriptor, node, object);
 			retrieveBeanFields(session, classDescriptor, node, path, object, false);
-			retrieveCollectionFields(session, classDescriptor, node, object, false);
-
+			retrieveCollectionFields(session, classDescriptor, node, object, false);			
+			
 			return object;
 		} catch (PathNotFoundException pnfe) {
 			// HINT should never get here

Modified: jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/SimpleFieldsHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/SimpleFieldsHelper.java?rev=636118&r1=636117&r2=636118&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/SimpleFieldsHelper.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/SimpleFieldsHelper.java Tue Mar 11 14:47:02 2008
@@ -130,6 +130,37 @@
 		return initializedBean;
 	}
 
+	public Object refreshUuidPath(Session session, ClassDescriptor classDescriptor, Node node, Object object)
+	{
+		Object initializedBean = object;
+		try {
+			if (initializedBean == null)
+			{
+				return null;
+			}
+			
+			FieldDescriptor pathField = classDescriptor.getPathFieldDescriptor();
+			if (pathField != null)
+			{
+			    ReflectionUtils.setNestedProperty(initializedBean, pathField.getFieldName(), node.getPath());
+			}
+			
+			FieldDescriptor uuidField = classDescriptor.getUuidFieldDescriptor();
+			if (uuidField != null)
+			{
+				ReflectionUtils.setNestedProperty(initializedBean, uuidField.getFieldName(), node.getUUID());
+			}
+			
+		} catch (ValueFormatException vfe) {
+			throw new ObjectContentManagerException(
+					"Cannot retrieve properties of object " + object + " from node " + node, vfe);
+		} catch (RepositoryException re) {
+			throw new org.apache.jackrabbit.ocm.exception.RepositoryException( "Cannot retrieve properties of object " + object
+							+ " from node " + node, re);
+		}
+
+		return initializedBean;
+	}
 
 	private Object retrieveSimpleField(ClassDescriptor classDescriptor, Node node, Object initializedBean, FieldDescriptor fieldDescriptor, String fieldName, String propertyName) throws RepositoryException, ValueFormatException, PathNotFoundException {
 

Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationSameNameSiblingTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationSameNameSiblingTest.java?rev=636118&r1=636117&r2=636118&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationSameNameSiblingTest.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/basic/AnnotationSameNameSiblingTest.java Tue Mar 11 14:47:02 2008
@@ -197,6 +197,14 @@
 					 a.setInputStream(new ByteArrayInputStream("Another Stream".getBytes()));
 				}
 				ocm.insert(a);
+				if (i==1)
+				{
+				    assertTrue("Invalid Path" , a.getPath().equals("/test") );
+				}
+				else
+				{
+					assertTrue("Invalid Path" , a.getPath().equals("/test" + "[" + i + "]") );
+				}
 				
 				
 			}

Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterSameNameSiblingTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterSameNameSiblingTest.java?rev=636118&r1=636117&r2=636118&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterSameNameSiblingTest.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/basic/DigesterSameNameSiblingTest.java Tue Mar 11 14:47:02 2008
@@ -196,6 +196,14 @@
 					 a.setInputStream(new ByteArrayInputStream("Another Stream".getBytes()));
 				}
 				ocm.insert(a);
+				if (i==1)
+				{
+				    assertTrue("Invalid Path" , a.getPath().equals("/test") );
+				}
+				else
+				{
+					assertTrue("Invalid Path" , a.getPath().equals("/test" + "[" + i + "]") );
+				}
 				
 				
 			}

Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/AnnotationUuidTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/AnnotationUuidTest.java?rev=636118&r1=636117&r2=636118&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/AnnotationUuidTest.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/AnnotationUuidTest.java Tue Mar 11 14:47:02 2008
@@ -78,14 +78,16 @@
             a.setPath("/test");
             a.setStringData("testdata");
             ocm.insert(a);
+            String uuidA = a.getUuid();
+            assertNotNull("uuid is null", uuidA);
             ocm.save();
-
+            
             // --------------------------------------------------------------------------------
             // Get the object
             // --------------------------------------------------------------------------------
             a = (A) ocm.getObject( "/test");
             assertNotNull("a is null", a);
-            String uuidA = a.getUuid();
+            uuidA = a.getUuid();
             assertNotNull("uuid is null", uuidA);
             System.out.println("UUID : " + uuidA);
 

Modified: jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/DigesterUuidTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/DigesterUuidTest.java?rev=636118&r1=636117&r2=636118&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/DigesterUuidTest.java (original)
+++ jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/uuid/DigesterUuidTest.java Tue Mar 11 14:47:02 2008
@@ -78,6 +78,8 @@
             a.setPath("/test");
             a.setStringData("testdata");
             ocm.insert(a);
+            String uuidA = a.getUuid();
+            assertNotNull("uuid is null", uuidA);
             ocm.save();
 
             // --------------------------------------------------------------------------------
@@ -85,7 +87,7 @@
             // --------------------------------------------------------------------------------
             a = (A) ocm.getObject( "/test");
             assertNotNull("a is null", a);
-            String uuidA = a.getUuid();
+            uuidA = a.getUuid();
             assertNotNull("uuid is null", uuidA);
             System.out.println("UUID : " + uuidA);