Skip to content

Commit 8e32f8f

Browse files
authored
Merge branch 'dnsjava:master' into master
2 parents d1db91f + 4eff203 commit 8e32f8f

6 files changed

Lines changed: 102 additions & 39 deletions

File tree

.github/workflows/build.yml

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,27 +35,28 @@ jobs:
3535
# for Sonar
3636
fetch-depth: 0
3737

38-
- name: Cache Maven dependencies
39-
uses: actions/cache@v2
40-
with:
41-
path: ~/.m2/repository
42-
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
43-
restore-keys: |
44-
${{ runner.os }}-maven-
45-
4638
- name: Set up JDK ${{ matrix.java }}
4739
uses: actions/setup-java@v2
4840
with:
4941
java-version: ${{ matrix.java }}
5042
architecture: ${{ matrix.arch }}
5143
distribution: temurin
52-
check-latest: true
44+
cache: maven
5345

5446
- name: Build with Maven
5547
if: "${{ !(matrix.arch == 'x64' && matrix.os == 'ubuntu-20.04' && matrix.java == '11') || github.event.pull_request.head.repo.full_name != 'dnsjava/dnsjava' }}"
5648
run: mvn verify -B -"Dgpg.skip"
5749

5850
# doesn't work with PRs from forks, see https://jira.sonarsource.com/browse/MMF-1371
51+
- name: Cache Sonar plugins
52+
if: "${{ (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/release/') || github.event.pull_request.head.repo.full_name == 'dnsjava/dnsjava') && matrix.arch == 'x64' && matrix.os == 'ubuntu-20.04' && matrix.java == '11' }}"
53+
uses: actions/cache@v2
54+
with:
55+
path: ~/.sonar/cache
56+
key: ${{ runner.os }}-sonar
57+
restore-keys: |
58+
${{ runner.os }}-sonar
59+
5960
- name: Build with Maven and run Sonar
6061
if: "${{ (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/release/') || github.event.pull_request.head.repo.full_name == 'dnsjava/dnsjava') && matrix.arch == 'x64' && matrix.os == 'ubuntu-20.04' && matrix.java == '11' }}"
6162
env:
@@ -74,18 +75,13 @@ jobs:
7475
steps:
7576
- uses: actions/checkout@v2
7677

77-
- name: Cache Maven dependencies
78-
uses: actions/cache@v2
79-
with:
80-
path: ~/.m2/repository
81-
key: m2-cache-8-x64-ubuntu-20.04
82-
8378
- name: Set up JDK 8
8479
uses: actions/setup-java@v2
8580
with:
8681
java-version: '8'
8782
architecture: 'x64'
8883
distribution: temurin
84+
cache: maven
8985
server-id: ossrh
9086
server-username: SONATYPE_USER
9187
server-password: SONATYPE_PW
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: "CodeQL"
2+
3+
on:
4+
push:
5+
branches: [ master ]
6+
pull_request:
7+
# The branches below must be a subset of the branches above
8+
branches: [ master ]
9+
schedule:
10+
#daily at 01:19 UTC
11+
- cron: '19 1 * * *'
12+
13+
jobs:
14+
analyze:
15+
name: Analyze
16+
runs-on: ubuntu-latest
17+
permissions:
18+
actions: read
19+
contents: read
20+
security-events: write
21+
22+
steps:
23+
- name: Checkout repository
24+
uses: actions/checkout@v2
25+
26+
# Initializes the CodeQL tools for scanning.
27+
- name: Initialize CodeQL
28+
uses: github/codeql-action/init@v1
29+
with:
30+
languages: java
31+
32+
- name: Set up JDK 11
33+
uses: actions/setup-java@v2
34+
with:
35+
java-version: 11
36+
distribution: temurin
37+
check-latest: true
38+
cache: maven
39+
40+
- name: Build with Maven
41+
run: mvn verify -B -"Dgpg.skip"
42+
43+
- name: Perform CodeQL Analysis
44+
uses: github/codeql-action/analyze@v1

