fix: handle maformed resources [URL, URI]
diff --git a/src/main/java/org/eclipse/yasson/internal/deserializer/types/UriDeserializer.java b/src/main/java/org/eclipse/yasson/internal/deserializer/types/UriDeserializer.java index 26ea0fb..51c3fb7 100644 --- a/src/main/java/org/eclipse/yasson/internal/deserializer/types/UriDeserializer.java +++ b/src/main/java/org/eclipse/yasson/internal/deserializer/types/UriDeserializer.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2026 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at @@ -14,9 +14,12 @@ import java.lang.reflect.Type; import java.net.URI; +import java.net.URISyntaxException; import org.eclipse.yasson.internal.DeserializationContextImpl; +import jakarta.json.bind.JsonbException; + /** * Deserializer of the {@link URI} type. */ @@ -28,6 +31,11 @@ @Override Object deserializeStringValue(String value, DeserializationContextImpl context, Type rType) { - return URI.create(value); + try { + return new URI(value); + } catch (URISyntaxException e) { + // Exception will be caught and wrapped + throw new JsonbException("java.net.URI could not parse value " + value, e); + } } }
diff --git a/src/main/java/org/eclipse/yasson/internal/deserializer/types/UrlDeserializer.java b/src/main/java/org/eclipse/yasson/internal/deserializer/types/UrlDeserializer.java index 54cd2f3..c73b518 100644 --- a/src/main/java/org/eclipse/yasson/internal/deserializer/types/UrlDeserializer.java +++ b/src/main/java/org/eclipse/yasson/internal/deserializer/types/UrlDeserializer.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2026 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at @@ -12,6 +12,8 @@ package org.eclipse.yasson.internal.deserializer.types; +import jakarta.json.bind.JsonbException; + import java.lang.reflect.Type; import java.net.MalformedURLException; import java.net.URL; @@ -29,12 +31,10 @@ @Override Object deserializeStringValue(String value, DeserializationContextImpl context, Type rType) { - URL url = null; try { - url = new URL(value); + return new URL(value); } catch (MalformedURLException e) { - e.printStackTrace(); + throw new JsonbException("java.net.URL could not parse value " + value, e); } - return url; } }