You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 10:16:40 UTC

[sling-org-apache-sling-tenant] 06/18: SLING-2676 Catch exceptions from TenantCustomizer and log

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.tenant-1.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-tenant.git

commit a2a8b2b25b99d4d8267fef64cf52c30499bf1561
Author: Felix Meschberger <fm...@apache.org>
AuthorDate: Thu Nov 29 13:20:17 2012 +0000

    SLING-2676 Catch exceptions from TenantCustomizer and log
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/tenant@1415157 13f79535-47bb-0310-9956-ffa450edef68
---
 .../sling/tenant/internal/TenantProviderImpl.java  | 59 ++++++++++++++--------
 1 file changed, 37 insertions(+), 22 deletions(-)

diff --git a/src/main/java/org/apache/sling/tenant/internal/TenantProviderImpl.java b/src/main/java/org/apache/sling/tenant/internal/TenantProviderImpl.java
index 45a7933..a45b83f 100644
--- a/src/main/java/org/apache/sling/tenant/internal/TenantProviderImpl.java
+++ b/src/main/java/org/apache/sling/tenant/internal/TenantProviderImpl.java
@@ -64,6 +64,8 @@ import org.osgi.framework.Constants;
 import org.osgi.framework.Filter;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.InvalidSyntaxException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * JCR Tenant Provider implementation.
@@ -83,6 +85,10 @@ import org.osgi.framework.InvalidSyntaxException;
         cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE,
         policy = ReferencePolicy.DYNAMIC)
 public class TenantProviderImpl implements TenantProvider {
+
+    /** default log */
+    private final Logger log = LoggerFactory.getLogger(getClass());
+
     /**
      * Root path for tenant
      */
@@ -232,33 +238,38 @@ public class TenantProviderImpl implements TenantProvider {
 
                 if (child != null) {
                     throw new PersistenceException("Tenant already exists with Id " + tenantId);
-                } else {
-                    // create the tenant
-                    Node rootNode = tenantRootRes.adaptTo(Node.class);
-                    Node tenantNode = rootNode.addNode(tenantId);
-                    tenantNode.setProperty(Tenant.PROP_NAME, name);
-                    tenantNode.setProperty(Tenant.PROP_DESCRIPTION, description);
-
-                    Resource resource = adminResolver.getResource(tenantNode.getPath());
-                    Tenant tenant = new TenantImpl(resource);
-                    PersistableValueMap tenantProps = resource.adaptTo(PersistableValueMap.class);
-                    // call tenant setup handler
-                    for (TenantCustomizer ts : getTenantHandlers()) {
+                }
+
+                // create the tenant
+                Node rootNode = tenantRootRes.adaptTo(Node.class);
+                Node tenantNode = rootNode.addNode(tenantId);
+                tenantNode.setProperty(Tenant.PROP_NAME, name);
+                tenantNode.setProperty(Tenant.PROP_DESCRIPTION, description);
+
+                Resource resource = adminResolver.getResource(tenantNode.getPath());
+                Tenant tenant = new TenantImpl(resource);
+                PersistableValueMap tenantProps = resource.adaptTo(PersistableValueMap.class);
+                // call tenant setup handler
+                for (TenantCustomizer ts : getTenantHandlers()) {
+                    try {
                         Map<String, Object> props = ts.setup(tenant, adminResolver);
                         if (props != null) {
                             tenantProps.putAll(props);
                         }
+                    } catch (Exception e) {
+                        log.info("addTenant: Unexpected problem calling TenantCustomizer " + ts, e);
                     }
-                    // save the properties
-                    tenantProps.save();
-
-                    // save the session
-                    adminSession.save();
-                    // refersh tenant instance, as it copies property from
-                    // resource
-                    tenant = new TenantImpl(resource);
-                    return tenant;
                 }
+                // save the properties
+                tenantProps.save();
+
+                // save the session
+                adminSession.save();
+                // refersh tenant instance, as it copies property from
+                // resource
+                tenant = new TenantImpl(resource);
+                return tenant;
+
             } catch (RepositoryException e) {
                 throw new PersistenceException("Unexpected RepositoryException while adding tenant", e);
             } finally {
@@ -295,7 +306,11 @@ public class TenantProviderImpl implements TenantProvider {
                     Tenant tenant = new TenantImpl(tenantRes);
                     // call tenant setup handler
                     for (TenantCustomizer ts : getTenantHandlers()) {
-                        ts.remove(tenant, adminResolver);
+                        try {
+                            ts.remove(tenant, adminResolver);
+                        } catch (Exception e) {
+                            log.info("removeTenant: Unexpected problem calling TenantCustomizer " + ts, e);
+                        }
                     }
 
                     tenantNode.remove();

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.