Skip to content

Commit 1472c78

Browse files
committed
Merge branch 'main' of github.com:avaje/avaje-jsonb
2 parents 073fe32 + 46e3aa5 commit 1472c78

File tree

7 files changed

+37
-15
lines changed

7 files changed

+37
-15
lines changed

json-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<dependency>
1818
<groupId>io.helidon.webserver</groupId>
1919
<artifactId>helidon-webserver</artifactId>
20-
<version>4.2.2</version>
20+
<version>4.2.3</version>
2121
<scope>provided</scope>
2222
<optional>true</optional>
2323
</dependency>

jsonb-jackson/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<dependency>
1717
<groupId>com.fasterxml.jackson.core</groupId>
1818
<artifactId>jackson-core</artifactId>
19-
<version>2.19.0</version>
19+
<version>2.19.1</version>
2020
</dependency>
2121
<dependency>
2222
<groupId>io.avaje</groupId>

jsonb-spring-adapter/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<dependency>
1919
<groupId>org.springframework.boot</groupId>
2020
<artifactId>spring-boot-dependencies</artifactId>
21-
<version>3.5.0</version>
21+
<version>3.5.3</version>
2222
<type>pom</type>
2323
<scope>import</scope>
2424
</dependency>

jsonb/src/main/java/io/avaje/jsonb/Jsonb.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
package io.avaje.jsonb;
22

3+
import java.io.InputStream;
4+
import java.io.OutputStream;
5+
import java.io.Reader;
6+
import java.io.Writer;
7+
import java.lang.reflect.Type;
8+
import java.util.function.Supplier;
9+
310
import io.avaje.json.JsonAdapter;
411
import io.avaje.json.JsonReader;
512
import io.avaje.json.JsonWriter;
613
import io.avaje.json.PropertyNames;
7-
import io.avaje.json.stream.*;
14+
import io.avaje.json.stream.BufferRecycleStrategy;
15+
import io.avaje.json.stream.JsonOutput;
16+
import io.avaje.json.stream.JsonStream;
817
import io.avaje.jsonb.core.DefaultBootstrap;
918
import io.avaje.jsonb.spi.JsonStreamFactory;
1019
import io.avaje.jsonb.spi.JsonbComponent;
1120

12-
import java.io.InputStream;
13-
import java.io.OutputStream;
14-
import java.io.Reader;
15-
import java.io.Writer;
16-
import java.lang.reflect.Type;
17-
import java.util.function.Supplier;
18-
1921
/**
2022
* Provides access to json adapters by type.
2123
*
@@ -438,6 +440,13 @@ interface Builder {
438440
*/
439441
Builder add(AdapterFactory factory);
440442

443+
/**
444+
* Set the ClassLoader to use when loading modules.
445+
*
446+
* @param classLoader The ClassLoader to use
447+
*/
448+
Builder classLoader(ClassLoader classLoader);
449+
441450
/**
442451
* Build and return the Jsonb instance with all the given adapters and factories registered.
443452
*/

jsonb/src/main/java/io/avaje/jsonb/core/CoreAdapterBuilder.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,12 @@ <T> JsonAdapter<T> build(Type type, Object cacheKey) {
9494
return result;
9595
}
9696
}
97-
throw new IllegalArgumentException("No JsonAdapter for " + type + ". Perhaps needs @Json or @Json.Import?");
97+
throw new IllegalArgumentException(
98+
"No JsonAdapter for "
99+
+ type
100+
+ "\nPossible Causes: \n"
101+
+ "1. Missing @Json or @Json.Import annotation.\n"
102+
+ "2. The avaje-jsonb-generator dependency was not available during compilation\n");
98103
} catch (IllegalArgumentException e) {
99104
throw lookupChain.exceptionWithLookupStack(e);
100105
} finally {

jsonb/src/main/java/io/avaje/jsonb/core/DJsonb.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ static final class DBuilder implements Jsonb.Builder {
269269
private boolean serializeEmpty = true;
270270
private JsonStream adapter;
271271
private BufferRecycleStrategy strategy = HYBRID_POOL;
272+
private ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
272273

273274
@Override
274275
public Builder serializeNulls(boolean serializeNulls) {
@@ -345,7 +346,14 @@ public Builder add(AdapterFactory factory) {
345346
return this;
346347
}
347348

349+
@Override
350+
public Builder classLoader(ClassLoader classLoader) {
351+
this.classLoader = classLoader;
352+
return this;
353+
}
354+
348355
private void registerComponents() {
356+
ExtensionLoader.init(classLoader);
349357
// first register all user defined JsonbComponent
350358
for (JsonbComponent next : ExtensionLoader.userComponents()) {
351359
next.register(this);

jsonb/src/main/java/io/avaje/jsonb/core/ExtensionLoader.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import java.util.Optional;
66
import java.util.ServiceLoader;
77

8-
import io.avaje.jsonb.spi.JsonStreamFactory;
98
import io.avaje.jsonb.spi.GeneratedComponent;
9+
import io.avaje.jsonb.spi.JsonStreamFactory;
1010
import io.avaje.jsonb.spi.JsonbComponent;
1111
import io.avaje.jsonb.spi.JsonbExtension;
1212

@@ -17,8 +17,8 @@ final class ExtensionLoader {
1717
private static final List<JsonbComponent> userComponents = new ArrayList<>();
1818
private static Optional<JsonStreamFactory> adapterFactory = Optional.empty();
1919

20-
static {
21-
for (var spi : ServiceLoader.load(JsonbExtension.class)) {
20+
static void init(ClassLoader classLoader) {
21+
for (var spi : ServiceLoader.load(JsonbExtension.class, classLoader)) {
2222
if (spi instanceof GeneratedComponent) {
2323
generatedComponents.add((GeneratedComponent) spi);
2424
} else if (spi instanceof JsonbComponent) {

0 commit comments

Comments
 (0)