Skip to content

Commit 340f504

Browse files
authored
GitResolver + Remove checked exceptions in ResourceResolver (#38)
* GitResolver + Remove checked exceptions in ResourceResolver * Move app.properties to test resources * GitResolver updates and tests * Fix typo * Revamp GitResolver APIs * Javadoc updates * Cleanup + Fix multi JVM tests * Fix Gradle test tasks ordering * Fix getOrDefault in multi-jvm-tests.gradle * Move InvocationHandlerFactory to internal
1 parent 523ab91 commit 340f504

File tree

43 files changed

+1902
-177
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1902
-177
lines changed

.github/workflows/gradle-build.yaml

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,13 @@ on: [push, pull_request]
33
jobs:
44
build:
55
runs-on: ubuntu-latest
6-
strategy:
7-
matrix:
8-
# LTS versions + the latest java version
9-
java: [ 8, 11, 17, 18 ]
10-
116
steps:
127
- uses: actions/checkout@v3
138

14-
- name: Set up JDK ${{ matrix.java }}
9+
- name: Set up JDK 11
1510
uses: actions/setup-java@v3
1611
with:
17-
java-version: ${{ matrix.java }}
12+
java-version: 11
1813
distribution: 'temurin'
1914

2015
- name: Validate Gradle wrapper
@@ -24,4 +19,6 @@ jobs:
2419
uses: gradle/gradle-build-action@v2
2520

2621
- name: Build with Gradle
27-
run: ./gradlew build
22+
run: ./gradlew build
23+
env:
24+
ADDITIONAL_TEST_RUNS_ON_JVM_VERSIONS: 17,18

build.gradle

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ apply from: "${rootDir}/gradle/reporting.gradle"
1313
apply from: "${rootDir}/gradle/coveralls.gradle"
1414
apply from: "${rootDir}/gradle/snyk.gradle"
1515
apply from: "${rootDir}/gradle/sonarqube.gradle"
16+
apply from: "${rootDir}/gradle/dependency-updates.gradle"
1617

1718
allprojects {
18-
apply from: "${rootDir}/gradle/dependencies.gradle"
19+
apply from: "${rootDir}/gradle/dependency-versions.gradle"
1920

2021
group = "io.github.joeljeremy7.externalizedproperties"
2122

@@ -36,6 +37,7 @@ configure(javaProjects) {
3637

3738
apply from: "${rootDir}/gradle/publications.gradle"
3839
apply from: "${rootDir}/gradle/code-quality.gradle"
40+
apply from: "${rootDir}/gradle/multi-jvm-tests.gradle"
3941

4042
dependencies {
4143
testImplementation "org.junit.jupiter:junit-jupiter:${versions.junitJupiter}"
@@ -44,7 +46,7 @@ configure(javaProjects) {
4446
testing {
4547
suites {
4648
test {
47-
useJUnitJupiter()
49+
useJUnitJupiter()
4850
}
4951
integrationTest(JvmTestSuite) {
5052
testType = TestSuiteType.INTEGRATION_TEST
@@ -59,18 +61,18 @@ configure(javaProjects) {
5961
}
6062
}
6163

64+
compileJava {
65+
options.release = 11
66+
}
67+
6268
java {
6369
archivesBaseName = rootProject.relativeProjectPath(project.path).replace(":", "-")
64-
70+
6571
toolchain {
6672
languageVersion = JavaLanguageVersion.of(11)
6773
}
6874
}
6975

70-
compileJava {
71-
options.release = 8
72-
}
73-
7476
javadoc {
7577
configure(options) {
7678
tags(
@@ -93,18 +95,4 @@ if (project.hasProperty("ossrh")) {
9395
}
9496
}
9597
}
96-
}
97-
98-
def isNonStable = { String version ->
99-
def nonStableKeyword = ["PREVIEW","ALPHA","BETA", "SNAPSHOT"].any {
100-
it -> version.toUpperCase().contains(it)
101-
}
102-
return nonStableKeyword
103-
}
104-
tasks.named("dependencyUpdates").configure {
105-
rejectVersionIf {
106-
isNonStable(it.candidate.version) && !isNonStable(it.currentVersion)
107-
}
108-
checkForGradleUpdate = true
109-
outputFormatter = "html"
11098
}

core/src/main/java/io/github/joeljeremy7/externalizedproperties/core/ExternalizedProperties.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.github.joeljeremy7.externalizedproperties.core.conversion.converters.DefaultConverter;
44
import io.github.joeljeremy7.externalizedproperties.core.internal.CachingExternalizedProperties;
55
import io.github.joeljeremy7.externalizedproperties.core.internal.InvocationCacheKey;
6+
import io.github.joeljeremy7.externalizedproperties.core.internal.InvocationHandlerFactory;
67
import io.github.joeljeremy7.externalizedproperties.core.internal.SystemExternalizedProperties;
78
import io.github.joeljeremy7.externalizedproperties.core.internal.caching.ExpiringCacheStrategy;
89
import io.github.joeljeremy7.externalizedproperties.core.internal.caching.WeakConcurrentHashMapCacheStrategy;
@@ -13,7 +14,6 @@
1314
import io.github.joeljeremy7.externalizedproperties.core.internal.proxy.EagerLoadingInvocationHandlerFactory;
1415
import io.github.joeljeremy7.externalizedproperties.core.internal.proxy.ExternalizedPropertiesInvocationHandlerFactory;
1516
import io.github.joeljeremy7.externalizedproperties.core.internal.resolvers.RootResolver;
16-
import io.github.joeljeremy7.externalizedproperties.core.proxy.InvocationHandlerFactory;
1717
import io.github.joeljeremy7.externalizedproperties.core.resolvers.DefaultResolver;
1818
import io.github.joeljeremy7.externalizedproperties.core.resolvers.VariableExpandingResolver;
1919
import io.github.joeljeremy7.externalizedproperties.core.variableexpansion.NoOpVariableExpander;
@@ -90,7 +90,7 @@ static Builder builder() {
9090
}
9191

9292
/**
93-
* Builder for {@link ExternalizedProperties}.
93+
* The builder for {@link ExternalizedProperties}.
9494
*/
9595
static class Builder implements BuilderConfiguration {
9696
private final List<ProfilesBuilder> profilesBuilders = new ArrayList<>();

core/src/main/java/io/github/joeljeremy7/externalizedproperties/core/internal/Arguments.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,21 @@ public static String requireNonNullOrEmpty(@Nullable String arg, String argName)
4141
return arg;
4242
}
4343

44+
/**
45+
* Require argument to not be {@code null} or an empty {@link String}.
46+
*
47+
* @param arg The {@link String} argument.
48+
* @param argName The name of the {@link String} argument to be used in building the
49+
* {@link IllegalArgumentException} message if the argument failed validation.
50+
* @return The {@link String} argument.
51+
*/
52+
public static String requireNonNullOrBlank(@Nullable String arg, String argName) {
53+
if (arg == null || arg.chars().allMatch(Character::isWhitespace)) {
54+
throw new IllegalArgumentException(argName + " must not be null or empty.");
55+
}
56+
return arg;
57+
}
58+
4459
/**
4560
* Require argument to not be {@code null} or an empty {@link Collection}.
4661
*

core/src/main/java/io/github/joeljeremy7/externalizedproperties/core/proxy/InvocationHandlerFactory.java renamed to core/src/main/java/io/github/joeljeremy7/externalizedproperties/core/internal/InvocationHandlerFactory.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
package io.github.joeljeremy7.externalizedproperties.core.proxy;
1+
package io.github.joeljeremy7.externalizedproperties.core.internal;
22

33
import io.github.joeljeremy7.externalizedproperties.core.Converter;
44
import io.github.joeljeremy7.externalizedproperties.core.InvocationContext;
55
import io.github.joeljeremy7.externalizedproperties.core.Resolver;
66
import io.github.joeljeremy7.externalizedproperties.core.VariableExpander;
7-
import io.github.joeljeremy7.externalizedproperties.core.internal.InvocationContextFactory;
87

98
import java.lang.reflect.InvocationHandler;
109

core/src/main/java/io/github/joeljeremy7/externalizedproperties/core/internal/SystemExternalizedProperties.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import io.github.joeljeremy7.externalizedproperties.core.TypeReference;
1010
import io.github.joeljeremy7.externalizedproperties.core.VariableExpander;
1111
import io.github.joeljeremy7.externalizedproperties.core.VariableExpanderFacade;
12-
import io.github.joeljeremy7.externalizedproperties.core.proxy.InvocationHandlerFactory;
1312

1413
import java.lang.annotation.Annotation;
1514
import java.lang.reflect.Method;

core/src/main/java/io/github/joeljeremy7/externalizedproperties/core/internal/proxy/CachingInvocationHandlerFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
import io.github.joeljeremy7.externalizedproperties.core.VariableExpander;
77
import io.github.joeljeremy7.externalizedproperties.core.internal.InvocationCacheKey;
88
import io.github.joeljeremy7.externalizedproperties.core.internal.InvocationContextFactory;
9+
import io.github.joeljeremy7.externalizedproperties.core.internal.InvocationHandlerFactory;
910
import io.github.joeljeremy7.externalizedproperties.core.internal.caching.WeakConcurrentHashMapCacheStrategy;
1011
import io.github.joeljeremy7.externalizedproperties.core.internal.caching.WeakHashMapCacheStrategy;
11-
import io.github.joeljeremy7.externalizedproperties.core.proxy.InvocationHandlerFactory;
1212

1313
import java.lang.reflect.Method;
1414

core/src/main/java/io/github/joeljeremy7/externalizedproperties/core/internal/proxy/EagerLoadingInvocationHandlerFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
import io.github.joeljeremy7.externalizedproperties.core.VariableExpander;
77
import io.github.joeljeremy7.externalizedproperties.core.internal.InvocationCacheKey;
88
import io.github.joeljeremy7.externalizedproperties.core.internal.InvocationContextFactory;
9+
import io.github.joeljeremy7.externalizedproperties.core.internal.InvocationHandlerFactory;
910
import io.github.joeljeremy7.externalizedproperties.core.internal.caching.WeakConcurrentHashMapCacheStrategy;
1011
import io.github.joeljeremy7.externalizedproperties.core.internal.caching.WeakHashMapCacheStrategy;
11-
import io.github.joeljeremy7.externalizedproperties.core.proxy.InvocationHandlerFactory;
1212

1313
import java.lang.reflect.Method;
1414

core/src/main/java/io/github/joeljeremy7/externalizedproperties/core/internal/proxy/ExternalizedPropertiesInvocationHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ else if ("hashCode".equals(method.getName())) {
266266
}
267267
} else if (method.getParameterCount() == 1) {
268268
if ("equals".equals(method.getName()) &&
269-
method.getParameterTypes()[0].equals(Object.class)) {
269+
Object.class.equals(method.getParameterTypes()[0])) {
270270
return proxyEquals(proxy, args);
271271
}
272272
}

core/src/main/java/io/github/joeljeremy7/externalizedproperties/core/internal/proxy/ExternalizedPropertiesInvocationHandlerFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import io.github.joeljeremy7.externalizedproperties.core.Resolver;
55
import io.github.joeljeremy7.externalizedproperties.core.VariableExpander;
66
import io.github.joeljeremy7.externalizedproperties.core.internal.InvocationContextFactory;
7-
import io.github.joeljeremy7.externalizedproperties.core.proxy.InvocationHandlerFactory;
7+
import io.github.joeljeremy7.externalizedproperties.core.internal.InvocationHandlerFactory;
88

99
/**
1010
* The factory for {@link ExternalizedPropertiesInvocationHandler}.

0 commit comments

Comments
 (0)