Changelog

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
12/05/2021
2+
- 3.4.3 released
3+
- Fix handling of buffers in DNSInput
4+
(#224, #225 @nresare)
5+
- Clear existing nameservers on config refresh (#226)
6+
- Fix exception when calling ResolverConfig.refresh (#234)
7+
18
09/19/2021
29
- 3.4.2 released
310
- Document behavior of ExtendedResolver.setTimeout (#206)

pom.xml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@
4747
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
4848
<target.jdk>8</target.jdk>
4949

50-
<org.junit.version>5.8.1</org.junit.version>
51-
<mockito.version>4.0.0</mockito.version>
50+
<org.junit.version>5.8.2</org.junit.version>
51+
<mockito.version>4.1.0</mockito.version>
5252
<slf4j.version>1.7.32</slf4j.version>
53-
<lombok.version>1.18.20</lombok.version>
53+
<lombok.version>1.18.22</lombok.version>
5454
<jna.version>5.9.0</jna.version>
5555
<bouncycastle.version>1.69</bouncycastle.version>
56-
<vertx.version>4.1.5</vertx.version>
56+
<vertx.version>4.2.1</vertx.version>
5757

5858
<sonar.projectKey>dnsjava_dnsjava</sonar.projectKey>
5959
<sonar.organization>dnsjava</sonar.organization>
@@ -198,7 +198,7 @@
198198
<plugin>
199199
<groupId>com.github.siom79.japicmp</groupId>
200200
<artifactId>japicmp-maven-plugin</artifactId>
201-
<version>0.15.3</version>
201+
<version>0.15.4</version>
202202
<configuration>
203203
<newVersion>
204204
<file>
@@ -285,7 +285,7 @@
285285
<dependency>
286286
<groupId>com.puppycrawl.tools</groupId>
287287
<artifactId>checkstyle</artifactId>
288-
<version>8.44</version>
288+
<version>9.2</version>
289289
</dependency>
290290
</dependencies>
291291
</plugin>
@@ -364,7 +364,7 @@
364364
<dependency>
365365
<groupId>org.robolectric</groupId>
366366
<artifactId>android-all</artifactId>
367-
<version>10-robolectric-5803371</version>
367+
<version>12-robolectric-7732740</version>
368368
<scope>provided</scope>
369369
</dependency>
370370
<dependency>

src/main/java/org/xbill/DNS/ResolverConfig.java

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,20 +55,7 @@ public final class ResolverConfig {
5555
private static List<ResolverConfigProvider> configProviders;
5656

5757
private static void checkInitialized() {
58-
if (configProviders == null) {
59-
configProviders = new ArrayList<>(8);
60-
if (!Boolean.getBoolean(CONFIGPROVIDER_SKIP_INIT)) {
61-
configProviders.add(new PropertyResolverConfigProvider());
62-
configProviders.add(new ResolvConfResolverConfigProvider());
63-
configProviders.add(new WindowsResolverConfigProvider());
64-
configProviders.add(new AndroidResolverConfigProvider());
65-
configProviders.add(new JndiContextResolverConfigProvider());
66-
configProviders.add(new SunJvmResolverConfigProvider());
67-
configProviders.add(new FallbackPropertyResolverConfigProvider());
68-
}
69-
}
70-
71-
if (currentConfig == null) {
58+
if (currentConfig == null || configProviders == null) {
7259
refresh();
7360
}
7461
}
@@ -103,6 +90,21 @@ public static void refresh() {
10390
}
10491

10592
public ResolverConfig() {
93+
synchronized (ResolverConfig.class) {
94+
if (configProviders == null) {
95+
configProviders = new ArrayList<>(8);
96+
if (!Boolean.getBoolean(CONFIGPROVIDER_SKIP_INIT)) {
97+
configProviders.add(new PropertyResolverConfigProvider());
98+
configProviders.add(new ResolvConfResolverConfigProvider());
99+
configProviders.add(new WindowsResolverConfigProvider());
100+
configProviders.add(new AndroidResolverConfigProvider());
101+
configProviders.add(new JndiContextResolverConfigProvider());
102+
configProviders.add(new SunJvmResolverConfigProvider());
103+
configProviders.add(new FallbackPropertyResolverConfigProvider());
104+
}
105+
}
106+
}
107+
106108
for (ResolverConfigProvider provider : configProviders) {
107109
if (provider.isEnabled()) {
108110
try {

src/test/java/org/xbill/DNS/ResolverConfigTest.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// SPDX-License-Identifier: BSD-3-Clause
22
package org.xbill.DNS;
33

4+
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
45
import static org.junit.jupiter.api.Assertions.assertEquals;
56
import static org.junit.jupiter.api.Assertions.assertFalse;
67
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -13,6 +14,7 @@
1314
import java.lang.reflect.Field;
1415
import java.net.InetSocketAddress;
1516
import java.util.Arrays;
17+
import org.junit.jupiter.api.AfterEach;
1618
import org.junit.jupiter.api.Test;
1719
import org.junit.jupiter.api.condition.DisabledOnOs;
1820
import org.junit.jupiter.api.condition.EnabledOnOs;
@@ -25,17 +27,24 @@
2527
import org.xbill.DNS.config.WindowsResolverConfigProvider;
2628

2729
class ResolverConfigTest {
28-
@Test
29-
void testSkipInit() throws Exception {
30+
@AfterEach
31+
void afterEach() throws Exception {
32+
// make sure the ResolverConfig providers are not staying initialized after a test
3033
Field configProvidersField = ResolverConfig.class.getDeclaredField("configProviders");
3134
configProvidersField.setAccessible(true);
3235
configProvidersField.set(null, null);
36+
Field currentConfigField = ResolverConfig.class.getDeclaredField("currentConfig");
37+
currentConfigField.setAccessible(true);
38+
currentConfigField.set(null, null);
39+
}
40+
41+
@Test
42+
void testSkipInit() {
3343
try {
3444
System.setProperty(ResolverConfig.CONFIGPROVIDER_SKIP_INIT, Boolean.TRUE.toString());
3545
assertTrue(ResolverConfig.getConfigProviders().isEmpty());
3646
} finally {
3747
System.setProperty(ResolverConfig.CONFIGPROVIDER_SKIP_INIT, Boolean.FALSE.toString());
38-
configProvidersField.set(null, null);
3948
}
4049
}
4150

@@ -199,4 +208,9 @@ void windowsServersContainedInJndi() throws InitializationException {
199208
winServer + " not found in JNDI, " + win.servers() + "; " + jndi.servers());
200209
}
201210
}
211+
212+
@Test
213+
void refreshAsFirstCall() {
214+
assertDoesNotThrow(ResolverConfig::refresh);
215+
}
202216
}

0 commit comments

Comments
 (0)