From dd554e1842cf75f7758fdd9a6ce26c72dc63cba2 Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Thu, 25 Apr 2013 11:11:26 -0500 Subject: [PATCH] SEC-2162: ApacheDSContainer throws RuntimeException on failure to start --- .../ldap/server/ApacheDSContainerTests.java | 23 +++++++++++++++++++ .../ldap/server/ApacheDSContainer.java | 19 +++++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/ldap/src/integration-test/java/org/springframework/security/ldap/server/ApacheDSContainerTests.java b/ldap/src/integration-test/java/org/springframework/security/ldap/server/ApacheDSContainerTests.java index 88a866754d..3df4ccc49e 100644 --- a/ldap/src/integration-test/java/org/springframework/security/ldap/server/ApacheDSContainerTests.java +++ b/ldap/src/integration-test/java/org/springframework/security/ldap/server/ApacheDSContainerTests.java @@ -1,5 +1,7 @@ package org.springframework.security.ldap.server; +import static junit.framework.Assert.fail; + import org.apache.directory.shared.ldap.name.LdapDN; import org.junit.Test; @@ -23,4 +25,25 @@ public class ApacheDSContainerTests { // // server.stop(); } + + // SEC-2162 + @Test + public void failsToStartThrowsException() throws Exception { + ApacheDSContainer server1 = new ApacheDSContainer("dc=springframework,dc=org", "classpath:test-server.ldif"); + ApacheDSContainer server2 = new ApacheDSContainer("dc=springframework,dc=org", "classpath:test-server.ldif"); + try { + server1.afterPropertiesSet(); + try { + server2.afterPropertiesSet(); + fail("Expected Exception"); + } catch(RuntimeException success) {} + } finally { + try { + server1.destroy(); + }catch(Throwable t) {} + try { + server2.destroy(); + }catch(Throwable t) {} + } + } } diff --git a/ldap/src/main/java/org/springframework/security/ldap/server/ApacheDSContainer.java b/ldap/src/main/java/org/springframework/security/ldap/server/ApacheDSContainer.java index cf8c2b0833..8736255407 100644 --- a/ldap/src/main/java/org/springframework/security/ldap/server/ApacheDSContainer.java +++ b/ldap/src/main/java/org/springframework/security/ldap/server/ApacheDSContainer.java @@ -1,3 +1,18 @@ +/* + * Copyright 2002-2013 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.springframework.security.ldap.server; import java.io.File; @@ -50,6 +65,7 @@ import org.springframework.util.Assert; * framework public API. * * @author Luke Taylor + * @author Rob Winch */ public class ApacheDSContainer implements InitializingBean, DisposableBean, Lifecycle, ApplicationContextAware { private final Log logger = LogFactory.getLog(getClass()); @@ -162,8 +178,7 @@ public class ApacheDSContainer implements InitializingBean, DisposableBean, Life service.startup(); server.start(); } catch (Exception e) { - logger.error("Server startup failed ", e); - return; + throw new RuntimeException("Server startup failed", e); } try {