This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit f639020cd8857d4fe10cf0e36c3a95ff23ecf214 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Sep 10 19:29:25 2016 +0200 Utilisation des nouvelles api http commons + un peu de ménage par ci par là --- .../swing/ObserveSwingApplicationContext.java | 11 ++- .../swing/db/ObserveSwingDataSource.java | 21 +---- ...glineDetailCompositionValidatorServiceTest.java | 3 +- .../web/ObserveWebApplicationContext.java | 3 +- .../web/ObserveWebApplicationListener.java | 3 +- .../services/rest/ObserveServiceFactoryRest.java | 2 +- .../services/rest/http/ObserveResponseBuilder.java | 97 ++++++++++++---------- .../services/rest/RestTestClassResource.java | 3 +- .../services/rest/RestTestMethodResource.java | 6 -- .../services/runner/ObserveServiceMainFactory.java | 37 ++++----- .../observe/services/ObserveServiceFactory.java | 3 +- .../ird/observe/test/TestClassResourceSupport.java | 2 +- 12 files changed, 94 insertions(+), 97 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationContext.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationContext.java index f36e7ba..6c05f34 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationContext.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationContext.java @@ -64,6 +64,7 @@ import org.h2.tools.Server; import javax.swing.ActionMap; import java.io.Closeable; +import java.io.IOException; import java.util.Arrays; import java.util.Collection; import java.util.List; @@ -83,6 +84,7 @@ import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.En import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.Entries.MAIN_UI; import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.Entries.NODE_TO_RESELECT; import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.Entries.OPEN_DATA_MANAGER; +import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.Entries.SERVICE_MAIN_FACTORY; import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.Entries.TEXT_GENERATOR; import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.Entries.VALIDATION_CONTEXT; import static fr.ird.observe.application.swing.ObserveSwingApplicationContext.Entries.VALIDATORS; @@ -209,6 +211,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im OPEN_DATA_MANAGER.set(new ObserveOpenDataManager(getDataContext())); VALIDATION_CONTEXT.set(new ValidationContext(getDataContext())); VALIDATORS.set(Lists.newArrayList(ValidateServiceUtils.getValidators())); + SERVICE_MAIN_FACTORY.set(ObserveServiceMainFactory.get()); referenceBinderEngine = new ReferenceBinderEngineSupplier().get(); lock = new Object(); } @@ -297,6 +300,10 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im return H2_WEBSERVER.get(); } + public ObserveServiceMainFactory getMainServiceFactory() { + return SERVICE_MAIN_FACTORY.get(); + } + //------------------------------------------- // - Write //------------------------------------------- @@ -379,7 +386,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im } @Override - public void close() { + public void close() throws IOException { if (log.isInfoEnabled()) { log.info("Closing swing application context " + this); } @@ -387,7 +394,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im // fermeture de touts les context de donnée ouvert getDataSourcesManager().close(); - ObserveServiceMainFactory serviceMainFactory = ObserveServiceMainFactory.get(); + ObserveServiceMainFactory serviceMainFactory = getMainServiceFactory(); if (log.isInfoEnabled()) { log.info("Closing main service factory: " + serviceMainFactory); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/db/ObserveSwingDataSource.java b/application-swing/src/main/java/fr/ird/observe/application/swing/db/ObserveSwingDataSource.java index 5fd47a9..63200d8 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/db/ObserveSwingDataSource.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/db/ObserveSwingDataSource.java @@ -151,14 +151,6 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements return ObserveDataSourceType.SQL == configuration.getType(); } -// public String getAuthenticationToken() { -// String result = null; -// if (connection != null) { -// result = connection.getAuthenticationToken(); -// } -// return result; -// } - public boolean canWriteData() { return connection != null && connection.canWriteData(); } @@ -401,16 +393,6 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements return listenerList.getListeners(ObserveSwingDataSourceListener.class); } -// public boolean containsObserveSwingDataSourceListener(ObserveSwingDataSourceListener listener) { -// ObserveSwingDataSourceListener[] listeners = getObserveSwingDataSourceListener(); -// for (ObserveSwingDataSourceListener l : listeners) { -// if (l.equals(listener)) { -// return true; -// } -// } -// return false; -// } - public void removeObserveSwingDataSourceListener(ObserveSwingDataSourceListener listener) { if (log.isInfoEnabled()) { log.info("removing listener " + listener); @@ -520,8 +502,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements ObserveServiceInitializer observeServiceInitializer = getObserveServiceInitializer(); - ObserveServiceMainFactory serviceFactory = ObserveServiceMainFactory.get(); - + ObserveServiceMainFactory serviceFactory = ObserveSwingApplicationContext.get().getMainServiceFactory(); return serviceFactory.newService(observeServiceInitializer, serviceType); } diff --git a/application-swing/src/test/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java b/application-swing/src/test/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java index 2eb29d1..f209f37 100644 --- a/application-swing/src/test/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java +++ b/application-swing/src/test/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionValidatorServiceTest.java @@ -40,6 +40,7 @@ import org.nuiton.i18n.init.ClassPathI18nInitializer; import org.nuiton.validator.NuitonValidatorScope; import org.nuiton.validator.bean.simple.SimpleBeanValidatorMessage; +import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -59,7 +60,7 @@ public class LonglineDetailCompositionValidatorServiceTest { protected LonglineDetailCompositionValidatorService service; @Before - public void setUp() { + public void setUp() throws IOException { if (ObserveSwingApplicationContext.isInit()) { diff --git a/application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationContext.java b/application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationContext.java index b5e1410..eda7dd8 100644 --- a/application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationContext.java +++ b/application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationContext.java @@ -45,6 +45,7 @@ import org.nuiton.version.Version; import javax.servlet.ServletContext; import java.io.Closeable; +import java.io.IOException; /** * @author Tony Chemit - chemit@codelutin.com @@ -129,7 +130,7 @@ public class ObserveWebApplicationContext implements Closeable { } @Override - public void close() { + public void close() throws IOException { // Supprimer le cache des sessions securityApplicationContext.close(); diff --git a/application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java b/application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java index 71e1a68..93772d5 100644 --- a/application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java +++ b/application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java @@ -33,6 +33,7 @@ import fr.ird.observe.application.web.injector.ObserveReferenceSetRequestInjecto import fr.ird.observe.application.web.injector.SqlScriptProducerRequestInjector; import fr.ird.observe.services.configuration.rest.ObserveDataSourceConfigurationRestConstants; import fr.ird.observe.services.dto.ObserveDbUserDto; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.debux.webmotion.server.WebMotionServerListener; @@ -85,7 +86,7 @@ public class ObserveWebApplicationListener implements WebMotionServerListener { log.info("Destroying " + ObserveWebApplicationListener.class.getName()); } - applicationContext.close(); + IOUtils.closeQuietly(applicationContext); } diff --git a/services-rest/src/main/java/fr/ird/observe/services/rest/ObserveServiceFactoryRest.java b/services-rest/src/main/java/fr/ird/observe/services/rest/ObserveServiceFactoryRest.java index 8125a75..7fb5cee 100644 --- a/services-rest/src/main/java/fr/ird/observe/services/rest/ObserveServiceFactoryRest.java +++ b/services-rest/src/main/java/fr/ird/observe/services/rest/ObserveServiceFactoryRest.java @@ -136,7 +136,7 @@ public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport impl } @Override - public void close() { + public void close() throws IOException { responseBuilder.close(); } diff --git a/services-rest/src/main/java/fr/ird/observe/services/rest/http/ObserveResponseBuilder.java b/services-rest/src/main/java/fr/ird/observe/services/rest/http/ObserveResponseBuilder.java index 362fa47..c5442c1 100644 --- a/services-rest/src/main/java/fr/ird/observe/services/rest/http/ObserveResponseBuilder.java +++ b/services-rest/src/main/java/fr/ird/observe/services/rest/http/ObserveResponseBuilder.java @@ -25,11 +25,10 @@ package fr.ird.observe.services.rest.http; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import com.google.gson.Gson; +import fr.ird.observe.services.dto.gson.ObserveDtoGsonSupplier; import fr.ird.observe.services.http.ObserveHttpError; import fr.ird.observe.services.rest.ObserveServiceRestErrorException; import fr.ird.observe.services.rest.ObserveServiceRestNotAvailableException; -import fr.ird.observe.services.dto.gson.ObserveDtoGsonSupplier; -import org.apache.commons.io.Charsets; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; @@ -38,7 +37,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.http.Header; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; +import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; @@ -47,18 +46,11 @@ import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.client.utils.URLEncodedUtils; -import org.apache.http.conn.ClientConnectionManager; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; -import org.apache.http.entity.mime.HttpMultipartMode; -import org.apache.http.entity.mime.MultipartEntity; -import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.entity.mime.content.StringBody; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.impl.conn.PoolingClientConnectionManager; -import org.apache.http.params.BasicHttpParams; -import org.apache.http.params.CoreConnectionPNames; -import org.apache.http.params.HttpParams; +import org.apache.http.entity.mime.MultipartEntityBuilder; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; import java.io.File; import java.io.IOException; @@ -69,7 +61,7 @@ import java.lang.reflect.Type; import java.net.ConnectException; import java.net.URL; import java.net.UnknownHostException; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Map; import java.util.Objects; @@ -84,14 +76,14 @@ public class ObserveResponseBuilder { private static final Log log = LogFactory.getLog(ObserveResponseBuilder.class); public static ObserveResponseBuilder create(Supplier<Gson> gsonSupplier) { - return new ObserveResponseBuilder(new DefaultHttpClient(new PoolingClientConnectionManager()), gsonSupplier); - } - public static ObserveResponseBuilder create(HttpClient client, Supplier<Gson> gsonSupplier) { - return new ObserveResponseBuilder(client, gsonSupplier); + CloseableHttpClient build = HttpClientBuilder.create() + .setConnectionTimeToLive(1, TimeUnit.MINUTES) + .build(); + return new ObserveResponseBuilder(build, gsonSupplier); } - protected final HttpClient client; + protected final CloseableHttpClient client; protected final Gson gson; @@ -225,7 +217,7 @@ public class ObserveResponseBuilder { return new ResponseContext(statusCode, responseAsString, responseHeaders); } - protected ObserveResponseBuilder(HttpClient client, Supplier<Gson> gsonSupplier) { + protected ObserveResponseBuilder(CloseableHttpClient client, Supplier<Gson> gsonSupplier) { this.client = client; this.gson = MoreObjects.firstNonNull(gsonSupplier, ObserveDtoGsonSupplier.DEFAULT_GSON_SUPPLIER).get(); } @@ -258,10 +250,16 @@ public class ObserveResponseBuilder { HttpPost postMethod = new HttpPost(baseUrl); if (timeout != null) { - HttpParams httpParams = new BasicHttpParams(); - httpParams.setParameter(CoreConnectionPNames.SO_TIMEOUT, timeout); - httpParams.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, timeout); - postMethod.setParams(httpParams); + + RequestConfig requestConfig = RequestConfig.custom() + .setConnectTimeout(timeout) + .build(); + +// HttpParams httpParams = new BasicHttpParams(); +// httpParams.setParameter(CoreConnectionPNames.SO_TIMEOUT, timeout); +// httpParams.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, timeout); + postMethod.setConfig(requestConfig); +// postMethod.setParams(httpParams); } if (request.withoutFiles()) { @@ -272,18 +270,25 @@ public class ObserveResponseBuilder { addHeaders(postMethod, request.getHeaders()); addParameters(postMethod, contentType, request.getParameters()); addRequestBody(postMethod, contentType, requestBody); - MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); + MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create(); + + +// MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); for (Map.Entry<String, File> paramFile : request.getFiles().entrySet()) { - entity.addPart(paramFile.getKey(), new FileBody(paramFile.getValue())); + multipartEntityBuilder.addBinaryBody(paramFile.getKey(), paramFile.getValue()); +// entity.addPart(paramFile.getKey(), new FileBody(paramFile.getValue())); } for (NameValuePair param : request.getParameters()) { if (StringUtils.isBlank(contentType)) { contentType = "text/plain"; } - entity.addPart(param.getName(), new StringBody(param.getValue(), contentType, - Charset.forName("UTF-8"))); + multipartEntityBuilder.addTextBody(param.getName(), param.getValue(), ContentType.create(contentType, StandardCharsets.UTF_8)); + +// entity.addPart(param.getName(), new StringBody(param.getValue(), contentType, +// Charset.forName("UTF-8"))); } - postMethod.setEntity(entity); + + postMethod.setEntity(multipartEntityBuilder.build()); } HttpResponse response = executeRequest(postMethod); @@ -349,7 +354,7 @@ public class ObserveResponseBuilder { protected String buildUrlWithParameters(String baseUrl, List<NameValuePair> parameters) { String result = baseUrl; if (!parameters.isEmpty()) { - result += "?" + URLEncodedUtils.format(parameters, Charsets.UTF_8); + result += "?" + URLEncodedUtils.format(parameters, StandardCharsets.UTF_8); } return result; } @@ -361,7 +366,7 @@ public class ObserveResponseBuilder { } protected <M extends HttpEntityEnclosingRequestBase> void addParameters(M method, String contentType, List<? extends NameValuePair> parameters) { - UrlEncodedFormEntity encodedFormEntity = new UrlEncodedFormEntity(parameters, Charsets.UTF_8); + UrlEncodedFormEntity encodedFormEntity = new UrlEncodedFormEntity(parameters, StandardCharsets.UTF_8); if (StringUtils.isNotBlank(contentType)) { encodedFormEntity.setContentType(contentType); } @@ -446,23 +451,31 @@ public class ObserveResponseBuilder { } - public void close() { - if (getConnectionManager() != null) { - getConnectionManager().shutdown(); - } + public void close() throws IOException { + client.close(); +// if (getConnectionManager() != null) { +// getConnectionManager().shutdown(); +// } } @Override protected void finalize() throws Throwable { - if (getConnectionManager() != null) { - getConnectionManager().closeExpiredConnections(); - getConnectionManager().closeIdleConnections(1, TimeUnit.MINUTES); + + try { + client.close(); + } finally { + super.finalize(); } - super.finalize(); - } - protected ClientConnectionManager getConnectionManager() { - return client.getConnectionManager(); +// if (getConnectionManager() != null) { +// getConnectionManager().closeExpiredConnections(); +// getConnectionManager().closeIdleConnections(1, TimeUnit.MINUTES); +// } + } +// protected HttpClientConnectionManager getConnectionManager() { +// return client.getConnectionManager(); +// } + } diff --git a/services-rest/src/test/java/fr/ird/observe/services/rest/RestTestClassResource.java b/services-rest/src/test/java/fr/ird/observe/services/rest/RestTestClassResource.java index 639b685..0810630 100644 --- a/services-rest/src/test/java/fr/ird/observe/services/rest/RestTestClassResource.java +++ b/services-rest/src/test/java/fr/ird/observe/services/rest/RestTestClassResource.java @@ -34,6 +34,7 @@ import fr.ird.observe.test.spi.DatabaseClassifier; import org.junit.runner.Description; import org.nuiton.version.Version; +import java.io.IOException; import java.net.URL; import java.util.Locale; @@ -76,7 +77,7 @@ public class RestTestClassResource extends TestClassResourceSupport { } @Override - protected void after(Description description) { + protected void after(Description description) throws IOException { super.after(description); diff --git a/services-rest/src/test/java/fr/ird/observe/services/rest/RestTestMethodResource.java b/services-rest/src/test/java/fr/ird/observe/services/rest/RestTestMethodResource.java index 73c582e..2a905aa 100644 --- a/services-rest/src/test/java/fr/ird/observe/services/rest/RestTestMethodResource.java +++ b/services-rest/src/test/java/fr/ird/observe/services/rest/RestTestMethodResource.java @@ -50,12 +50,6 @@ public class RestTestMethodResource extends TestMethodResourceSupport<RestTestCl super(restTestClassResource); } -// public RestTestMethodResource(RestTestClassResource restTestClassResource, String databaseName) { -// super(restTestClassResource); -// // pour les tests sur demo -// //this(REST_TEST_CLASS_RESOURCE, databaseName, "admin", ";;dm8-admin..".toCharArray()); -// } - public ObserveDataSourceConfigurationRest getDataSourceConfiguration() { return dataSourceConfiguration; } diff --git a/services-runner/src/main/java/fr/ird/observe/services/runner/ObserveServiceMainFactory.java b/services-runner/src/main/java/fr/ird/observe/services/runner/ObserveServiceMainFactory.java index 610703d..9492e63 100644 --- a/services-runner/src/main/java/fr/ird/observe/services/runner/ObserveServiceMainFactory.java +++ b/services-runner/src/main/java/fr/ird/observe/services/runner/ObserveServiceMainFactory.java @@ -27,14 +27,17 @@ import fr.ird.observe.services.ObserveServiceFactory; import fr.ird.observe.services.ObserveServiceInitializer; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConnection; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.reflections.Reflections; +import java.io.IOException; import java.lang.reflect.Modifier; import java.util.Collections; import java.util.LinkedHashSet; import java.util.Objects; +import java.util.Optional; import java.util.Set; /** @@ -113,9 +116,9 @@ public class ObserveServiceMainFactory implements ObserveServiceFactory { } @Override - public void close() { + public void close() throws IOException { - delegateFactories.forEach(ObserveServiceFactory::close); + delegateFactories.forEach(IOUtils::closeQuietly); } @@ -151,16 +154,13 @@ public class ObserveServiceMainFactory implements ObserveServiceFactory { Objects.requireNonNull(dataSourceConfiguration); Objects.requireNonNull(serviceType); - ObserveServiceFactory result = null; - for (ObserveServiceFactory serviceFactory : delegateFactories) { - if (serviceFactory.accept(dataSourceConfiguration, serviceType)) { - result = serviceFactory; - break; - } + Optional<ObserveServiceFactory> result = delegateFactories.stream() + .filter(f -> f.accept(dataSourceConfiguration, serviceType)) + .findFirst(); + if (!result.isPresent()) { + throw new NullPointerException(String.format("No factory found for dataSourceConfiguration: %s and serviceType: %s", dataSourceConfiguration, serviceType.getName())); } - - Objects.requireNonNull(result, String.format("No factory found for dataSourceConfiguration: %s and serviceType: %s", dataSourceConfiguration, serviceType.getName())); - return result; + return result.get(); } @@ -169,16 +169,13 @@ public class ObserveServiceMainFactory implements ObserveServiceFactory { Objects.requireNonNull(dataSourceConnection); Objects.requireNonNull(serviceType); - ObserveServiceFactory result = null; - for (ObserveServiceFactory serviceFactory : delegateFactories) { - if (serviceFactory.accept(dataSourceConnection, serviceType)) { - result = serviceFactory; - break; - } + Optional<ObserveServiceFactory> result = delegateFactories.stream() + .filter(f -> f.accept(dataSourceConnection, serviceType)) + .findFirst(); + if (!result.isPresent()) { + throw new NullPointerException(String.format("No factory found for dataSourceConnection: %s and serviceType: %s", dataSourceConnection, serviceType.getName())); } - - Objects.requireNonNull(result, String.format("No factory found for dataSourceConnection: %s and serviceType: %s", dataSourceConnection, serviceType.getName())); - return result; + return result.get(); } diff --git a/services/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java b/services/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java index ec28b6a..d376a2f 100644 --- a/services/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java +++ b/services/src/main/java/fr/ird/observe/services/ObserveServiceFactory.java @@ -26,6 +26,7 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import java.io.Closeable; +import java.io.IOException; /** * Created on 5/4/15. @@ -45,5 +46,5 @@ public interface ObserveServiceFactory extends Closeable { <S extends ObserveService> S newService(ObserveServiceInitializer observeServiceInitializer, Class<S> serviceType); @Override - void close(); + void close() throws IOException; } diff --git a/test/src/main/java/fr/ird/observe/test/TestClassResourceSupport.java b/test/src/main/java/fr/ird/observe/test/TestClassResourceSupport.java index 894e6a6..b97e390 100644 --- a/test/src/main/java/fr/ird/observe/test/TestClassResourceSupport.java +++ b/test/src/main/java/fr/ird/observe/test/TestClassResourceSupport.java @@ -148,7 +148,7 @@ public abstract class TestClassResourceSupport implements TestRule { } - protected void after(Description description) { + protected void after(Description description) throws IOException { Class<?> testClass = description.getTestClass(); if (log.isDebugEnabled()) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.