Skip to content

Commit f7842e1

Browse files
committed
#27 remove dependency on apache commons and guava libraries
1 parent a233c08 commit f7842e1

30 files changed

+124
-73
lines changed

build.gradle

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import java.util.regex.Matcher
33
plugins {
44
id 'net.researchgate.release' version '2.8.1'
55
id 'nebula.optional-base' version '5.0.1'
6+
id 'com.github.johnrengelman.shadow' version '6.1.0'
67
}
78

89
ext {
@@ -188,6 +189,8 @@ project(':embedded-database-spring-test-autoconfigure') {
188189
}
189190

190191
project(':embedded-database-spring-test') {
192+
apply plugin: 'com.github.johnrengelman.shadow'
193+
191194
dependencies {
192195
compile project(':embedded-database-spring-test-autoconfigure')
193196

@@ -212,10 +215,8 @@ project(':embedded-database-spring-test') {
212215

213216
compile 'org.springframework:spring-context:5.0.13.RELEASE'
214217
compile 'org.springframework:spring-test:5.0.13.RELEASE'
215-
compile 'com.google.guava:guava:23.0'
216218

217-
compile 'org.apache.commons:commons-lang3:3.4' // TODO
218-
compile 'commons-io:commons-io:2.4' // TODO
219+
compile 'com.google.guava:guava:23.0'
219220

220221
compile('com.cedarsoftware:java-util:1.34.0') {
221222
exclude group: 'org.apache.logging.log4j'
@@ -349,6 +350,31 @@ project(':embedded-database-spring-test') {
349350
}
350351
}
351352

353+
def installer = install.repositories.mavenInstaller
354+
def deployer = uploadArchives.repositories.mavenDeployer
355+
356+
[installer, deployer]*.pom*.whenConfigured { pom ->
357+
pom.dependencies = pom.dependencies.findAll {
358+
it.groupId != 'com.google.guava' && it.artifactId != 'guava'
359+
}
360+
}
361+
362+
shadowJar {
363+
archiveClassifier.set('')
364+
365+
dependencies {
366+
include(dependency('com.google.guava:guava'))
367+
}
368+
369+
relocate 'com.google.common', 'io.zonky.test.db.shaded.com.google.common'
370+
minimize()
371+
}
372+
373+
jar {
374+
enabled = false
375+
dependsOn shadowJar
376+
}
377+
352378
test {
353379
classpath -= configurations.testRuntime
354380
classpath += configurations."testRuntime_default_suite"

embedded-database-spring-test/src/main/java/io/zonky/test/db/EmbeddedDatabaseContextCustomizerFactory.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import io.zonky.test.db.support.ProviderResolver;
3030
import io.zonky.test.db.util.AnnotationUtils;
3131
import io.zonky.test.db.util.PropertyUtils;
32-
import org.apache.commons.lang3.StringUtils;
3332
import org.slf4j.Logger;
3433
import org.slf4j.LoggerFactory;
3534
import org.springframework.beans.factory.ObjectFactory;
@@ -263,7 +262,7 @@ protected static BeanDefinitionRegistry getBeanDefinitionRegistry(ApplicationCon
263262
}
264263

265264
protected static BeanDefinitionHolder getDataSourceBeanDefinition(ConfigurableListableBeanFactory beanFactory, DatabaseDefinition databaseDefinition) {
266-
if (StringUtils.isNotBlank(databaseDefinition.getBeanName())) {
265+
if (StringUtils.hasText(databaseDefinition.getBeanName())) {
267266
if (beanFactory.containsBean(databaseDefinition.getBeanName())) {
268267
BeanDefinition beanDefinition = beanFactory.getBeanDefinition(databaseDefinition.getBeanName());
269268
return new BeanDefinitionHolder(beanDefinition, databaseDefinition.getBeanName());

embedded-database-spring-test/src/main/java/io/zonky/test/db/EmbeddedDatabaseTestExecutionListener.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
import io.zonky.test.db.preparer.DatabasePreparer;
55
import io.zonky.test.db.util.AnnotationUtils;
66
import io.zonky.test.db.util.PropertyUtils;
7-
import org.apache.commons.lang3.StringUtils;
87
import org.springframework.context.ApplicationContext;
98
import org.springframework.core.Conventions;
109
import org.springframework.core.env.Environment;
1110
import org.springframework.test.context.TestContext;
1211
import org.springframework.test.context.support.AbstractTestExecutionListener;
12+
import org.springframework.util.StringUtils;
1313

1414
import java.util.Arrays;
1515
import java.util.List;
@@ -112,11 +112,11 @@ private boolean hasAnyRefreshMode(AutoConfigureEmbeddedDatabase annotation, Refr
112112
}
113113

114114
private DatabaseContext getDatabaseContext(ApplicationContext applicationContext, String beanName) {
115-
if (StringUtils.isBlank(beanName)) {
116-
return applicationContext.getBean(DatabaseContext.class);
117-
} else {
115+
if (StringUtils.hasText(beanName)) {
118116
String databaseContextBeanName = beanName + "Context";
119117
return applicationContext.getBean(databaseContextBeanName, DatabaseContext.class);
118+
} else {
119+
return applicationContext.getBean(DatabaseContext.class);
120120
}
121121
}
122122

embedded-database-spring-test/src/main/java/io/zonky/test/db/context/DefaultDatabaseContext.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import io.zonky.test.db.preparer.ReplayableDatabasePreparer;
2929
import io.zonky.test.db.provider.DatabaseProvider;
3030
import io.zonky.test.db.provider.EmbeddedDatabase;
31-
import org.apache.commons.lang3.StringUtils;
3231
import org.slf4j.Logger;
3332
import org.slf4j.LoggerFactory;
3433
import org.springframework.aop.framework.AopProxyUtils;
@@ -174,7 +173,7 @@ public synchronized void handleTestStarted(TestExecutionStartedEvent event) {
174173
refreshDatabase();
175174
}
176175

177-
String databaseBeanName = StringUtils.substringBeforeLast(beanName, "Context");
176+
String databaseBeanName = beanName.substring(0, beanName.length() - "Context".length());
178177
EmbeddedDatabaseReporter.reportDataSource(databaseBeanName, awaitDatabase(), event.getTestMethod());
179178

180179
logger.trace("Execution phase has been changed to {} - context={}", executionPhase, beanName);

embedded-database-spring-test/src/main/java/io/zonky/test/db/flyway/FlywayClassUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616

1717
package io.zonky.test.db.flyway;
1818

19-
import org.apache.commons.io.IOUtils;
2019
import org.flywaydb.core.Flyway;
2120
import org.slf4j.LoggerFactory;
2221
import org.springframework.core.io.ClassPathResource;
2322
import org.springframework.util.ClassUtils;
23+
import org.springframework.util.StreamUtils;
2424

2525
import static java.nio.charset.StandardCharsets.UTF_8;
2626

@@ -34,7 +34,7 @@ private static int loadFlywayVersion() {
3434
try {
3535
ClassPathResource versionResource = new ClassPathResource("org/flywaydb/core/internal/version.txt", FlywayClassUtils.class.getClassLoader());
3636
if (versionResource.exists()) {
37-
return Integer.parseInt(IOUtils.readLines(versionResource.getInputStream(), UTF_8).get(0).replaceAll("^(\\d+)\\.(\\d+).*", "$1$2"));
37+
return Integer.parseInt(StreamUtils.copyToString(versionResource.getInputStream(), UTF_8).replaceAll("^(\\d+)\\.(\\d+).*", "$1$2"));
3838
} else if (ClassUtils.hasMethod(Flyway.class, "isPlaceholderReplacement")) {
3939
return 32;
4040
} else if (ClassUtils.hasMethod(Flyway.class, "getBaselineVersion")) {

embedded-database-spring-test/src/main/java/io/zonky/test/db/logging/EmbeddedDatabaseReporter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class EmbeddedDatabaseReporter {
2828
private static final Logger logger = LoggerFactory.getLogger(EmbeddedDatabaseReporter.class);
2929

3030
public static void reportDataSource(String beanName, EmbeddedDatabase database, AnnotatedElement element) {
31-
logger.info("JDBC URL to connect to '{}': url='{}', scope='{}'", beanName, database.getUrl(), getElementName(element));
31+
logger.info("JDBC URL to connect to '{}': url='{}', scope='{}'", beanName, database.getJdbcUrl(), getElementName(element));
3232
}
3333

3434
private static String getElementName(AnnotatedElement element) {

embedded-database-spring-test/src/main/java/io/zonky/test/db/preparer/RecordingMethodInterceptor.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,16 @@
2424
import com.google.common.util.concurrent.AtomicLongMap;
2525
import org.aopalliance.intercept.MethodInterceptor;
2626
import org.aopalliance.intercept.MethodInvocation;
27-
import org.apache.commons.io.IOUtils;
2827
import org.slf4j.Logger;
2928
import org.slf4j.LoggerFactory;
3029
import org.springframework.aop.framework.ProxyFactory;
30+
import org.springframework.util.FileCopyUtils;
3131
import org.springframework.util.StringUtils;
3232

3333
import javax.sql.DataSource;
3434
import java.io.ByteArrayInputStream;
3535
import java.io.CharArrayReader;
36+
import java.io.CharArrayWriter;
3637
import java.io.IOException;
3738
import java.io.InputStream;
3839
import java.io.OutputStream;
@@ -468,8 +469,7 @@ private static class InputStreamArgumentProvider implements ArgumentProvider {
468469
private final byte[] data;
469470

470471
public InputStreamArgumentProvider(InputStream stream) throws IOException {
471-
data = IOUtils.toByteArray(stream);
472-
stream.close();
472+
data = FileCopyUtils.copyToByteArray(stream);
473473
}
474474

475475
@Override
@@ -496,8 +496,9 @@ private static class ReaderArgumentProvider implements ArgumentProvider {
496496
private final char[] data;
497497

498498
public ReaderArgumentProvider(Reader reader) throws IOException {
499-
data = IOUtils.toCharArray(reader);
500-
reader.close();
499+
CharArrayWriter writer = new CharArrayWriter();
500+
FileCopyUtils.copy(reader, writer);
501+
data = writer.toCharArray();
501502
}
502503

503504
@Override

embedded-database-spring-test/src/main/java/io/zonky/test/db/provider/EmbeddedDatabase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
public interface EmbeddedDatabase extends DataSource, Closeable {
2323

24-
String getUrl();
24+
String getJdbcUrl();
2525

2626
void close();
2727

embedded-database-spring-test/src/main/java/io/zonky/test/db/provider/common/PrefetchingDatabaseProvider.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@
2525
import io.zonky.test.db.provider.DatabaseProvider;
2626
import io.zonky.test.db.provider.EmbeddedDatabase;
2727
import io.zonky.test.db.provider.ProviderException;
28-
import org.apache.commons.lang3.RandomStringUtils;
29-
import org.apache.commons.lang3.tuple.Pair;
28+
import io.zonky.test.db.util.RandomStringUtils;
3029
import org.slf4j.Logger;
3130
import org.slf4j.LoggerFactory;
3231
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -35,6 +34,7 @@
3534

3635
import java.util.Comparator;
3736
import java.util.List;
37+
import java.util.Map.Entry;
3838
import java.util.Objects;
3939
import java.util.Optional;
4040
import java.util.Set;
@@ -49,6 +49,7 @@
4949
import java.util.concurrent.atomic.AtomicLong;
5050
import java.util.concurrent.atomic.AtomicReference;
5151

52+
import static com.google.common.collect.Maps.immutableEntry;
5253
import static io.zonky.test.db.provider.common.PrefetchingDatabaseProvider.DatabasePipeline.State.INITIALIZED;
5354
import static io.zonky.test.db.provider.common.PrefetchingDatabaseProvider.DatabasePipeline.State.INITIALIZING;
5455
import static io.zonky.test.db.provider.common.PrefetchingDatabaseProvider.DatabasePipeline.State.NEW;
@@ -161,7 +162,7 @@ protected PrefetchingTask prepareDatabase(PipelineKey key, int priority) {
161162
protected PrefetchingTask prepareNewDatabase(PipelineKey key, int priority) {
162163
databaseCount.incrementAndGet();
163164

164-
Pair<PipelineKey, EmbeddedDatabase> databaseToRemove = findDatabaseToRemove().orElse(null);
165+
Entry<PipelineKey, EmbeddedDatabase> databaseToRemove = findDatabaseToRemove().orElse(null);
165166
if (databaseToRemove != null) {
166167
databaseCount.decrementAndGet();
167168

@@ -254,15 +255,15 @@ public void onFailure(Throwable error) {
254255
return task;
255256
}
256257

257-
protected Optional<Pair<PipelineKey, EmbeddedDatabase>> findDatabaseToRemove() {
258+
protected Optional<Entry<PipelineKey, EmbeddedDatabase>> findDatabaseToRemove() {
258259
while (databaseCount.get() > config.getMaxPreparedDatabases()) {
259260
long timestampThreshold = System.currentTimeMillis() - 10_000;
260261

261262
PipelineKey key = pipelines.entrySet().stream()
262-
.map(e -> Pair.of(e.getKey(), e.getValue().results.peek()))
263+
.map(e -> immutableEntry(e.getKey(), e.getValue().results.peek()))
263264
.filter(e -> e.getValue() != null && e.getValue().getTimestamp() < timestampThreshold)
264265
.min(Comparator.comparing(e -> e.getValue().getTimestamp()))
265-
.map(Pair::getKey).orElse(null);
266+
.map(Entry::getKey).orElse(null);
266267

267268
if (key == null) {
268269
return Optional.empty();
@@ -273,7 +274,7 @@ protected Optional<Pair<PipelineKey, EmbeddedDatabase>> findDatabaseToRemove() {
273274
PreparedResult result = pipeline.results.poll();
274275
if (result != null) {
275276
if (result.hasResult()) {
276-
return Optional.of(Pair.of(key, result.get()));
277+
return Optional.of(immutableEntry(key, result.get()));
277278
} else {
278279
databaseCount.decrementAndGet();
279280
}

embedded-database-spring-test/src/main/java/io/zonky/test/db/provider/mariadb/MariaDBEmbeddedDatabase.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
package io.zonky.test.db.provider.mariadb;
1818

1919
import io.zonky.test.db.provider.support.AbstractEmbeddedDatabase;
20-
import org.apache.commons.lang3.StringUtils;
2120
import org.mariadb.jdbc.MariaDbDataSource;
21+
import org.springframework.util.StringUtils;
2222

2323
import javax.sql.DataSource;
2424

@@ -39,10 +39,10 @@ protected DataSource getDataSource() {
3939
}
4040

4141
@Override
42-
public String getUrl() {
42+
public String getJdbcUrl() {
4343
String url = String.format("jdbc:mariadb://%s:%s/%s?user=%s",
4444
dataSource.getServerName(), dataSource.getPort(), dataSource.getDatabaseName(), dataSource.getUser());
45-
if (StringUtils.isNotBlank(getPassword())) {
45+
if (StringUtils.hasText(getPassword())) {
4646
url += String.format("&password=%s", getPassword());
4747
}
4848
return url;

0 commit comments

Comments
 (0)