Clean up resources when deployer app is closed

This commit is contained in:
Dave Syer
2017-07-04 15:02:26 +01:00
parent becc41d9ef
commit eeb505ca89
3 changed files with 14 additions and 3 deletions

View File

@@ -18,6 +18,7 @@ package org.springframework.cloud.function.deployer;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
@@ -29,6 +30,7 @@ import java.util.function.Supplier;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.boot.loader.thin.ArchiveUtils;
import org.springframework.cloud.deployer.spi.app.AppDeployer;
import org.springframework.cloud.deployer.spi.core.AppDefinition;
@@ -42,7 +44,7 @@ import org.springframework.core.io.Resource;
import org.springframework.util.MethodInvoker;
public class FunctionExtractingFunctionCatalog
implements FunctionCatalog, FunctionInspector {
implements FunctionCatalog, FunctionInspector, DisposableBean {
private static Log logger = LogFactory
.getLog(FunctionExtractingFunctionCatalog.class);
@@ -63,6 +65,13 @@ public class FunctionExtractingFunctionCatalog
deployer = new ThinJarAppDeployer(name, profiles);
}
@Override
public void destroy() throws Exception {
for (String name : new HashSet<>(names.keySet())) {
undeploy(name);
}
}
@SuppressWarnings("unchecked")
@Override
public <T> Consumer<T> lookupConsumer(String name) {

View File

@@ -27,8 +27,8 @@ import org.junit.runners.Suite.SuiteClasses;
* @author Dave Syer
*/
@RunWith(Suite.class)
@SuiteClasses({ FunctionAppDeployerTests.class,
FunctionExtractingFunctionCatalogIntegrationTests.class })
@SuiteClasses({ FunctionExtractingFunctionCatalogIntegrationTests.class,
FunctionExtractingFunctionCatalogTests.class })
@Ignore
public class AdhocTestSuite {