This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-tenant.git
commit a6a67b6768d3c61e651345568bafb9eee79f3506 Author: Felix Meschberger <[email protected]> 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@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 "[email protected]" <[email protected]>.
