Author: cziegeler
Date: Tue Apr 30 07:45:17 2013
New Revision: 1477494

URL: http://svn.apache.org/r1477494
Log:
SLING-2845 :  ResourceUtil.getOrCreateResource should catch 
PersistenceException when calling create 

Modified:
    
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceUtil.java

Modified: 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceUtil.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceUtil.java?rev=1477494&r1=1477493&r2=1477494&view=diff
==============================================================================
--- 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceUtil.java
 (original)
+++ 
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/resource/ResourceUtil.java
 Tue Apr 30 07:45:17 2013
@@ -574,7 +574,17 @@ public class ResourceUtil {
             if ( autoCommit ) {
                 resolver.refresh();
             }
-            rsrc = resolver.create(parentResource, name, resourceProperties);
+            try {
+                rsrc = resolver.create(parentResource, name, 
resourceProperties);
+            } catch ( final PersistenceException pe ) {
+                // this could be thrown because someone else tried to create 
this
+                // node concurrently
+                resolver.refresh();
+                rsrc = resolver.getResource(parentResource, name);
+                if ( rsrc == null ) {
+                    throw pe;
+                }
+            }
             if ( autoCommit ) {
                 try {
                     resolver.commit();


Reply via email to