You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2008/01/18 13:55:12 UTC

svn commit: r613148 - /incubator/sling/whiteboard/fmeschbe/resource/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceResolverFactoryImpl.java

Author: fmeschbe
Date: Fri Jan 18 04:55:11 2008
New Revision: 613148

URL: http://svn.apache.org/viewvc?rev=613148&view=rev
Log:
Catch IllegalStateException thrown when registering a duplicate root path.
Added a TODO to prevent unregistering a path in case the registration of
the respective provider for that path failed.

Modified:
    incubator/sling/whiteboard/fmeschbe/resource/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceResolverFactoryImpl.java

Modified: incubator/sling/whiteboard/fmeschbe/resource/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceResolverFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/sling/whiteboard/fmeschbe/resource/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceResolverFactoryImpl.java?rev=613148&r1=613147&r2=613148&view=diff
==============================================================================
--- incubator/sling/whiteboard/fmeschbe/resource/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceResolverFactoryImpl.java (original)
+++ incubator/sling/whiteboard/fmeschbe/resource/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrResourceResolverFactoryImpl.java Fri Jan 18 04:55:11 2008
@@ -333,7 +333,13 @@
                 prefixes);
             String[] rootPaths = brp.getRoots();
             for (String rootPath : rootPaths) {
-                rootProviderEntry.addResourceProvider(rootPath, brp);
+                try {
+                    rootProviderEntry.addResourceProvider(rootPath, brp);
+                } catch (IllegalStateException ise) {
+                    log.error(
+                        "addBundleResourceProvider: A ResourceProvider for {} is already registered",
+                        rootPath);
+                }
             }
             bundleResourceProviderMap.put(bundle.getBundleId(), brp);
         }
@@ -344,6 +350,9 @@
         if (brp != null) {
             String[] rootPaths = brp.getRoots();
             for (String rootPath : rootPaths) {
+                // TODO: Do not remove this path, if another resource
+                //       owns it. This may be the case if adding the provider
+                //       yielded an IllegalStateException
                 rootProviderEntry.removeResourceProvider(rootPath);
             }
         }
@@ -436,7 +445,13 @@
                 "ResourceProvider", reference);
             
             for (String root : roots) {
-                rootProviderEntry.addResourceProvider(root, provider);
+                try {
+                    rootProviderEntry.addResourceProvider(root, provider);
+                } catch (IllegalStateException ise) {
+                    log.error(
+                        "bindResourceProvider: A ResourceProvider for {} is already registered",
+                        root);
+                }
             }
         }
     }
@@ -445,6 +460,9 @@
         String[] roots = OsgiUtil.toStringArray(reference.getProperty(ResourceProvider.ROOTS));
         if (roots != null && roots.length > 0) {
             for (String root : roots) {
+                // TODO: Do not remove this path, if another resource
+                //       owns it. This may be the case if adding the provider
+                //       yielded an IllegalStateException
                 rootProviderEntry.removeResourceProvider(root);
             }
         }